diff options
86 files changed, 3166 insertions, 13075 deletions
diff --git a/.gitignore b/.gitignore index 09c0fe457..4b3e5a359 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ GPATH GRTAGS GTAGS *.swp +src/include/taler_error_codes.h src/lib/test_exchange_api doc/doxygen/doxygen_sqlite3.db src/auditor/taler-auditor-dbinit @@ -81,6 +82,7 @@ src/wire-plugins/test_ebics_wireformat src/wire-plugins/test_wire_plugin src/wire-plugins/test_wire_plugin_transactions_taler_bank src/pq/test_pq +src/sq/test_sq src/util/test_amount src/util/test_crypto src/util/test_json @@ -126,3 +128,4 @@ uncrustify.cfg vgcore.* tags /.vscode +src/testing/test_bank_api_with_nexus diff --git a/.gitmodules b/.gitmodules index de5e33058..af62a8473 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,3 +5,6 @@ path = doc/prebuilt url = https://git.taler.net/docs.git branch = prebuilt +[submodule "contrib/gana"] + path = contrib/gana + url = https://gnunet.org/git/gana.git @@ -33,7 +33,7 @@ Dependencies: These are the direct dependencies for running a Taler exchange: - GNUnet >= 0.10.2 -- GNU libmicrohttpd >= 0.9.55 +- GNU libmicrohttpd >= 0.9.71 - Postgres >= 9.5 @@ -1,5 +1,7 @@ #!/bin/sh +set -eu + if ! git --version >/dev/null; then echo "git not installed" exit 1 @@ -7,6 +9,13 @@ fi git submodule update --init +# Generate taler-error-codes.h in gana and copy it to +# src/include/taler_error_codes.h +cd contrib/gana/gnu-taler-error-codes +make +cd ../../.. +cp contrib/gana/gnu-taler-error-codes/taler-error-codes.h src/include/taler_error_codes.h + # This is more portable than `which' but comes with # the caveat of not(?) properly working on busybox's ash: existence() diff --git a/configure.ac b/configure.ac index 401f84c2a..a51b32475 100644 --- a/configure.ac +++ b/configure.ac @@ -261,6 +261,16 @@ AS_IF([test $libgnunetpq != 1], *** ]])]) +# Check for GNUnet's libgnunetsq +libgnunetsq=0 +AC_MSG_CHECKING([for libgnunetsq]) +AC_CHECK_HEADERS([gnunet/gnunet_sq_lib.h], + [AC_CHECK_LIB([gnunetsq], [GNUNET_SQ_result_spec_string], libgnunetsq=1)], + [], [#ifdef HAVE_GNUNET_PLATFORM_H + #include <gnunet/platform.h> + #endif]) + + # check for libmicrohttpd microhttpd=0 AC_MSG_CHECKING([for microhttpd]) @@ -326,6 +336,35 @@ CFLAGS=$CFLAGS_SAVE LDFLAGS=$LDFLAGS_SAVE LIBS=$LIBS_SAVE +# test for sqlite +sqlite=false +AC_MSG_CHECKING(for SQLite) +AC_ARG_WITH(sqlite, + [ --with-sqlite=PFX base of SQLite installation], + [AC_MSG_RESULT("$with_sqlite") + AS_CASE([$with_sqlite], + [no],[], + [yes],[ + AC_CHECK_HEADERS(sqlite3.h, + sqlite=true)], + [ + LDFLAGS="-L$with_sqlite/lib $LDFLAGS" + CPPFLAGS="-I$with_sqlite/include $CPPFLAGS" + AC_CHECK_HEADERS(sqlite3.h, + EXT_LIB_PATH="-L$with_sqlite/lib $EXT_LIB_PATH" + SQLITE_LDFLAGS="-L$with_sqlite/lib" + SQLITE_CPPFLAGS="-I$with_sqlite/include" + sqlite=true) + LDFLAGS=$SAVE_LDFLAGS + CPPFLAGS=$SAVE_CPPFLAGS + ]) + ], + [AC_MSG_RESULT([--with-sqlite not specified]) + AC_CHECK_HEADERS(sqlite3.h, sqlite=true)]) +AM_CONDITIONAL(HAVE_SQLITE, [test x$sqlite = xtrue] && [test $libgnunetsq = 1]) +AC_SUBST(SQLITE_CPPFLAGS) +AC_SUBST(SQLITE_LDFLAGS) + # check for libtalertwistertesting talertwister=0 AC_MSG_CHECKING([for talertwister]) @@ -459,6 +498,7 @@ AM_CONDITIONAL([ENABLE_DOC], [test "x$enable_doc" = "xyes"]) AM_CONDITIONAL([HAVE_EXPENSIVE_TESTS], [false]) AM_CONDITIONAL([MHD_HAVE_EPOLL], [false]) AM_CONDITIONAL([HAVE_POSTGRESQL], [false]) +AM_CONDITIONAL([HAVE_SQLITE], [false]) AM_CONDITIONAL([HAVE_LIBCURL], [false]) AM_CONDITIONAL([HAVE_LIBGNURL], [false]) AM_CONDITIONAL([HAVE_DEVELOPER], [false]) @@ -488,6 +528,7 @@ AC_CONFIG_FILES([Makefile src/json/Makefile src/mhd/Makefile src/pq/Makefile + src/sq/Makefile src/util/Makefile ]) AC_OUTPUT diff --git a/contrib/gana b/contrib/gana new file mode 160000 +Subproject c0fedb8d45c41fb283fec714b48278e6661d51b diff --git a/contrib/tos/tos.rst b/contrib/tos/tos.rst index 2ef5c2c2d..9e500caee 100644 --- a/contrib/tos/tos.rst +++ b/contrib/tos/tos.rst @@ -87,6 +87,16 @@ transfers that cannot be reversed. We will only refuse to execute transfers if the transfers are prohibited by a competent legal authority and we are ordered to do so. +When using our Services, you agree to not take any action that intentionally +imposes an unreasonable load on our infrastructure. If you find security +problems in our Services, you agree to first report them to +security@taler-systems.com and grant us the right to publish your report. We +warrant that we will ourselves publicly disclose any issues reported within 3 +months, and that we will not prosecute anyone reporting security issues if +they did not exploit the issue beyond a proof-of-concept, and followed the +above responsible disclosure practice. + + Fees ---- @@ -104,17 +114,14 @@ We reserve the right to provide different types of rewards to users either in the form of discount for our Services or in any other form at our discretion and without prior notice to you. -Eligibility ------------ +Eligibility and Financial self-responsibility +--------------------------------------------- To be eligible to use our Services, you must be able to form legally binding contracts or have the permission of your legal guardian. By using our Services, you represent and warrant that you meet all eligibility requirements that we outline in these Terms. -Financial self-responsibility ------------------------------ - You will be responsible for maintaining the availability, integrity and confidentiality of the data stored in your wallet. When you setup a Taler Wallet, you are strongly advised to follow the precautionary measures offered @@ -136,17 +143,6 @@ of Taler Systems SA. You are welcome to use the name in relation to processing payments using the Taler protocol, assuming your use is compatible with an official release from the GNU Project that is not older than two years. -Your use of our services ------------------------- - -When using our Services, you agree to not take any action that intentionally -imposes an unreasonable load on our infrastructure. If you find security -problems in our Services, you agree to first report them to -security@taler-systems.com and grant us the right to publish your report. We -warrant that we will ourselves publicly disclose any issues reported within 3 -months, and that we will not prosecute anyone reporting security issues if -they did not exploit the issue beyond a proof-of-concept, and followed the -above responsible disclosure practice. Limitation of liability & disclaimer of warranties -------------------------------------------------- @@ -175,9 +171,6 @@ Any other terms, conditions, warranties, or representations associated with such content, are solely between you and such organizations and/or individuals. -Limitation of liability ------------------------ - To the fullest extent permitted by applicable law, in no event will we or any of our officers, directors, representatives, agents, servants, counsel, employees, consultants, lawyers, and other personnel authorized to act, @@ -206,9 +199,6 @@ damages. Some jurisdictions do not allow the exclusion or limitation of liability for consequential or incidental damages, so the above limitation may not apply to you. -Warranty disclaimer -------------------- - Our services are provided "as is" and without warranty of any kind. To the maximum extent permitted by law, we disclaim all representations and warranties, express or implied, relating to the services and underlying @@ -225,8 +215,8 @@ implied warranties, so the foregoing disclaimers may not apply to you. This paragraph gives you specific legal rights and you may also have other legal rights that vary from state to state. -Indemnity ---------- +Indemnity and Time limitation on claims and Termination +------------------------------------------------------- To the extent permitted by applicable law, you agree to defend, indemnify, and hold harmless the Taler Parties from and against any and all claims, damages, @@ -236,32 +226,16 @@ the Services; (b) any feedback or submissions you provide to us concerning the Taler Wallet; (c) your violation of any term of this Agreement; or (d) your violation of any law, rule, or regulation, or the rights of any third party. -Time limitation on claims -------------------------- - You agree that any claim you may have arising out of or related to your relationship with us must be filed within one year after such claim arises, otherwise, your claim in permanently barred. -Governing law -------------- - -No matter where you’re located, the laws of Switzerland will govern these -Terms. If any provisions of these Terms are inconsistent with any applicable -law, those provisions will be superseded or modified only to the extent such -provisions are inconsistent. The parties agree to submit to the ordinary -courts in Zurich, Switzerland for exclusive jurisdiction of any dispute -arising out of or related to your use of the Services or your breach of these -Terms. - -Termination ------------ - In the event of termination concerning your use of our Services, your obligations under this Agreement will still continue. -Discontinuance of services --------------------------- + +Discontinuance of services and Force majeure +-------------------------------------------- We may, in our sole discretion and without cost to you, with or without prior notice, and at any time, modify or discontinue, temporarily or permanently, @@ -273,24 +247,6 @@ or liable for any loss of funds in the event that we discontinue or depreciate the Services and your Taler Wallet fails to transfer out the coins within a three months notification period. -No waiver ---------- - -Our failure to exercise or delay in exercising any right, power, or privilege -under this Agreement shall not operate as a waiver; nor shall any single or -partial exercise of any right, power, or privilege preclude any other or -further exercise thereof. - -Severability ------------- - -If it turns out that any part of this Agreement is invalid, void, or for any -reason unenforceable, that term will be deemed severable and limited or -eliminated to the minimum extent necessary. - -Force majeure -------------- - We shall not be held liable for any delays, failure in performance, or interruptions of service which result directly or indirectly from any cause or condition beyond our reasonable control, including but not limited to: any @@ -301,14 +257,29 @@ services, failure of equipment and/or software, other catastrophe, or any other occurrence which is beyond our reasonable control and shall not affect the validity and enforceability of any remaining provisions. -Assignment ----------- + +Governing law, Waivers, Severability and Assignment +------------------------------------------------ + +No matter where you’re located, the laws of Switzerland will govern these +Terms. If any provisions of these Terms are inconsistent with any applicable +law, those provisions will be superseded or modified only to the extent such +provisions are inconsistent. The parties agree to submit to the ordinary +courts in Zurich, Switzerland for exclusive jurisdiction of any dispute +arising out of or related to your use of the Services or your breach of these +Terms. + +Our failure to exercise or delay in exercising any right, power, or privilege +under this Agreement shall not operate as a waiver; nor shall any single or +partial exercise of any right, power, or privilege preclude any other or +further exercise thereof. You agree that we may assign any of our rights and/or transfer, sub-contract, or delegate any of our obligations under these Terms. -Entire agreement ----------------- +If it turns out that any part of this Agreement is invalid, void, or for any +reason unenforceable, that term will be deemed severable and limited or +eliminated to the minimum extent necessary. This Agreement sets forth the entire understanding and agreement as to the subject matter hereof and supersedes any and all prior discussions, @@ -317,6 +288,7 @@ prior versions of this Agreement) and every nature between us. Except as provided for above, any modification to this Agreement must be in writing and must be signed by both parties. + Questions or comments --------------------- diff --git a/doc/audit/report-202005.pdf b/doc/audit/report-202005.pdf Binary files differnew file mode 100644 index 000000000..55d52cdfa --- /dev/null +++ b/doc/audit/report-202005.pdf diff --git a/doc/audit/response-202005.tex b/doc/audit/response-202005.tex new file mode 100644 index 000000000..b07e053e3 --- /dev/null +++ b/doc/audit/response-202005.tex @@ -0,0 +1,238 @@ +\documentclass[11pt]{article} +\oddsidemargin=0in \evensidemargin=0in +\textwidth=6.2in \textheight=8.7in +%\topmargin=-0.2in + +\usepackage[ansinew]{inputenc} +\usepackage{makeidx,amsmath,amssymb,exscale,multicol,epsfig,graphics} + +\begin{document} +\pagestyle{headings} +\title{Preliminary response to the \\ GNU Taler security audit in Q2/Q3 2020} +\author{Christian Grothoff \and Florian Dold} + +\maketitle + +\section{Abstract} + +This is the preliminary response to the source code audit report CodeBlau +created for GNU Taler in Q2/Q3 2020. A final response with more details is +expected later this year. + +\section{Management Summary} + +We thank CodeBlau for their detailed report and thorough analysis. We are +particularly impressed that they reported issues against components that were +not even in-scope, and also that they found an {\em interesting} new corner +case we had not previously considered. Finally, we also find several of their +architectural recommendations to strengthen security to be worthwhile, and +while some were already on our long-term roadmap, we will reprioritize our +roadmap given their recommendations. + +Given our extensive discussions with CodeBlau, we also have the impression +that they really took the time to understand the system, and look forward +to working with CodeBlau as a competent auditor for GNU Taler in the future. + +\section{Issues in the exchange} + +We agree with the issues CodeBlau discovered and both parties believe that +they have all been addressed. + +\section{Issues in the auditor} + +We appreciate CodeBlau's extensive list of checks the Taler auditor performs, +which was previously not documented adequately by us. We agree that the +auditor still needs more comprehensive documentation. + +As for issue \#6416, we agree with the analysis and the proposed fix, even if +the implications are not fully clear. It has not yet been implemented as we +want to carefully review all of the SQL statements implicated in the +resolution and ensure we fully understand the implications. + +\section{Issues in GNUnet} + +We agree with the issues CodeBlau discovered and both parties believe that +they have all been addressed. + +\section{General remarks on the code} + +We understand that writing the code in another programming language may make +certain checks for the auditor less work to implement. However, our choice of C +is based on the advantages that make it superior to contemporary languages for +our use case: relatively low complexity of the language (compared to C++); +availability of mature compilers, static and dynamic analysis tools; +predictable performance; access to stable and battle-tested libraries; and +future-proofness due to portability to older systems as well as new platforms. + +We believe creating a parallel implementation in other languages would provide +advantages, especially with respect to avoiding ``the implementation is the +specification''-style issues. However, given limited resources will not make +this a priority. + +We disagree that all modern software development has embraced the idea that +memory errors are to be handled in ways other than terminating or restarting +the process. Many programming languages (Erlang, Java) hardly offer any other +means of handling out-of-memory situations than to terminate the process. We +also insist that Taler {\em does} handle out-of-memory as it does have code +that terminates the process (we do {\em not} simply ignore the return value +from {\tt malloc()} or other allocation functions!). We simply consider that +terminating the process (which is run by a hypervisor that will restart the +service) is the correct way to handle out-of-memory situations. We also have +limits in place that should prevent attackers from causing large amounts of +memory to be consumed, and also have code to automatically preemptively +restart the process to guard against memory exhaustion from memory +fragmentation. Finally, a common problem with abrupt termination may be +corrupted files. However, the code mostly only reads from files and limits +writing to the Postgres database. Hence, there is no possibility of corrupt +files being left behind even in the case of abnormal termination. + + +\section{More specs and documentation code} + +We agree with the recommendation that the documentation should be improved, +and will try to improve it along the lines recommended by CodeBlau. + +\section{Protocol change: API for uniformly distributed seeds} + +We agree with the suggestion, have made the necessary changes, and both +parties believe that the suggestion has been implemented. + +\section{Reduce code complexity} + +\subsection{Reduce global variables} + +While we do not disagree with the general goal to have few global variables, +we also believe that there are cases where global variables make sense. + +We have already tried to minimize the scope of variables. The remaining few +global variables are largely ``read-only'' configuration data. The report does +not point out specific instances that would be particularly beneficial to +eliminate. As we continue to work on the code, we will of course evaluate +whether the removal of a particular global variable would make the code +cleaner. + +Also, we want to point out that all global variables we introduce +in the exchange are indicated with a prefix {\tt TEH\_} in the code, so they +are easy to identify as such. + +\subsection{Callbacks, type p(r)unning} + +We understand that higher order functions in C can be confusing, but this +is also a common pattern to enable code re-use and asynchronous execution +which is essential for network applications. We do not believe that we +use callbacks {\em excessively}. Rewriting the code in another language +may indeed make this part easier to understand, alas would have other +disadvantages as pointed out previously. + +\subsection{Initializing structs with memset} + +Using {\tt memset()} first prevents compiler (or valgrind) warnings about +using uninitialized memory, possibly hiding bugs. We also do use struct +initialization in many cases. + +The GNUnet-wrappers are generally designed to be ``safer'' or ``stricter'' +variants of the corresponding libc functions, and not merely ``the same''. +Hence we do not believe that renaming {\tt GNUNET\_malloc} is indicated. + +The argument that {\tt memset()}ing first makes the code inherently more +obvious also seems fallacious, as it would commonly result in dead stores, +which can confuse developers and produce false-positive warnings from static +analysis tools. + +\subsection{NULL pointer handling} + +The problem with the ``goto fail'' style error handling is that it rarely +results in specific error handling where diagnostics are created that are +specific to the error. Using this style of programming encourages developers +to create simplistic error handling, which can result in inappropriate error +handling logic and also makes it harder to attribute errors to the specific +cause. + +However, we have no prohibition on using this style of error handling either: +if it is appropriate, develpers should make a case-by-case decision as to how +to best handle a specific error. + +We have made some first changes to how {\tt GNUNET\_free()} works in response +to the report, and will discuss further changes with the GNUnet development +team. + +\subsection{Hidden security assumptions} + +We disagree that the assumptions stated are ``hidden'', as (1) the Taler code +has its own checks to warrant that the requirements of the {\tt + GNUNET\_malloc()} API are satisfied (so enforcement is not limited to the +abstraction layer), and (2) the maximum allocation size limit is quite clearly +specified in the GNUnet documentation. Also, the GNUnet-functions are not +merely an abstraction layer for portability, but they provided extended +semantics that we rely upon. So it is not like it is possible to swap this +layer and expect anything to continue to work. + +When we use the libjansson library, it is understood that it does not use +the GNUnet operations, and the code is careful about this distinction. + +\subsection{Get rid of boolean function arguments} + +We agree that this can make the code more readable, and have in some places +already changed the code in this way. + +\section{Structural Recommendation} + +\subsection{Least privilege} + +It is wrong to say that GNU Taler has ``no work done'' on privilege separation. +For example, the {\tt taler-exchange-dbinit} tool is the only tool that requires +CREATE, ALTER and DROP rights on database tables, thus enusring that the ``main'' +process does not need these rights. + +We also already had the {\tt taler-exchange-keyup} tool responsible for +initializing keys. In response to the audit, we already changed the GNUnet API +to make sure that tools do not create keys as a side-effect of trying to read +non-existent key files. + +We agree with the recommendation on further privilege separation for access +to cryptographic keys, and intend to implement this in the near future. + +\subsection{File system access} + +The auditor helpers actually only read from the file system, only the LaTeX +invocation to compile the final report to PDF inherently needs write +access. We do not predict that we will retool LaTeX. Also, the file system +access is completely uncritical, as the auditor by design runs on a system +that is separate from the production exchange system. + +Because that system will not have {\em any} crypto keys (not even the one of +the auditor!), CodeBlau is wrong to assume that reading from or writing to the +file system represents a security threat. + +We have started to better document the operational requirements on running the +auditor. + +\subsection{Avoid dlopen} + +Taler actually uses {\tt ltdlopen()} from GNU libtool, which provides +compiler flags to convert the dynamic linkage into static linkage. For +development, dynamic linkage has many advantages. + +We plan to test and document how to build GNU Taler with only static +linkage, and will recommend this style of deployment for the Taler +exchange for production. + +\subsection{Reduce reliance on PostgreSQL} + +CodeBlau's suggestion to use an append-only transaction logging service in +addition to the PostgreSQL database is a reasonable suggestion for a +production-grade deployment of GNU Taler, as it would allow partial disaster +recovery even in the presence of an attacker that has gained write access to +the exchange's database. + +We are currently still investigating whether the transaction logging should be +implemented directly by the exchange service, or via the database's extensible +replication mechanism. Any implementation of such an append-only logging +mechanism must be carefully designed to ensure it does not negatively impact +the exchange's availability and does not interfere with serializability of +database transactions. As such we believe that transaction logging can only be +provided on a best-effort basis. Fortunately, even a best-effort append-only +transaction log would serve to limit the financial damage incurred by the +exchange in an active database compromise scenario. + +\end{document} diff --git a/src/Makefile.am b/src/Makefile.am index 4b07a1161..4d4e533e3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -3,6 +3,9 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/include if HAVE_POSTGRESQL PQ_DIR = pq endif +if HAVE_SQLITE + SQ_DIR = sq +endif pkgcfgdir = $(prefix)/share/taler/config.d/ pkgcfg_DATA = \ @@ -17,6 +20,7 @@ SUBDIRS = \ json \ curl \ $(PQ_DIR) \ + $(SQ_DIR) \ mhd \ bank-lib \ exchangedb \ diff --git a/src/auditor/auditor-basedb.age b/src/auditor/auditor-basedb.age deleted file mode 100644 index 43f81861d..000000000 --- a/src/auditor/auditor-basedb.age +++ /dev/null @@ -1 +0,0 @@ -1584124548 diff --git a/src/auditor/auditor-basedb.fees b/src/auditor/auditor-basedb.fees Binary files differdeleted file mode 100644 index c3fe16373..000000000 --- a/src/auditor/auditor-basedb.fees +++ /dev/null diff --git a/src/auditor/auditor-basedb.mpub b/src/auditor/auditor-basedb.mpub deleted file mode 100644 index 0ed9694fe..000000000 --- a/src/auditor/auditor-basedb.mpub +++ /dev/null @@ -1 +0,0 @@ -BX3MKH0E1YPF03P1T2G4NKMYNHBGE1TC2N5P6RWHT1JHNXC32EN0 diff --git a/src/auditor/auditor-basedb.sql b/src/auditor/auditor-basedb.sql deleted file mode 100644 index 4e5925937..000000000 --- a/src/auditor/auditor-basedb.sql +++ /dev/null @@ -1,4881 +0,0 @@ --- --- PostgreSQL database dump --- - --- Dumped from database version 10.5 (Debian 10.5-1) --- Dumped by pg_dump version 10.5 (Debian 10.5-1) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: _v; Type: SCHEMA; Schema: -; Owner: - --- - -CREATE SCHEMA _v; - - --- --- Name: SCHEMA _v; Type: COMMENT; Schema: -; Owner: - --- - -COMMENT ON SCHEMA _v IS 'Schema for versioning data and functionality.'; - - --- --- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - --- - -CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; - - --- --- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - --- - -COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; - - --- --- Name: assert_patch_is_applied(text); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_patch_is_applied(in_patch_name text) RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE - t_text TEXT; -BEGIN - SELECT patch_name INTO t_text FROM _v.patches WHERE patch_name = in_patch_name; - IF NOT FOUND THEN - RAISE EXCEPTION 'Patch % is not applied!', in_patch_name; - END IF; - RETURN format('Patch %s is applied.', in_patch_name); -END; -$$; - - --- --- Name: FUNCTION assert_patch_is_applied(in_patch_name text); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_patch_is_applied(in_patch_name text) IS 'Function that can be used to make sure that patch has been applied.'; - - --- --- Name: assert_user_is_not_superuser(); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_user_is_not_superuser() RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE - v_super bool; -BEGIN - SELECT usesuper INTO v_super FROM pg_user WHERE usename = current_user; - IF v_super THEN - RAISE EXCEPTION 'Current user is superuser - cannot continue.'; - END IF; - RETURN 'assert_user_is_not_superuser: OK'; -END; -$$; - - --- --- Name: FUNCTION assert_user_is_not_superuser(); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_user_is_not_superuser() IS 'Function that can be used to make sure that patch is being applied using normal (not superuser) account.'; - - --- --- Name: assert_user_is_one_of(text[]); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_user_is_one_of(VARIADIC p_acceptable_users text[]) RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE -BEGIN - IF current_user = any( p_acceptable_users ) THEN - RETURN 'assert_user_is_one_of: OK'; - END IF; - RAISE EXCEPTION 'User is not one of: % - cannot continue.', p_acceptable_users; -END; -$$; - - --- --- Name: FUNCTION assert_user_is_one_of(VARIADIC p_acceptable_users text[]); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_user_is_one_of(VARIADIC p_acceptable_users text[]) IS 'Function that can be used to make sure that patch is being applied by one of defined users.'; - - --- --- Name: assert_user_is_superuser(); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_user_is_superuser() RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE - v_super bool; -BEGIN - SELECT usesuper INTO v_super FROM pg_user WHERE usename = current_user; - IF v_super THEN - RETURN 'assert_user_is_superuser: OK'; - END IF; - RAISE EXCEPTION 'Current user is not superuser - cannot continue.'; -END; -$$; - - --- --- Name: FUNCTION assert_user_is_superuser(); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_user_is_superuser() IS 'Function that can be used to make sure that patch is being applied using superuser account.'; - - --- --- Name: register_patch(text); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.register_patch(text) RETURNS SETOF integer - LANGUAGE sql - AS $_$ - SELECT _v.register_patch( $1, NULL, NULL ); -$_$; - - --- --- Name: FUNCTION register_patch(text); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.register_patch(text) IS 'Wrapper to allow registration of patches without requirements and conflicts.'; - - --- --- Name: register_patch(text, text[]); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.register_patch(text, text[]) RETURNS SETOF integer - LANGUAGE sql - AS $_$ - SELECT _v.register_patch( $1, $2, NULL ); -$_$; - - --- --- Name: FUNCTION register_patch(text, text[]); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.register_patch(text, text[]) IS 'Wrapper to allow registration of patches without conflicts.'; - - --- --- Name: register_patch(text, text[], text[]); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.register_patch(in_patch_name text, in_requirements text[], in_conflicts text[], OUT versioning integer) RETURNS SETOF integer - LANGUAGE plpgsql - AS $$ -DECLARE - t_text TEXT; - t_text_a TEXT[]; - i INT4; -BEGIN - -- Thanks to this we know only one patch will be applied at a time - LOCK TABLE _v.patches IN EXCLUSIVE MODE; - - SELECT patch_name INTO t_text FROM _v.patches WHERE patch_name = in_patch_name; - IF FOUND THEN - RAISE EXCEPTION 'Patch % is already applied!', in_patch_name; - END IF; - - t_text_a := ARRAY( SELECT patch_name FROM _v.patches WHERE patch_name = any( in_conflicts ) ); - IF array_upper( t_text_a, 1 ) IS NOT NULL THEN - RAISE EXCEPTION 'Versioning patches conflict. Conflicting patche(s) installed: %.', array_to_string( t_text_a, ', ' ); - END IF; - - IF array_upper( in_requirements, 1 ) IS NOT NULL THEN - t_text_a := '{}'; - FOR i IN array_lower( in_requirements, 1 ) .. array_upper( in_requirements, 1 ) LOOP - SELECT patch_name INTO t_text FROM _v.patches WHERE patch_name = in_requirements[i]; - IF NOT FOUND THEN - t_text_a := t_text_a || in_requirements[i]; - END IF; - END LOOP; - IF array_upper( t_text_a, 1 ) IS NOT NULL THEN - RAISE EXCEPTION 'Missing prerequisite(s): %.', array_to_string( t_text_a, ', ' ); - END IF; - END IF; - - INSERT INTO _v.patches (patch_name, applied_tsz, applied_by, requires, conflicts ) VALUES ( in_patch_name, now(), current_user, coalesce( in_requirements, '{}' ), coalesce( in_conflicts, '{}' ) ); - RETURN; -END; -$$; - - --- --- Name: FUNCTION register_patch(in_patch_name text, in_requirements text[], in_conflicts text[], OUT versioning integer); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.register_patch(in_patch_name text, in_requirements text[], in_conflicts text[], OUT versioning integer) IS 'Function to register patches in database. Raises exception if there are conflicts, prerequisites are not installed or the migration has already been installed.'; - - --- --- Name: unregister_patch(text); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.unregister_patch(in_patch_name text, OUT versioning integer) RETURNS SETOF integer - LANGUAGE plpgsql - AS $$ -DECLARE - i INT4; - t_text_a TEXT[]; -BEGIN - -- Thanks to this we know only one patch will be applied at a time - LOCK TABLE _v.patches IN EXCLUSIVE MODE; - - t_text_a := ARRAY( SELECT patch_name FROM _v.patches WHERE in_patch_name = ANY( requires ) ); - IF array_upper( t_text_a, 1 ) IS NOT NULL THEN - RAISE EXCEPTION 'Cannot uninstall %, as it is required by: %.', in_patch_name, array_to_string( t_text_a, ', ' ); - END IF; - - DELETE FROM _v.patches WHERE patch_name = in_patch_name; - GET DIAGNOSTICS i = ROW_COUNT; - IF i < 1 THEN - RAISE EXCEPTION 'Patch % is not installed, so it can''t be uninstalled!', in_patch_name; - END IF; - - RETURN; -END; -$$; - - --- --- Name: FUNCTION unregister_patch(in_patch_name text, OUT versioning integer); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.unregister_patch(in_patch_name text, OUT versioning integer) IS 'Function to unregister patches in database. Dies if the patch is not registered, or if unregistering it would break dependencies.'; - - -SET default_tablespace = ''; - -SET default_with_oids = false; - --- --- Name: patches; Type: TABLE; Schema: _v; Owner: - --- - -CREATE TABLE _v.patches ( - patch_name text NOT NULL, - applied_tsz timestamp with time zone DEFAULT now() NOT NULL, - applied_by text NOT NULL, - requires text[], - conflicts text[] -); - - --- --- Name: TABLE patches; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON TABLE _v.patches IS 'Contains information about what patches are currently applied on database.'; - - --- --- Name: COLUMN patches.patch_name; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.patch_name IS 'Name of patch, has to be unique for every patch.'; - - --- --- Name: COLUMN patches.applied_tsz; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.applied_tsz IS 'When the patch was applied.'; - - --- --- Name: COLUMN patches.applied_by; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.applied_by IS 'Who applied this patch (PostgreSQL username)'; - - --- --- Name: COLUMN patches.requires; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.requires IS 'List of patches that are required for given patch.'; - - --- --- Name: COLUMN patches.conflicts; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.conflicts IS 'List of patches that conflict with given patch.'; - - --- --- Name: aggregation_tracking; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.aggregation_tracking ( - aggregation_serial_id bigint NOT NULL, - deposit_serial_id bigint NOT NULL, - wtid_raw bytea -); - - --- --- Name: TABLE aggregation_tracking; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.aggregation_tracking IS 'mapping from wire transfer identifiers (WTID) to deposits (and back)'; - - --- --- Name: aggregation_tracking_aggregation_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.aggregation_tracking_aggregation_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: aggregation_tracking_aggregation_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.aggregation_tracking_aggregation_serial_id_seq OWNED BY public.aggregation_tracking.aggregation_serial_id; - - --- --- Name: app_bankaccount; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.app_bankaccount ( - is_public boolean NOT NULL, - account_no integer NOT NULL, - balance character varying NOT NULL, - user_id integer NOT NULL -); - - --- --- Name: app_bankaccount_account_no_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.app_bankaccount_account_no_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: app_bankaccount_account_no_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.app_bankaccount_account_no_seq OWNED BY public.app_bankaccount.account_no; - - --- --- Name: app_banktransaction; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.app_banktransaction ( - id integer NOT NULL, - amount character varying NOT NULL, - subject character varying(200) NOT NULL, - date timestamp with time zone NOT NULL, - cancelled boolean NOT NULL, - request_uid character varying(128) NOT NULL, - credit_account_id integer NOT NULL, - debit_account_id integer NOT NULL -); - - --- --- Name: app_banktransaction_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.app_banktransaction_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: app_banktransaction_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.app_banktransaction_id_seq OWNED BY public.app_banktransaction.id; - - --- --- Name: app_talerwithdrawoperation; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.app_talerwithdrawoperation ( - withdraw_id uuid NOT NULL, - amount character varying NOT NULL, - selection_done boolean NOT NULL, - confirmation_done boolean NOT NULL, - aborted boolean NOT NULL, - selected_reserve_pub text, - selected_exchange_account_id integer, - withdraw_account_id integer NOT NULL -); - - --- --- Name: auditor_balance_summary; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_balance_summary ( - master_pub bytea, - denom_balance_val bigint NOT NULL, - denom_balance_frac integer NOT NULL, - deposit_fee_balance_val bigint NOT NULL, - deposit_fee_balance_frac integer NOT NULL, - melt_fee_balance_val bigint NOT NULL, - melt_fee_balance_frac integer NOT NULL, - refund_fee_balance_val bigint NOT NULL, - refund_fee_balance_frac integer NOT NULL, - risk_val bigint NOT NULL, - risk_frac integer NOT NULL, - loss_val bigint NOT NULL, - loss_frac integer NOT NULL, - irregular_recoup_val bigint NOT NULL, - irregular_recoup_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_balance_summary; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_balance_summary IS 'the sum of the outstanding coins from auditor_denomination_pending (denom_pubs must belong to the respectives exchange master public key); it represents the auditor_balance_summary of the exchange at this point (modulo unexpected historic_loss-style events where denomination keys are compromised)'; - - --- --- Name: auditor_denomination_pending; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_denomination_pending ( - denom_pub_hash bytea NOT NULL, - denom_balance_val bigint NOT NULL, - denom_balance_frac integer NOT NULL, - denom_loss_val bigint NOT NULL, - denom_loss_frac integer NOT NULL, - num_issued bigint NOT NULL, - denom_risk_val bigint NOT NULL, - denom_risk_frac integer NOT NULL, - recoup_loss_val bigint NOT NULL, - recoup_loss_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_denomination_pending; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_denomination_pending IS 'outstanding denomination coins that the exchange is aware of and what the respective balances are (outstanding as well as issued overall which implies the maximum value at risk).'; - - --- --- Name: COLUMN auditor_denomination_pending.num_issued; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_denomination_pending.num_issued IS 'counts the number of coins issued (withdraw, refresh) of this denomination'; - - --- --- Name: COLUMN auditor_denomination_pending.denom_risk_val; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_denomination_pending.denom_risk_val IS 'amount that could theoretically be lost in the future due to recoup operations'; - - --- --- Name: COLUMN auditor_denomination_pending.recoup_loss_val; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_denomination_pending.recoup_loss_val IS 'amount actually lost due to recoup operations past revocation'; - - --- --- Name: auditor_denominations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_denominations ( - denom_pub_hash bytea NOT NULL, - master_pub bytea, - valid_from bigint NOT NULL, - expire_withdraw bigint NOT NULL, - expire_deposit bigint NOT NULL, - expire_legal bigint NOT NULL, - coin_val bigint NOT NULL, - coin_frac integer NOT NULL, - fee_withdraw_val bigint NOT NULL, - fee_withdraw_frac integer NOT NULL, - fee_deposit_val bigint NOT NULL, - fee_deposit_frac integer NOT NULL, - fee_refresh_val bigint NOT NULL, - fee_refresh_frac integer NOT NULL, - fee_refund_val bigint NOT NULL, - fee_refund_frac integer NOT NULL, - CONSTRAINT auditor_denominations_denom_pub_hash_check CHECK ((length(denom_pub_hash) = 64)) -); - - --- --- Name: TABLE auditor_denominations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_denominations IS 'denomination keys the auditor is aware of'; - - --- --- Name: auditor_exchange_signkeys; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_exchange_signkeys ( - master_pub bytea, - ep_start bigint NOT NULL, - ep_expire bigint NOT NULL, - ep_end bigint NOT NULL, - exchange_pub bytea NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT auditor_exchange_signkeys_exchange_pub_check CHECK ((length(exchange_pub) = 32)), - CONSTRAINT auditor_exchange_signkeys_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE auditor_exchange_signkeys; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_exchange_signkeys IS 'list of the online signing keys of exchanges we are auditing'; - - --- --- Name: auditor_exchanges; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_exchanges ( - master_pub bytea NOT NULL, - exchange_url character varying NOT NULL, - CONSTRAINT auditor_exchanges_master_pub_check CHECK ((length(master_pub) = 32)) -); - - --- --- Name: TABLE auditor_exchanges; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_exchanges IS 'list of the exchanges we are auditing'; - - --- --- Name: auditor_historic_denomination_revenue; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_historic_denomination_revenue ( - master_pub bytea, - denom_pub_hash bytea NOT NULL, - revenue_timestamp bigint NOT NULL, - revenue_balance_val bigint NOT NULL, - revenue_balance_frac integer NOT NULL, - loss_balance_val bigint NOT NULL, - loss_balance_frac integer NOT NULL, - CONSTRAINT auditor_historic_denomination_revenue_denom_pub_hash_check CHECK ((length(denom_pub_hash) = 64)) -); - - --- --- Name: TABLE auditor_historic_denomination_revenue; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_historic_denomination_revenue IS 'Table with historic profits; basically, when a denom_pub has expired and everything associated with it is garbage collected, the final profits end up in here; note that the denom_pub here is not a foreign key, we just keep it as a reference point.'; - - --- --- Name: COLUMN auditor_historic_denomination_revenue.revenue_balance_val; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_historic_denomination_revenue.revenue_balance_val IS 'the sum of all of the profits we made on the coin except for withdraw fees (which are in historic_reserve_revenue); so this includes the deposit, melt and refund fees'; - - --- --- Name: auditor_historic_reserve_summary; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_historic_reserve_summary ( - master_pub bytea, - start_date bigint NOT NULL, - end_date bigint NOT NULL, - reserve_profits_val bigint NOT NULL, - reserve_profits_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_historic_reserve_summary; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_historic_reserve_summary IS 'historic profits from reserves; we eventually GC auditor_historic_reserve_revenue, and then store the totals in here (by time intervals).'; - - --- --- Name: auditor_predicted_result; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_predicted_result ( - master_pub bytea, - balance_val bigint NOT NULL, - balance_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_predicted_result; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_predicted_result IS 'Table with the sum of the ledger, auditor_historic_revenue and the auditor_reserve_balance. This is the final amount that the exchange should have in its bank account right now.'; - - --- --- Name: auditor_progress_aggregation; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_aggregation ( - master_pub bytea NOT NULL, - last_wire_out_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_aggregation; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_aggregation IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_progress_coin; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_coin ( - master_pub bytea NOT NULL, - last_withdraw_serial_id bigint DEFAULT 0 NOT NULL, - last_deposit_serial_id bigint DEFAULT 0 NOT NULL, - last_melt_serial_id bigint DEFAULT 0 NOT NULL, - last_refund_serial_id bigint DEFAULT 0 NOT NULL, - last_recoup_serial_id bigint DEFAULT 0 NOT NULL, - last_recoup_refresh_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_coin; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_coin IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_progress_deposit_confirmation; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_deposit_confirmation ( - master_pub bytea NOT NULL, - last_deposit_confirmation_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_deposit_confirmation; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_deposit_confirmation IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_progress_reserve; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_reserve ( - master_pub bytea NOT NULL, - last_reserve_in_serial_id bigint DEFAULT 0 NOT NULL, - last_reserve_out_serial_id bigint DEFAULT 0 NOT NULL, - last_reserve_recoup_serial_id bigint DEFAULT 0 NOT NULL, - last_reserve_close_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_reserve; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_reserve IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_reserve_balance; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_reserve_balance ( - master_pub bytea, - reserve_balance_val bigint NOT NULL, - reserve_balance_frac integer NOT NULL, - withdraw_fee_balance_val bigint NOT NULL, - withdraw_fee_balance_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_reserve_balance; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_reserve_balance IS 'sum of the balances of all customer reserves (by exchange master public key)'; - - --- --- Name: auditor_reserves; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_reserves ( - reserve_pub bytea NOT NULL, - master_pub bytea, - reserve_balance_val bigint NOT NULL, - reserve_balance_frac integer NOT NULL, - withdraw_fee_balance_val bigint NOT NULL, - withdraw_fee_balance_frac integer NOT NULL, - expiration_date bigint NOT NULL, - auditor_reserves_rowid bigint NOT NULL, - origin_account text, - CONSTRAINT auditor_reserves_reserve_pub_check CHECK ((length(reserve_pub) = 32)) -); - - --- --- Name: TABLE auditor_reserves; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_reserves IS 'all of the customer reserves and their respective balances that the auditor is aware of'; - - --- --- Name: auditor_reserves_auditor_reserves_rowid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auditor_reserves_auditor_reserves_rowid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auditor_reserves_auditor_reserves_rowid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auditor_reserves_auditor_reserves_rowid_seq OWNED BY public.auditor_reserves.auditor_reserves_rowid; - - --- --- Name: auditor_wire_fee_balance; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_wire_fee_balance ( - master_pub bytea, - wire_fee_balance_val bigint NOT NULL, - wire_fee_balance_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_wire_fee_balance; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_wire_fee_balance IS 'sum of the balances of all wire fees (by exchange master public key)'; - - --- --- Name: auth_group; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_group ( - id integer NOT NULL, - name character varying(150) NOT NULL -); - - --- --- Name: auth_group_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_group_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_group_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_group_id_seq OWNED BY public.auth_group.id; - - --- --- Name: auth_group_permissions; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_group_permissions ( - id integer NOT NULL, - group_id integer NOT NULL, - permission_id integer NOT NULL -); - - --- --- Name: auth_group_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_group_permissions_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_group_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_group_permissions_id_seq OWNED BY public.auth_group_permissions.id; - - --- --- Name: auth_permission; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_permission ( - id integer NOT NULL, - name character varying(255) NOT NULL, - content_type_id integer NOT NULL, - codename character varying(100) NOT NULL -); - - --- --- Name: auth_permission_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_permission_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_permission_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_permission_id_seq OWNED BY public.auth_permission.id; - - --- --- Name: auth_user; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_user ( - id integer NOT NULL, - password character varying(128) NOT NULL, - last_login timestamp with time zone, - is_superuser boolean NOT NULL, - username character varying(150) NOT NULL, - first_name character varying(30) NOT NULL, - last_name character varying(150) NOT NULL, - email character varying(254) NOT NULL, - is_staff boolean NOT NULL, - is_active boolean NOT NULL, - date_joined timestamp with time zone NOT NULL -); - - --- --- Name: auth_user_groups; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_user_groups ( - id integer NOT NULL, - user_id integer NOT NULL, - group_id integer NOT NULL -); - - --- --- Name: auth_user_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_user_groups_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_user_groups_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_user_groups_id_seq OWNED BY public.auth_user_groups.id; - - --- --- Name: auth_user_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_user_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_user_id_seq OWNED BY public.auth_user.id; - - --- --- Name: auth_user_user_permissions; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_user_user_permissions ( - id integer NOT NULL, - user_id integer NOT NULL, - permission_id integer NOT NULL -); - - --- --- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_user_user_permissions_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_user_user_permissions_id_seq OWNED BY public.auth_user_user_permissions.id; - - --- --- Name: denomination_revocations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.denomination_revocations ( - denom_revocations_serial_id bigint NOT NULL, - denom_pub_hash bytea NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT denomination_revocations_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE denomination_revocations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.denomination_revocations IS 'remembering which denomination keys have been revoked'; - - --- --- Name: denomination_revocations_denom_revocations_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.denomination_revocations_denom_revocations_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: denomination_revocations_denom_revocations_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.denomination_revocations_denom_revocations_serial_id_seq OWNED BY public.denomination_revocations.denom_revocations_serial_id; - - --- --- Name: denominations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.denominations ( - denom_pub_hash bytea NOT NULL, - denom_pub bytea NOT NULL, - master_pub bytea NOT NULL, - master_sig bytea NOT NULL, - valid_from bigint NOT NULL, - expire_withdraw bigint NOT NULL, - expire_deposit bigint NOT NULL, - expire_legal bigint NOT NULL, - coin_val bigint NOT NULL, - coin_frac integer NOT NULL, - fee_withdraw_val bigint NOT NULL, - fee_withdraw_frac integer NOT NULL, - fee_deposit_val bigint NOT NULL, - fee_deposit_frac integer NOT NULL, - fee_refresh_val bigint NOT NULL, - fee_refresh_frac integer NOT NULL, - fee_refund_val bigint NOT NULL, - fee_refund_frac integer NOT NULL, - CONSTRAINT denominations_denom_pub_hash_check CHECK ((length(denom_pub_hash) = 64)), - CONSTRAINT denominations_master_pub_check CHECK ((length(master_pub) = 32)), - CONSTRAINT denominations_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE denominations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.denominations IS 'Main denominations table. All the coins the exchange knows about.'; - - --- --- Name: deposit_confirmations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deposit_confirmations ( - master_pub bytea, - serial_id bigint NOT NULL, - h_contract_terms bytea NOT NULL, - h_wire bytea NOT NULL, - "timestamp" bigint NOT NULL, - refund_deadline bigint NOT NULL, - amount_without_fee_val bigint NOT NULL, - amount_without_fee_frac integer NOT NULL, - coin_pub bytea NOT NULL, - merchant_pub bytea NOT NULL, - exchange_sig bytea NOT NULL, - exchange_pub bytea NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT deposit_confirmations_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT deposit_confirmations_exchange_pub_check CHECK ((length(exchange_pub) = 32)), - CONSTRAINT deposit_confirmations_exchange_sig_check CHECK ((length(exchange_sig) = 64)), - CONSTRAINT deposit_confirmations_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT deposit_confirmations_h_wire_check CHECK ((length(h_wire) = 64)), - CONSTRAINT deposit_confirmations_master_sig_check CHECK ((length(master_sig) = 64)), - CONSTRAINT deposit_confirmations_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: TABLE deposit_confirmations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.deposit_confirmations IS 'deposit confirmation sent to us by merchants; we must check that the exchange reported these properly.'; - - --- --- Name: deposit_confirmations_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.deposit_confirmations_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: deposit_confirmations_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.deposit_confirmations_serial_id_seq OWNED BY public.deposit_confirmations.serial_id; - - --- --- Name: deposits; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deposits ( - deposit_serial_id bigint NOT NULL, - coin_pub bytea NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - "timestamp" bigint NOT NULL, - refund_deadline bigint NOT NULL, - wire_deadline bigint NOT NULL, - merchant_pub bytea NOT NULL, - h_contract_terms bytea NOT NULL, - h_wire bytea NOT NULL, - coin_sig bytea NOT NULL, - wire text NOT NULL, - tiny boolean DEFAULT false NOT NULL, - done boolean DEFAULT false NOT NULL, - CONSTRAINT deposits_coin_sig_check CHECK ((length(coin_sig) = 64)), - CONSTRAINT deposits_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT deposits_h_wire_check CHECK ((length(h_wire) = 64)), - CONSTRAINT deposits_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: TABLE deposits; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.deposits IS 'Deposits we have received and for which we need to make (aggregate) wire transfers (and manage refunds).'; - - --- --- Name: COLUMN deposits.tiny; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposits.tiny IS 'Set to TRUE if we decided that the amount is too small to ever trigger a wire transfer by itself (requires real aggregation)'; - - --- --- Name: COLUMN deposits.done; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposits.done IS 'Set to TRUE once we have included this deposit in some aggregate wire transfer to the merchant'; - - --- --- Name: deposits_deposit_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.deposits_deposit_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: deposits_deposit_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.deposits_deposit_serial_id_seq OWNED BY public.deposits.deposit_serial_id; - - --- --- Name: django_content_type; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.django_content_type ( - id integer NOT NULL, - app_label character varying(100) NOT NULL, - model character varying(100) NOT NULL -); - - --- --- Name: django_content_type_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.django_content_type_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: django_content_type_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.django_content_type_id_seq OWNED BY public.django_content_type.id; - - --- --- Name: django_migrations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.django_migrations ( - id integer NOT NULL, - app character varying(255) NOT NULL, - name character varying(255) NOT NULL, - applied timestamp with time zone NOT NULL -); - - --- --- Name: django_migrations_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.django_migrations_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: django_migrations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.django_migrations_id_seq OWNED BY public.django_migrations.id; - - --- --- Name: django_session; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.django_session ( - session_key character varying(40) NOT NULL, - session_data text NOT NULL, - expire_date timestamp with time zone NOT NULL -); - - --- --- Name: exchange_wire_fees; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.exchange_wire_fees ( - exchange_pub bytea NOT NULL, - h_wire_method bytea NOT NULL, - wire_fee_val bigint NOT NULL, - wire_fee_frac integer NOT NULL, - closing_fee_val bigint NOT NULL, - closing_fee_frac integer NOT NULL, - start_date bigint NOT NULL, - end_date bigint NOT NULL, - exchange_sig bytea NOT NULL, - CONSTRAINT exchange_wire_fees_exchange_pub_check CHECK ((length(exchange_pub) = 32)), - CONSTRAINT exchange_wire_fees_exchange_sig_check CHECK ((length(exchange_sig) = 64)), - CONSTRAINT exchange_wire_fees_h_wire_method_check CHECK ((length(h_wire_method) = 64)) -); - - --- --- Name: known_coins; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.known_coins ( - coin_pub bytea NOT NULL, - denom_pub_hash bytea NOT NULL, - denom_sig bytea NOT NULL, - CONSTRAINT known_coins_coin_pub_check CHECK ((length(coin_pub) = 32)) -); - - --- --- Name: TABLE known_coins; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.known_coins IS 'information about coins and their signatures, so we do not have to store the signatures more than once if a coin is involved in multiple operations'; - - --- --- Name: merchant_contract_terms; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_contract_terms ( - order_id character varying NOT NULL, - merchant_pub bytea NOT NULL, - contract_terms bytea NOT NULL, - h_contract_terms bytea NOT NULL, - "timestamp" bigint NOT NULL, - row_id bigint NOT NULL, - paid boolean DEFAULT false NOT NULL, - CONSTRAINT merchant_contract_terms_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT merchant_contract_terms_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_contract_terms_row_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.merchant_contract_terms_row_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: merchant_contract_terms_row_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.merchant_contract_terms_row_id_seq OWNED BY public.merchant_contract_terms.row_id; - - --- --- Name: merchant_deposits; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_deposits ( - h_contract_terms bytea NOT NULL, - merchant_pub bytea NOT NULL, - coin_pub bytea NOT NULL, - exchange_url character varying NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - deposit_fee_val bigint NOT NULL, - deposit_fee_frac integer NOT NULL, - refund_fee_val bigint NOT NULL, - refund_fee_frac integer NOT NULL, - wire_fee_val bigint NOT NULL, - wire_fee_frac integer NOT NULL, - signkey_pub bytea NOT NULL, - exchange_proof bytea NOT NULL, - CONSTRAINT merchant_deposits_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT merchant_deposits_merchant_pub_check CHECK ((length(merchant_pub) = 32)), - CONSTRAINT merchant_deposits_signkey_pub_check CHECK ((length(signkey_pub) = 32)) -); - - --- --- Name: merchant_orders; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_orders ( - order_id character varying NOT NULL, - merchant_pub bytea NOT NULL, - contract_terms bytea NOT NULL, - "timestamp" bigint NOT NULL, - CONSTRAINT merchant_orders_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_proofs; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_proofs ( - exchange_url character varying NOT NULL, - wtid bytea NOT NULL, - execution_time bigint NOT NULL, - signkey_pub bytea NOT NULL, - proof bytea NOT NULL, - CONSTRAINT merchant_proofs_signkey_pub_check CHECK ((length(signkey_pub) = 32)), - CONSTRAINT merchant_proofs_wtid_check CHECK ((length(wtid) = 32)) -); - - --- --- Name: merchant_refunds; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_refunds ( - rtransaction_id bigint NOT NULL, - merchant_pub bytea NOT NULL, - h_contract_terms bytea NOT NULL, - coin_pub bytea NOT NULL, - reason character varying NOT NULL, - refund_amount_val bigint NOT NULL, - refund_amount_frac integer NOT NULL, - refund_fee_val bigint NOT NULL, - refund_fee_frac integer NOT NULL, - CONSTRAINT merchant_refunds_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT merchant_refunds_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_refunds_rtransaction_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.merchant_refunds_rtransaction_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: merchant_refunds_rtransaction_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.merchant_refunds_rtransaction_id_seq OWNED BY public.merchant_refunds.rtransaction_id; - - --- --- Name: merchant_session_info; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_session_info ( - session_id character varying NOT NULL, - fulfillment_url character varying NOT NULL, - order_id character varying NOT NULL, - merchant_pub bytea NOT NULL, - "timestamp" bigint NOT NULL, - CONSTRAINT merchant_session_info_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_tip_pickups; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tip_pickups ( - tip_id bytea NOT NULL, - pickup_id bytea NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - CONSTRAINT merchant_tip_pickups_pickup_id_check CHECK ((length(pickup_id) = 64)) -); - - --- --- Name: merchant_tip_reserve_credits; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tip_reserve_credits ( - reserve_priv bytea NOT NULL, - credit_uuid bytea NOT NULL, - "timestamp" bigint NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - CONSTRAINT merchant_tip_reserve_credits_credit_uuid_check CHECK ((length(credit_uuid) = 64)), - CONSTRAINT merchant_tip_reserve_credits_reserve_priv_check CHECK ((length(reserve_priv) = 32)) -); - - --- --- Name: merchant_tip_reserves; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tip_reserves ( - reserve_priv bytea NOT NULL, - expiration bigint NOT NULL, - balance_val bigint NOT NULL, - balance_frac integer NOT NULL, - CONSTRAINT merchant_tip_reserves_reserve_priv_check CHECK ((length(reserve_priv) = 32)) -); - - --- --- Name: merchant_tips; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tips ( - reserve_priv bytea NOT NULL, - tip_id bytea NOT NULL, - exchange_url character varying NOT NULL, - justification character varying NOT NULL, - extra bytea NOT NULL, - "timestamp" bigint NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - left_val bigint NOT NULL, - left_frac integer NOT NULL, - CONSTRAINT merchant_tips_reserve_priv_check CHECK ((length(reserve_priv) = 32)), - CONSTRAINT merchant_tips_tip_id_check CHECK ((length(tip_id) = 64)) -); - - --- --- Name: merchant_transfers; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_transfers ( - h_contract_terms bytea NOT NULL, - coin_pub bytea NOT NULL, - wtid bytea NOT NULL, - CONSTRAINT merchant_transfers_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT merchant_transfers_wtid_check CHECK ((length(wtid) = 32)) -); - - --- --- Name: prewire; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.prewire ( - prewire_uuid bigint NOT NULL, - type text NOT NULL, - finished boolean DEFAULT false NOT NULL, - buf bytea NOT NULL -); - - --- --- Name: TABLE prewire; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.prewire IS 'pre-commit data for wire transfers we are about to execute'; - - --- --- Name: prewire_prewire_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.prewire_prewire_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: prewire_prewire_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.prewire_prewire_uuid_seq OWNED BY public.prewire.prewire_uuid; - - --- --- Name: recoup; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.recoup ( - recoup_uuid bigint NOT NULL, - coin_pub bytea NOT NULL, - coin_sig bytea NOT NULL, - coin_blind bytea NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - "timestamp" bigint NOT NULL, - h_blind_ev bytea NOT NULL, - CONSTRAINT recoup_coin_blind_check CHECK ((length(coin_blind) = 32)), - CONSTRAINT recoup_coin_sig_check CHECK ((length(coin_sig) = 64)) -); - - --- --- Name: TABLE recoup; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.recoup IS 'Information about recoups that were executed'; - - --- --- Name: COLUMN recoup.coin_pub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.recoup.coin_pub IS 'Do not CASCADE ON DROP on the coin_pub, as we may keep the coin alive!'; - - --- --- Name: recoup_recoup_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.recoup_recoup_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: recoup_recoup_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.recoup_recoup_uuid_seq OWNED BY public.recoup.recoup_uuid; - - --- --- Name: recoup_refresh; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.recoup_refresh ( - recoup_refresh_uuid bigint NOT NULL, - coin_pub bytea NOT NULL, - coin_sig bytea NOT NULL, - coin_blind bytea NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - "timestamp" bigint NOT NULL, - h_blind_ev bytea NOT NULL, - CONSTRAINT recoup_refresh_coin_blind_check CHECK ((length(coin_blind) = 32)), - CONSTRAINT recoup_refresh_coin_sig_check CHECK ((length(coin_sig) = 64)) -); - - --- --- Name: COLUMN recoup_refresh.coin_pub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.recoup_refresh.coin_pub IS 'Do not CASCADE ON DROP on the coin_pub, as we may keep the coin alive!'; - - --- --- Name: recoup_refresh_recoup_refresh_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.recoup_refresh_recoup_refresh_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: recoup_refresh_recoup_refresh_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.recoup_refresh_recoup_refresh_uuid_seq OWNED BY public.recoup_refresh.recoup_refresh_uuid; - - --- --- Name: refresh_commitments; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refresh_commitments ( - melt_serial_id bigint NOT NULL, - rc bytea NOT NULL, - old_coin_pub bytea NOT NULL, - old_coin_sig bytea NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - noreveal_index integer NOT NULL, - CONSTRAINT refresh_commitments_old_coin_sig_check CHECK ((length(old_coin_sig) = 64)), - CONSTRAINT refresh_commitments_rc_check CHECK ((length(rc) = 64)) -); - - --- --- Name: TABLE refresh_commitments; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refresh_commitments IS 'Commitments made when melting coins and the gamma value chosen by the exchange.'; - - --- --- Name: refresh_commitments_melt_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.refresh_commitments_melt_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: refresh_commitments_melt_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.refresh_commitments_melt_serial_id_seq OWNED BY public.refresh_commitments.melt_serial_id; - - --- --- Name: refresh_revealed_coins; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refresh_revealed_coins ( - rc bytea NOT NULL, - freshcoin_index integer NOT NULL, - link_sig bytea NOT NULL, - denom_pub_hash bytea NOT NULL, - coin_ev bytea NOT NULL, - h_coin_ev bytea NOT NULL, - ev_sig bytea NOT NULL, - CONSTRAINT refresh_revealed_coins_h_coin_ev_check CHECK ((length(h_coin_ev) = 64)), - CONSTRAINT refresh_revealed_coins_link_sig_check CHECK ((length(link_sig) = 64)) -); - - --- --- Name: TABLE refresh_revealed_coins; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refresh_revealed_coins IS 'Revelations about the new coins that are to be created during a melting session.'; - - --- --- Name: COLUMN refresh_revealed_coins.rc; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.rc IS 'refresh commitment identifying the melt operation'; - - --- --- Name: COLUMN refresh_revealed_coins.freshcoin_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.freshcoin_index IS 'index of the fresh coin being created (one melt operation may result in multiple fresh coins)'; - - --- --- Name: COLUMN refresh_revealed_coins.coin_ev; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.coin_ev IS 'envelope of the new coin to be signed'; - - --- --- Name: COLUMN refresh_revealed_coins.h_coin_ev; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.h_coin_ev IS 'hash of the envelope of the new coin to be signed (for lookups)'; - - --- --- Name: COLUMN refresh_revealed_coins.ev_sig; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.ev_sig IS 'exchange signature over the envelope'; - - --- --- Name: refresh_transfer_keys; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refresh_transfer_keys ( - rc bytea NOT NULL, - transfer_pub bytea NOT NULL, - transfer_privs bytea NOT NULL, - CONSTRAINT refresh_transfer_keys_transfer_pub_check CHECK ((length(transfer_pub) = 32)) -); - - --- --- Name: TABLE refresh_transfer_keys; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refresh_transfer_keys IS 'Transfer keys of a refresh operation (the data revealed to the exchange).'; - - --- --- Name: COLUMN refresh_transfer_keys.rc; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_transfer_keys.rc IS 'refresh commitment identifying the melt operation'; - - --- --- Name: COLUMN refresh_transfer_keys.transfer_pub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_transfer_keys.transfer_pub IS 'transfer public key for the gamma index'; - - --- --- Name: COLUMN refresh_transfer_keys.transfer_privs; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_transfer_keys.transfer_privs IS 'array of TALER_CNC_KAPPA - 1 transfer private keys that have been revealed, with the gamma entry being skipped'; - - --- --- Name: refunds; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refunds ( - refund_serial_id bigint NOT NULL, - coin_pub bytea NOT NULL, - merchant_pub bytea NOT NULL, - merchant_sig bytea NOT NULL, - h_contract_terms bytea NOT NULL, - rtransaction_id bigint NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - CONSTRAINT refunds_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT refunds_merchant_pub_check CHECK ((length(merchant_pub) = 32)), - CONSTRAINT refunds_merchant_sig_check CHECK ((length(merchant_sig) = 64)) -); - - --- --- Name: TABLE refunds; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refunds IS 'Data on coins that were refunded. Technically, refunds always apply against specific deposit operations involving a coin. The combination of coin_pub, merchant_pub, h_contract_terms and rtransaction_id MUST be unique, and we usually select by coin_pub so that one goes first.'; - - --- --- Name: COLUMN refunds.rtransaction_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refunds.rtransaction_id IS 'used by the merchant to make refunds unique in case the same coin for the same deposit gets a subsequent (higher) refund'; - - --- --- Name: refunds_refund_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.refunds_refund_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: refunds_refund_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.refunds_refund_serial_id_seq OWNED BY public.refunds.refund_serial_id; - - --- --- Name: reserves; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves ( - reserve_pub bytea NOT NULL, - account_details text NOT NULL, - current_balance_val bigint NOT NULL, - current_balance_frac integer NOT NULL, - expiration_date bigint NOT NULL, - gc_date bigint NOT NULL, - CONSTRAINT reserves_reserve_pub_check CHECK ((length(reserve_pub) = 32)) -); - - --- --- Name: TABLE reserves; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves IS 'Summarizes the balance of a reserve. Updated when new funds are added or withdrawn.'; - - --- --- Name: COLUMN reserves.expiration_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves.expiration_date IS 'Used to trigger closing of reserves that have not been drained after some time'; - - --- --- Name: COLUMN reserves.gc_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves.gc_date IS 'Used to forget all information about a reserve during garbage collection'; - - --- --- Name: reserves_close; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves_close ( - close_uuid bigint NOT NULL, - reserve_pub bytea NOT NULL, - execution_date bigint NOT NULL, - wtid bytea NOT NULL, - receiver_account text NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - closing_fee_val bigint NOT NULL, - closing_fee_frac integer NOT NULL, - CONSTRAINT reserves_close_wtid_check CHECK ((length(wtid) = 32)) -); - - --- --- Name: TABLE reserves_close; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves_close IS 'wire transfers executed by the reserve to close reserves'; - - --- --- Name: reserves_close_close_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.reserves_close_close_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: reserves_close_close_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.reserves_close_close_uuid_seq OWNED BY public.reserves_close.close_uuid; - - --- --- Name: reserves_in; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves_in ( - reserve_in_serial_id bigint NOT NULL, - reserve_pub bytea NOT NULL, - wire_reference bigint NOT NULL, - credit_val bigint NOT NULL, - credit_frac integer NOT NULL, - sender_account_details text NOT NULL, - exchange_account_section text NOT NULL, - execution_date bigint NOT NULL -); - - --- --- Name: TABLE reserves_in; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves_in IS 'list of transfers of funds into the reserves, one per incoming wire transfer'; - - --- --- Name: reserves_in_reserve_in_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.reserves_in_reserve_in_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: reserves_in_reserve_in_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.reserves_in_reserve_in_serial_id_seq OWNED BY public.reserves_in.reserve_in_serial_id; - - --- --- Name: reserves_out; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves_out ( - reserve_out_serial_id bigint NOT NULL, - h_blind_ev bytea NOT NULL, - denom_pub_hash bytea NOT NULL, - denom_sig bytea NOT NULL, - reserve_pub bytea NOT NULL, - reserve_sig bytea NOT NULL, - execution_date bigint NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - CONSTRAINT reserves_out_h_blind_ev_check CHECK ((length(h_blind_ev) = 64)), - CONSTRAINT reserves_out_reserve_sig_check CHECK ((length(reserve_sig) = 64)) -); - - --- --- Name: TABLE reserves_out; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves_out IS 'Withdraw operations performed on reserves.'; - - --- --- Name: COLUMN reserves_out.h_blind_ev; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves_out.h_blind_ev IS 'Hash of the blinded coin, used as primary key here so that broken clients that use a non-random coin or blinding factor fail to withdraw (otherwise they would fail on deposit when the coin is not unique there).'; - - --- --- Name: COLUMN reserves_out.denom_pub_hash; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves_out.denom_pub_hash IS 'We do not CASCADE ON DELETE here, we may keep the denomination data alive'; - - --- --- Name: reserves_out_reserve_out_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.reserves_out_reserve_out_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: reserves_out_reserve_out_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.reserves_out_reserve_out_serial_id_seq OWNED BY public.reserves_out.reserve_out_serial_id; - - --- --- Name: wire_auditor_account_progress; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_auditor_account_progress ( - master_pub bytea NOT NULL, - account_name text NOT NULL, - last_wire_reserve_in_serial_id bigint DEFAULT 0 NOT NULL, - last_wire_wire_out_serial_id bigint DEFAULT 0 NOT NULL, - wire_in_off bigint, - wire_out_off bigint -); - - --- --- Name: TABLE wire_auditor_account_progress; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.wire_auditor_account_progress IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: wire_auditor_progress; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_auditor_progress ( - master_pub bytea NOT NULL, - last_timestamp bigint NOT NULL, - last_reserve_close_uuid bigint NOT NULL -); - - --- --- Name: wire_fee; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_fee ( - wire_method character varying NOT NULL, - start_date bigint NOT NULL, - end_date bigint NOT NULL, - wire_fee_val bigint NOT NULL, - wire_fee_frac integer NOT NULL, - closing_fee_val bigint NOT NULL, - closing_fee_frac integer NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT wire_fee_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE wire_fee; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.wire_fee IS 'list of the wire fees of this exchange, by date'; - - --- --- Name: wire_out; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_out ( - wireout_uuid bigint NOT NULL, - execution_date bigint NOT NULL, - wtid_raw bytea NOT NULL, - wire_target text NOT NULL, - exchange_account_section text NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - CONSTRAINT wire_out_wtid_raw_check CHECK ((length(wtid_raw) = 32)) -); - - --- --- Name: TABLE wire_out; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.wire_out IS 'wire transfers the exchange has executed'; - - --- --- Name: wire_out_wireout_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.wire_out_wireout_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: wire_out_wireout_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.wire_out_wireout_uuid_seq OWNED BY public.wire_out.wireout_uuid; - - --- --- Name: aggregation_tracking aggregation_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking ALTER COLUMN aggregation_serial_id SET DEFAULT nextval('public.aggregation_tracking_aggregation_serial_id_seq'::regclass); - - --- --- Name: app_bankaccount account_no; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount ALTER COLUMN account_no SET DEFAULT nextval('public.app_bankaccount_account_no_seq'::regclass); - - --- --- Name: app_banktransaction id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction ALTER COLUMN id SET DEFAULT nextval('public.app_banktransaction_id_seq'::regclass); - - --- --- Name: auditor_reserves auditor_reserves_rowid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserves ALTER COLUMN auditor_reserves_rowid SET DEFAULT nextval('public.auditor_reserves_auditor_reserves_rowid_seq'::regclass); - - --- --- Name: auth_group id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group ALTER COLUMN id SET DEFAULT nextval('public.auth_group_id_seq'::regclass); - - --- --- Name: auth_group_permissions id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions ALTER COLUMN id SET DEFAULT nextval('public.auth_group_permissions_id_seq'::regclass); - - --- --- Name: auth_permission id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission ALTER COLUMN id SET DEFAULT nextval('public.auth_permission_id_seq'::regclass); - - --- --- Name: auth_user id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user ALTER COLUMN id SET DEFAULT nextval('public.auth_user_id_seq'::regclass); - - --- --- Name: auth_user_groups id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups ALTER COLUMN id SET DEFAULT nextval('public.auth_user_groups_id_seq'::regclass); - - --- --- Name: auth_user_user_permissions id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions ALTER COLUMN id SET DEFAULT nextval('public.auth_user_user_permissions_id_seq'::regclass); - - --- --- Name: denomination_revocations denom_revocations_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations ALTER COLUMN denom_revocations_serial_id SET DEFAULT nextval('public.denomination_revocations_denom_revocations_serial_id_seq'::regclass); - - --- --- Name: deposit_confirmations serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations ALTER COLUMN serial_id SET DEFAULT nextval('public.deposit_confirmations_serial_id_seq'::regclass); - - --- --- Name: deposits deposit_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits ALTER COLUMN deposit_serial_id SET DEFAULT nextval('public.deposits_deposit_serial_id_seq'::regclass); - - --- --- Name: django_content_type id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_content_type ALTER COLUMN id SET DEFAULT nextval('public.django_content_type_id_seq'::regclass); - - --- --- Name: django_migrations id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_migrations ALTER COLUMN id SET DEFAULT nextval('public.django_migrations_id_seq'::regclass); - - --- --- Name: merchant_contract_terms row_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms ALTER COLUMN row_id SET DEFAULT nextval('public.merchant_contract_terms_row_id_seq'::regclass); - - --- --- Name: merchant_refunds rtransaction_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_refunds ALTER COLUMN rtransaction_id SET DEFAULT nextval('public.merchant_refunds_rtransaction_id_seq'::regclass); - - --- --- Name: prewire prewire_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prewire ALTER COLUMN prewire_uuid SET DEFAULT nextval('public.prewire_prewire_uuid_seq'::regclass); - - --- --- Name: recoup recoup_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup ALTER COLUMN recoup_uuid SET DEFAULT nextval('public.recoup_recoup_uuid_seq'::regclass); - - --- --- Name: recoup_refresh recoup_refresh_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh ALTER COLUMN recoup_refresh_uuid SET DEFAULT nextval('public.recoup_refresh_recoup_refresh_uuid_seq'::regclass); - - --- --- Name: refresh_commitments melt_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments ALTER COLUMN melt_serial_id SET DEFAULT nextval('public.refresh_commitments_melt_serial_id_seq'::regclass); - - --- --- Name: refunds refund_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds ALTER COLUMN refund_serial_id SET DEFAULT nextval('public.refunds_refund_serial_id_seq'::regclass); - - --- --- Name: reserves_close close_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_close ALTER COLUMN close_uuid SET DEFAULT nextval('public.reserves_close_close_uuid_seq'::regclass); - - --- --- Name: reserves_in reserve_in_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in ALTER COLUMN reserve_in_serial_id SET DEFAULT nextval('public.reserves_in_reserve_in_serial_id_seq'::regclass); - - --- --- Name: reserves_out reserve_out_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out ALTER COLUMN reserve_out_serial_id SET DEFAULT nextval('public.reserves_out_reserve_out_serial_id_seq'::regclass); - - --- --- Name: wire_out wireout_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_out ALTER COLUMN wireout_uuid SET DEFAULT nextval('public.wire_out_wireout_uuid_seq'::regclass); - - --- --- Data for Name: patches; Type: TABLE DATA; Schema: _v; Owner: - --- - -COPY _v.patches (patch_name, applied_tsz, applied_by, requires, conflicts) FROM stdin; -exchange-0001 2020-03-13 19:35:27.122355+01 grothoff {} {} -auditor-0001 2020-03-13 19:35:34.389994+01 grothoff {} {} -merchant-0001 2020-03-13 19:35:37.767017+01 grothoff {} {} -\. - - --- --- Data for Name: aggregation_tracking; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.aggregation_tracking (aggregation_serial_id, deposit_serial_id, wtid_raw) FROM stdin; -\. - - --- --- Data for Name: app_bankaccount; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.app_bankaccount (is_public, account_no, balance, user_id) FROM stdin; -t 3 +TESTKUDOS:0 3 -t 4 +TESTKUDOS:0 4 -t 5 +TESTKUDOS:0 5 -t 6 +TESTKUDOS:0 6 -t 7 +TESTKUDOS:0 7 -t 8 +TESTKUDOS:0 8 -f 9 +TESTKUDOS:0 9 -f 10 +TESTKUDOS:0 10 -f 11 +TESTKUDOS:90 11 -t 1 -TESTKUDOS:200 1 -f 12 +TESTKUDOS:82 12 -t 2 +TESTKUDOS:28 2 -\. - - --- --- Data for Name: app_banktransaction; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.app_banktransaction (id, amount, subject, date, cancelled, request_uid, credit_account_id, debit_account_id) FROM stdin; -1 TESTKUDOS:100 Joining bonus 2020-03-13 19:35:41.187705+01 f 5e24163f-5331-4629-87e8-40fb8715a0c2 11 1 -2 TESTKUDOS:10 HG3AD5KPDE27RB7A2Y5WZK9K6GTX998K05YZ6C4DEC2RRR1J3PT0 2020-03-13 19:35:41.278467+01 f 9f36a88e-3b60-4e3a-9eba-e990fc231631 2 11 -3 TESTKUDOS:100 Joining bonus 2020-03-13 19:35:43.794597+01 f ad97b48b-6d1c-4634-9b43-7a130f35dc82 12 1 -4 TESTKUDOS:18 RT4Y2C6W4X7SX0Z064TRQ4H2ZZH1GD5E7WWZHMJQ9WM5F5KGWQ40 2020-03-13 19:35:43.881571+01 f b0223db0-35f9-4a33-958c-321d1f96deb4 2 12 -\. - - --- --- Data for Name: app_talerwithdrawoperation; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.app_talerwithdrawoperation (withdraw_id, amount, selection_done, confirmation_done, aborted, selected_reserve_pub, selected_exchange_account_id, withdraw_account_id) FROM stdin; -\. - - --- --- Data for Name: auditor_balance_summary; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_balance_summary (master_pub, denom_balance_val, denom_balance_frac, deposit_fee_balance_val, deposit_fee_balance_frac, melt_fee_balance_val, melt_fee_balance_frac, refund_fee_balance_val, refund_fee_balance_frac, risk_val, risk_frac, loss_val, loss_frac, irregular_recoup_val, irregular_recoup_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_denomination_pending; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_denomination_pending (denom_pub_hash, denom_balance_val, denom_balance_frac, denom_loss_val, denom_loss_frac, num_issued, denom_risk_val, denom_risk_frac, recoup_loss_val, recoup_loss_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_denominations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_denominations (denom_pub_hash, master_pub, valid_from, expire_withdraw, expire_deposit, expire_legal, coin_val, coin_frac, fee_withdraw_val, fee_withdraw_frac, fee_deposit_val, fee_deposit_frac, fee_refresh_val, fee_refresh_frac, fee_refund_val, fee_refund_frac) FROM stdin; -\\xa96d1614b62d8a838b7ebee977db7f3d3b7c3630c8d6aee9c96e848c5b4f72200672fb3ffe229bb3c0ca63fda38757550f42170cf04fa8c647342d4d82abee67 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xbb45dd1f40b446b36785e2178930240f1407da65a34dc2f4c39b527838e014ae2f5a5249a5db28ab0a64c1e37608fc7345508132dff6c135fd8c1bf651248dac \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xff062da42a2041b151a9a116837e70a11be427656d0e79ee440386edaa31181931fcc88667cbcfd1a47dcc382e8f770d897807ec2b0be258ca061eed3bee85ee \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9cb0ae54f9c698ebd27e4de1c80894794ba23e6a96651809bd62aaf4b09fc051248a210d11f632c21a9bf60eb8a81bcee79dbdf8827a522774beabb2e17f26ba \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x73cc45fec9836dec65d8c0d9b9e0bed91b00a855f640a7ba5710ccf9f83b592660711f7fd27ad73cbe9b36ac8c934b3cf8dedb73a816a2e99338a600d171a09a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc17a45b79c699f6706a467b28baf97c8634266ce019fefef7f949690a6630f75c34a1dcf8793ecdb44eeca1ec4b4a599ef40d8bc93bf98ec92dbde5a02b4208d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xec3d9d60b61b86944f9200d17e51f16f8a3da2f549078d93fc666ac749413eed8b8c81c933f4571cc6f5133125df4ca44d4f0b2c9df66b695f61c52ecae31b72 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x8e7a9699d1a4641f86dc5ccdd6905dda424bc97d25763b4f84a96094b549c657287dfb95a9a3bb8f91dba3c8e60debdd67caa97bc16fbc7c649981a935d60834 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xec63e694c0183b24220e53ecc1b0edad4b82c6603faefd6e22973ba7ef86630f14c53355c235a51c3a6ad91ce2d58e3b30a8dbde6a1608b432f4daf3722ab05c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x0722edfc399662ca7faffec24979257e075cd88a5a87f3fe146aaab3edd24553e8061fc50edb8976dcec14b7084b0fea412031c4ac384f42929c8751725c7730 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xfa028ba1a8afd9a5617714699a85418c8374ce17bb6772c38a34a1f2291c987fa27f9153d24d2dfdcfa88fbd8cee27fd2b6ab2695393faa6e0c306899fcf8779 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xb09acb2b6c52f00344caa32cf7c22a4096f6f9f0e49c2e5185f81bca35cc3ff0342f3c592f4c3eb98f58425bf14c6a46b19f7c7e8e2d4c82bb05818f8cd72b0e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x8f86f18e72a6fea2e535ef6ab4ab220354de7513b2178410bd107332d913f609908f7dce6525617cca313271245f74a52eef4910234425a276fa3640ed585361 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x6fbada069741a8cf3c0a0b0af5e673757cd38cc2b09c79c40e2fde238d41c934b97ced29394675359b44ebb9fc97e6808c9c4538b510d5df6e304c2cdf4d7eaf \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe9e17b1050c939d2dfa1e1cf820114c83a9d368c9b9273d853e29525467fd8561edcda45870c0f8364fc4242b2ba94eaf5729e316f4e9c2f4bc45f4312c08f5c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe7683d3b5ba7e7ebc47c07fa128a5dbd2f165d74c8ce40db5cbdfc5c4c4c2f2929be11b643153d2359bb2422ed50e5c6341f03f770ffd83118f5a4711e15cf61 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xcd129a8de5bcb9a417ee3384450490aadc6e96d4c23a011412abc9914135b15c8af62b3efe2fc1bffb38fe665bf006e8c818b795ef1c5c0d2f8e9a5544abfe7f \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9a52bfde8f794fc3ebe4c5041fa82a3a188dc7e80f30e3920e89728af6aa65e63b8832b14c346898a64ef0c265b39a13a296e8831774e60f4a9b955903d00955 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x53f73b67bdd0d71a3272f4f75837b1b78d8c9b7d862005b247977f6bc8d632112cf09f2755b805efaf06d1f09f10bba629a03c0f9520be15808b8b982d040b6e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x05e4e536ac90d31d6d00eab4e4fe65d0ef4a104164d9d4df273161040c182cd71cdc9e1a589f0ea506259f02331e96d718cf9fdb32de1a0796e3fddf75f05f7e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x43d57d44225a1fe965beec829a7cd3d8d7bcd486a8cee33710595f5e89b8ca8b6c71072c3c6e7a58d3a99e52da89f3d1c718b9b8107d8f297ca8959953b03b6d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5dd555b83b7c8249fe58aee8a1aa26b6abec1bb646c08468bbb5dd8bad9631cbea25955cd74f260593e0d8677911bc956e7ffd291da0922caed2fe7f3ce900c7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf5fdea21d65de4a8375054fa9aee4ffb76cd37732ae433536fc04e8e0605f68979f0aa816d8c1c6bd5ca9cc7eba9e86f2f6a76b56d2b246af7de357be35ca8b6 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x3700f86633a517f3d477814161e960d675e76fbdc106d38cc223593a757fdf7ddab5ece025c0ca61b8d5bb87fc8de6cce0806edaf64c0e7822b3eb589dfbd220 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x77aba628bce3de6e7d1f56641a5b8f610d075503ca1825e6bccee78917b29b05ae675d54a5bd45a2e36aae4abc7eca6c2dcd09d885112d83d886bc3f58b0eee1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x2d6e598e2b72549beadc9fc123231f322a589282d7058bb2b5e7392e7c2bba6c326d964acdccde37f906d5e27a11f0336792d0782132d41613f6e39ab7ee3404 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x98a9c9651e6a672fcbae9a1ebdeb1a98b6aaf91b2fbf22274cd02411e8b18af0b38d2883785bbfd7e8aad783142a1218122bf52354cb4f0c1e6cc7e3c9588697 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x0691299e9a38d9baa96dfc372381c15795e578416f4661251ea0a48e93d51dd3e7e107290e867903defd1b631a287316e7ff02c0a8a06f56bb1a3ee16c45c1db \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7b59a5bd355465d9bd76bcd0b3fba924d23e4991c8173bf4c2d659ea7456f92eeed8d9f98a6dac8b3e5f99fcb15f17a1b7f3a9a9251ce5bd4f3b15db2f67150c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1c58c604e312745957a04c19efd9a1a01f6a02971586571b7149f9cc96aad9acd5768c15110e73004a0071a2e654d38e095e5f0c8e8e4672af83fb3fa9735934 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x4d5ddafe2829d944ef1dce238b01206c4bed413cb867e45fd9daf153ab91a504c003d00a8f4fd209664bb7f62f031dc0e67d7645c3a703e093abff98175d723f \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x65cb9f2c483b19fab8014736451988c5c33285933f8dc64ff3cf90835f2653cb7041712e518839354d5485e97ef4838c4e8e5d98b67dd6f4e77ea84a9f26f683 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x209f39ddd8564e30ef4957b75ab3caceef0c1525f7ebdfcba8e241c2b43cee69a1aa4c9efa26c46a1c0f674e36711873ce2b7d8301cec150d8673432c3d81ad7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe2557e383c1c3c019681c2521d415a758f1becb629a3a75fd9dc212f0f2e802aee81e71db725f0f9913bea0f913978bd7d238558712aa957d80c4e1673292b13 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x89d632dde6b67bcd5496434399229c75e8925653c5c952393a61131b03f941ba1ec3de4e210861a730b85fb87cdcd7ccabc26317cdcb823f83d027ba8777324a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xf5ec27a33faef3b0da60b8403beaebe30e385c3bbb0849372b164d26b8c73265914f804eabffb948646a8ee0ff18ac8681b5014adb983dbc692a4406791ec1f2 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x736fae372040bd5d2d9c97e454efa630d0ca6a01a277602638c998af302418885e017148f4ea7cbb144a0c29a463c8c922f3c527f0ff63add38f64292c69f5a4 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x4faae841605109e2e8f43768baf54551b8d2ac29b16f601799c2ee260b9bcad53c8b4e5ab2352bbc1b12bc28c53df0e3ea355d61227430edb4644cdc4546907d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x6848b532bbfefccfbe4fcff80fe6688ce482d891673965e64c99c2b363ad9d30177f1ef45d2abb9c947577f8e23e3aec2bc2c2e38d113acc13eb6b808fa5bb1b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x198bd5a41044f28606f048ce59414508461044ba74ba6abd7555bb91c78b750d594519eac6ade5e9f6a25cee0c3c0a1a6c6d3e7c42d529e68478802ca2c0e3ef \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xb2e527f7d2180fa33a36f84d4a20d7d1a7a8f3d816634ea9a568ef8a1ff446facf89ab5bd01a585c8bb40c6088dd255f5e6bc0581d87b1bbed0194fc3d1f3cfe \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x294fdd3e4e9176cfa35ad3f56da2f9648cb1d0a682e6b72e195fe46d9c792238d9dc663e30bff65c08cbce3caabcb9a8211e3888a5e5347dd50c6f05fc3afbc1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x678dd52ec4a7d4b4c2106cd3d83e14e70155bdb22497ccf200b25451c65e62062f684bb0acd1494bc7281c4e73f7539976f757456452831d6ff1a4438f87aded \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x3a98d8ef0e0a1e94e4703d14db2fdf6af57e8ccb0aceb3bd1aaecf747a45ff42fbbc82cfd972e863d7276f35b9b0bf5b1045a2055a4447f1b2de890459122718 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x0f4c04c2c2ac57229cca630b90f8e1cae021a5fe6887d0e641746cbb6afb7a4b4463feb403c307625a772cb9e144d941f9a2a5354418cf649ae23012cf9deeb7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x2c8e413cd938e04f542bc9244698a4846cae350be51a4b96c23dd62328131d9f52c55d59461946268e76de4b73f3343797905bbc79e43639e911c1dd776062e8 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x8132c0e0e925daf9425ffc2a1f19b014d3e5eaaab3f0dee040a88a8fe49e796ff7086f55e451cc3f89f4db290f650b15541ab9433f6748bd61740d997a173e87 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xad283ca32be3327f8be03fae2f76639bcc280f2148545efdbde8f26a4d78b67c5142d3ca173bf3ff8bcd8d0270002b4eb6510f0d8bc6aa047409dfdc2320cffe \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x7bdcd195530ada526322c2b2ef1146ec3ba338b9d4e24c00454d97f805e46535512248f8d80ff821673f46464f9a95867f03d8c63d269582609b9599d46bbe00 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x08410df47dc40825ad229bb0cc18c2ff1c378db2f44d688f808b15156935c759c3786d00f587d53826bc5981eec8d0714bf6bae4ebd6d5f4e46c9bfdd37e086c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x3b422076450dd388ec63cd304e3efe3fd8e63711d3b53b78b9edeae4f75aaae1d06fcdbd807507ee6e47ac0bc5a71d61dc2b321e211077bd9f845e5974cac6a3 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x310e1d0c6ac2a8aec9f821935d6c3fa9cc881043931d1c151401f0ad2e7a9c210768bea8b5939a3236f99a62a140f6055d1b74967143eee4f072f6bc9c247016 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xea393ee266fe343fef6461d76325f099fb0c365ce0518cf1dc8150bcbbd7f3b1cb2418d9e4855dbe9b35d0647a31141a181dec55c80b7b3ad2d93ef4703ed749 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xa724adab3e64fd5d7710f9620815d6ef7d631382af62d43759103ef6a9b689c66cd38fd669fda2dbd796d8221e06f91868556bbdecff3b356d52c9df988d313b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x7c2400b641bc05f2d2be2bfd2a5d0af2a811a8b3ae6c66ef760d47c250e9020460d28de2872c17cfd6b1016ad6a6e28c62b5b672f46ab9355af0ec149f7e9aed \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xddcbcd710d062c8bf0493e790bc001768d60d000cc064b33ddbfd4bc71417c7657953766c55f33247acb905ea1ab69656d8cf78e384e4f0510ab0d27fc69f0e9 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xffefe5a4137034b1f91b954e42777fbdd0a7464b37e83335e1a6d0ae19a05879f1fdae0d375befbcf381ab5378cd514945b27a5e83d269b8737000d302f61bdb \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x63e58e0daf3f9a2676fb1413859d980b07ae3731edea601ef941ed68a24d941937785701009fdf58db7ea87344afae343070d34e54ed403e094fd3df691f3d47 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xa0741392a26e9f5d7780e740ed710ad8407a71dff1c23fd0059a6b759e8bbee8eb6962b67cba3915178e5640d68177e8b8de599f249656b98d3e1caa3875dfcd \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x5b797546d8bbf3313e548256097eca0000f18e136faa339a89c81f5e9bed6145caf876b61d9613a1d2f2aaadf8926576e491c6224df6e8b87b5e83272fbc70e6 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x6a09bde9661b00281d3ce948af500471cd71903b50b11eeed970a6e00144909ce5513cddc4ddf7a5cdac6211aceaabca7b17595508ed5458eaa907943802600e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x9cecf3582ee4c71272074227936e90e689a8296bad1b2524e0410882454299f6ba39743b80bb714d1b5ac8e765ed80b0103bfcefdb884bad6866f7aa45d06b17 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xd2e957c9d5b7a9815cd99e61761688441323293483c12903efa2329e5bfcdb8db2ae0dcedf0f773920525bcbec0660a47bf7cc5fe8321f7a0185f49c52c2ed49 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x58de8f1a094ef83e0c2210ebbfaef4e4f6df9f6591d15b4d77266f264cc40c9d347ab3f462ea31528c995875cc0b3f8de66966128dde4d6107714a820644ba7e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x63ddd1b71fac8f9dc59893a23d001670c1db9840a24dbbf1e6b2bb490864070fa60f37766e45b02f56f7d558f4e694ef57743ac6b2477f7ba5e1407a001ad465 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xc1df649c58ee62c06ee0db1d4bc3aaf83c76b5fb180b52d2b57249478d5900b845050eca79bc7767d14993c58bc4730f9e5dfe8f793fa404a9bcba5ac79d40c1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xa6576c13e5143d56edc29a8c4917121a1c3917f3436c26f3349de6c226bb96bce029469a4b627b504a3f17d70c4ad7e6c015b4873e98c87238c9b824018f461b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xddc88ee65b9d5ffc9787a9154065eae790812d277640692b9de92d2ccbe417d95f649de7208d63a5b8dfbe9df3215c1c61862c14863168507078619eb14921a2 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xca5e89c144df5f82fac1329f3c86754b0e0a105f7cf27eb9412d20cb48db7eeed585252b6a25a99c85ffaea656af87336881999a8035b50d7917c12f6a9b90c6 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xb13be79e272cf95452c46fdc192d07d16f24c0c0d9638bf2ba7814146c195272bd5f6a308e5c53460c4e5adc12c8116170bef14a542ceae0379dd0862008d868 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x19d70de23bde1e436057b52e826f99bfa483b84ce088c89daa91a32eab5edd2edfa2aafa1714e1cddfc6faf8667574e76bf139865720b73ac9d6d4e6cc04c5e0 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x8b6569762ff8a11fe0faa5b32c40ac6c89dc20727a792995c3edb02d0291e5489c43b196f5201c04b5cc6ca3e5e165e796e1e6f3b7a4d1a0f523b5dafe9df2af \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe3c8b25ef11b8de1f79bd681cb42c8c77abe4b5c446173dff907bd71e0b869c456fcb6f502ec91599746ee4a8c2fc8b8118d8a09017b09cc12b1af700a296750 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7fa7641cf151fc60d8c54c9b5d5df0d654e2f23680d45b1b143b83c202eaa3a99f9b2e61bafded652492052f8748394efe5a0fc800be252a47b2ee9b2fbf947f \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa58ee51ad47a34c26d50a4c911040fd2991f2bc728d24bde2543bf4d26bcdca6f48dbe2a98cf874fee4064fd3d47f0d89a6dda4bbd44af9d5ee6dbbf4cb17fba \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1add4a9cf6ac98d872cbea41c8decfd34cb0c21ac0c9c5b864332733396093486204eefac6fa25f5581fa2fbc973464324ebf00cf05ab5e74d768cc2ef74945e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc1c70468e1436c7742a22cb3fc1ff0e69a5549987dec101c448283338d35ecaf15b09f447d092950500b47c501c15ba33dcfedbfc366c370728175c65c9df943 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xcc651df9bb6f5ecc41fb359bb0c4adbdb269da8ae2538c6a5b899c8ee1061767ffce29ff897ef1384fcacbc51301a64eb2720c796cdb1c809e7ec2605589b885 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xfa6e3c35c16c059871ed81afea3328e8c971332ce564e7c13baee8869242f512d8bcc9ffb3ea9fa2c3f87137ef729aae47e145f1518fc3658440a5dc910e5566 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xce1f1c37056c63bb7f60accd955972c2193d48abe8db245a2b5698582c75f24c9c5ecade1877d2056c0ade564342626091500c990144a32fc20876ba1a9ca534 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x47de80930d0b79ef1bba526d1eb8e0d9c97e06e21b4a55fc6416b550d8b243b725e5debb43921d222521f9918694573c4489dfb50c3710652e318cbef5cee304 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa14dfdb030aa65c85f65af028728f3ff1de427cdf8d44fcfd07e688080c38ae8cef65442f6a5aa861cc7fdc10e3cf5688eebd77433a1356f5564b90d9cb0d91e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x2c30c000ea26545d5dd5df051cc7d9d45c430d5d63678a04e3d562ab68af69296f7c5dcc6a8caed61498a63e0a9182ee2192afde46115b52775d25577d7ca8c0 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xcb9a25d8a80d60b3431403195f50f71b28bf1fdb608ba2ecad24b6e7a02dd3b8d12b26eb4cf840c98bbc1d629b3b12853d91837f410990701007b7901ab49900 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x831f49572c67918fa6d843a59a6112a90ac74f72ad70ab5abff60fdad26c2052d34a973f6f2529aa3e7d8d7c579dc77ea40b4c1c012250869290da3dd0323311 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9e1b7933018618a7fed22ce2f841214c4587a7fa2a7d2a6f6e27aab525f8ab25a53ba878dc62c2b9d7722594e2330621962467d268770361ff277fbaafc89060 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x467df6abe3205708661cb892fd45bd4a024542d59e2d5a4488122f2dd685c475d9426e23285f9b868c163fe52be65d42f9f963f787014b60fe091ea8914fef30 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x27f580f5add0226f18eb385d280be808a59a0872d1da41b054b1dbb822516c5f82925d607aeaecd6f10451dc6596884715c425c71be7f2f769d1bd394e308296 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf072c12ceeef24628f4543557914e0e6fd8d2386da229ca52793772ec7e00e8a0cf84f1bd96dd9b6e535ba0890558b64ee00ad0862e6e077be545b22dbd76ea5 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xdff34e92c071b4022a12c51446a58ce0de6facb1a5f86eaedf30e6965ad8db665ce1556286d1a554e36d67af5079ef22f90f21a21a09df2ae8f7c5d7f436fd42 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x091712f282d74bb33f903c23a11315c414a2e661131632bf49a7cc841bc8ae65f9d10a5f6144557beb1fbbfe00785a00df098296360469f048a906667c289770 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x4c0e2f8254fcf5ee3ee7cff5baa5dc782565af7615117a4247486f87f48529c407acbd078df27b266b28b157eabafb108aec4d15706c9b704dc8e1b5e0672c64 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x17edfe6a00c0f73775d2b1cbcce3cf2758e45d9f12a889f0353d57ca71fdc50ef8b989354967d3e3a4a19d561097b233a0d172d3d479c34ab741b4fa15f8c4eb \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf1b4524f05edeb81b92c8a1d179ff9dd58a7ae91204e667f5e06258a962ae14f9cdc293689569db1cc38b882a0a2471b52164ef4a9267db30a928ff5b4a4340e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf5540668fab2a27f8ad6bef45f727a180a01aabd28c042fd6189608ccb636188bf7b24b3e5dcf16bfcf49588dfc0131c028a2745ad31a988b14d95ea47dbd2de \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xcf5c6d6dca58e3ab6a1304c9f088bcd8dca056bd33448029dfaaf28aac36bd7cef9e1f83a67d10fab0fcd9e81d7432ea8cc110dae534e38a95c4c1db30b87e2e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf8a7c34086b833ce093ccb1b91802fe2e9f79f23860e91ba3036d7d68c5a111789480b749f1100451f971556598adc53cd6bc5e22988cd0aaa4c001147f88322 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x2c50cea43b2a9d85633181c8ef2782c2a796ab638122d9604738fa8478aaa5e0e1199a9c587a2d3d15de108dda8047f4e1b4155e09c8c0460cbeb22bbfdcec85 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7ff91d9ef771cf4c9089ef1a742292bd887eae63c50ec766d3c27571bf92618ee49267e72581f097a1740e8a2a67d63f59685be0a44d2a7bb0f91aeec4b9f4e9 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x597a8051c87010b154a8dfa6643279b0c166b51539c69b9cb19af986ab521ed59877b3868c0e56aac00ebbd6f1f3036a6b667403fc032e32b5589ddb9c257b8d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x7246fdafe0cfad50a1068db61dcf1717abc01a6197db5fb2fa5bcf482d90e5071b7f670f10b9309551a53978bfa64481656854e7484bf6f867f3e94b8383d33b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xeb874e306cba69263f4ee7a1cecb2b7649b54a1d1ccd427343a838dafd4f8f2d97b828bc65c9557f83934e041f8957c5e7e28c3bad7e79a984c7a24acf57f803 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xcd70779a6f182bbfffdc0da52269411a478384f9844eba7897009ffc8ba92c52ebfeaaa274564177ba77baddb77a7ea16d5f2327d6e78cb871f52f7cb458765d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x3b6d21737bf0bab81896a28cce0df7b6fad9718ed09fbcc0617c6f1da04d7806a9e7ab60bb2ede861246390a649951c74d210b12f5cccbc7d1e2539911bf585b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x54c2564a81f88da5548a49c35edca0ca631c5d801855159e92b2d7549f2269cc3b939f72b13c99943008afab327d0586b561584ee1cf0a099a08994a7453402b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xd70f44b6a74a3fa01744112c45f1908a1a448d19347cc8b972ad88c70be8e04deeebd4f7d2c266f6432b1b190b30cf73332e5005334877ea340247183e304bbb \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xa0f8b3d8cc70612760d8fb5d88e7f5f5ef57d5501aafa3304269be86ee0896bcd44e46cd678b27ebcb95e0fe1c782c87b30f935321f686371dbc1cf1bbd3bd97 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x82adf06d497236bc505e9e907efc5ae1481d749600b7979423f8eb9bc4c72a62f97b5adc9f0cc69c052e1eab3a73fe15dbc0ba02c7555afa749b2fa70db79a3b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xabd95251f9ae32a208eceb957fc394ce015ecb98cb20711f238689939f7ca9aac028fcee070dcf38c9dcd8ba631d1ad708a2a19eebf5cd88534c7e0e62996a67 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x71f8874cad42e50a4477f00de15c59e721c5528b3785528ca8ec84f3f4660efc6ed472202bf2eab37f2379440d64ade01b03cef107a4dfdbc398bc1674806c17 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x8bdeba76d758bd1faface814b4fb6c895d0236fc04d073ff25ceb4f5be3613521865b25fda61f6109f8c994dfb1cb21aa93aeefbb235885f300a3a510b952090 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf0608e0448c58a93ec0be344191f06ce313513be1d317280126faeda910cbdcadaef9add0b88bd526fefdc8fc91351dc80e366f053b33fd4e69521a1412e4af3 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb9b3d31175f4c977c18e742e6b2d444af91db6087fa1b81fc693c99b7715e320ea602a84cbce759261772291e0165dc57f0af52dae54ef39a2291191900deb10 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xeebc5aa02919f853f75f78fc702fa7a9484d4ddafd3ae91ebe91ff2bd6383a1fd883ab12de4bcba8169cc9ae7de167f32c7f2cc4dc3ec146726bc45820b98abe \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x7d8e9387284f9c8597f20827bc4bebcbff97c770892d7ca6bc46ceb77126a104e0924b97406f70bfada5950ba16de2f6bbc73a59b63727be6885d4acf8b0f425 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xca057129f7ea605703e8194c49fb73b7728a0dac8e0cb1aa74c0399306b779cf2616a7bed50044058447a4e69303d294acc8a8163a5d02d7a3738eb80a5183dc \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xeec6c2ff5c537ae5087dde8a8cc2466de3c571e589fe6ce26b5384b9dcb334b98f828e4e255e15387257fef093998cce104585849a5655fd26d9eaccfa0fd11d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe194585a6a21ea6ef6d6c4da87c950653aea1fad8755818f0c6ca8500802618f384a8b78efb0c487f27981cf2901457f5c18a05df30b2f83554e89c2a87a74c5 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xea3be6389edbca88905977f3975ff68bc8fa7c99d09a8d7a9f86ff717fb49e88c410e1f8fecfaf5ae87166453ddf479be016686cb804e56488b0af99dd918ea1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x3527980fcac602204588e0f9aa5f8c608d3a023418ecec3439ebc5f0aea358802c6e96bf0b6a7e05cc926ad4f17739ac456ca7a46bf9cf4a64c334ec9e13363a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x17ccc94df1731183e8d3977169afbad2f54c9e3624d6369134cc96b5097d36d53864f676ebf1cc7ed94c9bbfca232a02bbcc447005b7f5fb6407ca24223d3f38 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x8a7b6fa6074351b69a4fbb08c139225066f91ac3673bae447e31663c0f29174e8ba1284aa3b58078e19fa8cde0faf000db681ca36f9c1415b4bd0592c9cdf01e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe81c80f69f6d546234e5c4af547a8db8287c00423856490f177bc2898c5eeae1228f4e54596a579f5415e69364319d6e629ca942d6c7605e90c5254d76989df2 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x6ebf441db55cbed32bd1a9eace307fe8a354e39f879d7ee35e17d2b4d531503d5765b8db81e1d76039957f00e609cae35ae003ed9ac6253ceb9f8ba51bfe046e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb7312854a7c1160d7f3d2bcf627aa143b8789af24016aee01082c8c7095add2a726a69e3ee2bbf35fdca7c1ba0a4df857be16949dede5fe2de2e0176e5974206 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb54852bdc9304bcadb4af920c36d2651381ea2c36686293d05f130f5115993a7d4fce63620c722f13663c198d92a9d12707d90fcf779719c87712269c84374ca \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x8be470be5403c1ae0c0278238d097ab0516233ad5620ebf5c8b0eb94190b2ed63d0b2529bb4cc6795c6486ff6b9127d7041942d8143e07c5a26cc10cb304268b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x839c05ded3a73edd5631ec93d0f461d7adae76d360bc75e24a678d5120348230972d0e45df2f8a59fcfa24ca012f003c99d645b8084ddb7b81cd243f7c015c08 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xfe7826d2f2bb375a29375d6ea026fcfca525827d667c94d74e9e8b0c4f7cb5a9b3c284aa6c31bf99fc00ab4e6fe625d12e197bb5b99dee6e6a1a03ae24ec76db \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb0ab62dc4cb846f0482e71066eec379ecf3657bd806b4d797e125457b4eba59aee76872724c048597818b4125f388561ab1bae031355f4e8d5df2ed565ac73b7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x62f289752f1c3eceea483fe407b8ddde976821c0e2ac910394d191b6761aa4e41fb995e8360930d6766d68013e5b340e1a9b06ac7108374b14fa9fb378098b91 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x9bd261f42cb7be585884414ec175eeaa7c446a0d3f26059cbd121a45adca55d377aaba48798f5d3c5094882194eee811e40bea8d5e18de1ee4393a6316b2eeb8 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x1e5e384e59ac0bdd77b086344af2985d8a5b1d4e58804ec47824d3d37a5927e0cedf43c55ce4051192f089480a1c61e31393185862e4781e563659684ca9d61e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x3a1e88834aae2945a1143238e367ee63ac473383553b81e78b903246fc2ad1e20a4ec6fd6c9400c30ec0883bc0c4d0bbc6824cc3e155450faec74144070d164e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x440ecd32fd5ef557cd02a53e17d936a34f7ec084e5aaaad521cde1ac77d4a4ac094eb424e8ee25d7389cd27763b7a92ec1522d637b8f953b59c767b789f6ede1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x6dddf8715186a8eb2a1cb88c6b31becd0205db2956289622f32f055a4985070b230996e1ed5faf8db243ffa3fd9e784e34c0e014f232b4e29f8a7ab9e2f22caa \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xc1710f64ac6a6b8fa3d25387cd064283e52e2f79ae6fc6ce48df855cf7045634af2f1162119c48925ecd8a483b36b6545886deda8757e3b18cb79aa77ae409ef \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x29db9458faff8b21df3e0b3f84c92d386501a1071dc4c3d8eef767cf0c4578d3aa929be60c01aec4575c79886ee1e174384b7265d1c679dfaeabdfac33b7acc8 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe95b5d5f7ef71a62977150668372acfa9bb3418ded88dfba4d3e4b392d3cb5e9c757dbf8702934f96e785b093373ee10e16988d6a894c43c50b4be34c0287f05 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x3ba78adafbae2851f7e89e251f96446b3f07582968708786333b9fd72f50c008b29a474b6189140e71ee4aea2a7b2ee056e3684162096521afd8efe97d6449bb \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xce3424320907bdb4b3192f3c384eac349b1c1262752839a341ab7202c47d4f78cf8b8ce590ede72cf1d755a2397ffc26e575e04d9de5cb024892e2954f4a72ae \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x0ad8cdeffa1fa20ecc12fc359a7c9ee5dcbd86e3c9e45bea047b00a3a1d3d93b643a053c76f06c6e20f8fcd36af54c2055f377ccc98592de6bd1093009a1e296 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x6c7918da2db6cf0d50baa637a5d6334a9348cffff793bed6775c1834f9768f74d81386eeed55fbc9ebe3d97c52a797c6946d069fde4272cfc9c555394fd7965a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe70d5534d31b0542c9c4e020d5bbf140652d0c6f36aae26fca18ec4accf1a7bdf82fdca08140c0719cc40d8153ef52d6c6cc53dcf55e6369c416ceee888d93de \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x99ade2cd19f3699cd23d31ff44f55f69e40bc9fa0118304d17011871519e035bb0ff14f3fe045539f4230d2aa171ac6d0d38a717cdf60645a906c8e291ea8fd4 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xd4fd8e4a9c5bb20e021e9333a1871f31b78e12cb92113f248bcf303ddd3285c184d5704969caba9be0226b4e9ce222dc033cc491ff16bbcd6b2b1039fad3f9a8 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xccb767410225a0a5655d3e5852e2b7a3014676365fa1f8b2cdbd98dc9c39015a26da313c2cdfc8bb3c14fd6aff08142eff1d4c250a24c1989cf3fc1b1a89741b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xc2e39ed6d084ee01e55815c586e056c98be19e0eb1bcdde16299b310bcde1cb34785cdc11ac318f2e0cabffe9b835bd3c174da2973f35a1badc423bee334d13a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x4b691ba37fec3d24255cf1ace52e36a9f288b36244c0c61d7007cffd45513d0527f5f3c05659b4f9fc8a3185b24c04b626cf0d751ef0b77f02d1506a3b7cce9b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb5807d51b5e20742015336a4c2208a8928d91c1a1ff2aed45d73689a6030ea41acb940321a45e02c25b92de7665387de7bafaef2db8bb29977a711ff3e1e4cd1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf5a7447d8227068a31470b1b3c070b6ceab3bc63e0aee599ee753282ded24670414ac04be069d26f885f1fb29960e6e9af0846460fd220a3169869f83fe3d825 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf8dae00595714666ad8c7881ced4755c6145c730e89738e66eec4555cd64003ef9080496ffeaacb3af335ff988807c820de0865be9c36074a805aeb22879ad5f \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xd3ddd0f005e026cb906eed33c0bc4dfa1ec62697788deb415584b68ed7aabc6268591f853aa36f8d691acbb9863a56ac594c358d060aeaab6e8d4cc5571fa19e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xbd5e2204e03e457b19f62dc7ceabe1001a964248bf6840a19639ddffc9c3510b8ece27d12cd0f54c3bc58f27fc8bee6dc9b141280ff6bee9300716ec1e80c6a7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xa71dbf87f15110e37038bf5621c50a5bce5c4a1337474739bc4c42f0f40afbbc62c90445f30959480dd8d66a9c5852b0e93d8d90a5ac10023bfa3a7b65dd9291 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x29d6d00d949c4790c20d59ec73676e15534cb1c146b0916ed20615239fb4d712a0e0807fc9adf6ecb41615c28441c225ab32b3788fc8d4a653a0a7462cbecf19 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x9a9e6a85a27507bb16676c418d12f3a8bac940b55e59109239fe063ea03c1cbfb3f1c1ead34d8a68437ef59e2c24fbbd72727349d928e368be80d6e3e23f28ee \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x353a0d013b2aaae6639b723315e74a47f2549d602e3222007f254126a6db8fe8745c28adb772acbfbbdbc7548783fc3773d1f28f1a5a72d3c5bc629ae72dc23b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb351b95acb03de7d85f73635aa79e54a3e72b9827f249c889db3a98b02129fd37d77552daa366c8c81c27df9a443bf846c9a1be996b3141da2111e83b8192856 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xcc6425da4bc0b5708ec1bac6f43f6e3d96354716b6e969672b159d56a94bec8a7384b96bc11fc0ee08d463f42003816cf1b243315ac8047ddb2591e040891a87 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x1799d4b35aafe948b59f3d0eebf034d61c1d45732367a54d5811d8d694edc58a2034262a822a83e14e77e13d4d332bca71ffb284ba012cdeea1c9d321d5f2dab \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xcbaa0317d27bd90dcc9c1fadb0bacd291128775a01a14e719f23bdff89ed764aa4783ddd0f3ada1568371f0318cbc172721de0f4bcfc4ec674b295fea79db61d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x689e5487355ee63b3fe1fc74f6e68b846cbb53c6698d6436d2cc602f2b689ac03b0d9f0b3d2e3b007db10b92b5624e179861df7daee64361c3a1757c1b94798a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x7978efb03620d4808a5eb9ebd4d2363e1d2a28b5464f3650832f5a8a5f96e568aeb26febb57cacb2e4e097000ddf987586ec6078d4d459777b9fe23d959172a7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x5a3ef191b4f27a6667f4c34ff8794136ea9b3e3a29e7dcdd6475be15f8b1ac09c3ad2a8007b46bdee3b3196ffc864a685373888e4bf35a3c8f9750d5488eb008 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xdaca7cdc05a7e781c04ab1e233ca2664bac59caed67e4d00fef43e31f191487a7cb91d8b862d6f9329da670ba79e6aa599de8896a6032249796f50870eae3933 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x70e1710ad98a6a196e28d1fd5f47e3efcd1b8e7b2f2c3a827876d2ac95f522849d4d310447b76c798fa99b8c2d2f778f584ea1794f9a6bd67e233f9755d0fbdd \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x026828646242d17763289929b2e79e08ed0af6ef5e94c2e96ba2ec22fe38c4df3557ec2b99d7e6c1309a4c63f830548a86789d73e7032b7524d9b686be8f7db7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x9c46be3b92d42255ef22a8d18d3bf65d2600fb7b034d2f8d1c09dabe5a345f2e05322f6db09e8c70c0a52fd091ca4376405e85e6393a0a3bb7ba02894bc251ad \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xb1dc83372de79855773717f0bc277c05909631a21672115b41ec805552235854229edd90b3b8334e1bf0eefe781167440f68bdbb61a482457d7c526407527eb4 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xf0dac394e0c22dbb44052708ed32560413d530b0485b238c5a92e02d5020516aeffda52bfaa95a97038727f0e3679bb64ed63e26d46c3c14bd829add29c6e339 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x9611496044ae44b36d15c142db917df55069befb21d6f7edb77727028f7342abeae8c7a842d0f43620b54d5845f1e3ccc886326c1277d7455e406e6a026cc5ed \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x8254bc93c919dc2e169b97e6bcfdf7bb16b466cfa7a6c047248d37361ac31df661165e9a9f633b39922da22b6121d65e0f9f466f3ab48da861728defc26b0793 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x22687bb7f5689e6cd945fa27c438e9efb41ae3984aa990f6b10940e780c410d380735d6b13b3f5c4294ea2124ea5c4e935336df23e84e0aaddec8325118a72a0 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x701ca07967f0258f55a69ab005c59a8e830b6d0a6cc2b057754d60c05048ef5d391e708719cb2b5b7e3a331ea0c382b19fdafe20429f6f17dcff306c7bcb6519 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x94ad0c4fa48c6d19e1b1712c4b6330f5f156303a6eb3ce17e79320df4e5dc42641a09aa349271ed6341fbd3c70bedc14d1759136cd1dbaf34cd3c3883093af2d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xc46aa522338c44a61794946022c7aacdfc177cc056a5ba686d7304bac4c99309c8b053a3d47381d1550dcf31370485d393bad7cbbabd2fca5dc0826659e1be70 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xf4646cafb8a856272b8a6896df96dda4f6f4fdcf3d799be76930af7307b88316f4cba350a06755ed97c6105a40964c29db27b60f85e9d883185ea90237eeef09 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x20fe9cc3b1cb73bef401048d55f789dba305380277596dce68fe8bb983840934520ae78da7cf22a760bc5281b78eca6f88b9f56d47bacca513c4aec6c12daf44 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xcdcf0e88cf82d3cfd0c3abffed069072a54887fcfb154826bc23d3749d748d2e17c9bf873af4b315efcd2c1297b77c4850b7e76f84455a1443217a0a358775a3 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xfc7567301d3779518ec847800b1028fcf15f715dd717bfe3c25a3cfbceb2c04450694f1864d07ec6b1c47d275d2fa486030342f6156a1f83c2b6c24859594a47 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xd7ec29922a2ab2c75db8815c37639811b54dcaf790a7d647d88dfd9381118d0ccb0fc131d56639e07eda8160d43ef211ebafd16980d8aa7a71d140fb84072daf \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x425b7bbad7b652b7ee98590299f06e4fef593b4a3c190c6f07e2def0fce849b95f131f8be12a7cdf6ae0f4e4786cf73d71682727b9c896416f73c41ba974e7ac \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xd001bd79bdf26801b8c94490190f35af5e66d7b55e5c1f69e92e71faaf590b05046231f1cd1ffd3d1a1f58d181f5e2aa9bfbce128b7c2dfeb8ca9dcba2bfe911 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xc5fe89ff0980ec18e88168476f477efb0933742a44091aaaddcc97545e078e8c385600a70041857fa8083394b0e8ea6ac0000cf7a03cb94ea97b45186929d824 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xdbbd22a161dc28ebeb39c8c19b62c24a477399c6fa69a4cdd3c405d9dc4fccbda2c244b66feff49aa7eb7b58583503f34a4e73e83e2f6329d54c59df811a2dba \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x45ca11e9216ea067d43e637c6a1c915afbadf21429d7e704e5358239289024b48c9c955e3d010b9ad2bba0b2c9fb493c3248ea6bb5065bbd6238eec1f522e005 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x1c3c8bc7b05cb996362e2b4f9d4d02942a55f168f82ecd4fd91226f4d00420f2fd1d74331490962cce588c2fa593584ef247a4bcffbea9fc6219cfad974cf7ba \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x2320b1ad58ba388b2c77dc68b3aff1c8a190e1956867d0e1a205466e830f2770b39b545fed68dbe24ae6ec2782958f263a225814f5fe0c2e09ecffaeeb617d2a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xdd15cc1ccbc9e88271efb73fed0e16d0f2f6e49fe81c105facabc5fbeb53bee1305c3eef89325a735dd0f9bb7d3a4bd9520594e6c9e5e41b5163c24c5127b09c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xd1b124342be72b23b3e0e68ffb9f8b538e30dc828ce4a582c32e8f78aa39ee17d7f939beea0078609f6e45ca5f78a596709c2f98ee0a714967ac1be79798a29b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x9c4af6f6354aca37595ef1deaa37e5e7cb8bd7530e635e3d395e6902615aab6ea9fff183823c20d97e76ccee0b82d43571e2b2683fdc4e913c71bb66ec162036 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x89d7ac9dd5b2f6b576b754f28b1c52f4cd7ead3bb2186edfe6235528b7250331f2eb4aa460e66753addfff4b1189ffde244472e98c9b6caeb7980db71231699b \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x99a69e5e26e2f8e5f83104c79dee072ee6018669f8d7b0f0c666d2e2f775db3423c0bd186facb12f9eb200b78a84afa21e7f06f0c95f0d42a916973fd0f2208c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x582a8c78af9af9a6ea680ab0ae51582123676c98a2eb206d2f5e9b023e448ab6e1b07702740fce88e9cd9fe3b9db8a107ffdbbcbbcc785e8f79052a4cfdfc206 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xc1c5873f0daa2d7876f25794f58f81e01f33de23842c7861a02daa8813ff1ba8b8657cbd5f97aa9ae80f1d6933897ce8f6bde911e2e80b06915d319b4af03528 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x4a70b8ee6a64968de4911cd02ea3c24fac7c5c6d6cf1ca2b6f1ced96073258c5cd7e1fa5a6c731d9e6ec7a282f457eaa49027756fab56bab60c833ef9230575e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xaba6767e5fd7e407e88a1611419cc2493fd0855029fec7b8ee354db11c25e5e8ba3619d469789167a1cc31c2bf989237bf84addbe22e2e21839e4287e29df2a2 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x219e13f4cc746bd69a9e42d0064f18f01df10a300f1e7f0eb6b702ce609c1c298cf79cb314ee6e6355b34e9683d010cda9feb50322f30f47604475ecea87ae51 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x38a6316d7733d9ab22dc1ee21ddeec54445ab802265704f2cb1886424d2c71c9e01282bf1c7154bf812fda1515eb61b0e71ee6d3594a099f5e2ad3b7543a4256 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7129214704224f28016e13a81c5580ec25d516481a672541353410afc1eb28da038fa5429f2e324e95f96022279f8099c79625d3136b4c574d485d4370130a95 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc7ca973d4625d38421b350ecc2681bee151fa3890ffc4bf01ca0dce134ec798249cd9eaff9fff59833bcc8acb740c26d0535989dab7c2dd1aef9a68641a7fd2c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x0c8cbbbe4b792c026532ee2b04eead7061235e2cfaf6640e4ca3386b5b86d01ab079c357186c5072e4a1af19c1b7d7fc5424d5b302530513605e36d6086697cd \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x932b578fac6c518e2b2d9ae8590e67b3a5cd16275f2413aa545435f0f243f1b917cb8b99543669c5b075ea339b5f65e6d3bf834c1f379ae491b3eaafed97fbb0 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x599ca0bb385b935f35c4954295ebcaa36ca4266987a715bd8aa4f6840267853c82cdb4f3b8065ec2c75f77c72f01417acb92a427a7dd1eddabc8f587ead09e60 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1651117a6ecb0e06b992727774ca18b3c6b74af6e6f6a216403a1c50f979712c8936d34b4689746e7045bf6cabbc1376b78a10154810179071efec0002fdccda \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xab36a85522f86017ed676eba3e5edd2cad851339a7c2e6cb25e7810782b05b4e444e98f60280faa29c71f41958455b75ee271a547b2b257b3a12d2ddb8f1a1cc \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x224f0386a1b2de9542a2a6fc46c670b9aff12adca237f220e485e3b6a3fe8daa048bc09feb8d5cb9c3aac9653a58bed33a3ad39395561c2c99c20cce471f2b56 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5b9e014d272f57e4bd324400118d99854f12bb448d4f7478ce986fe8bde7bd9feebed3bdfd9fe2b28b36cf398363d7b291066f21ee6e601dec05a56aeaec91ef \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa380b56b294a436a4b80f24016b5d0eaf28c92d975b399fc29bc3aeacaa7400d0dd3cdad622c4f8a2c0a15dec3601d6f75c45df3306a7901ce50b95af5fc4fbe \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x42b90336763f126f6144297aa83afce12f9c6690c7c1e2866afc3497cf526d997338399f92639c80e2362ccac4e4de71930aca47fa7718d0bd74f49824308a3f \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x6576b9dfcd7d9e6fb5991cca26a3eea1584637a0dcdbcc892e5ae5580cd542723c313ef89571eb2269adc40633c938e840c2e32e38c816d3c4e8ce40a18e03a9 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa6b81af3384f1a3402a8cfe1bd9635cb5a45e1394cdb9008d01a7db888201456dc3331c344cd246c48e216570cbca93f1b16c5831d9d6c70be25659cac679486 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x574f9fdc3ebafb73ef88030346728d582d62a8d942cea38a11812f97e578af30ed0f29b893b3e23685864380fba443a6f302e55660fb23f3ad424a8ff3c30bd7 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xff224808ff0ad42106d317584aab3cac2124212c7b06e6bb51209a03259f5c9cdd7e062b959342e57dd4d3c6d7e41556ae484bda9b6883d29f565ba445b08356 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5b928f1516a891672a807fdbdc9161e69d3e8ad738efd8984f546dfd7af15dac67481882daa25a1cccbcbe90a5f95b8aaeecee7a67946525991aea83c87138c4 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x0ef1a5d5333fa440ee46dd5c6e1b8e124a5f1bada7afe420ad600ace26657de38696e805900892b7d34b623296bc8af8748f9339e9d3e4cb5651999927cf4bdb \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x20d2d6aa2894eb8ed375f6e0b39532f9ea83fdd5ec7f6615c270534b27d6538f0289fe486843da523cd6d59783677447ea6fcb914945ad85b7133db93d0d52c4 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xdff6d8d844938fd27d142a4dcc0a5e2b6ee848cd0657b8b9afab2e6d2265b6f66c0638df55d387d0a17b30cb9d7283a9b64476fbd0acb4b95cb86ade59b42cac \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x62af1aad614c87e4c7211e2e1a6d404259666145600da2ca69d2e0a4f3f0ede9a7ab84c8b8a54e973eb59418df7a35d3429368f179c1e216704c1069028e9de8 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xcebe8de4b2897b5e3f52d99278dc0fa28b5f3722e93183a1755739d4a779c137d9399acfe7893966a45628b4ceaecbee88a6b4b9280b9f60d41d48d943da0677 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x2ac1920af6289b24cb867bf6ec8b70c8b3f1df824aa936b2c383af03375493a49184525d4ca8702bb7dc4f60d414e03a0859053d0d36dcfb5889c543da59759c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xbf00094b35ee43894327f7502174a5ce0b3a6d04f7469bdb70b2f7793710a0f4e34c088d939b2b1c4569e39b3c06d28773c6f7a091e7419fb6d64d321f55bfc1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x930afff580a3d98056ef09d557c0efe2696c28626e926f163442084190781116a2619da31d57905e5c07b32171a11be861c06c0cd032db27f66337652f6b6dc9 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf427726927f6deb2496e0899c5126ae1ab5594e0a9b4cb9c2292d822b5e6bea9c1204c96817ecb6ff19283c2e08f77f174c9719f783db029d1008ddf014539e3 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x82bc94f87de76b23d6d351dd5df662852d2153f116c7fed549834dea6cb58ba7d1121bf71dafe295646ce6657e1b73a38e218a701bb542215922dd7a4b399caa \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe61c2d268d94f57c99b3d4b82cd2b9a83aca28e1f3d7597245787e6d3cd1bf9a0e33190cdf12a7b830c0a5e86fe0a7133b442e2f49472d1c3c2ea3a401d34c29 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x8973c5a7102a6da989320dd6bacf6a4302c2b58dd2d4fcd41d6415eaac1258daf3eff8b5efd2c394acdd2dd2562f8c84efbdf7aa6c1597591579a672ffe51948 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x8fdbdb6b90c53ca421f9bdbcfb7f0c14c5da59b2ac010d264aa76d4c0708f095794f57f07d1c1abba907a8f77ef9f8d41ef19661d993a1196a9771a93fea98d5 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7dab82a9348a3ef8616de6b8784ffcfdb5e4fdf47783a0c60017ec646b24e7f28034e1550a7c705f0e9ede1747f3fc1a8bfd77b3cde21187325094b3d274dbfb \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584124527000000 1584729327000000 1647196527000000 1678732527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x20c978f9a2db37186d61ff11d9e30dcda92b2d8e29077bac309f9db9be570a75f7543935dc75f976443cb953832215fb2520cdfb3f06abae1e9e74c45c0fa589 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1584729027000000 1585333827000000 1647801027000000 1679337027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x4883660d80ed5b9651c06a467a913c5504940fc360d607fc922f5aabf1ef0e7567d952eba4764dcb1a3ceca37e42a5a49e86ec724240789eb6955866255d0c7c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585333527000000 1585938327000000 1648405527000000 1679941527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x22348d1ad408d8ca6fa6d65ade4567aa687645a75b7e697af05be4df8fd8e5726b859aac44b6d0f6b589b105eb645842e17646881c31e813ec54f98de11c1194 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1585938027000000 1586542827000000 1649010027000000 1680546027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x5ca639afc97ac81e65ed5a047ec4039c2f01224fd70e58863a382a7f9af580d27d0e70e217a37976ef3bbcb29f9b8aaa70dea6c55654a4674418e1565b7bdfe2 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1586542527000000 1587147327000000 1649614527000000 1681150527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x6c7ed8d5009908068dbc107ed5740591c2934c2b20a17db1a5b5c4cdacc23864187a7c24e3e02c5a51a197e3121ab4d18f27f1070b98869f4b8f1381328a7c96 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587147027000000 1587751827000000 1650219027000000 1681755027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xf68937d70a7a1b3c9eb5932cd8760fdd18efd455b6f8e881aa0be1188466573f5b3d295045d07bd65d197dadc310484bad2d8fdde6dbc7c429aba29b8a696d84 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1587751527000000 1588356327000000 1650823527000000 1682359527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x12f79d30c267ac4f4c96d9c4a7a3cc20b0344ca6fade34c4d2c101797a84fdc49552f9dee0c56a535f36fec2fe81fddb9efb2a78261b357229c0071fc7685b46 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588356027000000 1588960827000000 1651428027000000 1682964027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x0f1f0d0a5cce6e3e7351e308f12554eeb9636729232575e59b315577a72f88be32e0ca83c027b4a69b98e02aa52ac88816d06e40b7a98964ca16c13cf8037c8c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1588960527000000 1589565327000000 1652032527000000 1683568527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x6f446b124d0ba3d24fe2b37597dc3771f2f3f8a30a416f799b113a062b61c1a02282d66b5dc3552739a8f4f72d2e0169b0ce4b241ecf6855b43cee59517e9b2a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1589565027000000 1590169827000000 1652637027000000 1684173027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x48db11bcbdc2695aceeb3bf99b43975521af749f0c0798117a3499db593094423e2c585d2fc605ecdb1f540ea9b7c46e74d5f69c8eca106bcfac840f8bd136b1 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590169527000000 1590774327000000 1653241527000000 1684777527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x12c102dbf4cb63761dce1611e278a075b617920bf4ba837a584dd1d55ce02423e2a3dc5632cf7b71671dea5b723a499cefa86e8b75adea0631ecb7d4c283dd0d \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1590774027000000 1591378827000000 1653846027000000 1685382027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xd2e2e3cc32b8db5ef884246990dfd5fe7a739b021db8f764a1dcfe63ea72f01cdd61ef75e51eeb4804c7620bede23ab72ce7b70ed4f6a4c61e33580cd3825ae2 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591378527000000 1591983327000000 1654450527000000 1685986527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x981de637694002caa02c2d44d2f9ebd56a9c3bb4df9a41ecb00a0fe5d7e587a456c35ac5bbef24165ab38db6a1c5d7e5586a0df332f3a01272ff7e52813cf237 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1591983027000000 1592587827000000 1655055027000000 1686591027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x1ddf58992df18cc06f19ead407f8a67330ad63dc896b981e907010696dd30f3866b57eae146946582b609e4d64089c7a88bffba4f66b8719e1482495e4f91a7e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1592587527000000 1593192327000000 1655659527000000 1687195527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x76c4a304399a29a22602a7499dbb603a98f59f75c62c07a1ca8c62de960b2ccfb4f8558675ff5ca18ccbdaa1ab6ed55e1d66d7422ce790c250646cf03d9d957e \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593192027000000 1593796827000000 1656264027000000 1687800027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x4e496c18160552ad02b3074d1a944062573ee32f25f62c5f2b803be49116d87397bc9e5f0f131c08f7914e770e4ab685ec98eca9216fe1ef668afd20e2fc43aa \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1593796527000000 1594401327000000 1656868527000000 1688404527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x71dca7e2794fd0d21b785e82f27fb351ebf06d4391a74a6feb220ef03632fdd61bda97d28cc3b4a039affebbc02e1532c4546eb5a7c1c1990ac5394335a910eb \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1594401027000000 1595005827000000 1657473027000000 1689009027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x789c55f97b0f830327f8a85f80307b590aff4392ca3f6ae98ebf7838b54d293d74e8ef9163a32b07f0a7288ae515218276cd66cdbc9e95ace31cc34dcd93c012 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595005527000000 1595610327000000 1658077527000000 1689613527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x007831ac13fb2fd91a3c534f21cf7cdea6d9780aed594c42b15d7fa86c119636db27324fc66c90523ac3e34f711f7128cafa8842e504acf3bc26d5fe3082ac7f \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1595610027000000 1596214827000000 1658682027000000 1690218027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x854d619f4d4e057244a431e6e22819f1cfde23c714d2dabf7b090736afbcbce1ee7140ce7b56f71623ffa83d50d7681be685d8b2dd5d34e388ba2fbea0e85761 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596214527000000 1596819327000000 1659286527000000 1690822527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xd21902884a8475d70ca341e11cad968081041a221797074b1cd63327806802c8900efa115d3d851895d737c38d7c709b1807b3332c43ffe1723e25181b1d724c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1596819027000000 1597423827000000 1659891027000000 1691427027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x1dbd8b1d3a1c032f0b833ec7bf3f4848febe6489449b8e8e9ce8e408f2932ca6b6951a7cf2f493a99751ce064b7b23029da1c56242a9a0639b0fd8ae93d1212f \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1597423527000000 1598028327000000 1660495527000000 1692031527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x8f7f6d914a70f57e8480f65b732478cf9eb808ec794d472d9159299c41fab8674e97378039e21cbd79ab67b1f60cc5fe7334c584e6fdd53255df8dd2e1234a4c \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598028027000000 1598632827000000 1661100027000000 1692636027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xb02bf813b2db03452be8bca6a75245131e6e815a34fc0b9c807f2d09e082ebf20e103b9fb0262808343bdd495d11dc1fca022a718fe596514852e46ebd30ce7a \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1598632527000000 1599237327000000 1661704527000000 1693240527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x8a0f9e4fde53bdc1493c68daa3868b3168ba7b65a8ca10733eaa57af364d14331b2004632e253f4b0d5f722a2240cacb3edd3e2c799d9f2a30d110af6dad4209 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599237027000000 1599841827000000 1662309027000000 1693845027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xc1f565b59b68e91567944d3920f18b0342f22cdc29c8caef2e565a62a7cd5e6c408ab30e4eee68a3717eea9856e51142510a1cfcb5f2ba7a71ae68cde062c3f8 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1599841527000000 1600446327000000 1662913527000000 1694449527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x355c36c58f56c0639b6f32cd28c7e6f55bffc12614e1fbe7521211cde17631826e2ad632c9eeab6fb74385aeb600d61c342d8ede9ed84613f024006a460c6a80 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1600446027000000 1601050827000000 1663518027000000 1695054027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xafa1af804d576aa34a733bedce5aeb778fd7afa5123668cc30aa6ea5740a3a6cb6a7bc834c471ea17e9a0b867926d0fa73cecd85a70a5d6dc6ef6aec92912010 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601050527000000 1601655327000000 1664122527000000 1695658527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x6a0249c2536390e37c24462960e36c4f1a503be881978bd2e634990537a92568f6fc6490aa100118673ff64a200e0dca758ac2c783115eeb8e7df36bf0db3b27 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1601655027000000 1602259827000000 1664727027000000 1696263027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x8cea8ac77b34e19673eb0371460636bdab438dcba72fcab2fa302384fb4e15d48b63a245949e52dfb4170566a14cc4456a73896b7496fcc24115a4d3a31a00c8 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602259527000000 1602864327000000 1665331527000000 1696867527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xcfd79051d789a6c52ad31cd300b0f89362dc008da611ce6b4a9fec830b47060a963ab5437c5154969a53b62ce4a5f9bd1e5e04e538b8195a3a8056cf661a12ac \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1602864027000000 1603468827000000 1665936027000000 1697472027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xcef49acfd01ea30db38bbe6b73d15c1a56ce590a58f77cbc6206373c247989835391be91ebd15e00c1ba9249b08bcb0578588ed46fb908c03e19d4fe34295366 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa 1603468527000000 1604073327000000 1666540527000000 1698076527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\. - - --- --- Data for Name: auditor_exchange_signkeys; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_exchange_signkeys (master_pub, ep_start, ep_expire, ep_end, exchange_pub, master_sig) FROM stdin; -\. - - --- --- Data for Name: auditor_exchanges; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_exchanges (master_pub, exchange_url) FROM stdin; -\\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa http://localhost:8081/ -\. - - --- --- Data for Name: auditor_historic_denomination_revenue; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_historic_denomination_revenue (master_pub, denom_pub_hash, revenue_timestamp, revenue_balance_val, revenue_balance_frac, loss_balance_val, loss_balance_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_historic_reserve_summary; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_historic_reserve_summary (master_pub, start_date, end_date, reserve_profits_val, reserve_profits_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_predicted_result; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_predicted_result (master_pub, balance_val, balance_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_aggregation; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_aggregation (master_pub, last_wire_out_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_coin; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_coin (master_pub, last_withdraw_serial_id, last_deposit_serial_id, last_melt_serial_id, last_refund_serial_id, last_recoup_serial_id, last_recoup_refresh_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_deposit_confirmation; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_deposit_confirmation (master_pub, last_deposit_confirmation_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_reserve; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_reserve (master_pub, last_reserve_in_serial_id, last_reserve_out_serial_id, last_reserve_recoup_serial_id, last_reserve_close_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_reserve_balance; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_reserve_balance (master_pub, reserve_balance_val, reserve_balance_frac, withdraw_fee_balance_val, withdraw_fee_balance_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_reserves; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_reserves (reserve_pub, master_pub, reserve_balance_val, reserve_balance_frac, withdraw_fee_balance_val, withdraw_fee_balance_frac, expiration_date, auditor_reserves_rowid, origin_account) FROM stdin; -\. - - --- --- Data for Name: auditor_wire_fee_balance; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_wire_fee_balance (master_pub, wire_fee_balance_val, wire_fee_balance_frac) FROM stdin; -\. - - --- --- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_group (id, name) FROM stdin; -\. - - --- --- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_group_permissions (id, group_id, permission_id) FROM stdin; -\. - - --- --- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_permission (id, name, content_type_id, codename) FROM stdin; -1 Can add permission 1 add_permission -2 Can change permission 1 change_permission -3 Can delete permission 1 delete_permission -4 Can view permission 1 view_permission -5 Can add group 2 add_group -6 Can change group 2 change_group -7 Can delete group 2 delete_group -8 Can view group 2 view_group -9 Can add user 3 add_user -10 Can change user 3 change_user -11 Can delete user 3 delete_user -12 Can view user 3 view_user -13 Can add content type 4 add_contenttype -14 Can change content type 4 change_contenttype -15 Can delete content type 4 delete_contenttype -16 Can view content type 4 view_contenttype -17 Can add session 5 add_session -18 Can change session 5 change_session -19 Can delete session 5 delete_session -20 Can view session 5 view_session -21 Can add bank account 6 add_bankaccount -22 Can change bank account 6 change_bankaccount -23 Can delete bank account 6 delete_bankaccount -24 Can view bank account 6 view_bankaccount -25 Can add taler withdraw operation 7 add_talerwithdrawoperation -26 Can change taler withdraw operation 7 change_talerwithdrawoperation -27 Can delete taler withdraw operation 7 delete_talerwithdrawoperation -28 Can view taler withdraw operation 7 view_talerwithdrawoperation -29 Can add bank transaction 8 add_banktransaction -30 Can change bank transaction 8 change_banktransaction -31 Can delete bank transaction 8 delete_banktransaction -32 Can view bank transaction 8 view_banktransaction -\. - - --- --- Data for Name: auth_user; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) FROM stdin; -1 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Bank f t 2020-03-13 19:35:38.157863+01 -2 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Exchange f t 2020-03-13 19:35:38.237327+01 -3 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Tor f t 2020-03-13 19:35:38.302998+01 -4 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f GNUnet f t 2020-03-13 19:35:38.368415+01 -5 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Taler f t 2020-03-13 19:35:38.434473+01 -6 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f FSF f t 2020-03-13 19:35:38.499854+01 -7 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Tutorial f t 2020-03-13 19:35:38.567893+01 -8 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Survey f t 2020-03-13 19:35:38.638836+01 -9 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f 42 f t 2020-03-13 19:35:39.051866+01 -10 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f 43 f t 2020-03-13 19:35:39.469868+01 -11 pbkdf2_sha256$180000$dcFtllevXo2d$0ihEIW62H0Cp7cO5hW8wZT0+Vgf+G61Ihvam9R0vUa0= \N f testuser-LX9PpmbM f t 2020-03-13 19:35:41.106028+01 -12 pbkdf2_sha256$180000$CAv2OAXaz8qe$CwXlK4qnwaN+Qr4T0BxPSaMlgxNztPkv/rpNI8i/4TE= \N f testuser-GlcUdYmc f t 2020-03-13 19:35:43.726736+01 -\. - - --- --- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_user_groups (id, user_id, group_id) FROM stdin; -\. - - --- --- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin; -\. - - --- --- Data for Name: denomination_revocations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.denomination_revocations (denom_revocations_serial_id, denom_pub_hash, master_sig) FROM stdin; -\. - - --- --- Data for Name: denominations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.denominations (denom_pub_hash, denom_pub, master_pub, master_sig, valid_from, expire_withdraw, expire_deposit, expire_legal, coin_val, coin_frac, fee_withdraw_val, fee_withdraw_frac, fee_deposit_val, fee_deposit_frac, fee_refresh_val, fee_refresh_frac, fee_refund_val, fee_refund_frac) FROM stdin; -\\xca5e89c144df5f82fac1329f3c86754b0e0a105f7cf27eb9412d20cb48db7eeed585252b6a25a99c85ffaea656af87336881999a8035b50d7917c12f6a9b90c6 \\x00800003ce4886caec21e05ee1abe6f6f4c8d81dd0ac85ca353471a839da3750ad17f281673a1c29bf91454c595c6d8cc14aa335bba13c6ca6ec649f5df6a89335a6aa1c01f6e01fd45ebeef59d5c8d985c9bc92d524b760a3a256daf6f9a96465621469e31880129962b94fb7cc3c12571879f30e4ba3a27399d03913b12357c1fbaacf010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x87fd4d25c4af04e885408429b31019610af8eaf3378ea494ac0fd82389d2b93f8a1c27bb1903f7b0218d08ad85d0a3a1840f84dce9b3e659e4f6c8414e11c20a 1585333527000000 1585938327000000 1648405527000000 1679941527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xb13be79e272cf95452c46fdc192d07d16f24c0c0d9638bf2ba7814146c195272bd5f6a308e5c53460c4e5adc12c8116170bef14a542ceae0379dd0862008d868 \\x00800003e1a047301ab6f248378b1625136bb85c95b482305e46666861fde22919b117b8880145d62bd6e8f2475f2e01e0ca8c2cd31f385a9cd770b075fc75341d84d5b915f390db44ecb110538004c1595217fdf37015c474f24f55476f33a1df7007cff712b195ca54003b83d19680201631356e18a467eae4a5d3c8a0da68c39f7c65010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xcc734296a398733a66af965cee89886370b8ebf0a5194c551f371e1c97e62cb29e1b516b41752476b4e0dcad4bf3c8e079e0713256c01e67d1bc25f48d3f7703 1585938027000000 1586542827000000 1649010027000000 1680546027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa6576c13e5143d56edc29a8c4917121a1c3917f3436c26f3349de6c226bb96bce029469a4b627b504a3f17d70c4ad7e6c015b4873e98c87238c9b824018f461b \\x00800003ec4d515927a5c089ec4bbb1c3307282fcc3688aa855a3ab3d7b9575504aff6a6260784b77c32b8768d7cc5a01568a756397d4d2424bd54e29ba8e552e7abaf77fc232bdcbf9df532af931724ed3ac81f738e15513c827799115d19ca130fc81163722970abc9a964dd5534b03415d9102a899d0aeba8e1fa47d5b71a0eee75e5010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x9d4b5be1bf25df041cb98a504324930bf13328f1088e23a443ed2ba0fa2ceeff6fcaaeabcd1e8e9cf0e63b8938d88ef9f4cdcdfb33a22ed644ad30730185a10f 1584124527000000 1584729327000000 1647196527000000 1678732527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x19d70de23bde1e436057b52e826f99bfa483b84ce088c89daa91a32eab5edd2edfa2aafa1714e1cddfc6faf8667574e76bf139865720b73ac9d6d4e6cc04c5e0 \\x00800003d98f24063131deea0b9040bf7454597718f6f948fd144072bc6f13e7ba1dcd390b527dac570a543f4839dab9db73f57f8d0d00e7b3e03e3a1725268420feea15491262b8495e9c65fc16f5de4422efddcbeb6d1f3efd8ea2e9c851afff851e1bc5de62b1f2a7853edf8d2252d219c9ef6783a944266d40354d02a44e3b6c1b89010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xef6e3cd3c60c0cbac51510ae5e89421542ac21195a5694dbb446cdf3d82d49a25550c24a2e0ef1ada2bb1c3c34e04ffa7f111b11e766cfe95aabc724267bfe06 1586542527000000 1587147327000000 1649614527000000 1681150527000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xddc88ee65b9d5ffc9787a9154065eae790812d277640692b9de92d2ccbe417d95f649de7208d63a5b8dfbe9df3215c1c61862c14863168507078619eb14921a2 \\x00800003e1ee0243d9f85b5479929948af7e82c0f1b9c951cfbe56360ceaf4d71477bed24d39f12c3b702fb62340c87b7103e82ea4de7b865d7eb027ea35ac848d04386e973dbfdcb2dff9cac33584eb64790bfdd68b56be1c0c58b7fe7db494aac8fe547e9ec92e5dc1c67cd75b3c0ab1085e4b0098a1e1c15fc00b040204916bcbf94f010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x765eb874c74dcf41c9633a9a63ffbaf8e27a2738a02ac04db3f7c4b487b1b41b27f9b2cd6ddbf5120bdb8509ac06c61fd1442b5ab9f1e82af949da50b5d1300c 1584729027000000 1585333827000000 1647801027000000 1679337027000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xff062da42a2041b151a9a116837e70a11be427656d0e79ee440386edaa31181931fcc88667cbcfd1a47dcc382e8f770d897807ec2b0be258ca061eed3bee85ee \\x00800003c41864e17885d6a72358c7eedaeead1158d641ef6e21e406227bbf64371f897c657c658ec0f5380bf17ddd48900c081246962ac89705cf84fc0252552a70a3cff2b5e732f874f44018d7ac5b7fa19c6e661155ebb191798198e0cb365b61cde26c5cd795881d8099db156911752678c3bb308dd5d2d41ef6caf75b0802e634c7010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x4d07eb9010978ddc6299024f760ca338a13d458213bdfb32928455026dd9cd9650114776091369eca1d87a7935dd5363d9d9e7f7a849478ff7d850ef66c5a405 1585333527000000 1585938327000000 1648405527000000 1679941527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9cb0ae54f9c698ebd27e4de1c80894794ba23e6a96651809bd62aaf4b09fc051248a210d11f632c21a9bf60eb8a81bcee79dbdf8827a522774beabb2e17f26ba \\x00800003c803d6a8bf9489f9545c3c199b18794e22313602b2e7f19b74df47a987c284c1887ec33d14ec34c1f25b22c8ab1a915b16a446018b7a15fcc4aefd453cb13b27e28af23fa21dc325f2608543b390d41b27dcfa2dbbe27b6aa9f230e13b9124225d1538b703059ab6a003435731ba7d2ff9137723f0f17f8d77d9980ab8c7a149010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x15534bb923b552015ec1be1ddbc523dd49e8f6f55d0a817e8e9e5c8e75cea9ded8d0cf62d973b58f12ac55e1b90953a2057ae58e5f518a07b08b2a8dabf52407 1585938027000000 1586542827000000 1649010027000000 1680546027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa96d1614b62d8a838b7ebee977db7f3d3b7c3630c8d6aee9c96e848c5b4f72200672fb3ffe229bb3c0ca63fda38757550f42170cf04fa8c647342d4d82abee67 \\x00800003cb92954f616154a0ebe5c193a06fd3018035f879bdc03381d2a83d43b6f287e3d4cf4806523973118374ba31f6a8a71a545c1fca5f1026bdc767db8f3eed12956599b1cc6555fe388eee70a61e8e795df3ed48e6c67ea7b88ded6f00f0b4b1550fb2493031bc553374b63bec73c348b0a8e761f1c1275deb5d82ca1c4e613c61010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xd86f56888547205c27f966130842c59f30dc2c78974d2f790e9db5a87c222ffc0dcfeb5c2ba337c148a1b0692835071233221e5a49a3feb98d7e41c1c20bcb0a 1584124527000000 1584729327000000 1647196527000000 1678732527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x73cc45fec9836dec65d8c0d9b9e0bed91b00a855f640a7ba5710ccf9f83b592660711f7fd27ad73cbe9b36ac8c934b3cf8dedb73a816a2e99338a600d171a09a \\x00800003d0556420e2c659389778fc16e0e3d5fb2b49a56cca48126bfd7930f4993dc9c09ba31b0bbe576ac6c4a5f5aad846022d9eeef2889123987cf273867a2ec2c36e2ecf7f0ca08d4a252a6a8432eb9dd399f7a135948caea9edfd0ce3f10817ccdd5999bc75126de2431f616518fc75e4889ecfd726cebd27e8e114c3976a87df3b010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x3f477a85d8436d200c6de9edf4bc47abedd3c669939cd31b855e0eb54551f91b141bd8abb8f0cb5fd0fa26a1672d906214d9c9af9948f5a1f864f1c75b0d9405 1586542527000000 1587147327000000 1649614527000000 1681150527000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xbb45dd1f40b446b36785e2178930240f1407da65a34dc2f4c39b527838e014ae2f5a5249a5db28ab0a64c1e37608fc7345508132dff6c135fd8c1bf651248dac \\x00800003c8517efeb52d4907be3df6b94345049dc6d8fad031a444feb8e90a320b1b1d91060b21fdd71ca7476a8cfb204102ed44413ca2a40e59a07864e2015207a392a44ddef8546fa47fab665976beff3674e9acf3e179c3c36f1246740a08f25bfcf88d775776911aebd57082730077f1fa594e265988388c2505a4baa4174265022d010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x171138cc0d662433e6f66bddefe985e61e68e0a1fa88d2a0d951199b14ba5d750a118d4228558dfdcdd03281c9149637c86c74ac68aa7f00afc384a2f793870f 1584729027000000 1585333827000000 1647801027000000 1679337027000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x440ecd32fd5ef557cd02a53e17d936a34f7ec084e5aaaad521cde1ac77d4a4ac094eb424e8ee25d7389cd27763b7a92ec1522d637b8f953b59c767b789f6ede1 \\x00800003cc1ffd73de7dfebe1c562ce6a9ce5cfd3146ff33ab0f30492a72f1a6a742f324577025a341379715c90f0c04dbd96d07a27391a3325a94c0f175cf6d6414f961bdc6b323cc1207143486a647f1c3be1be501101b73129a8e5c4156026fe37d8ab50658d3c29eb7af3e53dbf5b34fc2043e18f12d97b04914f8b2caa01f4f0473010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xa1c8c14005102e08c0eddab19f6b46ddf7d00d6e70efb0a56a86490d24606109f5f92a4f43fc70ac966d6ad4fa5096b5b913c41e5b25f8b1f4484223c4560609 1585333527000000 1585938327000000 1648405527000000 1679941527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x6dddf8715186a8eb2a1cb88c6b31becd0205db2956289622f32f055a4985070b230996e1ed5faf8db243ffa3fd9e784e34c0e014f232b4e29f8a7ab9e2f22caa \\x00800003d2172c1f2cac388f4a262c5c6e6f829e56fe426714aaf5d3554dd0b212645aad03b746f5fdfa51c63d19bb4da228c4df158463ee5fd115c515c204bec75697c3c6ebe4047f385d17b609aa8e4cc542d9bd77e076f451e9b7ab4168fd3a81b4e4c94d166f6569d9ec2459bb9f08f8501583c58abbfe1cb45807f5b94ba5263b83010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x595814f099c431e68f9f8682b751688d645d33f7918f76fb28108b67e0630945b42222d49aa9d446f0247750f6fb036618d07849482604757ba3bd50b2ead507 1585938027000000 1586542827000000 1649010027000000 1680546027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x1e5e384e59ac0bdd77b086344af2985d8a5b1d4e58804ec47824d3d37a5927e0cedf43c55ce4051192f089480a1c61e31393185862e4781e563659684ca9d61e \\x00800003b9d0e89e0464cc294a4b703cb0916ec8f101c199c0913ff6b89889b34921e5370b0ceff1a645e605e0df0b2e76e50b676672bf6dd30ef8c69c2f54e9ea7d4d8970399edf6c1825908a3173df18383cc0a167684553c523acb9aec5cc6352355e856d273fd73b5da3a01aab35e85df41477312a4c75b085e624f38eba384c9aeb010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x304650635cac382af2fc1f54a0fc2f55940f9b17b5ccc0f1013352fc9b9edcd80b77d238a2088db34557570db54cf8e5793928ce2d980d13a45570cc3c23c806 1584124527000000 1584729327000000 1647196527000000 1678732527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xc1710f64ac6a6b8fa3d25387cd064283e52e2f79ae6fc6ce48df855cf7045634af2f1162119c48925ecd8a483b36b6545886deda8757e3b18cb79aa77ae409ef \\x00800003ad5737091e9743fd02b05911ecdcf921459b8b5a15dd43fafccafead79069faa43d2aaf9a70b983a37bf75e0916e5024ca8bb73a9d2836027b6dbfd29ce3d5b20724b76ae6b86d8fec4f4920600613478f62bc9035cef81a43c78e4ee250f64c17b5857884e17b0d169715f78b30d94aa6e997e389c128e4ae4c3f49331ccf47010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xceca691d7178b57909ffa6ba8df774fb6436bc2bb9f165ea0bf1c1663f8a1df188a5e12a92a28837cf202f4ea36d2f8719d92679a97b96fab3aad1fcb07d5d06 1586542527000000 1587147327000000 1649614527000000 1681150527000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x3a1e88834aae2945a1143238e367ee63ac473383553b81e78b903246fc2ad1e20a4ec6fd6c9400c30ec0883bc0c4d0bbc6824cc3e155450faec74144070d164e \\x00800003c591404b33727f144ecb7c99cc91486002e1e7ff0117fcc13c717195c82ea114c0279ac87ab8a3e4b0a618c4b67630e31a0d4aa8de2b477156be1b3f396a51d13934c9f81b377c09e465f76a7effe7509a1fa44fa3f623d0d52c6ecc94dc2a5fa63b3c054f60a25937d7acabf9fecfa896b40bf9e8a50699cd1b00d4689adc8b010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xef4431c1d9ff48d083d38d7fb3c56b03179eee3264f3758b604ad3f39de619519fcd977f1e5520b338b43a11b2a13ab8db4596afdd26f03fc03d48ce73ed6907 1584729027000000 1585333827000000 1647801027000000 1679337027000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xeb874e306cba69263f4ee7a1cecb2b7649b54a1d1ccd427343a838dafd4f8f2d97b828bc65c9557f83934e041f8957c5e7e28c3bad7e79a984c7a24acf57f803 \\x008000039d401132681791f70513d712f0f4b19241230afb120695b8a250e1766e06fe82150635cd4da217d182c1e3624a08312970e70a533a06f05701a23417b243b6e42d9dea9b1d67cb1f019352d19dd8afb4ca1773451080080562600af5d49ade612754a6a827fa95095230f1344ffd931f480fb1303aa901dbe240acfec0451847010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x5a499be00f19391fe05bb8d37ce15894b1a5686ce53ee68c8824c022ad1b4186c305eab089533b5a77a4f33220b9e80192192bcfa08929ff08ae8c2f19511603 1585333527000000 1585938327000000 1648405527000000 1679941527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xcd70779a6f182bbfffdc0da52269411a478384f9844eba7897009ffc8ba92c52ebfeaaa274564177ba77baddb77a7ea16d5f2327d6e78cb871f52f7cb458765d \\x00800003c47b94ccfedae9656f4b5c8c6f9524418a356d254af754e22cf6520b58da9c537c3be39e81a410f9e5e04c58f2733928c7d76fb10cea441eb8c3ca4fe35f3fd7e977e08c649bfdd0bb480da9443db0b95bf2da14476aab5c4bb6a459f337b71cc9959b37c242f684d9788835bdf90bd54cc55460d6917077b5caca4043905e57010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x55285c088ad40c3ca6b2bdf8b55a371b63d0dae62da7ba72d8329a6b8f89364b60d237796091d01e79fa4ad45fe9d372c3832bfda5565efd2805137fc90a3a02 1585938027000000 1586542827000000 1649010027000000 1680546027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x597a8051c87010b154a8dfa6643279b0c166b51539c69b9cb19af986ab521ed59877b3868c0e56aac00ebbd6f1f3036a6b667403fc032e32b5589ddb9c257b8d \\x00800003d9d03d2b9b09d7277ca24c5231038d49a46d080c8bd7671b665c39328e6b1be137953fe40be4a3cc752cff25165b08ad41a9d49707bfd49601d0dde0bfccfcadd64f02320c253db5da792606a53f8da11d1e9c39b9f18dff9ddf07c40b11ff235506da19b9e5aac9b7f17b02ad6718269a95fa48b7a5927b9b58eadf229750f7010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xba8ae58e0b93543fddc3e09efd7f67a32ffac7684627ab54fe1f2ba0b3429fd64540871b8d5a2d2b54a9c316c589828d54def56ccfc90ba999e8ddea9f38690d 1584124527000000 1584729327000000 1647196527000000 1678732527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x3b6d21737bf0bab81896a28cce0df7b6fad9718ed09fbcc0617c6f1da04d7806a9e7ab60bb2ede861246390a649951c74d210b12f5cccbc7d1e2539911bf585b \\x00800003b41bdc5e3f58e742601e474858b2c7a6c55e078c74ee175e71a4804fe0d774f9dbc503bf7b00d491ceac3a43798c613777d6c2cd86169ea8bf41395b6695baa3b0fe4fb56e561cf7479c3c3fa725bc095e15fc4a3620734e1e26e26354401db4c53305044bca0003e578dd9b77428db0fa36c8bc0e9751b2323e341b6fa6d00d010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x52a44f26383e8b727c7a1d3b2e74a39da18ffbfdb2888715438e5640281046414c66a60bfaf6f22e41bb43c9d54f5873120de03b6d2398a467ca6e8b3a35b401 1586542527000000 1587147327000000 1649614527000000 1681150527000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x7246fdafe0cfad50a1068db61dcf1717abc01a6197db5fb2fa5bcf482d90e5071b7f670f10b9309551a53978bfa64481656854e7484bf6f867f3e94b8383d33b \\x00800003a188bc13744a4300c1b95817c396f9076e755a0a09f403f94380db24b4a16bacbf48852a2d8753aae1a71727daa3bf6561b7a940c05798134066b3a367aa3c7fc286ef31368cbecb1de36b2e0ceaac727dadba705a98024ce98e2b07ad7e7820798192769c8f15262a30cc0c98ec2d4af730bec1cd16fe7096eac035329c391b010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x98845def777f9c9309519c4e7e2f3a4acf7cd8f4c09f33a431b3a8d97af2711e967490703f7a630d687921dc5207a0f30cc596990edd86a23dec3c5bde969e00 1584729027000000 1585333827000000 1647801027000000 1679337027000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x026828646242d17763289929b2e79e08ed0af6ef5e94c2e96ba2ec22fe38c4df3557ec2b99d7e6c1309a4c63f830548a86789d73e7032b7524d9b686be8f7db7 \\x00800003be4a7bb6192c1aa5e29adb2e162eed80bb207610b94139364156e901ae3a902b5f3188230287e0612dcbf9cf91a35e03736abd6f209a7d29faca45a4d55efb0c4b74a52cf8be1f9c0db0a4bc5a6b7d06c2170789fdb5dd7960628e3ea50fd1b2bf3aeae6c0eca4c7c7116051ad5edee47850dd811fa569e54eee2d06dd5f0231010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x5b898f41af054034864c16433fac04d8939b372b715baf27e947b515934ea9c01f4c5956d65b36dbe9962d84bb54efc505f4c5aafa5a9aa9be9ba8cb325d0d0a 1585333527000000 1585938327000000 1648405527000000 1679941527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x9c46be3b92d42255ef22a8d18d3bf65d2600fb7b034d2f8d1c09dabe5a345f2e05322f6db09e8c70c0a52fd091ca4376405e85e6393a0a3bb7ba02894bc251ad \\x00800003d5e49296ba82cc605345d6467a826e8b5237de416c65607b4da81bfee63da4aca78b8513b26de0e87d841b252c98d8f2e489aebf9841c515d1eb0793dd32a11d14b6cec67741dd1b18ca422df9fab85f23fe61db1b5bfcef5d83e88bf975fe84eb03e153cd5045b77eade82bb71a5083301c89c778b62c199f386fe5a867a87b010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x968470a358909119f81c95118798aff002d554228f39ee6bb4c616b3d19d7847620f2cbfd57faea0278a62fcfa21a3172f8f0db4b2d82934e2fa96a1a0a5710e 1585938027000000 1586542827000000 1649010027000000 1680546027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xdaca7cdc05a7e781c04ab1e233ca2664bac59caed67e4d00fef43e31f191487a7cb91d8b862d6f9329da670ba79e6aa599de8896a6032249796f50870eae3933 \\x00800003c09b6a69e5216256944a4647ea9b6db44423b35597fc0c4c8918deef59a930facae82b65e54e9e5e76d3b2fb9608844a6ca8f9a28a8380b3f43be1ba3b523377475fe4a60e047cb78ebc09d979a48cc271be31bd31dc10d638d29e68189de3b3bec2e3e7093a48b2e11614093ceb8003f0724cee27330fbd995c193e3a0a463f010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x834a002ab74ff3a7efefdc0486733ba7765bb5419c41990e846ff6c267e8b9246d4fb32a85771522adbc49602cc916ea89acde35ad0cf6d103c7a213d8863f0c 1584124527000000 1584729327000000 1647196527000000 1678732527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xb1dc83372de79855773717f0bc277c05909631a21672115b41ec805552235854229edd90b3b8334e1bf0eefe781167440f68bdbb61a482457d7c526407527eb4 \\x00800003d902ed74e57fcfdf691130afce1819a1556d3eb5e71de2696c208fed60e8eb24da71e28c33d15b77299784e42ba181a84f35181863061fb16867ce56a1f08d2e936598ad89ac0162a5b0357b7d446563850b07fc2ad9a151a45edd93bd3371777f4eeb5ba0c265f8b51efcd5261eb61f8cb48ef3d83d2aa05330718190f4d89d010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x7d0c4621b3e8df3f408bfa853e0c3d0380fd560472e3d4bc5535d4abefd832f5ff48dfeb07798423e84d24593f50ca22453d1a0a051d9405cf0d18f056fb210b 1586542527000000 1587147327000000 1649614527000000 1681150527000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x70e1710ad98a6a196e28d1fd5f47e3efcd1b8e7b2f2c3a827876d2ac95f522849d4d310447b76c798fa99b8c2d2f778f584ea1794f9a6bd67e233f9755d0fbdd \\x00800003a9b87263fa85ab87cec1d6f4453dce53beaf85ee2260f6533b16738adb0edf2da3704af15ef730b7aaae3be3803fccea699c1dbab23a11bb2892e9d7c0b0434d3f8f05467361f818f4038c67d7dee0fbfec836a4993dc66e1890749d38da26b014b69ce9e1543f0e8ba81622304be9f90131f31a31fce0fb63850c60bf6a65b9010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x3af07bf48c1ee872f8fdb089700a39b8d4958598611979399c6d0123080b1ec10026ae2026717eb8294669d5b1b42050e8053f97e13f044971285c1b1f9e2c0a 1584729027000000 1585333827000000 1647801027000000 1679337027000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x4883660d80ed5b9651c06a467a913c5504940fc360d607fc922f5aabf1ef0e7567d952eba4764dcb1a3ceca37e42a5a49e86ec724240789eb6955866255d0c7c \\x008000039efb9e5e59ff102939f6ca0854e42d3ae1e988f5a9477bb7ff143245e5cdd40b1730c6c0b2c5d6b34839e84c6768d78928f290154d88f589afbe7d219fb7f63b2cd2cf0dd5930e6d0c01c3581d4a4cbe72c3f26095ffdd8ec494015a613c02240b89acb5381e06e72fb949c002ba1f887b39479cc6a2fbf864c2437c1c8d0b7b010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x89d3f7e88b73571a8d76d50000abe919eecc577a5b101c19c520ee98105748630c8e471a204acfdfa71ba317f87a4513b12fd414796baa70478e06e61e8a4301 1585333527000000 1585938327000000 1648405527000000 1679941527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x22348d1ad408d8ca6fa6d65ade4567aa687645a75b7e697af05be4df8fd8e5726b859aac44b6d0f6b589b105eb645842e17646881c31e813ec54f98de11c1194 \\x00800003d7272bcbf166e1aad6c5b95aec6043986528265d0416f1e610aa38b787a9ba80a13f314facf4b1357269a5f4a2176a4ac1477bddbb39fb9143c85cb11f53a289b75b448334c793bfb0f602d599977c3a5a252ec48b81807481cfa97c2df0b366111611f65bb1653d604da3403f188fd804f5dcf1f9dfe41977ade0bbeaff90df010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x640f14fe341fa70cf1fef1d53186dd7719d11e308a338d4cb7ef827891656e9ef57b344310fb604d96534fdfe350161cec3e0f52348d685dd6516b3950acbd0a 1585938027000000 1586542827000000 1649010027000000 1680546027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x00800003f83ed03e7c128662173fa86474e21137a372fda811106ad733002b3e7079f6711d5e074ba962bf825f5753483681a6c5654705e5c01d390e9a4a8fe928e6ad0e4a34920df1e00b4d98d8c73e8d83b5caee590700a4379b8171a1b23e82fa9baa81b2949f57361037a4956c2141a24c0fc0add51c6769a90a6740f25907a0f2b7010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xb5a03c23f108414d33e97ee29c9f03e46e8562e418404ea368bcd0ece18e234ecdecbdd19bf2f3665486bed4596d4c245cc764489a4861bf229d33f0d0d1f708 1584124527000000 1584729327000000 1647196527000000 1678732527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x5ca639afc97ac81e65ed5a047ec4039c2f01224fd70e58863a382a7f9af580d27d0e70e217a37976ef3bbcb29f9b8aaa70dea6c55654a4674418e1565b7bdfe2 \\x00800003ce25fd45c8df7a0d851c43f314200887fc8ddbe39c98f93559235dd4d69497a4b66f7cd808e05543c53e454a6f5b88f57e60e64cc7424e315563ebaac7ffad0e20b38cedccb2606584fe1f9473500b9286a9081d283a42e9554cfd3426a6b3f511f2aa436d6139957a2e52cc521feea4ed9bf8ed26326cd9a038f6b9a5f15ac9010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x96ed3ed03dbf7257d0e8b7ed6a58c5cc5b0f64a3cf922aa4f9b20b46ddd2b9291f425ba5bdbce3727f07aab1dd192cb99cc30df39e1a0b12fbe835c04027d50c 1586542527000000 1587147327000000 1649614527000000 1681150527000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x20c978f9a2db37186d61ff11d9e30dcda92b2d8e29077bac309f9db9be570a75f7543935dc75f976443cb953832215fb2520cdfb3f06abae1e9e74c45c0fa589 \\x00800003bf890a83bc06473603be6aa8561026fc2cee10cd4a14869dcd8becd5bb21f3fddd3bf8bad62c4eb6d72c951889e636f599425d5cf2bac1b96e2f25f318acd8703f60a2adeb4d6991ce0dd8b3ce89b265327cda0c70554c56a97a8482dbd9e3aaa311872bdb1419571b6c9ee6aa1e7bd562568e3d849bda4f064cfb8fdf1c3a57010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xff0ea7bd5f77ca3212ffadccdb47a41bdc5a2a9f67cb5555552a40ee35878d20e209354ef9b0d84348b75453d8b06cfffe9f0d9d9114db1e02b74a1ebf62840d 1584729027000000 1585333827000000 1647801027000000 1679337027000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x38a6316d7733d9ab22dc1ee21ddeec54445ab802265704f2cb1886424d2c71c9e01282bf1c7154bf812fda1515eb61b0e71ee6d3594a099f5e2ad3b7543a4256 \\x00800003dec4ff80e64098b7ae00280b357ce5563a98441c172c7c385b46af5b1be3e08d6010ff046bb2f94ac108613ffb7c3ddc9d325e722d28df0c0f9e0ab9ea2ae8ea5db847ec640b22c15a0eee77226c15192851b34e3c4e9d7ebf99e08a424bf88649201b225d02729d3c3cb227f1a94a70c45b85c30c6ba1f148389ebbaee92965010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xd7658085054adea134a5cbefca1bb0b730a3ec605b28b523735586e8a9eeb0693b287e3ee40b7975243514438f02d05117da9598689ddf43536d8b37963ca406 1585333527000000 1585938327000000 1648405527000000 1679941527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7129214704224f28016e13a81c5580ec25d516481a672541353410afc1eb28da038fa5429f2e324e95f96022279f8099c79625d3136b4c574d485d4370130a95 \\x00800003bf60e5046468a2871409663abe71406c795bf1eea7324d766dc7e371038b3104238d08e3c79d92cc8176a4361d78fb7616a2201bf98e70553a5a79fcefe47ae4c89286be08aeca35f5b8e64ac51c17ab019def36a72d0f5d3ef68ef3af454eee726c01d8ec342fef5e89419d2c42f1c822e2aaeeea314ffa6c924ea9c780f4db010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x32670ec806a514e69ea969d15a6a914f1c9af8472c1dd37dd353ff798182f05f12d0a2c428550ac7af433b165c60095a7beba870ce0be458e40dcb5bcdc77907 1585938027000000 1586542827000000 1649010027000000 1680546027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x00800003bc3dd9c22574bd250fb58c4628dd8ad4480ac88f76602c563234ddbc06c7610b9c32ce137acf9c458ed251108c4e098fcf4aac926c7eda1550a26739f6a51800895c660fd01066518101667a8aae345a9ac839c8c6ceccc55127d668ae1fffebe0792228b6ceef327a60ee45e2bf642d17e1b3f35fc41614478ef863727cac87010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x3b4f830a3f7c7fb749abc4e04373ab71cbca0034a447cd3aebd15de0b88d19f757fa75f0ba692d8dbe75b3c2edcd2a67f2288786b48375131dbf64c5d02b7e07 1584124527000000 1584729327000000 1647196527000000 1678732527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc7ca973d4625d38421b350ecc2681bee151fa3890ffc4bf01ca0dce134ec798249cd9eaff9fff59833bcc8acb740c26d0535989dab7c2dd1aef9a68641a7fd2c \\x00800003b50ea8f56d6483194523f595ffd5cdea47d3c5cf662f35ebde6d914f060952211985ce21a33ec2df14e25a1684a6e54bebab5d150735a45080659ee32ff1b4b0ea31b22cb9ec7b1db49e15b2b4e9bd2317f78467a97a9b44646e8fd423f57a7dd28f28dc385ff58f636254c645bca3b5d9dadb0292056835a2cf9da897699745010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xc5084a8e8a01e4667e5bc865edf053adb3444bdf088203b69924ce9f0da5d78ed39cf9d677728bf1a2d494c8d26295211d9aad05f7dd1d26df37b681dc588803 1586542527000000 1587147327000000 1649614527000000 1681150527000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x219e13f4cc746bd69a9e42d0064f18f01df10a300f1e7f0eb6b702ce609c1c298cf79cb314ee6e6355b34e9683d010cda9feb50322f30f47604475ecea87ae51 \\x00800003cad11e9222a9db28e0b7cb83c3471e00b7d165c9c75fde2bf3157952ab20d569f7488082fb24dd48f342b8e46cb507fdab6b5d570f30bdbd25a84d6b7b58b2cfeb49ce3dc1f5b5611142cab5459a91a690ccb71229efeffde04aed806e7d0f79f82e9b3fe776b9e474212a5134f85c2740939807e1457c8150860c5ec4c5360d010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xfe63aa058348bb8ec0dd2ffcb0aa88b23c835eafee0ac4022db6465308443878027271a989fa176073ad1a5f60e799cf4e803263e76e6e4050601a7a12a2070d 1584729027000000 1585333827000000 1647801027000000 1679337027000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf5ec27a33faef3b0da60b8403beaebe30e385c3bbb0849372b164d26b8c73265914f804eabffb948646a8ee0ff18ac8681b5014adb983dbc692a4406791ec1f2 \\x00800003a3aa7255ad8146f08166581ffb0485e0f7151ab33ca42bb49c5a5cb713acf170f4a41caaec47093963d7d96e8b70208b7f946e87752011146a3e2687ec502df89295ad24c9f0c6a0de3cebce5beff56f29a2874a2041867d968d93dd72200773fcfb97cfc0642d056c74a69f4b8de44bff6ca0a31066a77d8bae36f3172ef491010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xc4b621489acc39e1fb0babfd152c9cdeb1e730b69495d01ebaf3bb69a98aed4df80b7f01fd37aeec2b71661b5ac7ee0024e2714aeedae8225bf952543e95b804 1585333527000000 1585938327000000 1648405527000000 1679941527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x736fae372040bd5d2d9c97e454efa630d0ca6a01a277602638c998af302418885e017148f4ea7cbb144a0c29a463c8c922f3c527f0ff63add38f64292c69f5a4 \\x00800003e295a2b289c08db64929f3358e797b79bdd1d47a5fdf8fd2311ae251a49524c2e5ff73c2a3c8e3a9e1ad3a22bfc85ff50d52e8e0b4a71203fdc33812d1f0d284f11c964a3d9045050553bff210b055beaaead552c8fe254dead414ae74e8e1059336af45d9b103c82cff12c48251d2e376d75b459f55ee07b6519bb25d9b3455010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xff0ad2fcc355f96adfc980b0d101cf1767078fb86d025614c3da24f0b3f9f9621bb8f28b549c14de96688adcd836d85e3de80fbd0765903b5e7cf3e96a92f604 1585938027000000 1586542827000000 1649010027000000 1680546027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xe2557e383c1c3c019681c2521d415a758f1becb629a3a75fd9dc212f0f2e802aee81e71db725f0f9913bea0f913978bd7d238558712aa957d80c4e1673292b13 \\x00800003e507725bcf9546efceca340ab3e26584112e0ef76dd658530c8c49d533cdfa99eb4b15aab02a9688b090c3d41524c16017367e68dd16697ba7378d107bb2847028738ed00a6a9c770503b8dc738b16c780fa27d9e50b355fd977ade1ac8c810b454d6c5fc387a00da8b67ff4a501bf90e4cd055ae47f3c3a091a1fd4113d9565010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xffe91c3d5d330d8614a94e6d6a7534aab3bd6e3b23b7b0e9e00112771662289a437237fcd2bb442b7353e16fd73fb855247025a1de099f6053084c75fc41f001 1584124527000000 1584729327000000 1647196527000000 1678732527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x4faae841605109e2e8f43768baf54551b8d2ac29b16f601799c2ee260b9bcad53c8b4e5ab2352bbc1b12bc28c53df0e3ea355d61227430edb4644cdc4546907d \\x00800003bff0c91b4cb35659641e0899c62e521f645d152916158343a3317d53558dccca832301e3f870efdd7a9df5247a37583b13a4a2e5076d65e0b2adf890857dffd58666b1ad707cc32441d51b15aba2339a41d7e0c1e43b51c0ee088ac49e402e849e869dc6c49c1bd85d0faa341e5680e770b7a06f9f3f6122f50393560277ee63010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\x127896e38a662f166503a6c75946816e76dd587e1efe1dfc9276c2795b62df909bcb29358ec76b35a9037ac41a991f74e137649e5f5aa42cd8e21bb5a64ab809 1586542527000000 1587147327000000 1649614527000000 1681150527000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x89d632dde6b67bcd5496434399229c75e8925653c5c952393a61131b03f941ba1ec3de4e210861a730b85fb87cdcd7ccabc26317cdcb823f83d027ba8777324a \\x00800003a92dd9345bbf84d519201c8cbad3783c48f9e8c5039c4a827183a0d002b44c08a9651d1d12859f314caa2e91a28ffbf2abddd4d0ab74ac03db2407680de5cf19dc3955f6b8cd6b6ae1cd4846c8b4d3a8d6fe0b24196ea1ffecf157b9523f60227d776b3b351bc060bb0220136242761cf2a548c1c657a0687d4fdd53ee3d8327010001 \\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xe88df9aa6e98cfc83a6af6116e8134ec82d654d9611ecb3f458db053bd4391e96e88d752179517f61be798823b626a4ad0f028fa11d1050602df228ba6be3e0d 1584729027000000 1585333827000000 1647801027000000 1679337027000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\. - - --- --- Data for Name: deposit_confirmations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.deposit_confirmations (master_pub, serial_id, h_contract_terms, h_wire, "timestamp", refund_deadline, amount_without_fee_val, amount_without_fee_frac, coin_pub, merchant_pub, exchange_sig, exchange_pub, master_sig) FROM stdin; -\. - - --- --- Data for Name: deposits; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.deposits (deposit_serial_id, coin_pub, amount_with_fee_val, amount_with_fee_frac, "timestamp", refund_deadline, wire_deadline, merchant_pub, h_contract_terms, h_wire, coin_sig, wire, tiny, done) FROM stdin; -1 \\xda43e65bcadb947221036c387da292da2642c97961f450027820d0d9d5ab1a0f 4 0 1584124542000000 1584125442000000 1584125442000000 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x61043073e65af0221d1c95ca0a32917de5241b89f81678577db4df852e19b5545a11b0b1d5f786917fe0df200159864d78c575ce57421112e58bdbf0e1b90672 \\x137f048953e22f0e5d28fc42089dfefbf9af016870a369a489f99c2b7038951e3644106d64a0906a06ef332199c006201be7c37cde19d3103b41394b885e3f7f \\x642576f253e7849a632bf7a61c38a5f3a538bce3a7f56f6d65a324f083c16b0644bec34f1a4741471593013d2c8ad439e9bdab29f3dc905ba097095968a49900 {"payto_uri":"payto://x-taler-bank/localhost/42","salt":"NR2Q644SMHJ19QD4534JZH52PS466JGGGV885PX7BSPHXSCWCP6X75X090E5XFK04GSB85EKFJAWZDRGE6ZJAB6BXCWC3WZZ3WJAPW0"} f f -2 \\x9c73b669f228b004180fdcf3a9f33afdd000fddbaf12688eed6e3f4c57cef523 7 0 1584124544000000 1584125444000000 1584125444000000 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x06c4c1f2ee5260b7fb8bb1542fd840107b046cfe46b05923d205a5c03f03a3d19c367ff4c642be00989a36d3dd48abb6b444a7566897902b5d62e6cb01e10edd \\x137f048953e22f0e5d28fc42089dfefbf9af016870a369a489f99c2b7038951e3644106d64a0906a06ef332199c006201be7c37cde19d3103b41394b885e3f7f \\xb47295d4d8bb784929ca37c74a3ab62ac3964ed241192c4dbeec9197d5ce41f1b8bdc468a7e126f8dfcefd1c475631178b1aa8f0c8778a6af8a1b8aae63ee007 {"payto_uri":"payto://x-taler-bank/localhost/42","salt":"NR2Q644SMHJ19QD4534JZH52PS466JGGGV885PX7BSPHXSCWCP6X75X090E5XFK04GSB85EKFJAWZDRGE6ZJAB6BXCWC3WZZ3WJAPW0"} f f -3 \\x0b11cfd1ebfd067d2cbc26e663f2f814a8b5e9a387667adedfc15006b5531b0a 3 0 1584124545000000 1584125445000000 1584125445000000 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x2552601dc511378133958937eaf4e1c6cd934cefcdfb1645774ca60278e386acbfa6dbfa6062e0c55dd09af197ba578ac715d74f11015c95b51904fe4e5adfcd \\x137f048953e22f0e5d28fc42089dfefbf9af016870a369a489f99c2b7038951e3644106d64a0906a06ef332199c006201be7c37cde19d3103b41394b885e3f7f \\xdee39e3e40bd23cb375afd5c8f934f3e7d2faa52eb616fc75ceccc32341d15b2cd1497ff908d2d87177010f87f86f488f167ba6174456ea0b3da17bad64bbc0f {"payto_uri":"payto://x-taler-bank/localhost/42","salt":"NR2Q644SMHJ19QD4534JZH52PS466JGGGV885PX7BSPHXSCWCP6X75X090E5XFK04GSB85EKFJAWZDRGE6ZJAB6BXCWC3WZZ3WJAPW0"} f f -\. - - --- --- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.django_content_type (id, app_label, model) FROM stdin; -1 auth permission -2 auth group -3 auth user -4 contenttypes contenttype -5 sessions session -6 app bankaccount -7 app talerwithdrawoperation -8 app banktransaction -\. - - --- --- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.django_migrations (id, app, name, applied) FROM stdin; -1 contenttypes 0001_initial 2020-03-13 19:35:37.942029+01 -2 auth 0001_initial 2020-03-13 19:35:37.965921+01 -3 app 0001_initial 2020-03-13 19:35:38.006049+01 -4 contenttypes 0002_remove_content_type_name 2020-03-13 19:35:38.02578+01 -5 auth 0002_alter_permission_name_max_length 2020-03-13 19:35:38.029156+01 -6 auth 0003_alter_user_email_max_length 2020-03-13 19:35:38.034873+01 -7 auth 0004_alter_user_username_opts 2020-03-13 19:35:38.040331+01 -8 auth 0005_alter_user_last_login_null 2020-03-13 19:35:38.046473+01 -9 auth 0006_require_contenttypes_0002 2020-03-13 19:35:38.047897+01 -10 auth 0007_alter_validators_add_error_messages 2020-03-13 19:35:38.053184+01 -11 auth 0008_alter_user_username_max_length 2020-03-13 19:35:38.063052+01 -12 auth 0009_alter_user_last_name_max_length 2020-03-13 19:35:38.071748+01 -13 auth 0010_alter_group_name_max_length 2020-03-13 19:35:38.078775+01 -14 auth 0011_update_proxy_permissions 2020-03-13 19:35:38.085658+01 -15 sessions 0001_initial 2020-03-13 19:35:38.090129+01 -\. - - --- --- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.django_session (session_key, session_data, expire_date) FROM stdin; -\. - - --- --- Data for Name: exchange_wire_fees; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.exchange_wire_fees (exchange_pub, h_wire_method, wire_fee_val, wire_fee_frac, closing_fee_val, closing_fee_frac, start_date, end_date, exchange_sig) FROM stdin; -\\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xf9099467bd884e86871559a62a7f23b6e876bf084a30371891b5129ce4440d3cbe27afe387d39b2ce8d9625abd388517c81bfc8da9f2e0f8c9471bff65a802b2 0 1000000 0 1000000 1577833200000000 1609455600000000 \\xac23892c002bf8a985814ae72efcc892c969a76146a4e678b8baa39be9a77aa44b6bb38061f0c7e5b62af0dc80a90d90269a9dcccf1f20dc970a7f587e912602 -\\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xf9099467bd884e86871559a62a7f23b6e876bf084a30371891b5129ce4440d3cbe27afe387d39b2ce8d9625abd388517c81bfc8da9f2e0f8c9471bff65a802b2 0 1000000 0 1000000 1609455600000000 1640991600000000 \\xd6a6229b7c19ce8eff9032ba6c2a10814419d915130c18ff9b9f5ac2cfcc356df041b8490216051ae64aa70f135aef569fe80611b89e08f8fbe0e8119ce75e07 -\\x5f4749c40e0facf00ec1d0a04ace9eac5707074c154b636391d0651af58313aa \\xf9099467bd884e86871559a62a7f23b6e876bf084a30371891b5129ce4440d3cbe27afe387d39b2ce8d9625abd388517c81bfc8da9f2e0f8c9471bff65a802b2 0 1000000 0 1000000 1640991600000000 1672527600000000 \\x0f71224698bd93d8ae632f307f9693057a631930534fc3ca30d1b8b6bfa9d8ec4d684b9aeeb156f02ed1ed4d7c7960b2960f06351c7046341c0dc035ce70bb05 -\. - - --- --- Data for Name: known_coins; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.known_coins (coin_pub, denom_pub_hash, denom_sig) FROM stdin; -\\xda43e65bcadb947221036c387da292da2642c97961f450027820d0d9d5ab1a0f \\xe2557e383c1c3c019681c2521d415a758f1becb629a3a75fd9dc212f0f2e802aee81e71db725f0f9913bea0f913978bd7d238558712aa957d80c4e1673292b13 \\x08075ab603a3dcafc04dda6808d30c65ddee0027cd08cadf3d73d7ec9c6458d92473ed0532b389dc2f1877d86a9d4eefabd08db7e6d258d9de1eebb13a3974db1afcaee9d1c59f0d18134c0738e26e45ea06c61302e6494a4c76a80e0742ea68c063b2742250caef0931bb2d2dfb5a4c7addd70c0ec45afeadff9288c581934b -\\x9c73b669f228b004180fdcf3a9f33afdd000fddbaf12688eed6e3f4c57cef523 \\xa96d1614b62d8a838b7ebee977db7f3d3b7c3630c8d6aee9c96e848c5b4f72200672fb3ffe229bb3c0ca63fda38757550f42170cf04fa8c647342d4d82abee67 \\x5bad81f95c0fe8de6a8e5994526ffd7d511bfbfd37f43cdce2aff542af08c9c5a08789da0d31d5404995db7296583b8a32c9f79cce2bbc60238e1874caa107c7ed1d9bba2f9d2896945f3db6d8ffe23af7fc1dda85984ae7c0d12d961e46d96ac0f1ae1835f757ba98231409b9efa95b369b30d6f4e9663b0b03917c69430b1b -\\x0b11cfd1ebfd067d2cbc26e663f2f814a8b5e9a387667adedfc15006b5531b0a \\xe2557e383c1c3c019681c2521d415a758f1becb629a3a75fd9dc212f0f2e802aee81e71db725f0f9913bea0f913978bd7d238558712aa957d80c4e1673292b13 \\x8e645e50b8a904c8d36ee6fb9242a49ba189395226d4a2fd995e77662acc4627fa54bdba1cdca91d6dffb908e18c3eda66674cb7e4ae7bb1b3c63d57b337bb408691d90e96200b89d0c1edce84670794755203cc57971034a544910cfb43f31902b32a1261df553fd18a9e75ea0d5be0d7f0fc7501b00fc97f45502d62d54a87 -\. - - --- --- Data for Name: merchant_contract_terms; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_contract_terms (order_id, merchant_pub, contract_terms, h_contract_terms, "timestamp", row_id, paid) FROM stdin; -2020.073-03CD47SDDBMRY \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x7b22616d6f756e74223a22544553544b55444f533a34222c2273756d6d617279223a2268656c6c6f20776f726c64222c2266756c66696c6c6d656e745f75726c223a2274616c65723a2f2f66756c66696c6c6d656e742d737563636573732f746878222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538343132353434323030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538343132353434323030307d2c226f726465725f6964223a22323032302e3037332d303343443437534444424d5259222c2274696d657374616d70223a7b22745f6d73223a313538343132343534323030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538343231303934323030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224258334d4b4830453159504630335031543247344e4b4d594e48424745315443324e35503652574854314a484e58433332454e30227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2232445a473932414b57385147575139385a483130483746595a46575459304238453248504b3934395a364532505731524a4d463343483047444e4a41313433413056514b363843535230333230365a37524459445736454b3230584d3245414248314633595a52222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22395a44304b4b5157304d39415453593435365845484b5352534250434e443751585a4b3944384e31373532324b59464448434547222c226e6f6e6365223a224a3152594e474e34545845344a333553474e443733534748334d304756454d484a4d475a324b59315a5157504a4d33434b4e4b47227d \\x61043073e65af0221d1c95ca0a32917de5241b89f81678577db4df852e19b5545a11b0b1d5f786917fe0df200159864d78c575ce57421112e58bdbf0e1b90672 1584124542000000 1 t -2020.073-038FRAPFCXZ9A \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x7b22616d6f756e74223a22544553544b55444f533a37222c2273756d6d617279223a226f7264657220746861742077696c6c20626520726566756e646564222c2266756c66696c6c6d656e745f75726c223a2274616c65723a2f2f66756c66696c6c6d656e742d737563636573732f746878222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538343132353434343030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538343132353434343030307d2c226f726465725f6964223a22323032302e3037332d303338465241504643585a3941222c2274696d657374616d70223a7b22745f6d73223a313538343132343534343030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538343231303934343030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224258334d4b4830453159504630335031543247344e4b4d594e48424745315443324e35503652574854314a484e58433332454e30227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2232445a473932414b57385147575139385a483130483746595a46575459304238453248504b3934395a364532505731524a4d463343483047444e4a41313433413056514b363843535230333230365a37524459445736454b3230584d3245414248314633595a52222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22395a44304b4b5157304d39415453593435365845484b5352534250434e443751585a4b3944384e31373532324b59464448434547222c226e6f6e6365223a22594d4b48523146334a50374d4232525839505757424b475258364e4d354b45524648425452414859304d324b3538535752455347227d \\x06c4c1f2ee5260b7fb8bb1542fd840107b046cfe46b05923d205a5c03f03a3d19c367ff4c642be00989a36d3dd48abb6b444a7566897902b5d62e6cb01e10edd 1584124544000000 2 t -2020.073-00M1XHBR2J7P4 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x7b22616d6f756e74223a22544553544b55444f533a33222c2273756d6d617279223a227061796d656e7420616674657220726566756e64222c2266756c66696c6c6d656e745f75726c223a2274616c65723a2f2f66756c66696c6c6d656e742d737563636573732f746878222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538343132353434353030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538343132353434353030307d2c226f726465725f6964223a22323032302e3037332d30304d3158484252324a375034222c2274696d657374616d70223a7b22745f6d73223a313538343132343534353030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538343231303934353030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224258334d4b4830453159504630335031543247344e4b4d594e48424745315443324e35503652574854314a484e58433332454e30227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2232445a473932414b57385147575139385a483130483746595a46575459304238453248504b3934395a364532505731524a4d463343483047444e4a41313433413056514b363843535230333230365a37524459445736454b3230584d3245414248314633595a52222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22395a44304b4b5157304d39415453593435365845484b5352534250434e443751585a4b3944384e31373532324b59464448434547222c226e6f6e6365223a224737384d5741435750324d424a5a36594b5339444e5a514546333248323232365742585a5a5342593330324a48364150574a5a47227d \\x2552601dc511378133958937eaf4e1c6cd934cefcdfb1645774ca60278e386acbfa6dbfa6062e0c55dd09af197ba578ac715d74f11015c95b51904fe4e5adfcd 1584124545000000 3 t -\. - - --- --- Data for Name: merchant_deposits; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_deposits (h_contract_terms, merchant_pub, coin_pub, exchange_url, amount_with_fee_val, amount_with_fee_frac, deposit_fee_val, deposit_fee_frac, refund_fee_val, refund_fee_frac, wire_fee_val, wire_fee_frac, signkey_pub, exchange_proof) FROM stdin; -\\x61043073e65af0221d1c95ca0a32917de5241b89f81678577db4df852e19b5545a11b0b1d5f786917fe0df200159864d78c575ce57421112e58bdbf0e1b90672 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\xda43e65bcadb947221036c387da292da2642c97961f450027820d0d9d5ab1a0f http://localhost:8081/ 4 0 0 2000000 0 4000000 0 1000000 \\x211946babbc3b7f23a87e5c3edfaf2566e556437c95ca68965a69073edfc07be \\x7b22737461747573223a224445504f5349545f4f4b222c22736967223a2242564553504b415043395447594d584e504748424b575245394d47344e3542423643434b31323456363958565a385435394841584b44485352465734375930373734433833564a4a5a4b36374853363458304658573050595043433159434e5037353434363047222c22707562223a223434434d44454e565245565a34454d37575131595659514a415351354153315153354541443242354d5438373756465730595a30227d -\\x06c4c1f2ee5260b7fb8bb1542fd840107b046cfe46b05923d205a5c03f03a3d19c367ff4c642be00989a36d3dd48abb6b444a7566897902b5d62e6cb01e10edd \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x9c73b669f228b004180fdcf3a9f33afdd000fddbaf12688eed6e3f4c57cef523 http://localhost:8081/ 7 0 0 1000000 0 1000000 0 1000000 \\x211946babbc3b7f23a87e5c3edfaf2566e556437c95ca68965a69073edfc07be \\x7b22737461747573223a224445504f5349545f4f4b222c22736967223a22465450344e434e3431344d42333942564458413833564e4846375a3334303752364d364a38534e4d58563546435046583647425736354348325957473434513130474237585a4a4646413942594256384733565145514653565834593038535a35325457453338222c22707562223a223434434d44454e565245565a34454d37575131595659514a415351354153315153354541443242354d5438373756465730595a30227d -\\x2552601dc511378133958937eaf4e1c6cd934cefcdfb1645774ca60278e386acbfa6dbfa6062e0c55dd09af197ba578ac715d74f11015c95b51904fe4e5adfcd \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x0b11cfd1ebfd067d2cbc26e663f2f814a8b5e9a387667adedfc15006b5531b0a http://localhost:8081/ 3 0 0 2000000 0 4000000 0 1000000 \\x211946babbc3b7f23a87e5c3edfaf2566e556437c95ca68965a69073edfc07be \\x7b22737461747573223a224445504f5349545f4f4b222c22736967223a2234393546534e3248533635484d323352594830534b334a56575856415939505759314733545450385750465139534252484b5358303032414b5253384e574a4b3432464350414d3745334e593830313857314b47563151324550515347574156374e3659363152222c22707562223a223434434d44454e565245565a34454d37575131595659514a415351354153315153354541443242354d5438373756465730595a30227d -\. - - --- --- Data for Name: merchant_orders; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_orders (order_id, merchant_pub, contract_terms, "timestamp") FROM stdin; -2020.073-03CD47SDDBMRY \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x7b22616d6f756e74223a22544553544b55444f533a34222c2273756d6d617279223a2268656c6c6f20776f726c64222c2266756c66696c6c6d656e745f75726c223a2274616c65723a2f2f66756c66696c6c6d656e742d737563636573732f746878222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538343132353434323030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538343132353434323030307d2c226f726465725f6964223a22323032302e3037332d303343443437534444424d5259222c2274696d657374616d70223a7b22745f6d73223a313538343132343534323030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538343231303934323030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224258334d4b4830453159504630335031543247344e4b4d594e48424745315443324e35503652574854314a484e58433332454e30227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2232445a473932414b57385147575139385a483130483746595a46575459304238453248504b3934395a364532505731524a4d463343483047444e4a41313433413056514b363843535230333230365a37524459445736454b3230584d3245414248314633595a52222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22395a44304b4b5157304d39415453593435365845484b5352534250434e443751585a4b3944384e31373532324b59464448434547227d 1584124542000000 -2020.073-038FRAPFCXZ9A \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x7b22616d6f756e74223a22544553544b55444f533a37222c2273756d6d617279223a226f7264657220746861742077696c6c20626520726566756e646564222c2266756c66696c6c6d656e745f75726c223a2274616c65723a2f2f66756c66696c6c6d656e742d737563636573732f746878222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538343132353434343030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538343132353434343030307d2c226f726465725f6964223a22323032302e3037332d303338465241504643585a3941222c2274696d657374616d70223a7b22745f6d73223a313538343132343534343030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538343231303934343030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224258334d4b4830453159504630335031543247344e4b4d594e48424745315443324e35503652574854314a484e58433332454e30227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2232445a473932414b57385147575139385a483130483746595a46575459304238453248504b3934395a364532505731524a4d463343483047444e4a41313433413056514b363843535230333230365a37524459445736454b3230584d3245414248314633595a52222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22395a44304b4b5157304d39415453593435365845484b5352534250434e443751585a4b3944384e31373532324b59464448434547227d 1584124544000000 -2020.073-00M1XHBR2J7P4 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x7b22616d6f756e74223a22544553544b55444f533a33222c2273756d6d617279223a227061796d656e7420616674657220726566756e64222c2266756c66696c6c6d656e745f75726c223a2274616c65723a2f2f66756c66696c6c6d656e742d737563636573732f746878222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538343132353434353030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538343132353434353030307d2c226f726465725f6964223a22323032302e3037332d30304d3158484252324a375034222c2274696d657374616d70223a7b22745f6d73223a313538343132343534353030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538343231303934353030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224258334d4b4830453159504630335031543247344e4b4d594e48424745315443324e35503652574854314a484e58433332454e30227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2232445a473932414b57385147575139385a483130483746595a46575459304238453248504b3934395a364532505731524a4d463343483047444e4a41313433413056514b363843535230333230365a37524459445736454b3230584d3245414248314633595a52222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22395a44304b4b5157304d39415453593435365845484b5352534250434e443751585a4b3944384e31373532324b59464448434547227d 1584124545000000 -\. - - --- --- Data for Name: merchant_proofs; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_proofs (exchange_url, wtid, execution_time, signkey_pub, proof) FROM stdin; -\. - - --- --- Data for Name: merchant_refunds; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_refunds (rtransaction_id, merchant_pub, h_contract_terms, coin_pub, reason, refund_amount_val, refund_amount_frac, refund_fee_val, refund_fee_frac) FROM stdin; -1 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\x06c4c1f2ee5260b7fb8bb1542fd840107b046cfe46b05923d205a5c03f03a3d19c367ff4c642be00989a36d3dd48abb6b444a7566897902b5d62e6cb01e10edd \\x9c73b669f228b004180fdcf3a9f33afdd000fddbaf12688eed6e3f4c57cef523 test refund 6 0 0 1000000 -\. - - --- --- Data for Name: merchant_session_info; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_session_info (session_id, fulfillment_url, order_id, merchant_pub, "timestamp") FROM stdin; -\. - - --- --- Data for Name: merchant_tip_pickups; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tip_pickups (tip_id, pickup_id, amount_val, amount_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_tip_reserve_credits; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tip_reserve_credits (reserve_priv, credit_uuid, "timestamp", amount_val, amount_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_tip_reserves; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tip_reserves (reserve_priv, expiration, balance_val, balance_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_tips; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tips (reserve_priv, tip_id, exchange_url, justification, extra, "timestamp", amount_val, amount_frac, left_val, left_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_transfers; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_transfers (h_contract_terms, coin_pub, wtid) FROM stdin; -\. - - --- --- Data for Name: prewire; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.prewire (prewire_uuid, type, finished, buf) FROM stdin; -\. - - --- --- Data for Name: recoup; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.recoup (recoup_uuid, coin_pub, coin_sig, coin_blind, amount_val, amount_frac, "timestamp", h_blind_ev) FROM stdin; -\. - - --- --- Data for Name: recoup_refresh; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.recoup_refresh (recoup_refresh_uuid, coin_pub, coin_sig, coin_blind, amount_val, amount_frac, "timestamp", h_blind_ev) FROM stdin; -\. - - --- --- Data for Name: refresh_commitments; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refresh_commitments (melt_serial_id, rc, old_coin_pub, old_coin_sig, amount_with_fee_val, amount_with_fee_frac, noreveal_index) FROM stdin; -1 \\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 \\xda43e65bcadb947221036c387da292da2642c97961f450027820d0d9d5ab1a0f \\xce68d5436fb8696ba93b63a5e41189bf086c7bbd5df1e408f78ff92da88b8d7d171e46f8bfafa4ea456fa063248d2bf13bbb4f8274fc9f08b6067b0cb2425f0e 4 0 0 -2 \\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 \\x9c73b669f228b004180fdcf3a9f33afdd000fddbaf12688eed6e3f4c57cef523 \\x86edaa88e64050d9c970a86199ae8224a5c36af4593c12f1e3a141484f10cf0641dfdb58fedaf60a548674b3eb1d458aa20d6ac0e7d1e6f50cb58d348b66420c 8 98000000 0 -3 \\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 \\x0b11cfd1ebfd067d2cbc26e663f2f814a8b5e9a387667adedfc15006b5531b0a \\x5288dfb612ff514caa7494a42f652cd3f0c829352f313d8b83c3f5bca01bf4aaf0377a81ddea348bf2e10b5bb74fb42afa8437cb1f26451645cf1169f2602306 5 0 0 -\. - - --- --- Data for Name: refresh_revealed_coins; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refresh_revealed_coins (rc, freshcoin_index, link_sig, denom_pub_hash, coin_ev, h_coin_ev, ev_sig) FROM stdin; -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 0 \\x5d757d8ded464cc535bbff5c7e06cd72001e40f68dd4643b4ce5e331f57de481e7de40e2d3820ca75c023d8eb3952991d2c3d096756d4ff461190dd1f401060c \\x1e5e384e59ac0bdd77b086344af2985d8a5b1d4e58804ec47824d3d37a5927e0cedf43c55ce4051192f089480a1c61e31393185862e4781e563659684ca9d61e \\x29bcd76b9b306ed48e2aa57d2a247b4ee6b655212eee8d51674523a880058369d03480bb7ae91c3ac1bd921ba3428c8bfc0941d6973180a3757591b8e488758a6524da8d73c3cd70b1cfd7a31109d57255f6d9ff55a59440c3705caff16d9c81e7228122201ed160fa78d540a9aef1a60e2f026a8796a0f1ad483cd839353ffb \\x6616e66ca7ed72a7130b14ec3ae6775edc4edd2f673cf4918aaf9b243fa96abf7581f081a1ce31b6b6d1d02448d8916300d11d17f957ce1d8897edc5d5387848 \\x813c329cd0cf659cc7f2138499735913c63060b37bdc9d43af40de29d5101b2ab7f138cca79a97c2acec1758a3086dc7ef876c514491f97b83da03cdd37ee54d802689cd917207200c498430e76fa1c6e7a6352526c4efdfed281382204a8addbcf12e8c01633c22bcaa1a2308944de05e7f2f24fdb52b18868ab4959cc65b07 -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 1 \\x5a56609f221a13e60c169eda62547c17010f77a5e28cf9db0a260d515ebbde3fac03012aa569dc2b2c18a450303af9439f16c636c6172bedd10b82e4a3e3c000 \\xdaca7cdc05a7e781c04ab1e233ca2664bac59caed67e4d00fef43e31f191487a7cb91d8b862d6f9329da670ba79e6aa599de8896a6032249796f50870eae3933 \\x67b94720ae891e31b0587e11758b73ef6a50b08088d791646eb814a0870d42157d7ee2b83f32f0ccd6d9ee48b55907d031f4771f0a3f5eb35e914c1e52914055f07d2c0ecf34bb1104313b039f815fa571f121b953ca9a6a35de2de48c5efea3b5f0d3f288f55b9fd133e23408f5f3e68a1e77b2a5c2450bc2b2785b8afd9123 \\xc113c1a21b902881c40078d022f793f7f40a3a39d85aefb8e93dc9b9283f151e93657ce69691f22df8941d5597ce6ead01535e48167a517c9614cd4dc7a03567 \\x937002743c47155cf5efa898ea9cdcf1745b4cdfe7c9264abe20ef21566c308a86221310ac6b7c90abb3ee8a7470ade95817c7bd092a7c41c4d74d2ab982ab4393803df9fd00b38d5a68bedd2255bdab69f5a16b62ef18ceadd3f7b787c4837e5ac10f94b5e0fde331eade3dbcdc180f2e382756688eca813b691f2f23c18762 -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 2 \\x85674d5a1d5d66204adac4f41b2587397c8ef91cbfc73c1926774250bf62a357274b87b34baec80fafcb1e6c5b5afba69b18086836a98bce5fbcbf025fb0860e \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\xb813ebadd403e28c505f9b36513d5a719c47930c86dd26728d2385b5aba6aac9c73a9598cf7f8c54dabe11fafa678c43735cba362c9d6a28cf6262babc87e27a44a0ef1ec5b6169ac27af1803e9d7af346afe48ea090b01c1a207ef810737d74ff8dbd653a614bf68eafe246f7e0f209b86d2ba5dfc0de51f1c0b10804e0d26d \\x0b633e3e3c57b1aa53a778331f622a144c9411faa4db92616a172bb237d27fb2601826713c7edf589e1b573eaae8d0df538cc5ae1231a4c2c82f2b544f11ed5e \\x9a3ba41a035d440a040278495296e4baa3bb3f40513a224e70ffad2a1b286c298b6aae912b73e92d59a874ec1269e3e30f4c62711b6ae3d213e263b9f5d1f6ab046681a53809ee5783c9fb1db30bdc156a5a858bbc413e9f095663ff8fa7917c6f5c3cbd64b3ef3558cf9467d1c217ce125e021abe951055a5ce75d716e7f3dd -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 3 \\x762c3c9e4f32274b6b4a50fe2ca43f0b99f9e3331a9697021103bc7ca3c96a51c8c8c7c2b01115f75572c756a75298f2ac54541585945fc471116615ff39be03 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x49c34a8f419206f64259ac19130400bbb024dfc05c9c5fd2f1038d9cb6d11e2da3611fe1bb6201480f39dd85931ebbfdc43884c42a262f67418a33e1d6d807f5f137ec3b0ea1671dce701cf18b01e1a851261a306f24a94681f14755e93d7f0f43dceb94876c51db027c9b8083448afe98214c8cbd3f9bb5c41af96bd19a2e8f \\x8e81f8caa32e728c1fedd0d22595e13fd1c9f0faadbc544a59eb04b2d64e0a99b87b9fb9a157224eb32bb62ef19121267b35c88ef3f063ef869dc5dd8f3d9f28 \\x63d615bde1ff8d67b1d23cd41649329b5ee86dd5ccb12cd15e5c59f53f2565af6fa73591946f970c6b5ccfba8a3806582b99c944d7ebfe53494fa6f007d0bf1e5508803835c625e8cb6ebcca58827dcd72cd9fece97727688f4edf86ee3aa8ab0c3c324a78a69304e5bddbdfe06a00dc1e1e3e436a824569b001905c2e9ea33a -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 4 \\xc3fab254b784fc6083d1b358dddc5cb55f9df8896d95c7111dc607042d0e31d598fa7d97c66c576fa4d7de6b380634d84487f7d15689f9113d5fe34635ce080a \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x7ccdf86b1ed6fac9ab765d37b20d5dcc607301b69f451af8627faec8755c40824cc65ea79ba58d9ea124a751543940b4d089019d63e621dbca6132f4e448dddddcf12d785d2a843045dd12881dc864a8b0e44e022f3ecbbdf050dcaf8ab695e26c17357e6c33e9f34f3840f5b44b410aa9ac2c26241ade7d4de28525ae877f44 \\xd13c9d50fe4cf8d5f085705ad6817c17b496546c1fee4bbe340bd0cafebd25d5850786829e6adcd4e6538d7cb5227f16bb73aee4105e3a7eebe4a26d94953271 \\x44e9a725f8d033946cdf68ec332bfbfc04a1c0aa48de078bc94a6455c8dc912f1788d1470eeffd3ac68e39ab414096b0691005d9d8c37500e33d452319f9ee23443e88af4542cd5daf997b0ca54d825ad0f31ca85b075e214c6efbe04700fca3830e791036ae7206b60ee30bc4374eb0cfda5f4c5b5e10fde13be6476b6af248 -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 5 \\x1e925b8f0f7086d88f720dd36f5d0992cd7c0032169e83bb35a0c4aa204a67990ddde826e3449eeb13f2ae9488aa0352d04dd72236c12db04a5f66f9dff1c007 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\xaca3449e8ef650707fea1fcb024ed31d0347bd9a1ee7e950b24b9d455da4e13a4a6b5fbbe0c9bea099c75bf59260c51c5dcbd81e136e71ee4399b81509ea679e2aac44ecaefe72bd7ab2d350d8beab76857d9652ec3e42edb846689153504c9b200ea30030163ef54b2bf42ab7de88e1cdc5ca205e8161b8ac85f9684f267dde \\xe74e6977f80f40004c0444cc367b2a477c41f741b3aeb7a51db1b0d430c3de2d363dee86280f89d0604abf7e7c1c8f06c81b62cd592d427d155f219547e657d6 \\x391d8fd2c23c32ae8517902229318cca11afa486bdd8d5ab45d1b6521726a0e5eb70116070a9a09827a1183be23cd58b7811383f1b68ea430b7667a8ae64f90189087bf485e648590c012eac2434fe024a512e535ac324a455d74eef0a5e97fd8446220a238670403dbd46e85933e083c128530cc5afb803b3271197d260e8f2 -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 6 \\x1a45b240f4826bc117cc1e6eb40b336b335ef0a8e9b39b0ac80a86a9f51f8a32da55e62f4eefb9da93d58d7b8f35741f15bfefd9cca040bafe9efdaba1b5a404 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5a997181b752affc30a943efc6ee3796a7f84d32f0448d8095c7bd9bdc270f3171173feca5c8f2a864992db02d2f7e5050c3b612d490d6f07eb84f03d22780b15044f338f56234f371ee900f121e1fe5f56172b6a513d24c4a013da9d9525bcdfc3aca7d300854c996a941f2b53063cc35b8115066fb97ccedfc284ba8a823b1 \\xccd35d9555c4d3c62340f260ea2cc6aa1019526b2a188cfdf82dd4f4ca98b43d6837c7ccf043e6666fad78f61177ee6b060f74897edcd875e82343a4a000ed65 \\xb9dd00db9e450f9414bf0db6b8847b90652f5ee9b23f95b2f89fad6ed273aa0f6492baac411a1444e8482c99515231c98f877b23d67e19496a611bde932cf3d780fc1667977c2c0fdb44cd2ac4bea55fd5cf2a0b2416c5e8a19480bb8f5f1c80a4077280b980909f240e9eadabc733799a789fd9af5f3319dc1cc5e85bd1bc79 -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 7 \\xf6af907a7221099d88723bfe887b5029165ecb3175e7e7bf0592f2d017b368ac207f26a76bcfcaa6c5aa613e4c5413bc0f6111d85652113d3927b631a3cc6105 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x0795e25daf7c8630e893af5d3cb36de449fcc969bb617d356a5f6b6f26637ccb696238fa45c637c7598e088565f89deffb960532c7ecdbb7ca405539eac0f69df9840bc23f8ab4d65acb3157ca933633ab6159727e38f49e650ccbee7fb02387c6fbef5175374b045c6522f461beb67d1a844fd0c0dc402068b39b2b1bd8646a \\x593c1dd249d0c95de7fb89a8f82e3571a37a2ca12603563b572fced2e7d250cfe5cbea656e1fc44fc2fafeefb7d62f44c4d84ce86dff43cbde0341b4849d6e50 \\x78b8279654c30b9eaf590a7d61770ffeedf31022196e1b1b982432e294c745a9106148fd13a5f3720b16704c6444e346504707fc5502099bbc56d11219b5037039d5c71398ee2022488e45f1a36ca7bcb25a81daae100d6e01165ba3b6efddffc4f01ccc0116760128028884005041da25baabc99f061c0b2a8ea16a7e0a369e -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 8 \\xf3b3ec15b3624c6cf4aa0b508210d5a63543c332e53d554773c67c29626e82cdf64b310c4dac0abfcc227f90c8d4b083350f674011dbe2323205cbb885482304 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x1f7bda798f2113f9e3c2f7df93509c54f1c9498313f2bc7406ae27bb4e08416eb0863360aaf2f0392d4fff868fea77d0954830eab1baa1335adb59b9e648922b17fd2571e237ed13f7d6e39c6723e234355776fc9f23a85731737f0e4ee3e443b04a02f2e5d9da9a0788f6c49d4f575959cba410d7d8d9fe17035a2f8755ee1f \\x523b80fea69dec271f1095be5c9cd09c0ade706bc4e99f16fb38fd9604e6b79339d984bd2f28d5a79465df66b84556e493da0e066ea2a6edd3e2fc065a8f228d \\x9d751214a04e11737042db7d5d346bf03d67c38bf1feb8190c17beca528d9c888c40909b4dd818312f51addf9559e59f62d4181418f56fde2dbfacb1912cb68b00ca154a1a096d3f4061df700150f658d240350c6f9e004f67bfa594f5805a51c13b0486670e1b7f31e5142e28d2466fd1e0ad0e6d233bdca22368dbff9da0ff -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 9 \\xb3c397a5aeb2e185aeaf38d987c762c68dba30bc2d0bcb6a7c43742abcb14e520530a8f4bc38ccd69e63c0be75d40b63a50ee18c765b5d82e86b2a4ebaec0704 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x6c5d135d20d976b2171e6158996e4367b1b79b8fc1247844f28cf7b304092b432d207e1dbb89dcb8846aec027cc16dacb6ddfa4aecd06a9bde62b86daca93c6dea6302e8411952682adbdeb6440d03383703060912a6d8841aaa1b973090bd9d0d46fe6a0c126ce3e73e45d328769ecca36c570e9b5484d4515b50958157203a \\xdc3ba1114d4d37ee8859eae0b39197808c2f8724786efc79c3b80ae9e0b27f551b8334aeac0c5cb0cd2d3bf539bbf1f3d4d512efca724d0e6df8788cc42056b3 \\x831167b67506962bd9af02ef40824f13d66035473741b58c8d3c5173dc7866104395ae69e111e50b9bf330bb65f1a028ca4f0af60f90db17ce60b19ee2e83c6f376259809b7c32b3d26178f767fb7419a83558370ce53622314913fe5a6ad2abb40fb52a424b70fb85207dd9e3a4e8ec9dcc4d85584b19e8c85afc9a08fca339 -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 10 \\xd8c58be2dd15c706938af45b65705e2d94456d96fe1f60a47670e32beff58b45a8794aad5cff585ff4a5491c467627efcab483b06a303685b39aeaa1be263109 \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x253df068a7d6ddbbd71bbc424427cf86cb5ac66dfbabecd85a45a3d7f55650e696774fb74f972089ca301ca8a21c123dd960cc3fc4866d74997b148c7d49f1867ed927d5c1899322558f832fa6bd85d13c880bc7b13e4a2df137f943db7195e64291e72933490574a6cb3f1b0bd51e5cedd9e81636b0d7f591ccce2c423dfbc2 \\x55bf93f053184ef6de32a6f183d00748db8e9e737252beea1060f865ae823a5a65b5344cfd537f8dc07ded828924de37d91b9a58a17c23de0cddd0c9eb95f7e0 \\x06a64fb64c50fc57ac5599d48da5712fb04b70b62b92ff45f9b75bea093b1398e99a1c682ca456ac14ecb8c9ce89e75a23d61a883a1f4d58793d611330bd8f4992fcdf023d3c36b6a0d36be28b879070bb60f43b36b3d237fae5c51862fed6142276db3e3dcc2655b64fc5b1088c6b2b5ebec364c81f070d0c042bdb1321d120 -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 11 \\x058e8f11a5662c2e7ae39919837587018cfd2d2c10f01d7814f9353367a44a3f2f161e35283d3186e6177a34e4a5a23045518cc7e6de2d68d7dae663858b530a \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x5ae1ddab42247a51044a37095f826fef1f525dad474a8fc382698818da05da0bb066e03375c5348d062f77f16ae8337e50a67e7384ae1d70e5c88b3ddf9d7a903aa497ced46306fbc64141ddfc76a927277c3a595712e75853c892cccdb844ac03742b8d4b44d0fa75e3fb85970f1ab44dd441101b014c8602f823e1b82bd43d \\x98da81e2bf94b4e213e09fa1aed0a4e74b71f785f04e04cd1b6f70efeef6d1b19d1b70ef18c78540fa48b1e826aaf9a1cad5a5db129ba91c0c63185a4f6126cf \\xe3d4cc0241895a1953cfc5743a42eb7ea1fb8e183b2b84288604ca226e02d3645dbffdbd2126446ac93a91be93fe33d4ae3140830d7e21735c2ff81ea2af38dd214d41d866be6477ad2300123b183ccef70b8d97aa711f53ad9b64c74a8972b9ac9781f5fe86b4fca174afa644ae0a49b35bc01dd4434dc3adba491030f6c926 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 0 \\xc9ff941f9cf7caa2ae2630dd1ac6bd69e6e9ab045b00294722e63988f787b9a8c2fa90cbe743cbed4fb29f56a1e08c9ccdec641599bb9842e0f1275347a2ba0b \\xe2557e383c1c3c019681c2521d415a758f1becb629a3a75fd9dc212f0f2e802aee81e71db725f0f9913bea0f913978bd7d238558712aa957d80c4e1673292b13 \\x67c6c2c7470fbdb3a65f1950d19738fa6357ad7cc86edb4498a75267ee149e143486cdacf57323aedf52d1740606c2b600a866f8c5390d2102e4fc840a93789eb97104d82d85fd184c5a58dfd096b7c06b18d1a276a33c4b42aa568cb81e4e359c5363c5537429048de27c76fabc8efccde75b2cd3826c595cb4704f567e003e \\x77d2a3315f90ab944aeadd12f955de87a3510f2164fd8087a2a6c530a32b5f817fd7134454bfc8a8fd858d104c7897da355f5a9bf545688f50d9543b6eaa4a0f \\xd251081b412026ba4e8015422435172c32289b6aa8db52f0c4b7deabb15ee2c6f153dd523c1eeb336cea66102b9bbd868cd8ecc0ca321f2b4e8c20a31f53f6eacddf8839ae7161ace6623800d55c41ada6130cb38ad3c9e44560d5193cbb4bb3c1f85cd94aae047282606a46e714964f8532d05c32f7a46959206e3cb7b477b7 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 1 \\xc81d12035061e98cca2e6982e219d8a98b093e91f27557459fb8a031fce1d90c94d1fc92f62eb9a4c4ea349314be1094908422d8a170ad780c617c4f484f7f04 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x19998639e81429659fdf6c006399c0a0bc3272af6d34ff18b6ae5f416c30676fdbdd9f6042b43d61d69cf6eaa2d38c41d0d1322c9bc38e9ce0b757ddb48f0319b82a543c425f97faa4087793d6bb83d006ee443a413639a4176cf9fe87d2b7483c08256e09a56208e74e0dec0db436dc354dcfe89c9ecaf2624bf62533c1789f \\x488d132f2097ddbb675192cb4a0b96a6480f1daa81ebd7ce31cd2f83332ec65621b1221051980d8dc534c4794a27ea0062a2c02a26f633eaabb947e384176398 \\x43b74f01008bd3e324d40b04935c8efe421da4ab5f3a10d350705dd539c17e5150177e66282c35f0af207bcf61eccbb77883367f99800c1b716ca2edb2db5d5877269cd7a799365d821255ebb8707669720f7d571578902d899eb3830aa34242a6c4f8c684fab58df05632ded73b8acab269628972878c97574ef9127a06abe1 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 2 \\xc48ec00804a5b6e7f974e85a497b68bbf961ba2db50d8435a16f8a38c3500853726e3d38e81df367e50b9d502147fe7a269cecc6dda08a72a3ade01b5a877004 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x01c316b96b8e85ef2d716d93f6f58d3a6b1c5e0935638bb58c3a2f10338c2db42227ff7ce32d83a71d7b3de756aa538b47208c43a677cafeee0cf7ed0778574b439dbfa70990bfabdccd1b019867fb5d7f9475cd27890b9e3f9d430e3dd194edea54ef86a83aa2e7e6c771f317ead7a9600b78e620068d4549bbb7cd76e6e5e4 \\x5bfec2432c2819b08aeb93fcd5f0652bc042f26a50c47816ca8000d4548dd4166615fd7679ccff250d5a5e8fe438f3c1f464ea25e95e217ced771f9e09cdbc66 \\x770924e6b4cfe15ba6a8f12e243034e0c34a7480e9a2c102f652b5ccfb54f6827eb754e058da8c8f263b2d323d5bfe357b06ab5414f8c1526e4c3fe1ebdbebe11a405ad6538c6d7a41ec2860b2c1a5e316a1a551733f61cd9ccb558948e31de8b692d2e006713aac924a0f6c4ab3a42ddf2b54cc3a37167c5c6daf65bdbd1731 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 3 \\xb02923008152cea2db5d14b6657990f533808cb8e1dc67e345e3244d604502d17e5a7ae7aa3f2ade4d1de0a92a6de8f959f6e757a7bbe73115feb83ece591c07 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\xa3129304e20212998064a10be845deec89ac8854459aecf29d6f4aee90bfa9f5bfe3dcf47136fcd05034e61edb572f3296687e407a44fc1cd45082b3494e81ef6e98e5dac00a10293eac9071ac0244d63e6607db8769fd4ad328c852f11821d7145c690950ad1390d776b8f896aeafc55399039f22adea9de225371f28167c49 \\x9d18240f5cfa8d36f9dd81e63c425e55185f73557c9f04313b2824f0bdc047477f9f7f0f03ed2f76f2fdb80ed59a77be3ff8934cf2844a7cd8f413f4e8408ca9 \\xa2c75e553ac34431a2e10a29089e048ca8b2352d7aa4d592f82bf6a2c5ab0264ca3661d5f18c2c8c083fd4b573d33117d1c75dd5a130c3359b5b678d5666610259907f9cb4944db0c7e472c068402373cf1b20dced0e648578741d0f2093a6fc867d7d431beab2e039af4b0fb1a8a71c4213bdd635f9cfe4b4043656639496d6 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 4 \\x1148ec703f3836d250f2a8f30d20d3fc3cada4cd62dc95ad4d51500f4173c7ed0ac60d2fcabceeaf61ca5dabe94e3aecb4f769676c102d2f3fe20ec2172a780e \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x0ee06d4694680c476c6e10f89e8a736d74e3013726ab729aee56881c8c438ef2bdb429a87c81f9ac6f84e6d8c53d9684306a5bc0bcabe02934056d32870403fe04d735e42bcfc72669532b9aa9e7cc4dccc9b7bd22062d170753177fc61109c4dfbd325931c4f63956833ad543370500145f3c4eddc1bf6770ce0a185605b56a \\xf485cc75a8b25d075aadb7e6d4f90310bf399214efc3e4a01a8e0b650b5338def8e232a46ebe227eb6171eb360113b3ff43a938c3f5d761d1cf2fad6aa56bf95 \\x8c3055cf0c8dd2033f83461dd48424a325f5392fb55206196dad27659fc4eb3ce2c99819bea4b084d475ccc2a51c869ba9a983c9e86e5eb3451171edb7fea7984dd50567f810a0e5669011f763e1cdd42971796e9170111fb465f5449820ac86cb44f6aa5695df07bd9c9508dfd0bd184c961c4de9809d8972f38d1bf8127077 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 5 \\x5d0f0b223586c45ba70b8ffe37220e26b10253ce8b46fa0c3de51a15bb475fcabc29230f626dfdc06d81b62b1ac492a9ab40f411587a4a47600f3c3f098dd102 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x2a102c4fde797a6d31e30a8053cde824c71d7cf000e0cba76403098e7f7278b90df4435ac0b44c6549d16d9bfc40cc2d85683873bc3647a07195f62f5c8a7618ea14ab0ccf57a85e48f456a68738c1952327d26b47f08d610db602c033a54b11a14e8ca02405bee0f1a4da3db1da17f8d921c73344bb3ccc8803d06861e1a253 \\xbcafc6137c2d5cede85e09c4378b6f83e9db89ff8cfadee7d82dc5c81763bb9cf491fd79911209e8954e6af885572846b94f04c6b942e7f20febcf2bbd330e18 \\x2cd00ba24bda8d8cc8862de83f4b8d39de58f8ef929304eafaf2f710c8f32e4057de9a25a41597cf3c3b1da713dc125c4b55b02671d89a4791ac4b05bca092283e456b0e1cad4f73616568cc9fa0508a9fcd16d3be34b14b38c7a22322b636faa3c0c05abcfeb151623e45d81e43731d09dc025475a4b71a5638dce09e2c4e57 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 6 \\x377e84c3960755fa37310a10545b32c6c7d14b7d321c36b269e45d3785bd3b153af776b034283ef87d522d3c2c79b49c6d46a1411a268f85c942fff9e0af9f0b \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x6c8f89a681a8e4e50d7db49c715837dc65d3405cf15d45e06043ab5376302a1f2bcf31f27ecc574c84ff1bd48d32388177314cb5a0fad5184396b5e57a3d4a02c280b00f0828f5d6525095ef82c65f18275fabaf4bd444c59baba42906e89d03a1294c7a6111ac9ca1bbd2a61a52c0188b4b7d5e37f5549489eed4d48e56e3b7 \\x4d0e88be5f86ffd76ac4f1e76bbad5a32a3df48bb331a2b21766b0190a4560a439278361e71a6865fe49051071940afd9224830b051be9af64493387f839ff48 \\x0949b533f71753a775ba4a5cc9565f594456c69fdfb50fa913dfb5eb05862afe0c17729d14bb88c6dddd4b1b8b95c0e946d041796caa28ebe9bf5efb335db20d19696deb4da7c603a8f212fc927fe48ddebe600bcb8615b5b2ebefc5392c1cb7554d71421b4355adc6cf27b6b2a070b316bd7d3dac5352ff86a5acbc0ee7e055 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 7 \\xd3db6a16e4c76989683799a647e8ef5f9ef5636ff0d368dc9c0a002cec75d56b804f1ca0ae62cee558c588a99a81cca36d67247cb37cd299d30974f569465804 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5c20d8aa919a3c79bfc6b1fc79898670ddad6e7dd6e1952ba3c15c45709764824b74b32b50ce3b52e1db8cd7c0f38f4c7844528ed1cc69a39916b418178eab68019948929f340a24c86d18dcf41a35c24c26eb354a1d5c317d0d24461c470c64fb63421db8066145cc0dcf7debd5a5a208f0ebc7b8f879817e2d2c9983a91384 \\x7ad2c7d0f0d89029119eb3728aad827ccbeb8c8738a9d0348a63fb27815e2dadbe74d76d2b6a9d652c3ca7ed79c6726c8b89f3f550398c42bfe53dcc4ae8fa2b \\x6061d3fa816c4d773a39d11b76bc6a7792598d3eb01d6420c7bfeb1d203cec297becfd8df4ba6f2a7fa2e2786776fce0905412a381c1a27ebb8055c148b2930fb0d1856885f1c3e5fd4381e5cd6800c86c811e4249484f5922c902bb367166dd719dfbe03f56861b8c801f011ddbed10277b01ac49416299ea56233482d97ded -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 8 \\xc4a911677931b7be2587ce7253a2c3a87c7478a01714ef62f4e5977f84d5d676a0680d3eb7ca36cf3c34882108e9d553e9cdddfa37e08c1b6fde1ae8d150a70c \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x74a0ffe9db28559cc9a971e507221b13caa7e99f9ee7a0d935c27a4db017995a92f9a10fdc6eb84fb9d1dc80c2406ccbeeafaeedb4f0ce0a8acfc057e4f1d1e5838804f2c57e485a52d66121ed5d59efc9c030e978840a850a6f16e783e1b28b09a7dfc7e25f0da96d1bb18a18395419b458fbff83c85952a93618150a0d6cca \\xf93c5e0eb6091895f3d13a8f48f726edf3183263524a5d97188eee8fadd345aaf950c05882de3e3d8a146f5dafba3a2cb26059b820ed0290d7de567d90c27dc4 \\x7999670d8a92a93a70124505f0d1a1f159996555b52ba58cfc1ad830b729f339a21b7ed0da6ba8005c2ed889476d6ec098e9478fa0db449fda5dacf42d10bbde11e92561eed5425d4a2f7608856907f64a9fe9ed7bf431bd5a0504cc4230ec0a2131cbd91a749b42adbfd4f0c677dee03d02f03bcf1f1e00c56981b01b5d9728 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 9 \\x9fe022928413f617bdb339824f2d7163b18c783d2e6aab345419c62bc0971ea590945493743cd191fd6f5f8319971ecc09c753233fa9c9be340a1365312f0509 \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x56cae8204b13e2976d516b82a3d79099c4be2441bf4a6be89262c2db2dfbddd0f1d519c5a29495dbf822833e094d6211323c98b9d3ef9649af597eded1830d461a48b5fe44cf64bf8527885352ab0e262c6db3ce731bc331cce483869bd9701540e0f774bf35d9a2bbb7415e1c05ccd7cbea5ad50573b7bb30afc322eadfb532 \\x39bd91206804c8aba8c59f9593c86aa19b569afd2d62a27e3b91fef7736e95830493f7afd6471286a767fa1626069d7b6546a9faba69648e09da86c617f554e8 \\x193100c193a302acad57caca4e3598b22061449dcaba7c6c0f6ab6363fc8aa3001442a19b8da368aa59532d6f1039e24405df14deeb95f0005232b488ac70f15d901d0cb8d7019cfce969aaa42a9226a49699a5e0229a9829324022416e1b2647695429ab1c6f46fe19d0ea526235c91b24c051d912b82544c3e5764dd667197 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 0 \\x8fa015f01274a235d1ae6cd2730aeb05af565c05b44516832868f09acb5c8f96e4cd8c75f16c616a9b0b94f3a440f5ef95e70ab23a423d21a149f2e64a0b9909 \\x597a8051c87010b154a8dfa6643279b0c166b51539c69b9cb19af986ab521ed59877b3868c0e56aac00ebbd6f1f3036a6b667403fc032e32b5589ddb9c257b8d \\x3c513ec4c410ddc6ff8b8de06e8ce94349416c4f274049bf6ca233acf24e4a7806bab05842c7f8937be0c6404a4813914990c14a78d247c2b70e6533bc90d986d8e9ee33b9b0c6e6f08651fa09866505d161ab26808cb0d0a95d517935523cb8b5db5fa1151e654cc68e21b0b8cd00b39c3069fd379c4b409b5f6d38d26f3282 \\x98450f9a486dceac8195c251510737fa6a7b7e0b69ec5b62715639794857104231751873ddc43dab8e906befb5885c77544272bfb358a223defb7bdc76d928ec \\x6ac58663cafbac9207066b555496370c01113fbb69707bc9272df6eb27bae5c965b54821f3a731688c9e7befb3a432e1050d9fcf45570f53002ee3e4b1a85f398785fc19405b2beccb76655011926ef93f3315d2aede7b32ddbf4a7420e5c034efa6827f42f7bc194ab5c66d049ba38d2ef688adba382a1907397d9ff294f795 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 1 \\xe78b1b4c9ebbb700f6b93b07aa5a1113e9ac6c47d91155592a4349de03d5fb5c2f1bee591d7d57f9791795376d5dee6b4d1532fdbe41995a0e5c137108e4fd08 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5e2d10765c803b815492fcbe61ce4c4f99a2cd3fb8b9eb669a0bf460897fab5eebdfb80b315a1e6ce87e3ce37dc8182183a2c1139d66dbf06879f164994a13df530d5759909ba8e2f76805788c705089476ea54373631432623e98f21e687550d6cdf9ae61cd65804c1f527eebbc35c818654efbdb60e954f6391506000f30c2 \\xec4c4821a3b34e733c472d4aba6c998ad41a3c29290008bee1c41cafb8227a4bdf8810b1f086fa45300f2bb5eb0db0440c122a0c3a0f353e2ad971c926fd49d1 \\x61c6639071a155fbf0a2da44c55099342082e7cfe633139fd92ce79c44f042507d1ea53083b756243c04c428c538500173759725b28adda3c96fd729921fa683f033931e08b30e07d4cab3dbd73c5a8fbaf2271bf97fbabbb7f2e630d44687b2febf2d08eb7bbb86bd065df4d3c5fd9649acf74f397a7163c3b4c2edbd0b264c -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 2 \\x22d56c30bfb8a46e93b88ed3e619d8a9cefb25e81fc904350215bf12ed9e472e64278a9c081542f221b8d7b943d4ba701efcb1b28f5bf8e1344d9d94f8cf8e08 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x87e08b409c650f96fc5f44b709f89d495a114b2dfaef2cc080f80daffd31b10492d730c1ac53f4fcf0c6e38eb85b2b0c2aac33f901098c6f0272cb358d875d14e2bc11c60801ee2d5a2733c52d4ecf5427fb4a8e611ddfc20749f0f6c88ae48074fb7979967e9a34123bb5a2ee3fb37a1ceeb06d2fcdab2af55088806679c8e7 \\x894fa356c00c1b7d36add8922df3880a9fa6d709a4e533e0e29f6903ae37c0a6f1b616882b6e675b16cc1ec1208c630ee3b0920c59c2f854767374ea8f0a2a77 \\x888be3ed5f97e10aee99e9f73c2121372cdcd45cb261c398dc0689b0a050e711c165b83a8fef0d931908900e70841eb4a1dd29d360c6875efb3587b6eb6fe1e7ce71293b5a85b7e11f1a1ce98fe389b482efc185570d10fc45d8b7b9286dc14f703a24252cd2c4a2f99e9313c14f9783c724d58d673da4b433eca1028d4903cc -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 3 \\x6eeb50565e1868f5f45eedc4e7c5c374dfdb0825a05a4107f3465aa04aea4f998685cf83c251040404cf119e0546f514253d633a7d412dc7814e93ff889cd606 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5da5e4b8d3dbf9a0e213d9f0eba615b775163def1dd2c2ed86183bf2c680ea0445200bc1d5476dd15f94a281b3d84a642c52a17039cf4c78f9616e357872eed30969280721f230253c44bf8819c63628f7c2fdd146c268d9cecc976283b85d3e081970e1fd43463660e331bf96d64186a565943a3427d90511ceb565a6ff76e9 \\xd0830eb59217cc8158b8554fe2b397ef262a4dd95368f773debc5cbdf2714399a563ee47f2b10cd3f115aecc5501a6a0f2cb6fa4ca2c04d7a75a4fb5bb140da1 \\x09400e3eb9a45cbb85bddbf3d5617a45f19f96d74f722a74230f2092e2a35ab527aff2dd75b82f84a56985fccbaa34944de4722a295c94e3623e7b8a87e83c676e9c5001f853948f5a91f704017ecc55a6cf10957f177c163d45136d49d202e238ced69f565394045c0555c612d434a32697a7b4d6bd2a01c0652d96207940e7 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 4 \\xe5cf825054ada349d92b314f08b9a30a1cb11946656ba9908ff384caab4832e8933e4e62431e49fc294a32df3eb8b41c5a18ad17ae12a67f0443f3b04b6bfd02 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\xbaa409153fca06a9ef78260005e4f0c3da914d3a2428ba497a63df4873036c9e939e70cef5b5c934e28680a9f6b61b8186cf39b52e8889375d8c61a6a146b1e068bb6f9be5777ffeecae1b52d9d04382ec9cd5d5e11af9e2bb1006242e3d9c2c548af21c7cec554908082ac4ec42015f06d7996829fe4bf561bbd1d81570d54f \\x3c76952dd67078593583cd21f2712f67fea0d9f6b7eaa5381ddd38f88d8cc048b87b7119acd1e7935354a05e6bd2de8e777d2e929b7e037a3d94f6000f96dd31 \\x68f553e5260beb10a71e40965cedcee5b3629237c5fd216ceab65c2c51ba2bbac68da670e9f99f094bc2f1ca34cadd4965f5c9e6a9e7d4ed35ce29ab00b7e6d4b59c1c5e24e18c9370f25c81504a54015c25f852d3d596f92a7c33c9e895ca01a8b7d888e68c7a712a784bf39155f35968b239dc2e9a73c1ad8f6397399691e9 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 5 \\xb5dba95165bc6fe856a37e9dfffae9812aa24eb8980e1ab2303ae801f385a8246da19abf3cb36a355965a6dbd14b3c6daaa2dec660477b42af9aaeeb5cdb190f \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x8f7755289e434a002683adc94e685c1eec5c86f5b4e362861ce9ae3b584d866d512bd6172f66f0f40b16ca66c54d9807a0de2e82bae12ae8575a718cfdf463b782ff249a3f1d84eafa3a2bd1b8d2df9a99352a08df5a9920fed906c77cf1381f88d50c11f1479a2fa3e061a4b81cacc89bfce1927901dd7e4f987db4ccc70105 \\x89f61956325100f9ab2528d9f9aa25445c83cf7159904602a4060233e49929b249087415437f08f37f1d34dec6c4a44e08d86a0984d0c304ca35d35ff523f47a \\x241c8539b2469dd43abecd44e314fb1463283b863759de8f753776b4dcaed21b26f257d66a327f1382c375eea55aaef815f5ce7842a7e9bfdf7cf628568db2f2cf62dd1951e489463bc62b28470124ff2721535cab1041d40af7156485caba6044cfeb8dd5a8af6f6f67f3333525a256f1595be2a9bfcd28328a7cc8d19ad1a7 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 6 \\xfa28b91161591dd94f3391f3e60e2703028183cd45466e8443e5bbeb906ad1b1da778b9db001073f6fe143fe953693b6e2c293727019c90629dfa5028f321d05 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x97b90952c9f6fdf1f2e510fce2275f50f9050050f1fbfc6abd19ef429b447cdc010618793c8ca869e7b5efc6214f65f287615fb5f0adfd2d9dc0c247c37648069af93c12d7e12b0e559d170c486a110839ac4da9a21bce9ecbc0964ad2c909677776db096bf13f852c977dbb884e0ef50cca9e90a3da92e240642ef7e61ced02 \\x817d206e490344e0a99a23b05fe4f6d1668f60e0e03875e2311aa864c16490196fdc05a33dbfa36eb570a2a1a616c47143cb093f22fa8c65e18c59ae460ca29e \\x748dd54e3b4ff3147fa2e99b9de2348e62cd724a54d8f43e13a3d49e063928e08acfbdbc8466de754cbe6d62f6fae6613aabcb1bad9ce023962818069d6634c32b2ef69223cb84feaa4ae51675b561c2573342f5177fe9957e1157c27eb5c9053f65afb64329c0d696cdb23b653465c7248e2314dee787d51b2d4a7d8771186a -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 7 \\x40f3c6bc97286e741ea369872937aecae9c8517f4f18d4527fded7c0eb271b8a28c3d08e3d1ab662c4c9bb55160053698e5b2af1ac5149762835dd7921fa960b \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x1c7da343e189ed46a2a02b89e8e7eff4825e9cf17ff4c824cd6100752c01fd1330b90002e521aed4dc6d290b733872998a64cd9b2ba2a4dc4fdd9f4348004eb7fcc4ae8872d2f39dd185be2a5de24c53d8bb419ca2807d09da1f06509759cab4eac8c0dbad82cff448714e13952fa8d7566ce623963a40feba967206b4a8e94b \\xc6dc28835406de1daba4e35c3bd08e1e19e42a2fb46c02c9da1ee5167981f4cd9dcec457a1f050d005245ac685c609b275bd50ab36794bb7e88ed93ccf027a19 \\x66836e8ab3031ef27bab368f3eae8a132d0a7ab81853f502ea31750ba2e6427dcb37459f4f1c7c6fc489e561fa479c4ce969489b06957c6074162aa31ad736ba75829bef7d412ec4c985953ab7027bb7e507a1aef3c93498b83f8ce49d88d5159e083f90c3cbc4a8c36a0864b532d79314d97459c0984622e4d137c5aa1781f1 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 8 \\x4134b5fcc2deb08c0f5778192d47dc68d9375453f4cb86cb3c439a8fd921a5611b9af1d4d3b9738cc4e22258bfbbedcbce4035b58bfdae72040b4c7033993104 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x93628a46344628353fbab35846bf6dc8cc7b4cb9ecee206050b94172d310146fc3a33634853e164d901f85065bb35c5896ecdf70836639ac383dec117bee96493223e2d90c0b8f77a280d37e567aaf6d86855e4b71d094340ae1a20b39b055286509d8403d93696cf03f0e34734534b19e90414333836f90edaec2f40a592b3e \\x9163deea375ef1879cb21df95088f266a643ce4080dffc7e674d3e43d8912feca7b36cdc6c20b31746ed7da784da79310a7091c5e0b533ef0e386df6c74be5a3 \\x758946da3129941f324533a9beb0843a5097839dba688ffac2646de9d72d9289aa3d19d74de8b8401e0de9edc66b032514f37a914a9d37d0d9a6d63767395a040ad017791d7fc66c596754ff8288dd544eaca221c72c9bbd8fba6cea1faa2e5caf940624b0384656c7c132ac038ccbc31843043043b62104fafeecd4fb74b131 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 9 \\x96dcdc4c56449144f1540bc5785649a736ee6fa1f8a77faf55e2ddacc99710921e959dca1910893f20157327fd7acadce2ac4795a58a744cea7303fc47a52608 \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x7631553a86c25f673faa46ba1a43567031115b9ef718f80776f7addc330e257879f88fb2bacbb6f6589e70f58702108b3bb0c0ef53fe7f39635f6ce5a8155c973bbf349d917c91d5aa5c9e9620591aef9a7a93fdc28d088680dcd40278b869ab79ad748e5b51b02dd66546eeb7a8fed301e6ce56f1ee9fa00d055fe1f051e86c \\xc7732719d3a305748df74ca5ea958ec46a56eb1aa03ab7f04193263238be3cd0e97587e7cfa7a33cb66028bba7a5c3071c9d4a6d11dc0f61a2bc39d85e24b214 \\x7b87afd1dd242a0405386fcacc91e296852893066c25360f1d4910f3c5f5196beb50c793fbfa1bc4e53bd8c35a4bc4cb5f1aaa83f3f5049a207244bc5d0a9b89ad84c49226d9664f9bba0c1b44f7b9ddd6edf975421b49ee61286167b3d06e07b9e92da4ebc56081aa03f0d68f31ec6a1659e3bbc0b74eca93cf68a39d5312bf -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 10 \\x0321a8bef7f6aaf41a94b11eecf9fdbbdbb3984172c299e8a4fa3dcc097e6fcffdc0977d514b79d240e3a3248815270227393990a48f3d38a529501b40a14c0b \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x3ee67f5cc03aec02327e8cbbdc823160971156c76c49faa92d6f283b42e6f2845059e4913ffaac4736cfcbaab1a538f781ef97e5d6f6a523e7b8db1e1963a01a66e63f278bdc47a76659e03d936efc0ac31f206c14108f0ed5bc7be6cda784c469940ae832a6df66d9197159bd0b77cb95f5a8175ea84e8536dd770910d22766 \\x6d724f2ed0479f5b4655a28ea8ff1c35ba0d5cbc92ff527cc8ddb55181ed19728b1f0c47a86fca2c50f79c387bdd7a6a53f74a447b89551048237e1ffc6bcd29 \\x04be76c8fbfaab27a49b5a2f38beb96007786dc12ffb1a275c10c56929ed9e2dff25acbde18705ecba719281447cb4d458c9b2cf7a3388389c3b7375ba83df1aeaf0310cee0d4cf09eb78056320c22679250346e1600f9d6f66cf1dbd4b6df0a56e87c57b0c5fc66e4323bc2660e439d2b4cc97e107733d92e1fbb70b554b670 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 11 \\xfbf7b5b7a64fbe3d046d1fa1142dbb4b9f5a54c1bd3f7f6d84049db375ff57b7a949248fe236f20ad84727d8f41a9b19151e6ca64c59bcb145f9aa5a415c220e \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\xc1e1703786ef733bd2e1a7d034f328a7652c3189bece90e09cef65fe4f6029ebeb42f10b89dfef2eb09ade2ba6c43c653e1da051a62c6b008a4fac8f7a9845f943455e732e677c71532fb1f371e449704e90e94ff94c6aa7c975e2cc76fe9e755c8ef165732e8495de79e3da227e01134494be7403233b02de975c7db4c5bc69 \\x20193cb0e0a2f2f58f74c30032866287637e0b5b49b882522425cc83221cdb65c65c01687f8730da9eac2f1e2799badc6173b211fe2e90a3b8e237e4aa13b24a \\xa4db8f6c230121b237876082e117aad31ba4e92568639a3d658a6a88940ff0d0a6eb5ced74038297bb5afd8c92100d0996d98b875b0b28e63515ff0d460ed4628ee26ac5bf5b39a4433f882f2fe57e139e37783d22db4fcd810352395b8de6237249990587fc061b2f72be1b8c1898d6d88d63a2547df1049ff4da0762643aaa -\. - - --- --- Data for Name: refresh_transfer_keys; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refresh_transfer_keys (rc, transfer_pub, transfer_privs) FROM stdin; -\\x9549429543fc07348c349a52ff48729b79be84d2f0179b246badd57fe175ca0380623da9bc796586062a0d1a9e316db948b5229dde43fa382f1e485bebab9fa9 \\x8ffae84ace74029e161b0564f6d1b6e2356669016cdf5699b2688ee402f2e104 \\xaa122988f1a74af7bd81addbdc49d43cc0087da441f9deb5f98e4f2d77aaafd84d1b77a563f097800f2ee5a4389643ecbe49a79792905d007cddeaea35880d72 -\\xa2539fb2b22358903ebe61138e60844461b396a3716609da9bb0e1e6e034f2469a70c53480769ed38e70f6b2f47525f5a7315e881883308264b5783bbc3da4d9 \\x2ce2660435ab4541ccbefc7be12c07bb4f029808d5730c0b18341dc61c326c28 \\x61eab7022cf30cfd36cf91fc697651fe07907e67344cfe53c11d5d2516889e80bd1ffa2641bd388d9006756bb32ad40d7eab6561f6e18aeaa7dad342e3df0678 -\\x65488fb18fb61b07f9e57894cc6c25458f91fa6c94989273f5c0752d67982872110e2091c7e6275376878ed19c3eb18c4c2f95c1c0d714a42b410207be061313 \\xc9e688e1ce02b452c395921c47dfa754a63565e5adde18d8587cbe009b3e5538 \\xcfb6b57252f7c3a20eeb5bedcf36e6993d4bc70cac62c21552f648a61fe736d75eab6830314b1c01737c5e050751201c5d5f886f7eb36fed069c5cc23e674d8f -\. - - --- --- Data for Name: refunds; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refunds (refund_serial_id, coin_pub, merchant_pub, merchant_sig, h_contract_terms, rtransaction_id, amount_with_fee_val, amount_with_fee_frac) FROM stdin; -1 \\x9c73b669f228b004180fdcf3a9f33afdd000fddbaf12688eed6e3f4c57cef523 \\x4fda09cefc0512ad67c429bae8cf38caeccab4f7efe696a2a1394429f9ed8b1d \\xd3d48cd8b734e55aa411c2f7e941b82ffa5758f0ee9fb41419e1548607cc64a30fd9c77e0e21067d9adaf4d8ddca8e377d374d719a8528f876a8f5ae60016703 \\x06c4c1f2ee5260b7fb8bb1542fd840107b046cfe46b05923d205a5c03f03a3d19c367ff4c642be00989a36d3dd48abb6b444a7566897902b5d62e6cb01e10edd 1 6 0 -\. - - --- --- Data for Name: reserves; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves (reserve_pub, account_details, current_balance_val, current_balance_frac, expiration_date, gc_date) FROM stdin; -\\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 payto://x-taler-bank/localhost/testuser-LX9PpmbM 0 1000000 1586543741000000 1804876542000000 -\\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 payto://x-taler-bank/localhost/testuser-GlcUdYmc 0 1000000 1586543743000000 1804876544000000 -\. - - --- --- Data for Name: reserves_close; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves_close (close_uuid, reserve_pub, execution_date, wtid, receiver_account, amount_val, amount_frac, closing_fee_val, closing_fee_frac) FROM stdin; -\. - - --- --- Data for Name: reserves_in; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves_in (reserve_in_serial_id, reserve_pub, wire_reference, credit_val, credit_frac, sender_account_details, exchange_account_section, execution_date) FROM stdin; -1 \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 2 10 0 payto://x-taler-bank/localhost/testuser-LX9PpmbM exchange-account-1 1584124541000000 -2 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 4 18 0 payto://x-taler-bank/localhost/testuser-GlcUdYmc exchange-account-1 1584124543000000 -\. - - --- --- Data for Name: reserves_out; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves_out (reserve_out_serial_id, h_blind_ev, denom_pub_hash, denom_sig, reserve_pub, reserve_sig, execution_date, amount_with_fee_val, amount_with_fee_frac) FROM stdin; -1 \\xfa1b86c56993a05a45f37483320bae8b4b2348ffa0be05f91eabf4c5931f4bfb251c3a76d0edc013d9eafe465e0e5e37a9972afbd990f3c7d072b77e9e94ac00 \\xe2557e383c1c3c019681c2521d415a758f1becb629a3a75fd9dc212f0f2e802aee81e71db725f0f9913bea0f913978bd7d238558712aa957d80c4e1673292b13 \\x2f5305e1e1440e301c58ea6f8987e0969851c758340411ca003579edfacb49f6ff8b695b49809c5c9d974a42bc5613656feb0ad6fe7cac42eb40bd41cf95cd0238018de9c871d9708e18f5db0867cd787cfa7274c83dee612008e3300b960973c7aa50be873e543928ba70d33ea48d95a80da3e4dee2d899e945e20fc871f0ac \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x060f575c9e1c26c934101bd1cef93dda2131e7446874048d672497f54c296722c70297b85019faa97b200fa064bfa26b2e0d6dc9e064126310c6c1283986f70e 1584124542000000 8 5000000 -2 \\x1aa1a7cad3f2595aa0251458f6a0009a8ee37af3caa54f939bee61fce69c8d469c467b24e2c2141bcf08a4f7b9d0d91ea36b57315e8943db1422a822d0cf0440 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\xb166db2b2202d49345c7f7dae302e2c6668ecc578505ad53c7ddc27a9e3382c33dd7c02fdff0df4e8597b28039c58f7b7c66a76dfe0733d16974055284d66244bc35dbd6ff7e0e218fc8239686ef9be85711f5257b38eb6ed3e416870784cfcc9a455a797a2158f9c4653aa5e45745d229eaa9875e77ec07ccc1956df0682cd7 \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x4dc4a790937ac128c613b27c8abff0075f0d8f711a6071020fb254f4c10af3c8a4dcb03e0ef0e6a7bcd59ab18385291e8f5f1edadf8679ddd8ab5ed91aadcf06 1584124542000000 0 11000000 -3 \\xf8be32fcfa942f145d0550ecc999217eafef010d95b594951fe030210252199c3853747eecd60c3d19b7a51d3657c1018a752dc0a4667c17284dcbf3428d2e6d \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x479f052c5389067a5319e8756bfb8e3ae79b2f0dfb3af72bceafe3ef9ecf87a77c6e68214dbf740bfa570a092e332492d422f953cb5af7f9c503faa77106e167220714a4e920aa04cc4cdc8fe91c76022c63ae596b484a1c8d62d9c9d08005fbc1468526cc027ea1f5ebc3d55b8579d3e5eff6c3adfc9864225444507727f725 \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\xc3be358a3ac8aea91517da18a65326cf0773aae0d477014be2a9897d9c68dda6f268d1eb061d074d69ca12a5727003961ed5ce705353aa6ee2bc77a3bf122805 1584124542000000 0 11000000 -4 \\x823d560ca5ae4a90a9a69e7bf60522ab787a264cbcadc5a82da9d4536f9cbf54e93fe9b612e2dd6b8e7ae8308807aa4946a77615f0ac08730c3d48766f7d8150 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\xa15ce91a4145dd0f32433bfd540bab400a9e65578d52e3ca0597b3217db130274c9826341df00a93cdc8aaafc66967ec35dddc7eba93e733824d0b62b0e8194cf19a45ef57751d92c9b9748c1e79751d7f774210be72ca80159b8e39616ee81e3f2ddaef2692721532b9c1c62784b81a46c69c3df55284898a6cd8c63de3d08c \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x16f4a8dfe82338ef4b23bab8fc253dd5e20dcb59cb82a3618e43d69a072a765c68bcf577d7492eda3789b21d69a365a8cf4141e837fd8dcfe2731162e1c90b03 1584124542000000 0 11000000 -5 \\xe3fdf5a6f1f973472c480241883541599c62872663e01943883c1fd52f55e763664be60574589435d7cf7e40262701cbcb5aa38d7d1a2df8b63d4d007d071ec9 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x0505ee5f1acc559b0bb41e551d1aefc894c97d200edd46ba92a7cc44af5374f2d7aadebf543dd3675eceb38d728c9b134e9e91302800a0af2b66c764002f420e9296da60fb7fe4d21b4b5c6aa27de90f4dfc101062c33c5109e4e3b7ddf0c6ba87e5fe89957deb96752320e9fdee1d769b7e82025e3b2634c94e0d4a0e1a16b1 \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x57669d08691ab53a7dde30158159a29c08dd127f574dc81a84b2074364822ea9ab39bf19c907cab6f6bd79cd5d8069219ca63800aa364638000b3869e61dea04 1584124542000000 0 11000000 -6 \\xc9b289aeb3eda68342b90b684c7b9e533d1639cb8bbf2535dc1ae62da20778ca72d13de51eca2c5235469d4d9c3a914626fd15befb75caf0598a165c1c68b953 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5c9945994705719a944ef7113cea1ff498ff8b30345fa31016c744910b9ad624005691ed3357a5fd77503fcf3b352f6e8f82cedae1c08faab1d023b1bafe48ba193b84648daa31767321dad9ee9d66d7078c51317100827d8a54849e34fd6421939908b4c24507fde5917a9e693239de3e7a9bb3a75c880622a71d849eed026d \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\xbee2ead3509c0805ac3fff14fb58c3dc41618aded23f3cfbc02e3382dfc9f545a3e6e5d4aabfe109f60ae791dd2a4552b213008b589863d4ce2fee1c349fd70f 1584124542000000 0 11000000 -7 \\xf14c1a7a3d4f707722fc36053d5151b61ae3909fd0f663d503f526a866fc6a9b94a2bc08415426ed81e1a485e5e8388c736b06d9624b9332ad76b87a0e1d2712 \\xdaca7cdc05a7e781c04ab1e233ca2664bac59caed67e4d00fef43e31f191487a7cb91d8b862d6f9329da670ba79e6aa599de8896a6032249796f50870eae3933 \\x57120d516229df94203ac957bd8a8c07b3a38d7d315d11fc138c3ba617826ff4d35ae37fc292b52a2a02083e843e9d81a5f8840f6f11e756ffafb3d7dd3ab488ba333988d2fb2d3d0b4d4b02c017c31890b022cd18fb37d72e1e23e5cc9b9833006af9c7343ecf7c6e9a8dcf6b0e888545547b3a11bdaae00a35928caaab0e58 \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x4a51ef0c9c51ebb80a6750af653d3076bf48617afd415562b42a4d0a37ce1fb3e4c58c481715f4f6856dc025c2843b6a02a66d6e97f2d51b991f9e2ca4d0070e 1584124542000000 1 2000000 -8 \\x350520ffbb831ff91710b66618669bff74c545bd9d53d917b7e0d8c226ac59d5f1543e2dcf985fd172be823956af675c46f1e5e01ea2e5c5bf5f42468f64bbfa \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x76b26ba25d3c1e7f33322144fbb4ee5694c5f11a4e7f6f0ed0d243571efc78032f8ad021d81c9844496a831ec757b3fc38a0c793af54972bb1d38a01d5f07b006d6c7ac45416b884cc76c59ecfed5ff1d3f9322ba490c979cb99e1e6be32040479e4e4965c2c1eed54fae00eda0e91871247dae3389d7839f0776ed2f12e453d \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x5e00f9439e06aa899d24380d97e1b5b97eb428dff378c8815efb956df429095677045c031cff90ad8f5777c3f6a765417c98f2b8fee2212ebdef76ed0e95920b 1584124542000000 0 11000000 -9 \\xceb2492209454f94008bee1b0f4d809e5f836396f79a50b26ceaf3212d0c43c063e8b83c4ff665594eb185552f037f5aac411a25ee7c0a4361dfcf82e90e51c5 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x539c1cc9e91372e8d373f6939178e2566f3970944259ebfc2ede1cb352ce468612cde7a4b99f1fb0286582e66b03a22d89f61c0170f7c00598437982a88b55f8997d4993501bc96b88decc787f9f0dc7238b2199f1df34b3be1a6e567bfacecd7a293fcaeab57c267d4182d494df3fd11f9c588c07ee9296b624c46871672ec6 \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x1a1aeb760e4037918c3838e714cf7d3fdbcef0770f7a6f8787c8ed7f5bd0a9a00ade2f8f21e5dd32e5f59364d07dd7d08f5be9b4888a40cc00a14d69a145ae09 1584124542000000 0 11000000 -10 \\x8351a4ef65bfe266ff642393c10a4cffb6748528cdc2fe607e160314665d6efd91089255ecc0867405aef3f7d97f6d864b22438124ba79d29494f2439df5aaaa \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x733acc58f69234a58cc571a15430c447d39f6b1e9c6b2699cdf87caf8226f16d2800be3c9ed11ca8b9b9410227ff9730d3916381959e6b2c60ff425d4966cb52591f721f6c01c53084db6d57a67d0136ddd12bf010fb97062370061511b6f0a8fd16373b2473a61bff4f5f9c6d0fefff815521c8d89ddfb5756c22398495a8dd \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\xea99fce23cec8899cb444d4d9142a7c08c018f7910160b01489f325b91d9d088029d989bd1a793676150095378215bee0e5a5b9887c95b685baa21b48a0e9a06 1584124542000000 0 2000000 -11 \\x632929a099c72fde8b3f8f86682ae2d5cdf8fd645068342b491d1aa521ee3bf35337225c6c61ff4312c4eab983507d74482415d66cee4c065d50d977b98676a1 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x685d1aebd2cab0af54a5da8a679c208f6d37d4126f9e1b9cc0581926887f5b8c5ccb844603495c8b5fecf7f5e30d8b9d3ad67fcf116d8b1d1cf593c892c737a51e29045e77db3a00fdaf2120259ef519b72b3c5861f3ff806c0ffea52f141b51edd762293a3f2abfb356161dce663f5fb5472dc9601f1560efa15196728e5c5d \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\x153bf29f347462c72c2d2390726733a8a3a92735dfae0e789fb678ed014ce297187b205bb84901bf915bf8cd2c3e49be134d8fee216cd97cf250b4e3f2978401 1584124542000000 0 11000000 -12 \\xd992aa3ec6bd29c170d3fcc91e91d82577c7fe65fda3162558b1c10736683ea1c2f55efc8e79c9e684f5f3eb2550a4c141b472a5a0f41c6cb4db4a66bd6c88c5 \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\xc085f590f5c325652872f55c8e4653aa7c245d0ea4f3ab9cb8563fa86b0c3227b2fe22874dc0ce0f051d458b8fbe1661e3bea78f3a35ba22ff5e61b14781b66f007466de7f488e39c5f58176c387db320959274005b6127e963e677951a14e8462872a1d5775cbe34512434f9a360a2850e43ff1809d595f8c64c73539681cca \\x8c06a696766b847c2cea178bcfcd333435d4a513017df3308d73058c60321db4 \\xc8fa6c24c844e69980ceb672886745a8663d31dfcc37305202289c1bc0d769fcb604709a0164fd221096b7efb5b4e8b116222111f704b3ad8ad1a010f019360a 1584124542000000 0 2000000 -13 \\xecacdf2e69a8ee2e19c7a29bc943c8d011268a0a24ca9f3e21753c01bfd47fe7ee2b9fb4581d4c30e285aa0e7cfe12115b428281b53d912a068f65068130c567 \\xa96d1614b62d8a838b7ebee977db7f3d3b7c3630c8d6aee9c96e848c5b4f72200672fb3ffe229bb3c0ca63fda38757550f42170cf04fa8c647342d4d82abee67 \\x18066d277056e3dbb475c587cf35c39d54739b07c989a7d3cbe3b25f57b8e14999dca51493b19376670e7f7aa2a0afc76d7740eee7cb446793cbabbbf7d58da47ac85378d25ff2d8e5f0db025bc159c206dd334c8d2cb6b19e1712a4d090079f24777ea51a5a3f2cdabb722821aa7af562f5e5d82b5e9f1ece9916d95ccb10cc \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\x2e1a8c0fb61a319966b1f93d231e92680af015eb2d0168d0d09ef0fd1d30a0fc53ccd719f2aa276b735eee4de06b4d3c5bc5036bb0dba9fa47c580e2ba2ca20a 1584124544000000 10 1000000 -14 \\xde074157cd9d02c4cc4e11754ff867f96456ed0af5245db58f4bb16e9aa9686c0ad7ad484f051488a2fe6e0d069df8ca2e802d1328143e4d73de9aa93ffe9e47 \\x1e5e384e59ac0bdd77b086344af2985d8a5b1d4e58804ec47824d3d37a5927e0cedf43c55ce4051192f089480a1c61e31393185862e4781e563659684ca9d61e \\x1a50336560bbc7ba5b61e0243ea6ee42745bfa5bf7cda1fc82c2570cd0d4abd5a29f002476e9e89f4be3a83a79a02a68d11a8403fc0b1a81536fe1bb2c59d2ae29a00726ea7c586dd437874b2a2b5478af4bbefdea43e9a24accf2666ebfbda795d34589223944ca7d76fd2aa0bbdf87edd5602a9ed8fe65c913128807e1fc96 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\x451e233ab58b820740bf355cb62b7213985ffee90f3313fd9667f3206785f5d762619fb140462a5bba573b9da77c7da510fc37fa92d40ad03908a590325ddc04 1584124544000000 2 3000000 -15 \\xea3efab045c5e9828d08dee7d4a0a871642fee94bb298af1748f1c529227f0655800f8d28055a0207c32172a58e28269b488d5333e2ee72c7cd53934be02b4d9 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5afeaa9d75790cd0d9169a07b46011993687357ac9d09aa73c981cc1ad81b00f151250bf7e7dce712a6100968e5acbef806de583a7eb3a29560caa8a490639d32cef0ff965282a942c77c70f4c1445f45685042f691863ff2ec5f4a86adf8c1da78ed0e9ae7cddfd99187a92fa904ccb315d8767f95c03ffb5a9097e7c5fa004 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\x73b6d2f5d737015813bdc5ceb1ee79ded762f5f205e21b95270341e6f59b95f6e51991d81bb6f9c86ba67da3c7f42f242837e783c2ca8c89232acd2078ec0105 1584124544000000 0 11000000 -16 \\xbf03d2169dd458c679e4d7f0d81de5caebbac9c8427c187c1fe9da48377581159cf221d79d7dd67c21156276a2773e0016a7311cb65be73b9dfdd80e140f4adb \\xa6576c13e5143d56edc29a8c4917121a1c3917f3436c26f3349de6c226bb96bce029469a4b627b504a3f17d70c4ad7e6c015b4873e98c87238c9b824018f461b \\x5cb4339ecfaf2d660d56f80a0765efa2bbcf63430b2afbc95eb7ef42a0f566975f27241c6efa36e5910b83244ef82cad2b5e3ff4a8d338a5be505cc00ec2355197f81cac375f37ca1bc7afe0cb546b461d1fc1f8b339d5c641c6799ebd867c7edc7002fa4afbedb7f095d858ab7469c9793ca2a707a3658cad2e7d9cd0b12e1e \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\xb28d3ab7e9a1d235b5eeaeeef3951f28edab259edcc78cbebd9a2a1fac4d3563d3766e7686721ef329bd98f7e3f25d8b2edfcb7cc5be20faa2f4ccceb87b0103 1584124544000000 5 1000000 -17 \\x94529840e7ce591646521cf00e0d709bf4542318307492afc8935d6991638ff0d1f145724ad1d4d1b83083314bc7e2fd25b6cad123efc85bc7c8f55cde62b94f \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x09a36c9277ec01a29ef40ea76bb60d0563131b7dd7237bf7b480d9d2acac7f89bca077ac0bce392a62283b6588227f472e27279971e98fe31d205831bfc3c31a43e370becde748d0f3117040ee490fd97bcc9400f6e5e849d0d4a36593ad292a8e65c2e69d7ab9ead7343d48c065d00c3947190d41d529928fdf2aa4ecf9ac8f \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\x6eba7292d04246a91abbbf42546aeeb7e800d6334946bf7ff7b5c1f0222832b662d5d73d099994c0092b68ecedaebda63b90d896c6429cc0e64626793d5a6905 1584124544000000 0 11000000 -18 \\xc655a88e8f2cadf3cc7ec42fee373206bff0fbef40b293eda1ab509ffb67355b9ff38bfad9aab124c11f90b7d2b40ff1457bf58dd71c19ad9118883cbe39aaa8 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x01035ae702e16e9c836378a0555c1714fc13526d43c081389c7bc7f08b83018d4554159d4e1dfd99c73f66f2adc219de3e4cccba16b35665bc59c794b6c01616c78f2ecafb4d95a282c6328212e6433fe79188cab57056a9c13d47107d31eb5625339924f490e01282b91e28934c05a22bef6fbcdc62ff3ab03d02f08b814dc7 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\xd5b350736d5d47474043063d3f6b7dccd6094c8eeb80014bd3aa515c2ca353c1c5db4f001752cedc64f1595f5d60ef17272f73c45daf7e8c4d5c350a05e60902 1584124544000000 0 11000000 -19 \\xf17cb2a463cc112c56312b250c44a786b8f34d9804368e159abfc6d5dcf6c6facb5da20a029c923a392f74021aaec291e0e6414156a01cbb3fc1fdb074396898 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x19553d53c7dfeafa86e23eacd87e8ede57d7750fca5307dcc83b1aee49fc9dcba27a70a294c4e75d4ede7775f1e352d16fe0673f1eeecf3d652d045415a06fa58b20d5c3f4e3cc444aae3d27a21018ba45cb5b912297b3370e5c563e0ecc540d67885062e7ca3ae3fc78a652a47ad6c68f75cb5852267e6eebff562fcf6b330e \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\x14bbe5d3b1d4fe349e4ae2f72a453517115268841588ba68a9808b1c0cca0f2a23e63c6d27d0bd4059701d06e4db5b4e5762ff1034adb71612ba44a5999dfe03 1584124544000000 0 11000000 -20 \\xd2b69f953def6efc355fc9c90354cd01cd1e72afe7c358947d701157e2b8458fd414754a1fa67c08ab0f42a6cb87c45e4a8f0fa93afb5d8ed10428f7791690e2 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x8002dd9304a443b1eb33d11c7a63dae67949087a8bbbb0e381ba23c4985ff498cd3b6d53342589d7e7518422d92959316a93c13847b626ba9d3f85566838f53d0768865744db40c8bfd53260c765b54c80686374f43a5c661e837fc6a0e3b1477b69a143f67afafcede90a8b36a94cdc4b5bba7eb35b0d0d1ffe8084d4d55362 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\xcf7af496f0446677a6a6a4c313e82852c547437faaece881dd3e7436c26120562a7fa1916ef23d7b24b9e5150e8f78418109676ab6c20b5891e5d8960721e504 1584124544000000 0 11000000 -21 \\x19ea00eac23aa835f64fae13c3e837572eeeea7b7a7b316b390451711eb947c312a75707853ad435e932325eb204f49ba3922a5ff776b81b8ea65df8b9ef7c40 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x5840096bf1ddb120f2b9797ca33d89dc430409d806c8eb44648dd61766789684fce09254aad26f64747ea6f071bd3ba1101f338036165e571a06d5b02d7e753d489094aa373d69e7d2bd2a25f279de94b58238e0b3eb968e6584f6fe6aea36517883933b41456241ca9a5909ebc187ee459119b6a4ffe6865903ed2248b7185b \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\x92f2d699e0c15c3505195aed01c0059fa482cdb03e68000ab631513ca1ac40c23ab791724e159a7283b4efb3a236a5f3299e7ff737b22ed71cd4209d55dc160b 1584124544000000 0 11000000 -22 \\x921ec4037d54de78d334d451d68d6c09bcf518ec8cd2bb93294df08a38962ad1990955b3775f4a8a85582334e3553ec3eadcfe0fa22c7e583f5156fd5ff730c9 \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x39a60102e685b6a6633b04d5cacab13a76131d3268ca9362bc996e71e6120b3d6f72a012af9a4c4f1cf6b66a7481aa0a7338117ca1b2b4593621ea2652c593e13ec8b68aeeacd00f13609a13a074e925e3445e30b886c2bfcf13f0dd52989bcac8736fb45849e0c481dd05cc80e330870b99d95407ae640e692231ae1f5c6568 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\xebd122ce53497507e22f77d1f7dc63d064aadeb29424770dbe41c8c5dcdc012dac1e86d2748422bb69ed8f14649bc5d69f1b861cb631135225a5862dca748403 1584124544000000 0 2000000 -23 \\x1efcee558d5bb3aba55d6b5cb7e62638aa0c17bbddeb99b3eb9c9997c976362fda0b0f00f5dca05473e6bfdc763b7348655931138386d45b4f9002a798176d16 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x31c964f058e9a7986cfeb513ddda0a5058eedbc4de2eebca4be32c2e1080f2323ebc3f7619fcd80f369ee3fb88460872599d4d6c3ee03af0dba777b657ef124f166dcb19146ad74f07804845097bc1447d4b0f9074ba9f7a16fa9a2345f53820c01fe6c7dbdc632243f6b9b380cbbd62ccab3573d4735bef3984c41bc2efbee2 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\xf9af143a09eaa9290a1b9d9cdaba7df4f25796410aca20388df1aec0022d7ed5544ad0150e7d28a4011a08b5d619e3ff80704f28cccfe8723d73229ece824207 1584124544000000 0 11000000 -24 \\xcaa70a990eeba71f90a86379a11b4786176402f80422213a3f1110eafd112262b82e9a7953e4834f58b081783ba4a806b2886a7ce7131359018be96654c433d7 \\x47e5c7c13b7b267f28df1d734a99e45e139c5c22d4abe4219be0d1918eeace6c933a6720f678008c9877548c4aaa3029aff0bd82d7085fac0046405e6202cc62 \\x2d2f7243d46aae23ac5966f69c8c1bf0eb947ff418b4ad53b7f5e852d938f8fc80de8c2cd452cae4a890e4ca47fed4801a7aaf7143f4de5af748e1e4d8eaf3132d4e03e7cf51ae8f40267753b7279802a8503bae5809db5bcd02a701486f61351a9087d87840fd0f1ab2cf17e5cd3262decb04c91786d17717a62fe75e6051c9 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\xc3efb35a1afe82fb5e0a62ee8c30788399cac06fb191aae94f579a00d70d4b8e2df5a2f78f7ed54936e1f159239f030e8cb640abcc4328ed3e3bcc7f7b461805 1584124544000000 0 11000000 -25 \\x60407d1b14561de74f9060b2704af8b44d722a300c19131445c4d8e41fca020392f555b071cf889c1ee61c1cfc4590c1925c7d0c55a12185d22610edbd7ae8a1 \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x117d07b85f8e96a14a154c094d12c9eaa96fd00f542d1f6db611b339a65bc1ddf1e2b924d171190bb8424087cda7fd28aa09f932764d22b20f5d50a4111f5eb0b74ae511f5207c3c653170608add58c43685f0f50f397dbd66ec97d444935aced35d0a9be39080b89ea4d98470f9a06ec2b61cbbf1ddb465998abeb43cd3c146 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\x62df9c5df67b2e82990dac569ad3a14475d7bed8d6b612182cf2071163a6feaaf37f80f330ce16607af7112f1a9921a0fb82383f11669182214fb341a351550d 1584124544000000 0 2000000 -26 \\xa7fead0b1f217abcdd865867ad345bc0842012b37a09bc878639bcb013d6fbd55707775221144a137929b7de252e10e4b58129f5e1c3395b926e9ad13fb57cdd \\x7668572c927d369ce701c10f7cf48ca67148183b126bc793ff741c54ce60c366e53f166c57a8c2039c894b521ef69e967c724e6a9261e2a424d0c8fbae3736c3 \\x552b17682757c46977ca00b8a1d87d618bcd543f741074f2b1caca3f3e2c7f387bc87d67e51ff2c5eed7b8668d706b606b85f3e16792b2ffdc28153564e52b52978f0525884948ff694171398a92e1c788f24a63e1bb1c2e64e728ac6e4950c150b97db2094f77d3371550ad6f1d30f7d08e36d6b9ae8f9c6ec84666846b0876 \\xc689e130dc274f9e83e031358b9222ffe21834ae3f39f8d2574f28579670e5c8 \\xc7cc65e6cf593e2c8fa0f3c30af1617362467196739628608f945102a2bb7eb73c567876e7bc8cba1cb73ccfd7cdf380a85ef6cb80b54ad067cf702aade07a02 1584124544000000 0 2000000 -\. - - --- --- Data for Name: wire_auditor_account_progress; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_auditor_account_progress (master_pub, account_name, last_wire_reserve_in_serial_id, last_wire_wire_out_serial_id, wire_in_off, wire_out_off) FROM stdin; -\. - - --- --- Data for Name: wire_auditor_progress; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_auditor_progress (master_pub, last_timestamp, last_reserve_close_uuid) FROM stdin; -\. - - --- --- Data for Name: wire_fee; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_fee (wire_method, start_date, end_date, wire_fee_val, wire_fee_frac, closing_fee_val, closing_fee_frac, master_sig) FROM stdin; -\. - - --- --- Data for Name: wire_out; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_out (wireout_uuid, execution_date, wtid_raw, wire_target, exchange_account_section, amount_val, amount_frac) FROM stdin; -\. - - --- --- Name: aggregation_tracking_aggregation_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.aggregation_tracking_aggregation_serial_id_seq', 1, false); - - --- --- Name: app_bankaccount_account_no_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.app_bankaccount_account_no_seq', 12, true); - - --- --- Name: app_banktransaction_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.app_banktransaction_id_seq', 4, true); - - --- --- Name: auditor_reserves_auditor_reserves_rowid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auditor_reserves_auditor_reserves_rowid_seq', 1, false); - - --- --- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_group_id_seq', 1, false); - - --- --- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_group_permissions_id_seq', 1, false); - - --- --- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_permission_id_seq', 32, true); - - --- --- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 1, false); - - --- --- Name: auth_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_user_id_seq', 12, true); - - --- --- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_user_user_permissions_id_seq', 1, false); - - --- --- Name: denomination_revocations_denom_revocations_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.denomination_revocations_denom_revocations_serial_id_seq', 1, false); - - --- --- Name: deposit_confirmations_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.deposit_confirmations_serial_id_seq', 1, false); - - --- --- Name: deposits_deposit_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.deposits_deposit_serial_id_seq', 3, true); - - --- --- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.django_content_type_id_seq', 8, true); - - --- --- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.django_migrations_id_seq', 15, true); - - --- --- Name: merchant_contract_terms_row_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.merchant_contract_terms_row_id_seq', 3, true); - - --- --- Name: merchant_refunds_rtransaction_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.merchant_refunds_rtransaction_id_seq', 1, true); - - --- --- Name: prewire_prewire_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.prewire_prewire_uuid_seq', 1, false); - - --- --- Name: recoup_recoup_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.recoup_recoup_uuid_seq', 1, false); - - --- --- Name: recoup_refresh_recoup_refresh_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.recoup_refresh_recoup_refresh_uuid_seq', 1, false); - - --- --- Name: refresh_commitments_melt_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.refresh_commitments_melt_serial_id_seq', 3, true); - - --- --- Name: refunds_refund_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.refunds_refund_serial_id_seq', 1, true); - - --- --- Name: reserves_close_close_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.reserves_close_close_uuid_seq', 1, false); - - --- --- Name: reserves_in_reserve_in_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.reserves_in_reserve_in_serial_id_seq', 2, true); - - --- --- Name: reserves_out_reserve_out_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.reserves_out_reserve_out_serial_id_seq', 26, true); - - --- --- Name: wire_out_wireout_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.wire_out_wireout_uuid_seq', 1, false); - - --- --- Name: patches patches_pkey; Type: CONSTRAINT; Schema: _v; Owner: - --- - -ALTER TABLE ONLY _v.patches - ADD CONSTRAINT patches_pkey PRIMARY KEY (patch_name); - - --- --- Name: aggregation_tracking aggregation_tracking_aggregation_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT aggregation_tracking_aggregation_serial_id_key UNIQUE (aggregation_serial_id); - - --- --- Name: aggregation_tracking aggregation_tracking_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT aggregation_tracking_pkey PRIMARY KEY (deposit_serial_id); - - --- --- Name: app_bankaccount app_bankaccount_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount - ADD CONSTRAINT app_bankaccount_pkey PRIMARY KEY (account_no); - - --- --- Name: app_bankaccount app_bankaccount_user_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount - ADD CONSTRAINT app_bankaccount_user_id_key UNIQUE (user_id); - - --- --- Name: app_banktransaction app_banktransaction_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_pkey PRIMARY KEY (id); - - --- --- Name: app_banktransaction app_banktransaction_request_uid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_request_uid_key UNIQUE (request_uid); - - --- --- Name: app_talerwithdrawoperation app_talerwithdrawoperation_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_talerwithdrawoperation - ADD CONSTRAINT app_talerwithdrawoperation_pkey PRIMARY KEY (withdraw_id); - - --- --- Name: auditor_denomination_pending auditor_denomination_pending_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denomination_pending - ADD CONSTRAINT auditor_denomination_pending_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: auditor_denominations auditor_denominations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denominations - ADD CONSTRAINT auditor_denominations_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: auditor_exchanges auditor_exchanges_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_exchanges - ADD CONSTRAINT auditor_exchanges_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_historic_denomination_revenue auditor_historic_denomination_revenue_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_historic_denomination_revenue - ADD CONSTRAINT auditor_historic_denomination_revenue_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: auditor_progress_aggregation auditor_progress_aggregation_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_aggregation - ADD CONSTRAINT auditor_progress_aggregation_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_progress_coin auditor_progress_coin_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_coin - ADD CONSTRAINT auditor_progress_coin_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_progress_deposit_confirmation auditor_progress_deposit_confirmation_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_deposit_confirmation - ADD CONSTRAINT auditor_progress_deposit_confirmation_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_progress_reserve auditor_progress_reserve_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_reserve - ADD CONSTRAINT auditor_progress_reserve_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_reserves auditor_reserves_auditor_reserves_rowid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserves - ADD CONSTRAINT auditor_reserves_auditor_reserves_rowid_key UNIQUE (auditor_reserves_rowid); - - --- --- Name: auth_group auth_group_name_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group - ADD CONSTRAINT auth_group_name_key UNIQUE (name); - - --- --- Name: auth_group_permissions auth_group_permissions_group_id_permission_id_0cd325b0_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissions_group_id_permission_id_0cd325b0_uniq UNIQUE (group_id, permission_id); - - --- --- Name: auth_group_permissions auth_group_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissions_pkey PRIMARY KEY (id); - - --- --- Name: auth_group auth_group_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group - ADD CONSTRAINT auth_group_pkey PRIMARY KEY (id); - - --- --- Name: auth_permission auth_permission_content_type_id_codename_01ab375a_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission - ADD CONSTRAINT auth_permission_content_type_id_codename_01ab375a_uniq UNIQUE (content_type_id, codename); - - --- --- Name: auth_permission auth_permission_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission - ADD CONSTRAINT auth_permission_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_groups auth_user_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_groups auth_user_groups_user_id_group_id_94350c0c_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_user_id_group_id_94350c0c_uniq UNIQUE (user_id, group_id); - - --- --- Name: auth_user auth_user_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user - ADD CONSTRAINT auth_user_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_user_permissions auth_user_user_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permissions_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_user_permissions auth_user_user_permissions_user_id_permission_id_14a6b632_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permissions_user_id_permission_id_14a6b632_uniq UNIQUE (user_id, permission_id); - - --- --- Name: auth_user auth_user_username_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user - ADD CONSTRAINT auth_user_username_key UNIQUE (username); - - --- --- Name: denomination_revocations denomination_revocations_denom_revocations_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations - ADD CONSTRAINT denomination_revocations_denom_revocations_serial_id_key UNIQUE (denom_revocations_serial_id); - - --- --- Name: denomination_revocations denomination_revocations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations - ADD CONSTRAINT denomination_revocations_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: denominations denominations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denominations - ADD CONSTRAINT denominations_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: deposit_confirmations deposit_confirmations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations - ADD CONSTRAINT deposit_confirmations_pkey PRIMARY KEY (h_contract_terms, h_wire, coin_pub, merchant_pub, exchange_sig, exchange_pub, master_sig); - - --- --- Name: deposit_confirmations deposit_confirmations_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations - ADD CONSTRAINT deposit_confirmations_serial_id_key UNIQUE (serial_id); - - --- --- Name: deposits deposits_coin_pub_merchant_pub_h_contract_terms_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits - ADD CONSTRAINT deposits_coin_pub_merchant_pub_h_contract_terms_key UNIQUE (coin_pub, merchant_pub, h_contract_terms); - - --- --- Name: deposits deposits_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits - ADD CONSTRAINT deposits_pkey PRIMARY KEY (deposit_serial_id); - - --- --- Name: django_content_type django_content_type_app_label_model_76bd3d3b_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_content_type - ADD CONSTRAINT django_content_type_app_label_model_76bd3d3b_uniq UNIQUE (app_label, model); - - --- --- Name: django_content_type django_content_type_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_content_type - ADD CONSTRAINT django_content_type_pkey PRIMARY KEY (id); - - --- --- Name: django_migrations django_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_migrations - ADD CONSTRAINT django_migrations_pkey PRIMARY KEY (id); - - --- --- Name: django_session django_session_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_session - ADD CONSTRAINT django_session_pkey PRIMARY KEY (session_key); - - --- --- Name: exchange_wire_fees exchange_wire_fees_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.exchange_wire_fees - ADD CONSTRAINT exchange_wire_fees_pkey PRIMARY KEY (exchange_pub, h_wire_method, start_date, end_date); - - --- --- Name: known_coins known_coins_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.known_coins - ADD CONSTRAINT known_coins_pkey PRIMARY KEY (coin_pub); - - --- --- Name: merchant_contract_terms merchant_contract_terms_h_contract_terms_merchant_pub_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms - ADD CONSTRAINT merchant_contract_terms_h_contract_terms_merchant_pub_key UNIQUE (h_contract_terms, merchant_pub); - - --- --- Name: merchant_contract_terms merchant_contract_terms_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms - ADD CONSTRAINT merchant_contract_terms_pkey PRIMARY KEY (order_id, merchant_pub); - - --- --- Name: merchant_contract_terms merchant_contract_terms_row_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms - ADD CONSTRAINT merchant_contract_terms_row_id_key UNIQUE (row_id); - - --- --- Name: merchant_deposits merchant_deposits_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_deposits - ADD CONSTRAINT merchant_deposits_pkey PRIMARY KEY (h_contract_terms, coin_pub); - - --- --- Name: merchant_orders merchant_orders_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_orders - ADD CONSTRAINT merchant_orders_pkey PRIMARY KEY (order_id, merchant_pub); - - --- --- Name: merchant_proofs merchant_proofs_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_proofs - ADD CONSTRAINT merchant_proofs_pkey PRIMARY KEY (wtid, exchange_url); - - --- --- Name: merchant_refunds merchant_refunds_rtransaction_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_refunds - ADD CONSTRAINT merchant_refunds_rtransaction_id_key UNIQUE (rtransaction_id); - - --- --- Name: merchant_session_info merchant_session_info_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_session_info - ADD CONSTRAINT merchant_session_info_pkey PRIMARY KEY (session_id, fulfillment_url, merchant_pub); - - --- --- Name: merchant_session_info merchant_session_info_session_id_fulfillment_url_order_id_m_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_session_info - ADD CONSTRAINT merchant_session_info_session_id_fulfillment_url_order_id_m_key UNIQUE (session_id, fulfillment_url, order_id, merchant_pub); - - --- --- Name: merchant_tip_pickups merchant_tip_pickups_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_pickups - ADD CONSTRAINT merchant_tip_pickups_pkey PRIMARY KEY (pickup_id); - - --- --- Name: merchant_tip_reserve_credits merchant_tip_reserve_credits_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_reserve_credits - ADD CONSTRAINT merchant_tip_reserve_credits_pkey PRIMARY KEY (credit_uuid); - - --- --- Name: merchant_tip_reserves merchant_tip_reserves_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_reserves - ADD CONSTRAINT merchant_tip_reserves_pkey PRIMARY KEY (reserve_priv); - - --- --- Name: merchant_tips merchant_tips_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tips - ADD CONSTRAINT merchant_tips_pkey PRIMARY KEY (tip_id); - - --- --- Name: merchant_transfers merchant_transfers_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_transfers - ADD CONSTRAINT merchant_transfers_pkey PRIMARY KEY (h_contract_terms, coin_pub); - - --- --- Name: prewire prewire_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prewire - ADD CONSTRAINT prewire_pkey PRIMARY KEY (prewire_uuid); - - --- --- Name: recoup recoup_recoup_uuid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup - ADD CONSTRAINT recoup_recoup_uuid_key UNIQUE (recoup_uuid); - - --- --- Name: recoup_refresh recoup_refresh_recoup_refresh_uuid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh - ADD CONSTRAINT recoup_refresh_recoup_refresh_uuid_key UNIQUE (recoup_refresh_uuid); - - --- --- Name: refresh_commitments refresh_commitments_melt_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments - ADD CONSTRAINT refresh_commitments_melt_serial_id_key UNIQUE (melt_serial_id); - - --- --- Name: refresh_commitments refresh_commitments_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments - ADD CONSTRAINT refresh_commitments_pkey PRIMARY KEY (rc); - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_coin_ev_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_coin_ev_key UNIQUE (coin_ev); - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_h_coin_ev_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_h_coin_ev_key UNIQUE (h_coin_ev); - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_pkey PRIMARY KEY (rc, freshcoin_index); - - --- --- Name: refresh_transfer_keys refresh_transfer_keys_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_transfer_keys - ADD CONSTRAINT refresh_transfer_keys_pkey PRIMARY KEY (rc); - - --- --- Name: refunds refunds_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds - ADD CONSTRAINT refunds_pkey PRIMARY KEY (coin_pub, merchant_pub, h_contract_terms, rtransaction_id); - - --- --- Name: refunds refunds_refund_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds - ADD CONSTRAINT refunds_refund_serial_id_key UNIQUE (refund_serial_id); - - --- --- Name: reserves_close reserves_close_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_close - ADD CONSTRAINT reserves_close_pkey PRIMARY KEY (close_uuid); - - --- --- Name: reserves_in reserves_in_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in - ADD CONSTRAINT reserves_in_pkey PRIMARY KEY (reserve_pub, wire_reference); - - --- --- Name: reserves_in reserves_in_reserve_in_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in - ADD CONSTRAINT reserves_in_reserve_in_serial_id_key UNIQUE (reserve_in_serial_id); - - --- --- Name: reserves_out reserves_out_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_pkey PRIMARY KEY (h_blind_ev); - - --- --- Name: reserves_out reserves_out_reserve_out_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_reserve_out_serial_id_key UNIQUE (reserve_out_serial_id); - - --- --- Name: reserves reserves_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves - ADD CONSTRAINT reserves_pkey PRIMARY KEY (reserve_pub); - - --- --- Name: wire_auditor_account_progress wire_auditor_account_progress_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_account_progress - ADD CONSTRAINT wire_auditor_account_progress_pkey PRIMARY KEY (master_pub, account_name); - - --- --- Name: wire_auditor_progress wire_auditor_progress_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_progress - ADD CONSTRAINT wire_auditor_progress_pkey PRIMARY KEY (master_pub); - - --- --- Name: wire_fee wire_fee_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_fee - ADD CONSTRAINT wire_fee_pkey PRIMARY KEY (wire_method, start_date); - - --- --- Name: wire_out wire_out_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_out - ADD CONSTRAINT wire_out_pkey PRIMARY KEY (wireout_uuid); - - --- --- Name: wire_out wire_out_wtid_raw_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_out - ADD CONSTRAINT wire_out_wtid_raw_key UNIQUE (wtid_raw); - - --- --- Name: aggregation_tracking_wtid_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX aggregation_tracking_wtid_index ON public.aggregation_tracking USING btree (wtid_raw); - - --- --- Name: INDEX aggregation_tracking_wtid_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.aggregation_tracking_wtid_index IS 'for lookup_transactions'; - - --- --- Name: app_banktransaction_credit_account_id_a8ba05ac; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_credit_account_id_a8ba05ac ON public.app_banktransaction USING btree (credit_account_id); - - --- --- Name: app_banktransaction_date_f72bcad6; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_date_f72bcad6 ON public.app_banktransaction USING btree (date); - - --- --- Name: app_banktransaction_debit_account_id_5b1f7528; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_debit_account_id_5b1f7528 ON public.app_banktransaction USING btree (debit_account_id); - - --- --- Name: app_banktransaction_request_uid_b7d06af5_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_request_uid_b7d06af5_like ON public.app_banktransaction USING btree (request_uid varchar_pattern_ops); - - --- --- Name: app_talerwithdrawoperation_selected_exchange_account__6c8b96cf; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_talerwithdrawoperation_selected_exchange_account__6c8b96cf ON public.app_talerwithdrawoperation USING btree (selected_exchange_account_id); - - --- --- Name: app_talerwithdrawoperation_withdraw_account_id_992dc5b3; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_talerwithdrawoperation_withdraw_account_id_992dc5b3 ON public.app_talerwithdrawoperation USING btree (withdraw_account_id); - - --- --- Name: auditor_historic_reserve_summary_by_master_pub_start_date; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auditor_historic_reserve_summary_by_master_pub_start_date ON public.auditor_historic_reserve_summary USING btree (master_pub, start_date); - - --- --- Name: auditor_reserves_by_reserve_pub; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auditor_reserves_by_reserve_pub ON public.auditor_reserves USING btree (reserve_pub); - - --- --- Name: auth_group_name_a6ea08ec_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_group_name_a6ea08ec_like ON public.auth_group USING btree (name varchar_pattern_ops); - - --- --- Name: auth_group_permissions_group_id_b120cbf9; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_group_permissions_group_id_b120cbf9 ON public.auth_group_permissions USING btree (group_id); - - --- --- Name: auth_group_permissions_permission_id_84c5c92e; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_group_permissions_permission_id_84c5c92e ON public.auth_group_permissions USING btree (permission_id); - - --- --- Name: auth_permission_content_type_id_2f476e4b; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_permission_content_type_id_2f476e4b ON public.auth_permission USING btree (content_type_id); - - --- --- Name: auth_user_groups_group_id_97559544; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_groups_group_id_97559544 ON public.auth_user_groups USING btree (group_id); - - --- --- Name: auth_user_groups_user_id_6a12ed8b; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_groups_user_id_6a12ed8b ON public.auth_user_groups USING btree (user_id); - - --- --- Name: auth_user_user_permissions_permission_id_1fbb5f2c; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_user_permissions_permission_id_1fbb5f2c ON public.auth_user_user_permissions USING btree (permission_id); - - --- --- Name: auth_user_user_permissions_user_id_a95ead1b; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_user_permissions_user_id_a95ead1b ON public.auth_user_user_permissions USING btree (user_id); - - --- --- Name: auth_user_username_6821ab7c_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_username_6821ab7c_like ON public.auth_user USING btree (username varchar_pattern_ops); - - --- --- Name: denominations_expire_legal_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX denominations_expire_legal_index ON public.denominations USING btree (expire_legal); - - --- --- Name: deposits_coin_pub_merchant_contract_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX deposits_coin_pub_merchant_contract_index ON public.deposits USING btree (coin_pub, merchant_pub, h_contract_terms); - - --- --- Name: INDEX deposits_coin_pub_merchant_contract_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.deposits_coin_pub_merchant_contract_index IS 'for deposits_get_ready'; - - --- --- Name: deposits_get_ready_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX deposits_get_ready_index ON public.deposits USING btree (tiny, done, wire_deadline, refund_deadline); - - --- --- Name: deposits_iterate_matching_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX deposits_iterate_matching_index ON public.deposits USING btree (merchant_pub, h_wire, done, wire_deadline); - - --- --- Name: INDEX deposits_iterate_matching_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.deposits_iterate_matching_index IS 'for deposits_iterate_matching'; - - --- --- Name: django_session_expire_date_a5c62663; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX django_session_expire_date_a5c62663 ON public.django_session USING btree (expire_date); - - --- --- Name: django_session_session_key_c0390e0f_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX django_session_session_key_c0390e0f_like ON public.django_session USING btree (session_key varchar_pattern_ops); - - --- --- Name: known_coins_by_denomination; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX known_coins_by_denomination ON public.known_coins USING btree (denom_pub_hash); - - --- --- Name: merchant_transfers_by_coin; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX merchant_transfers_by_coin ON public.merchant_transfers USING btree (h_contract_terms, coin_pub); - - --- --- Name: merchant_transfers_by_wtid; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX merchant_transfers_by_wtid ON public.merchant_transfers USING btree (wtid); - - --- --- Name: prepare_iteration_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX prepare_iteration_index ON public.prewire USING btree (finished); - - --- --- Name: INDEX prepare_iteration_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.prepare_iteration_index IS 'for wire_prepare_data_get and gc_prewire'; - - --- --- Name: recoup_by_coin_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_by_coin_index ON public.recoup USING btree (coin_pub); - - --- --- Name: recoup_by_h_blind_ev; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_by_h_blind_ev ON public.recoup USING btree (h_blind_ev); - - --- --- Name: recoup_for_by_reserve; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_for_by_reserve ON public.recoup USING btree (coin_pub, h_blind_ev); - - --- --- Name: recoup_refresh_by_coin_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_refresh_by_coin_index ON public.recoup_refresh USING btree (coin_pub); - - --- --- Name: recoup_refresh_by_h_blind_ev; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_refresh_by_h_blind_ev ON public.recoup_refresh USING btree (h_blind_ev); - - --- --- Name: recoup_refresh_for_by_reserve; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_refresh_for_by_reserve ON public.recoup_refresh USING btree (coin_pub, h_blind_ev); - - --- --- Name: refresh_commitments_old_coin_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refresh_commitments_old_coin_pub_index ON public.refresh_commitments USING btree (old_coin_pub); - - --- --- Name: refresh_revealed_coins_coin_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refresh_revealed_coins_coin_pub_index ON public.refresh_revealed_coins USING btree (denom_pub_hash); - - --- --- Name: refresh_transfer_keys_coin_tpub; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refresh_transfer_keys_coin_tpub ON public.refresh_transfer_keys USING btree (rc, transfer_pub); - - --- --- Name: INDEX refresh_transfer_keys_coin_tpub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.refresh_transfer_keys_coin_tpub IS 'for get_link (unsure if this helps or hurts for performance as there should be very few transfer public keys per rc, but at least in theory this helps the ORDER BY clause)'; - - --- --- Name: refunds_coin_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refunds_coin_pub_index ON public.refunds USING btree (coin_pub); - - --- --- Name: reserves_close_by_reserve; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_close_by_reserve ON public.reserves_close USING btree (reserve_pub); - - --- --- Name: reserves_expiration_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_expiration_index ON public.reserves USING btree (expiration_date, current_balance_val, current_balance_frac); - - --- --- Name: INDEX reserves_expiration_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.reserves_expiration_index IS 'used in get_expired_reserves'; - - --- --- Name: reserves_gc_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_gc_index ON public.reserves USING btree (gc_date); - - --- --- Name: INDEX reserves_gc_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.reserves_gc_index IS 'for reserve garbage collection'; - - --- --- Name: reserves_in_exchange_account_serial; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_in_exchange_account_serial ON public.reserves_in USING btree (exchange_account_section, reserve_in_serial_id DESC); - - --- --- Name: reserves_in_execution_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_in_execution_index ON public.reserves_in USING btree (exchange_account_section, execution_date); - - --- --- Name: reserves_out_execution_date; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_out_execution_date ON public.reserves_out USING btree (execution_date); - - --- --- Name: reserves_out_for_get_withdraw_info; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_out_for_get_withdraw_info ON public.reserves_out USING btree (denom_pub_hash, h_blind_ev); - - --- --- Name: reserves_out_reserve_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_out_reserve_pub_index ON public.reserves_out USING btree (reserve_pub); - - --- --- Name: INDEX reserves_out_reserve_pub_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.reserves_out_reserve_pub_index IS 'for get_reserves_out'; - - --- --- Name: wire_fee_gc_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX wire_fee_gc_index ON public.wire_fee USING btree (end_date); - - --- --- Name: aggregation_tracking aggregation_tracking_deposit_serial_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT aggregation_tracking_deposit_serial_id_fkey FOREIGN KEY (deposit_serial_id) REFERENCES public.deposits(deposit_serial_id) ON DELETE CASCADE; - - --- --- Name: app_bankaccount app_bankaccount_user_id_2722a34f_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount - ADD CONSTRAINT app_bankaccount_user_id_2722a34f_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_banktransaction app_banktransaction_credit_account_id_a8ba05ac_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_credit_account_id_a8ba05ac_fk_app_banka FOREIGN KEY (credit_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_banktransaction app_banktransaction_debit_account_id_5b1f7528_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_debit_account_id_5b1f7528_fk_app_banka FOREIGN KEY (debit_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_talerwithdrawoperation app_talerwithdrawope_selected_exchange_ac_6c8b96cf_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_talerwithdrawoperation - ADD CONSTRAINT app_talerwithdrawope_selected_exchange_ac_6c8b96cf_fk_app_banka FOREIGN KEY (selected_exchange_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_talerwithdrawoperation app_talerwithdrawope_withdraw_account_id_992dc5b3_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_talerwithdrawoperation - ADD CONSTRAINT app_talerwithdrawope_withdraw_account_id_992dc5b3_fk_app_banka FOREIGN KEY (withdraw_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auditor_denomination_pending auditor_denomination_pending_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denomination_pending - ADD CONSTRAINT auditor_denomination_pending_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.auditor_denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: auth_group_permissions auth_group_permissio_permission_id_84c5c92e_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissio_permission_id_84c5c92e_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_group_permissions auth_group_permissions_group_id_b120cbf9_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissions_group_id_b120cbf9_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_permission auth_permission_content_type_id_2f476e4b_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission - ADD CONSTRAINT auth_permission_content_type_id_2f476e4b_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_groups auth_user_groups_group_id_97559544_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_group_id_97559544_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_groups auth_user_groups_user_id_6a12ed8b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_user_id_6a12ed8b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_user_permissions auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_user_permissions auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: denomination_revocations denomination_revocations_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations - ADD CONSTRAINT denomination_revocations_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: deposits deposits_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits - ADD CONSTRAINT deposits_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub) ON DELETE CASCADE; - - --- --- Name: known_coins known_coins_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.known_coins - ADD CONSTRAINT known_coins_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: auditor_exchange_signkeys master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_exchange_signkeys - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_denominations master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denominations - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_reserve master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_reserve - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_aggregation master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_aggregation - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_deposit_confirmation master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_deposit_confirmation - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_coin master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_coin - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: wire_auditor_account_progress master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_account_progress - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: wire_auditor_progress master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_progress - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_reserves master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserves - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_reserve_balance master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserve_balance - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_wire_fee_balance master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_wire_fee_balance - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_balance_summary master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_balance_summary - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_historic_denomination_revenue master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_historic_denomination_revenue - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_historic_reserve_summary master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_historic_reserve_summary - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: deposit_confirmations master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_predicted_result master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_predicted_result - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: merchant_deposits merchant_deposits_h_contract_terms_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_deposits - ADD CONSTRAINT merchant_deposits_h_contract_terms_fkey FOREIGN KEY (h_contract_terms, merchant_pub) REFERENCES public.merchant_contract_terms(h_contract_terms, merchant_pub); - - --- --- Name: merchant_tip_pickups merchant_tip_pickups_tip_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_pickups - ADD CONSTRAINT merchant_tip_pickups_tip_id_fkey FOREIGN KEY (tip_id) REFERENCES public.merchant_tips(tip_id) ON DELETE CASCADE; - - --- --- Name: recoup recoup_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup - ADD CONSTRAINT recoup_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub); - - --- --- Name: recoup recoup_h_blind_ev_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup - ADD CONSTRAINT recoup_h_blind_ev_fkey FOREIGN KEY (h_blind_ev) REFERENCES public.reserves_out(h_blind_ev) ON DELETE CASCADE; - - --- --- Name: recoup_refresh recoup_refresh_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh - ADD CONSTRAINT recoup_refresh_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub); - - --- --- Name: recoup_refresh recoup_refresh_h_blind_ev_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh - ADD CONSTRAINT recoup_refresh_h_blind_ev_fkey FOREIGN KEY (h_blind_ev) REFERENCES public.refresh_revealed_coins(h_coin_ev) ON DELETE CASCADE; - - --- --- Name: refresh_commitments refresh_commitments_old_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments - ADD CONSTRAINT refresh_commitments_old_coin_pub_fkey FOREIGN KEY (old_coin_pub) REFERENCES public.known_coins(coin_pub) ON DELETE CASCADE; - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_rc_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_rc_fkey FOREIGN KEY (rc) REFERENCES public.refresh_commitments(rc) ON DELETE CASCADE; - - --- --- Name: refresh_transfer_keys refresh_transfer_keys_rc_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_transfer_keys - ADD CONSTRAINT refresh_transfer_keys_rc_fkey FOREIGN KEY (rc) REFERENCES public.refresh_commitments(rc) ON DELETE CASCADE; - - --- --- Name: refunds refunds_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds - ADD CONSTRAINT refunds_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub) ON DELETE CASCADE; - - --- --- Name: reserves_close reserves_close_reserve_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_close - ADD CONSTRAINT reserves_close_reserve_pub_fkey FOREIGN KEY (reserve_pub) REFERENCES public.reserves(reserve_pub) ON DELETE CASCADE; - - --- --- Name: reserves_in reserves_in_reserve_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in - ADD CONSTRAINT reserves_in_reserve_pub_fkey FOREIGN KEY (reserve_pub) REFERENCES public.reserves(reserve_pub) ON DELETE CASCADE; - - --- --- Name: reserves_out reserves_out_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash); - - --- --- Name: reserves_out reserves_out_reserve_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_reserve_pub_fkey FOREIGN KEY (reserve_pub) REFERENCES public.reserves(reserve_pub) ON DELETE CASCADE; - - --- --- Name: aggregation_tracking wire_out_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT wire_out_ref FOREIGN KEY (wtid_raw) REFERENCES public.wire_out(wtid_raw) ON DELETE CASCADE DEFERRABLE; - - --- --- PostgreSQL database dump complete --- - diff --git a/src/auditor/generate-revoke-basedb.sh b/src/auditor/generate-revoke-basedb.sh index e687b1ffd..00ad3a6c1 100755 --- a/src/auditor/generate-revoke-basedb.sh +++ b/src/auditor/generate-revoke-basedb.sh @@ -8,6 +8,10 @@ set -eu +echo "Script disabled: taler-wallet-cli integration test known to fail right now!" +exit 1 + + trap "kill `jobs -p` &> /dev/null || true" ERR # Exit, with status code "skip" (no 'real' failure) diff --git a/src/auditor/revoke-basedb.age b/src/auditor/revoke-basedb.age deleted file mode 100644 index 421485f54..000000000 --- a/src/auditor/revoke-basedb.age +++ /dev/null @@ -1 +0,0 @@ -1585247241 diff --git a/src/auditor/revoke-basedb.fees b/src/auditor/revoke-basedb.fees Binary files differdeleted file mode 100644 index 500c95050..000000000 --- a/src/auditor/revoke-basedb.fees +++ /dev/null diff --git a/src/auditor/revoke-basedb.mpub b/src/auditor/revoke-basedb.mpub deleted file mode 100644 index 6482de616..000000000 --- a/src/auditor/revoke-basedb.mpub +++ /dev/null @@ -1 +0,0 @@ -NG08W20XYEN3M663JQ0THGSRH2QT7Y3390933FVSZE033Q9A9XE0 diff --git a/src/auditor/revoke-basedb.sql b/src/auditor/revoke-basedb.sql deleted file mode 100644 index d4f9f1e65..000000000 --- a/src/auditor/revoke-basedb.sql +++ /dev/null @@ -1,4892 +0,0 @@ --- --- PostgreSQL database dump --- - --- Dumped from database version 10.5 (Debian 10.5-1) --- Dumped by pg_dump version 10.5 (Debian 10.5-1) - -SET statement_timeout = 0; -SET lock_timeout = 0; -SET idle_in_transaction_session_timeout = 0; -SET client_encoding = 'UTF8'; -SET standard_conforming_strings = on; -SELECT pg_catalog.set_config('search_path', '', false); -SET check_function_bodies = false; -SET client_min_messages = warning; -SET row_security = off; - --- --- Name: _v; Type: SCHEMA; Schema: -; Owner: - --- - -CREATE SCHEMA _v; - - --- --- Name: SCHEMA _v; Type: COMMENT; Schema: -; Owner: - --- - -COMMENT ON SCHEMA _v IS 'Schema for versioning data and functionality.'; - - --- --- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - --- - -CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; - - --- --- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - --- - -COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; - - --- --- Name: assert_patch_is_applied(text); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_patch_is_applied(in_patch_name text) RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE - t_text TEXT; -BEGIN - SELECT patch_name INTO t_text FROM _v.patches WHERE patch_name = in_patch_name; - IF NOT FOUND THEN - RAISE EXCEPTION 'Patch % is not applied!', in_patch_name; - END IF; - RETURN format('Patch %s is applied.', in_patch_name); -END; -$$; - - --- --- Name: FUNCTION assert_patch_is_applied(in_patch_name text); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_patch_is_applied(in_patch_name text) IS 'Function that can be used to make sure that patch has been applied.'; - - --- --- Name: assert_user_is_not_superuser(); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_user_is_not_superuser() RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE - v_super bool; -BEGIN - SELECT usesuper INTO v_super FROM pg_user WHERE usename = current_user; - IF v_super THEN - RAISE EXCEPTION 'Current user is superuser - cannot continue.'; - END IF; - RETURN 'assert_user_is_not_superuser: OK'; -END; -$$; - - --- --- Name: FUNCTION assert_user_is_not_superuser(); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_user_is_not_superuser() IS 'Function that can be used to make sure that patch is being applied using normal (not superuser) account.'; - - --- --- Name: assert_user_is_one_of(text[]); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_user_is_one_of(VARIADIC p_acceptable_users text[]) RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE -BEGIN - IF current_user = any( p_acceptable_users ) THEN - RETURN 'assert_user_is_one_of: OK'; - END IF; - RAISE EXCEPTION 'User is not one of: % - cannot continue.', p_acceptable_users; -END; -$$; - - --- --- Name: FUNCTION assert_user_is_one_of(VARIADIC p_acceptable_users text[]); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_user_is_one_of(VARIADIC p_acceptable_users text[]) IS 'Function that can be used to make sure that patch is being applied by one of defined users.'; - - --- --- Name: assert_user_is_superuser(); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.assert_user_is_superuser() RETURNS text - LANGUAGE plpgsql - AS $$ -DECLARE - v_super bool; -BEGIN - SELECT usesuper INTO v_super FROM pg_user WHERE usename = current_user; - IF v_super THEN - RETURN 'assert_user_is_superuser: OK'; - END IF; - RAISE EXCEPTION 'Current user is not superuser - cannot continue.'; -END; -$$; - - --- --- Name: FUNCTION assert_user_is_superuser(); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.assert_user_is_superuser() IS 'Function that can be used to make sure that patch is being applied using superuser account.'; - - --- --- Name: register_patch(text); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.register_patch(text) RETURNS SETOF integer - LANGUAGE sql - AS $_$ - SELECT _v.register_patch( $1, NULL, NULL ); -$_$; - - --- --- Name: FUNCTION register_patch(text); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.register_patch(text) IS 'Wrapper to allow registration of patches without requirements and conflicts.'; - - --- --- Name: register_patch(text, text[]); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.register_patch(text, text[]) RETURNS SETOF integer - LANGUAGE sql - AS $_$ - SELECT _v.register_patch( $1, $2, NULL ); -$_$; - - --- --- Name: FUNCTION register_patch(text, text[]); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.register_patch(text, text[]) IS 'Wrapper to allow registration of patches without conflicts.'; - - --- --- Name: register_patch(text, text[], text[]); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.register_patch(in_patch_name text, in_requirements text[], in_conflicts text[], OUT versioning integer) RETURNS SETOF integer - LANGUAGE plpgsql - AS $$ -DECLARE - t_text TEXT; - t_text_a TEXT[]; - i INT4; -BEGIN - -- Thanks to this we know only one patch will be applied at a time - LOCK TABLE _v.patches IN EXCLUSIVE MODE; - - SELECT patch_name INTO t_text FROM _v.patches WHERE patch_name = in_patch_name; - IF FOUND THEN - RAISE EXCEPTION 'Patch % is already applied!', in_patch_name; - END IF; - - t_text_a := ARRAY( SELECT patch_name FROM _v.patches WHERE patch_name = any( in_conflicts ) ); - IF array_upper( t_text_a, 1 ) IS NOT NULL THEN - RAISE EXCEPTION 'Versioning patches conflict. Conflicting patche(s) installed: %.', array_to_string( t_text_a, ', ' ); - END IF; - - IF array_upper( in_requirements, 1 ) IS NOT NULL THEN - t_text_a := '{}'; - FOR i IN array_lower( in_requirements, 1 ) .. array_upper( in_requirements, 1 ) LOOP - SELECT patch_name INTO t_text FROM _v.patches WHERE patch_name = in_requirements[i]; - IF NOT FOUND THEN - t_text_a := t_text_a || in_requirements[i]; - END IF; - END LOOP; - IF array_upper( t_text_a, 1 ) IS NOT NULL THEN - RAISE EXCEPTION 'Missing prerequisite(s): %.', array_to_string( t_text_a, ', ' ); - END IF; - END IF; - - INSERT INTO _v.patches (patch_name, applied_tsz, applied_by, requires, conflicts ) VALUES ( in_patch_name, now(), current_user, coalesce( in_requirements, '{}' ), coalesce( in_conflicts, '{}' ) ); - RETURN; -END; -$$; - - --- --- Name: FUNCTION register_patch(in_patch_name text, in_requirements text[], in_conflicts text[], OUT versioning integer); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.register_patch(in_patch_name text, in_requirements text[], in_conflicts text[], OUT versioning integer) IS 'Function to register patches in database. Raises exception if there are conflicts, prerequisites are not installed or the migration has already been installed.'; - - --- --- Name: unregister_patch(text); Type: FUNCTION; Schema: _v; Owner: - --- - -CREATE FUNCTION _v.unregister_patch(in_patch_name text, OUT versioning integer) RETURNS SETOF integer - LANGUAGE plpgsql - AS $$ -DECLARE - i INT4; - t_text_a TEXT[]; -BEGIN - -- Thanks to this we know only one patch will be applied at a time - LOCK TABLE _v.patches IN EXCLUSIVE MODE; - - t_text_a := ARRAY( SELECT patch_name FROM _v.patches WHERE in_patch_name = ANY( requires ) ); - IF array_upper( t_text_a, 1 ) IS NOT NULL THEN - RAISE EXCEPTION 'Cannot uninstall %, as it is required by: %.', in_patch_name, array_to_string( t_text_a, ', ' ); - END IF; - - DELETE FROM _v.patches WHERE patch_name = in_patch_name; - GET DIAGNOSTICS i = ROW_COUNT; - IF i < 1 THEN - RAISE EXCEPTION 'Patch % is not installed, so it can''t be uninstalled!', in_patch_name; - END IF; - - RETURN; -END; -$$; - - --- --- Name: FUNCTION unregister_patch(in_patch_name text, OUT versioning integer); Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON FUNCTION _v.unregister_patch(in_patch_name text, OUT versioning integer) IS 'Function to unregister patches in database. Dies if the patch is not registered, or if unregistering it would break dependencies.'; - - -SET default_tablespace = ''; - -SET default_with_oids = false; - --- --- Name: patches; Type: TABLE; Schema: _v; Owner: - --- - -CREATE TABLE _v.patches ( - patch_name text NOT NULL, - applied_tsz timestamp with time zone DEFAULT now() NOT NULL, - applied_by text NOT NULL, - requires text[], - conflicts text[] -); - - --- --- Name: TABLE patches; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON TABLE _v.patches IS 'Contains information about what patches are currently applied on database.'; - - --- --- Name: COLUMN patches.patch_name; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.patch_name IS 'Name of patch, has to be unique for every patch.'; - - --- --- Name: COLUMN patches.applied_tsz; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.applied_tsz IS 'When the patch was applied.'; - - --- --- Name: COLUMN patches.applied_by; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.applied_by IS 'Who applied this patch (PostgreSQL username)'; - - --- --- Name: COLUMN patches.requires; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.requires IS 'List of patches that are required for given patch.'; - - --- --- Name: COLUMN patches.conflicts; Type: COMMENT; Schema: _v; Owner: - --- - -COMMENT ON COLUMN _v.patches.conflicts IS 'List of patches that conflict with given patch.'; - - --- --- Name: aggregation_tracking; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.aggregation_tracking ( - aggregation_serial_id bigint NOT NULL, - deposit_serial_id bigint NOT NULL, - wtid_raw bytea -); - - --- --- Name: TABLE aggregation_tracking; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.aggregation_tracking IS 'mapping from wire transfer identifiers (WTID) to deposits (and back)'; - - --- --- Name: aggregation_tracking_aggregation_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.aggregation_tracking_aggregation_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: aggregation_tracking_aggregation_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.aggregation_tracking_aggregation_serial_id_seq OWNED BY public.aggregation_tracking.aggregation_serial_id; - - --- --- Name: app_bankaccount; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.app_bankaccount ( - is_public boolean NOT NULL, - account_no integer NOT NULL, - balance character varying NOT NULL, - user_id integer NOT NULL -); - - --- --- Name: app_bankaccount_account_no_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.app_bankaccount_account_no_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: app_bankaccount_account_no_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.app_bankaccount_account_no_seq OWNED BY public.app_bankaccount.account_no; - - --- --- Name: app_banktransaction; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.app_banktransaction ( - id integer NOT NULL, - amount character varying NOT NULL, - subject character varying(200) NOT NULL, - date timestamp with time zone NOT NULL, - cancelled boolean NOT NULL, - request_uid character varying(128) NOT NULL, - credit_account_id integer NOT NULL, - debit_account_id integer NOT NULL -); - - --- --- Name: app_banktransaction_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.app_banktransaction_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: app_banktransaction_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.app_banktransaction_id_seq OWNED BY public.app_banktransaction.id; - - --- --- Name: app_talerwithdrawoperation; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.app_talerwithdrawoperation ( - withdraw_id uuid NOT NULL, - amount character varying NOT NULL, - selection_done boolean NOT NULL, - confirmation_done boolean NOT NULL, - aborted boolean NOT NULL, - selected_reserve_pub text, - selected_exchange_account_id integer, - withdraw_account_id integer NOT NULL -); - - --- --- Name: auditor_balance_summary; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_balance_summary ( - master_pub bytea, - denom_balance_val bigint NOT NULL, - denom_balance_frac integer NOT NULL, - deposit_fee_balance_val bigint NOT NULL, - deposit_fee_balance_frac integer NOT NULL, - melt_fee_balance_val bigint NOT NULL, - melt_fee_balance_frac integer NOT NULL, - refund_fee_balance_val bigint NOT NULL, - refund_fee_balance_frac integer NOT NULL, - risk_val bigint NOT NULL, - risk_frac integer NOT NULL, - loss_val bigint NOT NULL, - loss_frac integer NOT NULL, - irregular_recoup_val bigint NOT NULL, - irregular_recoup_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_balance_summary; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_balance_summary IS 'the sum of the outstanding coins from auditor_denomination_pending (denom_pubs must belong to the respectives exchange master public key); it represents the auditor_balance_summary of the exchange at this point (modulo unexpected historic_loss-style events where denomination keys are compromised)'; - - --- --- Name: auditor_denomination_pending; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_denomination_pending ( - denom_pub_hash bytea NOT NULL, - denom_balance_val bigint NOT NULL, - denom_balance_frac integer NOT NULL, - denom_loss_val bigint NOT NULL, - denom_loss_frac integer NOT NULL, - num_issued bigint NOT NULL, - denom_risk_val bigint NOT NULL, - denom_risk_frac integer NOT NULL, - recoup_loss_val bigint NOT NULL, - recoup_loss_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_denomination_pending; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_denomination_pending IS 'outstanding denomination coins that the exchange is aware of and what the respective balances are (outstanding as well as issued overall which implies the maximum value at risk).'; - - --- --- Name: COLUMN auditor_denomination_pending.num_issued; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_denomination_pending.num_issued IS 'counts the number of coins issued (withdraw, refresh) of this denomination'; - - --- --- Name: COLUMN auditor_denomination_pending.denom_risk_val; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_denomination_pending.denom_risk_val IS 'amount that could theoretically be lost in the future due to recoup operations'; - - --- --- Name: COLUMN auditor_denomination_pending.recoup_loss_val; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_denomination_pending.recoup_loss_val IS 'amount actually lost due to recoup operations past revocation'; - - --- --- Name: auditor_denominations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_denominations ( - denom_pub_hash bytea NOT NULL, - master_pub bytea, - valid_from bigint NOT NULL, - expire_withdraw bigint NOT NULL, - expire_deposit bigint NOT NULL, - expire_legal bigint NOT NULL, - coin_val bigint NOT NULL, - coin_frac integer NOT NULL, - fee_withdraw_val bigint NOT NULL, - fee_withdraw_frac integer NOT NULL, - fee_deposit_val bigint NOT NULL, - fee_deposit_frac integer NOT NULL, - fee_refresh_val bigint NOT NULL, - fee_refresh_frac integer NOT NULL, - fee_refund_val bigint NOT NULL, - fee_refund_frac integer NOT NULL, - CONSTRAINT auditor_denominations_denom_pub_hash_check CHECK ((length(denom_pub_hash) = 64)) -); - - --- --- Name: TABLE auditor_denominations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_denominations IS 'denomination keys the auditor is aware of'; - - --- --- Name: auditor_exchange_signkeys; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_exchange_signkeys ( - master_pub bytea, - ep_start bigint NOT NULL, - ep_expire bigint NOT NULL, - ep_end bigint NOT NULL, - exchange_pub bytea NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT auditor_exchange_signkeys_exchange_pub_check CHECK ((length(exchange_pub) = 32)), - CONSTRAINT auditor_exchange_signkeys_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE auditor_exchange_signkeys; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_exchange_signkeys IS 'list of the online signing keys of exchanges we are auditing'; - - --- --- Name: auditor_exchanges; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_exchanges ( - master_pub bytea NOT NULL, - exchange_url character varying NOT NULL, - CONSTRAINT auditor_exchanges_master_pub_check CHECK ((length(master_pub) = 32)) -); - - --- --- Name: TABLE auditor_exchanges; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_exchanges IS 'list of the exchanges we are auditing'; - - --- --- Name: auditor_historic_denomination_revenue; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_historic_denomination_revenue ( - master_pub bytea, - denom_pub_hash bytea NOT NULL, - revenue_timestamp bigint NOT NULL, - revenue_balance_val bigint NOT NULL, - revenue_balance_frac integer NOT NULL, - loss_balance_val bigint NOT NULL, - loss_balance_frac integer NOT NULL, - CONSTRAINT auditor_historic_denomination_revenue_denom_pub_hash_check CHECK ((length(denom_pub_hash) = 64)) -); - - --- --- Name: TABLE auditor_historic_denomination_revenue; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_historic_denomination_revenue IS 'Table with historic profits; basically, when a denom_pub has expired and everything associated with it is garbage collected, the final profits end up in here; note that the denom_pub here is not a foreign key, we just keep it as a reference point.'; - - --- --- Name: COLUMN auditor_historic_denomination_revenue.revenue_balance_val; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.auditor_historic_denomination_revenue.revenue_balance_val IS 'the sum of all of the profits we made on the coin except for withdraw fees (which are in historic_reserve_revenue); so this includes the deposit, melt and refund fees'; - - --- --- Name: auditor_historic_reserve_summary; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_historic_reserve_summary ( - master_pub bytea, - start_date bigint NOT NULL, - end_date bigint NOT NULL, - reserve_profits_val bigint NOT NULL, - reserve_profits_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_historic_reserve_summary; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_historic_reserve_summary IS 'historic profits from reserves; we eventually GC auditor_historic_reserve_revenue, and then store the totals in here (by time intervals).'; - - --- --- Name: auditor_predicted_result; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_predicted_result ( - master_pub bytea, - balance_val bigint NOT NULL, - balance_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_predicted_result; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_predicted_result IS 'Table with the sum of the ledger, auditor_historic_revenue and the auditor_reserve_balance. This is the final amount that the exchange should have in its bank account right now.'; - - --- --- Name: auditor_progress_aggregation; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_aggregation ( - master_pub bytea NOT NULL, - last_wire_out_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_aggregation; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_aggregation IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_progress_coin; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_coin ( - master_pub bytea NOT NULL, - last_withdraw_serial_id bigint DEFAULT 0 NOT NULL, - last_deposit_serial_id bigint DEFAULT 0 NOT NULL, - last_melt_serial_id bigint DEFAULT 0 NOT NULL, - last_refund_serial_id bigint DEFAULT 0 NOT NULL, - last_recoup_serial_id bigint DEFAULT 0 NOT NULL, - last_recoup_refresh_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_coin; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_coin IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_progress_deposit_confirmation; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_deposit_confirmation ( - master_pub bytea NOT NULL, - last_deposit_confirmation_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_deposit_confirmation; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_deposit_confirmation IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_progress_reserve; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_progress_reserve ( - master_pub bytea NOT NULL, - last_reserve_in_serial_id bigint DEFAULT 0 NOT NULL, - last_reserve_out_serial_id bigint DEFAULT 0 NOT NULL, - last_reserve_recoup_serial_id bigint DEFAULT 0 NOT NULL, - last_reserve_close_serial_id bigint DEFAULT 0 NOT NULL -); - - --- --- Name: TABLE auditor_progress_reserve; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_progress_reserve IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: auditor_reserve_balance; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_reserve_balance ( - master_pub bytea, - reserve_balance_val bigint NOT NULL, - reserve_balance_frac integer NOT NULL, - withdraw_fee_balance_val bigint NOT NULL, - withdraw_fee_balance_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_reserve_balance; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_reserve_balance IS 'sum of the balances of all customer reserves (by exchange master public key)'; - - --- --- Name: auditor_reserves; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_reserves ( - reserve_pub bytea NOT NULL, - master_pub bytea, - reserve_balance_val bigint NOT NULL, - reserve_balance_frac integer NOT NULL, - withdraw_fee_balance_val bigint NOT NULL, - withdraw_fee_balance_frac integer NOT NULL, - expiration_date bigint NOT NULL, - auditor_reserves_rowid bigint NOT NULL, - origin_account text, - CONSTRAINT auditor_reserves_reserve_pub_check CHECK ((length(reserve_pub) = 32)) -); - - --- --- Name: TABLE auditor_reserves; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_reserves IS 'all of the customer reserves and their respective balances that the auditor is aware of'; - - --- --- Name: auditor_reserves_auditor_reserves_rowid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auditor_reserves_auditor_reserves_rowid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auditor_reserves_auditor_reserves_rowid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auditor_reserves_auditor_reserves_rowid_seq OWNED BY public.auditor_reserves.auditor_reserves_rowid; - - --- --- Name: auditor_wire_fee_balance; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auditor_wire_fee_balance ( - master_pub bytea, - wire_fee_balance_val bigint NOT NULL, - wire_fee_balance_frac integer NOT NULL -); - - --- --- Name: TABLE auditor_wire_fee_balance; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.auditor_wire_fee_balance IS 'sum of the balances of all wire fees (by exchange master public key)'; - - --- --- Name: auth_group; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_group ( - id integer NOT NULL, - name character varying(150) NOT NULL -); - - --- --- Name: auth_group_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_group_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_group_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_group_id_seq OWNED BY public.auth_group.id; - - --- --- Name: auth_group_permissions; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_group_permissions ( - id integer NOT NULL, - group_id integer NOT NULL, - permission_id integer NOT NULL -); - - --- --- Name: auth_group_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_group_permissions_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_group_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_group_permissions_id_seq OWNED BY public.auth_group_permissions.id; - - --- --- Name: auth_permission; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_permission ( - id integer NOT NULL, - name character varying(255) NOT NULL, - content_type_id integer NOT NULL, - codename character varying(100) NOT NULL -); - - --- --- Name: auth_permission_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_permission_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_permission_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_permission_id_seq OWNED BY public.auth_permission.id; - - --- --- Name: auth_user; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_user ( - id integer NOT NULL, - password character varying(128) NOT NULL, - last_login timestamp with time zone, - is_superuser boolean NOT NULL, - username character varying(150) NOT NULL, - first_name character varying(30) NOT NULL, - last_name character varying(150) NOT NULL, - email character varying(254) NOT NULL, - is_staff boolean NOT NULL, - is_active boolean NOT NULL, - date_joined timestamp with time zone NOT NULL -); - - --- --- Name: auth_user_groups; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_user_groups ( - id integer NOT NULL, - user_id integer NOT NULL, - group_id integer NOT NULL -); - - --- --- Name: auth_user_groups_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_user_groups_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_user_groups_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_user_groups_id_seq OWNED BY public.auth_user_groups.id; - - --- --- Name: auth_user_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_user_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_user_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_user_id_seq OWNED BY public.auth_user.id; - - --- --- Name: auth_user_user_permissions; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.auth_user_user_permissions ( - id integer NOT NULL, - user_id integer NOT NULL, - permission_id integer NOT NULL -); - - --- --- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.auth_user_user_permissions_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.auth_user_user_permissions_id_seq OWNED BY public.auth_user_user_permissions.id; - - --- --- Name: denomination_revocations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.denomination_revocations ( - denom_revocations_serial_id bigint NOT NULL, - denom_pub_hash bytea NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT denomination_revocations_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE denomination_revocations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.denomination_revocations IS 'remembering which denomination keys have been revoked'; - - --- --- Name: denomination_revocations_denom_revocations_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.denomination_revocations_denom_revocations_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: denomination_revocations_denom_revocations_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.denomination_revocations_denom_revocations_serial_id_seq OWNED BY public.denomination_revocations.denom_revocations_serial_id; - - --- --- Name: denominations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.denominations ( - denom_pub_hash bytea NOT NULL, - denom_pub bytea NOT NULL, - master_pub bytea NOT NULL, - master_sig bytea NOT NULL, - valid_from bigint NOT NULL, - expire_withdraw bigint NOT NULL, - expire_deposit bigint NOT NULL, - expire_legal bigint NOT NULL, - coin_val bigint NOT NULL, - coin_frac integer NOT NULL, - fee_withdraw_val bigint NOT NULL, - fee_withdraw_frac integer NOT NULL, - fee_deposit_val bigint NOT NULL, - fee_deposit_frac integer NOT NULL, - fee_refresh_val bigint NOT NULL, - fee_refresh_frac integer NOT NULL, - fee_refund_val bigint NOT NULL, - fee_refund_frac integer NOT NULL, - CONSTRAINT denominations_denom_pub_hash_check CHECK ((length(denom_pub_hash) = 64)), - CONSTRAINT denominations_master_pub_check CHECK ((length(master_pub) = 32)), - CONSTRAINT denominations_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE denominations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.denominations IS 'Main denominations table. All the coins the exchange knows about.'; - - --- --- Name: deposit_confirmations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deposit_confirmations ( - master_pub bytea, - serial_id bigint NOT NULL, - h_contract_terms bytea NOT NULL, - h_wire bytea NOT NULL, - "timestamp" bigint NOT NULL, - refund_deadline bigint NOT NULL, - amount_without_fee_val bigint NOT NULL, - amount_without_fee_frac integer NOT NULL, - coin_pub bytea NOT NULL, - merchant_pub bytea NOT NULL, - exchange_sig bytea NOT NULL, - exchange_pub bytea NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT deposit_confirmations_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT deposit_confirmations_exchange_pub_check CHECK ((length(exchange_pub) = 32)), - CONSTRAINT deposit_confirmations_exchange_sig_check CHECK ((length(exchange_sig) = 64)), - CONSTRAINT deposit_confirmations_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT deposit_confirmations_h_wire_check CHECK ((length(h_wire) = 64)), - CONSTRAINT deposit_confirmations_master_sig_check CHECK ((length(master_sig) = 64)), - CONSTRAINT deposit_confirmations_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: TABLE deposit_confirmations; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.deposit_confirmations IS 'deposit confirmation sent to us by merchants; we must check that the exchange reported these properly.'; - - --- --- Name: deposit_confirmations_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.deposit_confirmations_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: deposit_confirmations_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.deposit_confirmations_serial_id_seq OWNED BY public.deposit_confirmations.serial_id; - - --- --- Name: deposits; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.deposits ( - deposit_serial_id bigint NOT NULL, - coin_pub bytea NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - "timestamp" bigint NOT NULL, - refund_deadline bigint NOT NULL, - wire_deadline bigint NOT NULL, - merchant_pub bytea NOT NULL, - h_contract_terms bytea NOT NULL, - h_wire bytea NOT NULL, - coin_sig bytea NOT NULL, - wire text NOT NULL, - tiny boolean DEFAULT false NOT NULL, - done boolean DEFAULT false NOT NULL, - CONSTRAINT deposits_coin_sig_check CHECK ((length(coin_sig) = 64)), - CONSTRAINT deposits_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT deposits_h_wire_check CHECK ((length(h_wire) = 64)), - CONSTRAINT deposits_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: TABLE deposits; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.deposits IS 'Deposits we have received and for which we need to make (aggregate) wire transfers (and manage refunds).'; - - --- --- Name: COLUMN deposits.tiny; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposits.tiny IS 'Set to TRUE if we decided that the amount is too small to ever trigger a wire transfer by itself (requires real aggregation)'; - - --- --- Name: COLUMN deposits.done; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.deposits.done IS 'Set to TRUE once we have included this deposit in some aggregate wire transfer to the merchant'; - - --- --- Name: deposits_deposit_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.deposits_deposit_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: deposits_deposit_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.deposits_deposit_serial_id_seq OWNED BY public.deposits.deposit_serial_id; - - --- --- Name: django_content_type; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.django_content_type ( - id integer NOT NULL, - app_label character varying(100) NOT NULL, - model character varying(100) NOT NULL -); - - --- --- Name: django_content_type_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.django_content_type_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: django_content_type_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.django_content_type_id_seq OWNED BY public.django_content_type.id; - - --- --- Name: django_migrations; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.django_migrations ( - id integer NOT NULL, - app character varying(255) NOT NULL, - name character varying(255) NOT NULL, - applied timestamp with time zone NOT NULL -); - - --- --- Name: django_migrations_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.django_migrations_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: django_migrations_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.django_migrations_id_seq OWNED BY public.django_migrations.id; - - --- --- Name: django_session; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.django_session ( - session_key character varying(40) NOT NULL, - session_data text NOT NULL, - expire_date timestamp with time zone NOT NULL -); - - --- --- Name: exchange_wire_fees; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.exchange_wire_fees ( - exchange_pub bytea NOT NULL, - h_wire_method bytea NOT NULL, - wire_fee_val bigint NOT NULL, - wire_fee_frac integer NOT NULL, - closing_fee_val bigint NOT NULL, - closing_fee_frac integer NOT NULL, - start_date bigint NOT NULL, - end_date bigint NOT NULL, - exchange_sig bytea NOT NULL, - CONSTRAINT exchange_wire_fees_exchange_pub_check CHECK ((length(exchange_pub) = 32)), - CONSTRAINT exchange_wire_fees_exchange_sig_check CHECK ((length(exchange_sig) = 64)), - CONSTRAINT exchange_wire_fees_h_wire_method_check CHECK ((length(h_wire_method) = 64)) -); - - --- --- Name: known_coins; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.known_coins ( - coin_pub bytea NOT NULL, - denom_pub_hash bytea NOT NULL, - denom_sig bytea NOT NULL, - CONSTRAINT known_coins_coin_pub_check CHECK ((length(coin_pub) = 32)) -); - - --- --- Name: TABLE known_coins; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.known_coins IS 'information about coins and their signatures, so we do not have to store the signatures more than once if a coin is involved in multiple operations'; - - --- --- Name: merchant_contract_terms; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_contract_terms ( - order_id character varying NOT NULL, - merchant_pub bytea NOT NULL, - contract_terms bytea NOT NULL, - h_contract_terms bytea NOT NULL, - "timestamp" bigint NOT NULL, - row_id bigint NOT NULL, - paid boolean DEFAULT false NOT NULL, - CONSTRAINT merchant_contract_terms_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT merchant_contract_terms_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_contract_terms_row_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.merchant_contract_terms_row_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: merchant_contract_terms_row_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.merchant_contract_terms_row_id_seq OWNED BY public.merchant_contract_terms.row_id; - - --- --- Name: merchant_deposits; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_deposits ( - h_contract_terms bytea NOT NULL, - merchant_pub bytea NOT NULL, - coin_pub bytea NOT NULL, - exchange_url character varying NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - deposit_fee_val bigint NOT NULL, - deposit_fee_frac integer NOT NULL, - refund_fee_val bigint NOT NULL, - refund_fee_frac integer NOT NULL, - wire_fee_val bigint NOT NULL, - wire_fee_frac integer NOT NULL, - signkey_pub bytea NOT NULL, - exchange_proof bytea NOT NULL, - CONSTRAINT merchant_deposits_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT merchant_deposits_merchant_pub_check CHECK ((length(merchant_pub) = 32)), - CONSTRAINT merchant_deposits_signkey_pub_check CHECK ((length(signkey_pub) = 32)) -); - - --- --- Name: merchant_orders; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_orders ( - order_id character varying NOT NULL, - merchant_pub bytea NOT NULL, - contract_terms bytea NOT NULL, - "timestamp" bigint NOT NULL, - CONSTRAINT merchant_orders_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_proofs; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_proofs ( - exchange_url character varying NOT NULL, - wtid bytea NOT NULL, - execution_time bigint NOT NULL, - signkey_pub bytea NOT NULL, - proof bytea NOT NULL, - CONSTRAINT merchant_proofs_signkey_pub_check CHECK ((length(signkey_pub) = 32)), - CONSTRAINT merchant_proofs_wtid_check CHECK ((length(wtid) = 32)) -); - - --- --- Name: merchant_refunds; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_refunds ( - rtransaction_id bigint NOT NULL, - merchant_pub bytea NOT NULL, - h_contract_terms bytea NOT NULL, - coin_pub bytea NOT NULL, - reason character varying NOT NULL, - refund_amount_val bigint NOT NULL, - refund_amount_frac integer NOT NULL, - refund_fee_val bigint NOT NULL, - refund_fee_frac integer NOT NULL, - CONSTRAINT merchant_refunds_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT merchant_refunds_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_refunds_rtransaction_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.merchant_refunds_rtransaction_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: merchant_refunds_rtransaction_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.merchant_refunds_rtransaction_id_seq OWNED BY public.merchant_refunds.rtransaction_id; - - --- --- Name: merchant_session_info; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_session_info ( - session_id character varying NOT NULL, - fulfillment_url character varying NOT NULL, - order_id character varying NOT NULL, - merchant_pub bytea NOT NULL, - "timestamp" bigint NOT NULL, - CONSTRAINT merchant_session_info_merchant_pub_check CHECK ((length(merchant_pub) = 32)) -); - - --- --- Name: merchant_tip_pickups; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tip_pickups ( - tip_id bytea NOT NULL, - pickup_id bytea NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - CONSTRAINT merchant_tip_pickups_pickup_id_check CHECK ((length(pickup_id) = 64)) -); - - --- --- Name: merchant_tip_reserve_credits; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tip_reserve_credits ( - reserve_priv bytea NOT NULL, - credit_uuid bytea NOT NULL, - "timestamp" bigint NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - CONSTRAINT merchant_tip_reserve_credits_credit_uuid_check CHECK ((length(credit_uuid) = 64)), - CONSTRAINT merchant_tip_reserve_credits_reserve_priv_check CHECK ((length(reserve_priv) = 32)) -); - - --- --- Name: merchant_tip_reserves; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tip_reserves ( - reserve_priv bytea NOT NULL, - expiration bigint NOT NULL, - balance_val bigint NOT NULL, - balance_frac integer NOT NULL, - CONSTRAINT merchant_tip_reserves_reserve_priv_check CHECK ((length(reserve_priv) = 32)) -); - - --- --- Name: merchant_tips; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_tips ( - reserve_priv bytea NOT NULL, - tip_id bytea NOT NULL, - exchange_url character varying NOT NULL, - justification character varying NOT NULL, - extra bytea NOT NULL, - "timestamp" bigint NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - left_val bigint NOT NULL, - left_frac integer NOT NULL, - CONSTRAINT merchant_tips_reserve_priv_check CHECK ((length(reserve_priv) = 32)), - CONSTRAINT merchant_tips_tip_id_check CHECK ((length(tip_id) = 64)) -); - - --- --- Name: merchant_transfers; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.merchant_transfers ( - h_contract_terms bytea NOT NULL, - coin_pub bytea NOT NULL, - wtid bytea NOT NULL, - CONSTRAINT merchant_transfers_coin_pub_check CHECK ((length(coin_pub) = 32)), - CONSTRAINT merchant_transfers_wtid_check CHECK ((length(wtid) = 32)) -); - - --- --- Name: prewire; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.prewire ( - prewire_uuid bigint NOT NULL, - type text NOT NULL, - finished boolean DEFAULT false NOT NULL, - buf bytea NOT NULL -); - - --- --- Name: TABLE prewire; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.prewire IS 'pre-commit data for wire transfers we are about to execute'; - - --- --- Name: prewire_prewire_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.prewire_prewire_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: prewire_prewire_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.prewire_prewire_uuid_seq OWNED BY public.prewire.prewire_uuid; - - --- --- Name: recoup; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.recoup ( - recoup_uuid bigint NOT NULL, - coin_pub bytea NOT NULL, - coin_sig bytea NOT NULL, - coin_blind bytea NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - "timestamp" bigint NOT NULL, - h_blind_ev bytea NOT NULL, - CONSTRAINT recoup_coin_blind_check CHECK ((length(coin_blind) = 32)), - CONSTRAINT recoup_coin_sig_check CHECK ((length(coin_sig) = 64)) -); - - --- --- Name: TABLE recoup; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.recoup IS 'Information about recoups that were executed'; - - --- --- Name: COLUMN recoup.coin_pub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.recoup.coin_pub IS 'Do not CASCADE ON DROP on the coin_pub, as we may keep the coin alive!'; - - --- --- Name: recoup_recoup_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.recoup_recoup_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: recoup_recoup_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.recoup_recoup_uuid_seq OWNED BY public.recoup.recoup_uuid; - - --- --- Name: recoup_refresh; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.recoup_refresh ( - recoup_refresh_uuid bigint NOT NULL, - coin_pub bytea NOT NULL, - coin_sig bytea NOT NULL, - coin_blind bytea NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - "timestamp" bigint NOT NULL, - h_blind_ev bytea NOT NULL, - CONSTRAINT recoup_refresh_coin_blind_check CHECK ((length(coin_blind) = 32)), - CONSTRAINT recoup_refresh_coin_sig_check CHECK ((length(coin_sig) = 64)) -); - - --- --- Name: COLUMN recoup_refresh.coin_pub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.recoup_refresh.coin_pub IS 'Do not CASCADE ON DROP on the coin_pub, as we may keep the coin alive!'; - - --- --- Name: recoup_refresh_recoup_refresh_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.recoup_refresh_recoup_refresh_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: recoup_refresh_recoup_refresh_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.recoup_refresh_recoup_refresh_uuid_seq OWNED BY public.recoup_refresh.recoup_refresh_uuid; - - --- --- Name: refresh_commitments; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refresh_commitments ( - melt_serial_id bigint NOT NULL, - rc bytea NOT NULL, - old_coin_pub bytea NOT NULL, - old_coin_sig bytea NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - noreveal_index integer NOT NULL, - CONSTRAINT refresh_commitments_old_coin_sig_check CHECK ((length(old_coin_sig) = 64)), - CONSTRAINT refresh_commitments_rc_check CHECK ((length(rc) = 64)) -); - - --- --- Name: TABLE refresh_commitments; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refresh_commitments IS 'Commitments made when melting coins and the gamma value chosen by the exchange.'; - - --- --- Name: refresh_commitments_melt_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.refresh_commitments_melt_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: refresh_commitments_melt_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.refresh_commitments_melt_serial_id_seq OWNED BY public.refresh_commitments.melt_serial_id; - - --- --- Name: refresh_revealed_coins; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refresh_revealed_coins ( - rc bytea NOT NULL, - freshcoin_index integer NOT NULL, - link_sig bytea NOT NULL, - denom_pub_hash bytea NOT NULL, - coin_ev bytea NOT NULL, - h_coin_ev bytea NOT NULL, - ev_sig bytea NOT NULL, - CONSTRAINT refresh_revealed_coins_h_coin_ev_check CHECK ((length(h_coin_ev) = 64)), - CONSTRAINT refresh_revealed_coins_link_sig_check CHECK ((length(link_sig) = 64)) -); - - --- --- Name: TABLE refresh_revealed_coins; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refresh_revealed_coins IS 'Revelations about the new coins that are to be created during a melting session.'; - - --- --- Name: COLUMN refresh_revealed_coins.rc; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.rc IS 'refresh commitment identifying the melt operation'; - - --- --- Name: COLUMN refresh_revealed_coins.freshcoin_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.freshcoin_index IS 'index of the fresh coin being created (one melt operation may result in multiple fresh coins)'; - - --- --- Name: COLUMN refresh_revealed_coins.coin_ev; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.coin_ev IS 'envelope of the new coin to be signed'; - - --- --- Name: COLUMN refresh_revealed_coins.h_coin_ev; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.h_coin_ev IS 'hash of the envelope of the new coin to be signed (for lookups)'; - - --- --- Name: COLUMN refresh_revealed_coins.ev_sig; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_revealed_coins.ev_sig IS 'exchange signature over the envelope'; - - --- --- Name: refresh_transfer_keys; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refresh_transfer_keys ( - rc bytea NOT NULL, - transfer_pub bytea NOT NULL, - transfer_privs bytea NOT NULL, - CONSTRAINT refresh_transfer_keys_transfer_pub_check CHECK ((length(transfer_pub) = 32)) -); - - --- --- Name: TABLE refresh_transfer_keys; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refresh_transfer_keys IS 'Transfer keys of a refresh operation (the data revealed to the exchange).'; - - --- --- Name: COLUMN refresh_transfer_keys.rc; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_transfer_keys.rc IS 'refresh commitment identifying the melt operation'; - - --- --- Name: COLUMN refresh_transfer_keys.transfer_pub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_transfer_keys.transfer_pub IS 'transfer public key for the gamma index'; - - --- --- Name: COLUMN refresh_transfer_keys.transfer_privs; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refresh_transfer_keys.transfer_privs IS 'array of TALER_CNC_KAPPA - 1 transfer private keys that have been revealed, with the gamma entry being skipped'; - - --- --- Name: refunds; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.refunds ( - refund_serial_id bigint NOT NULL, - coin_pub bytea NOT NULL, - merchant_pub bytea NOT NULL, - merchant_sig bytea NOT NULL, - h_contract_terms bytea NOT NULL, - rtransaction_id bigint NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - CONSTRAINT refunds_h_contract_terms_check CHECK ((length(h_contract_terms) = 64)), - CONSTRAINT refunds_merchant_pub_check CHECK ((length(merchant_pub) = 32)), - CONSTRAINT refunds_merchant_sig_check CHECK ((length(merchant_sig) = 64)) -); - - --- --- Name: TABLE refunds; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.refunds IS 'Data on coins that were refunded. Technically, refunds always apply against specific deposit operations involving a coin. The combination of coin_pub, merchant_pub, h_contract_terms and rtransaction_id MUST be unique, and we usually select by coin_pub so that one goes first.'; - - --- --- Name: COLUMN refunds.rtransaction_id; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.refunds.rtransaction_id IS 'used by the merchant to make refunds unique in case the same coin for the same deposit gets a subsequent (higher) refund'; - - --- --- Name: refunds_refund_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.refunds_refund_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: refunds_refund_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.refunds_refund_serial_id_seq OWNED BY public.refunds.refund_serial_id; - - --- --- Name: reserves; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves ( - reserve_pub bytea NOT NULL, - account_details text NOT NULL, - current_balance_val bigint NOT NULL, - current_balance_frac integer NOT NULL, - expiration_date bigint NOT NULL, - gc_date bigint NOT NULL, - CONSTRAINT reserves_reserve_pub_check CHECK ((length(reserve_pub) = 32)) -); - - --- --- Name: TABLE reserves; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves IS 'Summarizes the balance of a reserve. Updated when new funds are added or withdrawn.'; - - --- --- Name: COLUMN reserves.expiration_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves.expiration_date IS 'Used to trigger closing of reserves that have not been drained after some time'; - - --- --- Name: COLUMN reserves.gc_date; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves.gc_date IS 'Used to forget all information about a reserve during garbage collection'; - - --- --- Name: reserves_close; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves_close ( - close_uuid bigint NOT NULL, - reserve_pub bytea NOT NULL, - execution_date bigint NOT NULL, - wtid bytea NOT NULL, - receiver_account text NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - closing_fee_val bigint NOT NULL, - closing_fee_frac integer NOT NULL, - CONSTRAINT reserves_close_wtid_check CHECK ((length(wtid) = 32)) -); - - --- --- Name: TABLE reserves_close; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves_close IS 'wire transfers executed by the reserve to close reserves'; - - --- --- Name: reserves_close_close_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.reserves_close_close_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: reserves_close_close_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.reserves_close_close_uuid_seq OWNED BY public.reserves_close.close_uuid; - - --- --- Name: reserves_in; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves_in ( - reserve_in_serial_id bigint NOT NULL, - reserve_pub bytea NOT NULL, - wire_reference bigint NOT NULL, - credit_val bigint NOT NULL, - credit_frac integer NOT NULL, - sender_account_details text NOT NULL, - exchange_account_section text NOT NULL, - execution_date bigint NOT NULL -); - - --- --- Name: TABLE reserves_in; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves_in IS 'list of transfers of funds into the reserves, one per incoming wire transfer'; - - --- --- Name: reserves_in_reserve_in_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.reserves_in_reserve_in_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: reserves_in_reserve_in_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.reserves_in_reserve_in_serial_id_seq OWNED BY public.reserves_in.reserve_in_serial_id; - - --- --- Name: reserves_out; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.reserves_out ( - reserve_out_serial_id bigint NOT NULL, - h_blind_ev bytea NOT NULL, - denom_pub_hash bytea NOT NULL, - denom_sig bytea NOT NULL, - reserve_pub bytea NOT NULL, - reserve_sig bytea NOT NULL, - execution_date bigint NOT NULL, - amount_with_fee_val bigint NOT NULL, - amount_with_fee_frac integer NOT NULL, - CONSTRAINT reserves_out_h_blind_ev_check CHECK ((length(h_blind_ev) = 64)), - CONSTRAINT reserves_out_reserve_sig_check CHECK ((length(reserve_sig) = 64)) -); - - --- --- Name: TABLE reserves_out; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.reserves_out IS 'Withdraw operations performed on reserves.'; - - --- --- Name: COLUMN reserves_out.h_blind_ev; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves_out.h_blind_ev IS 'Hash of the blinded coin, used as primary key here so that broken clients that use a non-random coin or blinding factor fail to withdraw (otherwise they would fail on deposit when the coin is not unique there).'; - - --- --- Name: COLUMN reserves_out.denom_pub_hash; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON COLUMN public.reserves_out.denom_pub_hash IS 'We do not CASCADE ON DELETE here, we may keep the denomination data alive'; - - --- --- Name: reserves_out_reserve_out_serial_id_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.reserves_out_reserve_out_serial_id_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: reserves_out_reserve_out_serial_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.reserves_out_reserve_out_serial_id_seq OWNED BY public.reserves_out.reserve_out_serial_id; - - --- --- Name: wire_auditor_account_progress; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_auditor_account_progress ( - master_pub bytea NOT NULL, - account_name text NOT NULL, - last_wire_reserve_in_serial_id bigint DEFAULT 0 NOT NULL, - last_wire_wire_out_serial_id bigint DEFAULT 0 NOT NULL, - wire_in_off bigint, - wire_out_off bigint -); - - --- --- Name: TABLE wire_auditor_account_progress; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.wire_auditor_account_progress IS 'information as to which transactions the auditor has processed in the exchange database. Used for SELECTing the - statements to process. The indices include the last serial ID from the respective tables that we have processed. Thus, we need to select those table entries that are strictly larger (and process in monotonically increasing order).'; - - --- --- Name: wire_auditor_progress; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_auditor_progress ( - master_pub bytea NOT NULL, - last_timestamp bigint NOT NULL, - last_reserve_close_uuid bigint NOT NULL -); - - --- --- Name: wire_fee; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_fee ( - wire_method character varying NOT NULL, - start_date bigint NOT NULL, - end_date bigint NOT NULL, - wire_fee_val bigint NOT NULL, - wire_fee_frac integer NOT NULL, - closing_fee_val bigint NOT NULL, - closing_fee_frac integer NOT NULL, - master_sig bytea NOT NULL, - CONSTRAINT wire_fee_master_sig_check CHECK ((length(master_sig) = 64)) -); - - --- --- Name: TABLE wire_fee; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.wire_fee IS 'list of the wire fees of this exchange, by date'; - - --- --- Name: wire_out; Type: TABLE; Schema: public; Owner: - --- - -CREATE TABLE public.wire_out ( - wireout_uuid bigint NOT NULL, - execution_date bigint NOT NULL, - wtid_raw bytea NOT NULL, - wire_target text NOT NULL, - exchange_account_section text NOT NULL, - amount_val bigint NOT NULL, - amount_frac integer NOT NULL, - CONSTRAINT wire_out_wtid_raw_check CHECK ((length(wtid_raw) = 32)) -); - - --- --- Name: TABLE wire_out; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON TABLE public.wire_out IS 'wire transfers the exchange has executed'; - - --- --- Name: wire_out_wireout_uuid_seq; Type: SEQUENCE; Schema: public; Owner: - --- - -CREATE SEQUENCE public.wire_out_wireout_uuid_seq - START WITH 1 - INCREMENT BY 1 - NO MINVALUE - NO MAXVALUE - CACHE 1; - - --- --- Name: wire_out_wireout_uuid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - --- - -ALTER SEQUENCE public.wire_out_wireout_uuid_seq OWNED BY public.wire_out.wireout_uuid; - - --- --- Name: aggregation_tracking aggregation_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking ALTER COLUMN aggregation_serial_id SET DEFAULT nextval('public.aggregation_tracking_aggregation_serial_id_seq'::regclass); - - --- --- Name: app_bankaccount account_no; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount ALTER COLUMN account_no SET DEFAULT nextval('public.app_bankaccount_account_no_seq'::regclass); - - --- --- Name: app_banktransaction id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction ALTER COLUMN id SET DEFAULT nextval('public.app_banktransaction_id_seq'::regclass); - - --- --- Name: auditor_reserves auditor_reserves_rowid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserves ALTER COLUMN auditor_reserves_rowid SET DEFAULT nextval('public.auditor_reserves_auditor_reserves_rowid_seq'::regclass); - - --- --- Name: auth_group id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group ALTER COLUMN id SET DEFAULT nextval('public.auth_group_id_seq'::regclass); - - --- --- Name: auth_group_permissions id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions ALTER COLUMN id SET DEFAULT nextval('public.auth_group_permissions_id_seq'::regclass); - - --- --- Name: auth_permission id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission ALTER COLUMN id SET DEFAULT nextval('public.auth_permission_id_seq'::regclass); - - --- --- Name: auth_user id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user ALTER COLUMN id SET DEFAULT nextval('public.auth_user_id_seq'::regclass); - - --- --- Name: auth_user_groups id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups ALTER COLUMN id SET DEFAULT nextval('public.auth_user_groups_id_seq'::regclass); - - --- --- Name: auth_user_user_permissions id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions ALTER COLUMN id SET DEFAULT nextval('public.auth_user_user_permissions_id_seq'::regclass); - - --- --- Name: denomination_revocations denom_revocations_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations ALTER COLUMN denom_revocations_serial_id SET DEFAULT nextval('public.denomination_revocations_denom_revocations_serial_id_seq'::regclass); - - --- --- Name: deposit_confirmations serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations ALTER COLUMN serial_id SET DEFAULT nextval('public.deposit_confirmations_serial_id_seq'::regclass); - - --- --- Name: deposits deposit_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits ALTER COLUMN deposit_serial_id SET DEFAULT nextval('public.deposits_deposit_serial_id_seq'::regclass); - - --- --- Name: django_content_type id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_content_type ALTER COLUMN id SET DEFAULT nextval('public.django_content_type_id_seq'::regclass); - - --- --- Name: django_migrations id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_migrations ALTER COLUMN id SET DEFAULT nextval('public.django_migrations_id_seq'::regclass); - - --- --- Name: merchant_contract_terms row_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms ALTER COLUMN row_id SET DEFAULT nextval('public.merchant_contract_terms_row_id_seq'::regclass); - - --- --- Name: merchant_refunds rtransaction_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_refunds ALTER COLUMN rtransaction_id SET DEFAULT nextval('public.merchant_refunds_rtransaction_id_seq'::regclass); - - --- --- Name: prewire prewire_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prewire ALTER COLUMN prewire_uuid SET DEFAULT nextval('public.prewire_prewire_uuid_seq'::regclass); - - --- --- Name: recoup recoup_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup ALTER COLUMN recoup_uuid SET DEFAULT nextval('public.recoup_recoup_uuid_seq'::regclass); - - --- --- Name: recoup_refresh recoup_refresh_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh ALTER COLUMN recoup_refresh_uuid SET DEFAULT nextval('public.recoup_refresh_recoup_refresh_uuid_seq'::regclass); - - --- --- Name: refresh_commitments melt_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments ALTER COLUMN melt_serial_id SET DEFAULT nextval('public.refresh_commitments_melt_serial_id_seq'::regclass); - - --- --- Name: refunds refund_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds ALTER COLUMN refund_serial_id SET DEFAULT nextval('public.refunds_refund_serial_id_seq'::regclass); - - --- --- Name: reserves_close close_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_close ALTER COLUMN close_uuid SET DEFAULT nextval('public.reserves_close_close_uuid_seq'::regclass); - - --- --- Name: reserves_in reserve_in_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in ALTER COLUMN reserve_in_serial_id SET DEFAULT nextval('public.reserves_in_reserve_in_serial_id_seq'::regclass); - - --- --- Name: reserves_out reserve_out_serial_id; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out ALTER COLUMN reserve_out_serial_id SET DEFAULT nextval('public.reserves_out_reserve_out_serial_id_seq'::regclass); - - --- --- Name: wire_out wireout_uuid; Type: DEFAULT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_out ALTER COLUMN wireout_uuid SET DEFAULT nextval('public.wire_out_wireout_uuid_seq'::regclass); - - --- --- Data for Name: patches; Type: TABLE DATA; Schema: _v; Owner: - --- - -COPY _v.patches (patch_name, applied_tsz, applied_by, requires, conflicts) FROM stdin; -exchange-0001 2020-03-26 19:26:49.92415+01 grothoff {} {} -auditor-0001 2020-03-26 19:26:58.388906+01 grothoff {} {} -merchant-0001 2020-03-26 19:27:01.737972+01 grothoff {} {} -\. - - --- --- Data for Name: aggregation_tracking; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.aggregation_tracking (aggregation_serial_id, deposit_serial_id, wtid_raw) FROM stdin; -\. - - --- --- Data for Name: app_bankaccount; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.app_bankaccount (is_public, account_no, balance, user_id) FROM stdin; -t 3 +TESTKUDOS:0 3 -t 4 +TESTKUDOS:0 4 -t 5 +TESTKUDOS:0 5 -t 6 +TESTKUDOS:0 6 -t 7 +TESTKUDOS:0 7 -t 8 +TESTKUDOS:0 8 -f 9 +TESTKUDOS:0 9 -f 10 +TESTKUDOS:0 10 -t 1 -TESTKUDOS:100 1 -f 11 +TESTKUDOS:92 11 -t 2 +TESTKUDOS:8 2 -\. - - --- --- Data for Name: app_banktransaction; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.app_banktransaction (id, amount, subject, date, cancelled, request_uid, credit_account_id, debit_account_id) FROM stdin; -1 TESTKUDOS:100 Joining bonus 2020-03-26 19:27:05.284133+01 f 245cba88-c96b-44f9-965f-636e193f978a 11 1 -2 TESTKUDOS:8 AVFJ2WDPP5DB6E37XP0R8MDA1C42W1Q94HNQZASW3061WR7C78V0 2020-03-26 19:27:05.384338+01 f d44d7057-e248-4204-bb8e-4d9b0f434ac2 2 11 -\. - - --- --- Data for Name: app_talerwithdrawoperation; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.app_talerwithdrawoperation (withdraw_id, amount, selection_done, confirmation_done, aborted, selected_reserve_pub, selected_exchange_account_id, withdraw_account_id) FROM stdin; -\. - - --- --- Data for Name: auditor_balance_summary; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_balance_summary (master_pub, denom_balance_val, denom_balance_frac, deposit_fee_balance_val, deposit_fee_balance_frac, melt_fee_balance_val, melt_fee_balance_frac, refund_fee_balance_val, refund_fee_balance_frac, risk_val, risk_frac, loss_val, loss_frac, irregular_recoup_val, irregular_recoup_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_denomination_pending; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_denomination_pending (denom_pub_hash, denom_balance_val, denom_balance_frac, denom_loss_val, denom_loss_frac, num_issued, denom_risk_val, denom_risk_frac, recoup_loss_val, recoup_loss_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_denominations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_denominations (denom_pub_hash, master_pub, valid_from, expire_withdraw, expire_deposit, expire_legal, coin_val, coin_frac, fee_withdraw_val, fee_withdraw_frac, fee_deposit_val, fee_deposit_frac, fee_refresh_val, fee_refresh_frac, fee_refund_val, fee_refund_frac) FROM stdin; -\\xb378eecaa2af3d60482c35dad80df06074d106d106c4a99c0bf17ff78a1c4932f6c61c244ccfc9bce512b86d2e1029b1d79d5f6fa165e29f200906e8a25a1e7b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x0075376d6ad4bce8456a069e7bde945b7f9dd36d73480a147b55c2b06d18274dd666d2fcc28d94fcf6e8c401c26d462e2985a6714a59967886979c77f8ff6418 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x05a962dc843c0ff39ee8e5fc3762a8c73db6be6e8777ea3eb8b5cb4e3423f7eae716dd7826800bc9778e004eeff63d38e3e3496475c5574a6978660bff8d677e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x6a947bbcb38b820a51840d9cc4f0ffae9a605d045f0661f391cb241120e2bf147dd7954aec09deb4e8b70ca0725a6fe0c6bfd486b8470773e0970d0293eb5b30 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5b5d76d5af2cb092c8ff4b46d0d8e1d470bfdf010a456e290b5daf27633401624716c8cad6e767da252c78cf798c9e5bd5b71d34cf9d34788ec2efc8d38db026 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa901213e3003e1b9010fe14ecec385d940c1062eb55665cabd1b7ecb4bb221b5dc4a504edc0a98341564c526e65f765c0c0339a9c4cacc14047f921974c0bc3a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xd29aaeecf5fbf380c2e8fdacd14b7a23933face6bd10f28dcc749b777a399a7860a598f17359fe51a33aff7c4c832ce87e88c2c589933b029929782c2bccfbab \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc56922dcda6e711bac6a7c8f3bd1539b2b5a7bfe9332832401e604ac2dd73a44da2209ab79bfa3113f3b37fbf7f5a01523e894f4fe18c1570544b4c83491eb2e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x3755790ee6224cfff6c5db1d30eb3104b44998e1c3af8fbde9e24e8a11fb6ea6b48defbcf9d1503f8f7f58562ea5839e7133a054a6ac27794edb1a82aa9549e1 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x2a0033891df149843997e3a479c447991380cdc13b804333f3089f25d0025eb810b3488384acf97a43f0b56f234a799febb0933bf2fd4e8b89e4cb8927558cce \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x71d2de23e29bafed8c56373de5e7b25855b9160a2539b3535d7a9643548f8040dfb496895221925236b764817108a9a4ebca9690de96b7b141b5bdd9e0b9c070 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xf2b3041ac316e2fa5656ed3035d55de12c428409518854086a1f9167d660e76ffe76a1762d7561011380582dadbca08304b398b0e7a8001c1d9b6d283690b7a1 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7cce87953b40814584186cf6d8a027decdeaf0abc91e3a79d5881b9706924e689e652005414c1ae373ab06482106a09ea6ae0a490a0ed665fc0f78cd38241292 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa9558be38da8ff07c79fdc8a2d49e50ccc1ce8d2326e58fca362b8f28c46e140ddd0aa94d6db59a384f28ba935825949d565f0be8967fd2d052167d3efcf23df \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x26e839b7a0dbf7a50786189671b5f91235fe012177dded0a65073b946cd2012e0887c8d659191c8eb3ecd7ec4a9881bd1af4d0ce834c20bceba82ba222429d75 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x93521fafe0753b9ac944df2b5088764539c41564d4c8659b5b64b05d1673526fb51035aa5cf4fcf3a70797435e205ad15b8b801d4822579c209828f91c34950c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x611216fe1f0d351925360b2e5f504e6ff857d7d90ab0731d7e121223eafac584c35e1f587980dbb950a83ef93f46e85da0b35973607a3bb417c4e9ba105643d8 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1cd5380661be05eee2aa2b9a7885eacb8c70fbadcb3a0f9f5f5190dfd699f8f3067fc8c9453b7037fe6de9bc84b76d3018e4e9bc8e535b36b736aeb6e5e15ca7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xd6a0f2c0e038bc72508e4024ebdf3b4ac6666a9494748149210a13e17cabd8b5c1386ea458ecd3a0af132791a7e4ef4919c86b2fed5791d03e12924c1089a5eb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa405466aa03b97274d8f093b0477c616a58532684a25de6153fd19affe58caa58d00768dc2c8b6ce514a80c4ed77e6d0385d9648039d39639d6631dec2766f4c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x064a5c17b5a90e46f58604436d34a2660cf06f383e4e3a449d10e98d726b231c399688bd1b216798091f0d1e2ce1325d84995eb04dc71ce5b1ea75c9f77847e4 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x48ed78d94d51217716a001c9364ba73d6f418f1783455ae18815fe288b7f25494ad56b2cfebbee2005e57a6ecd2352ca0c8101628ef8072a5946b2cc0c93051e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x63dac59cab8c7778c124ce13ec041a319a198c583c42604bce00bfd294f8b65d8cd382dab81f1e19c0500da84c41847a8a3d2f6362662d748d83054e29ce83eb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x151533270a1b5cc2bc2257bf80b55700a8229aaee5153a7cbbfae69a60221a6dc9a0b6580fa57389a3e542d5e16070a7b1b1106b4b534d0a7007f500619f51b4 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x6ea4274729ad9eafc072e4ad474ef802fdaa1584341adfef43043e369187fd63796d6787a4025464ea07e428b2316c60b4116da2068e2af9a6749e63586b1809 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7b4b20b04b041348520fe2c5c9a449d3ef883ebecaeb5a60f03971a911f51cf1e281c328785b0fb1ee28c521ea195969c259ff54532e2ab83c3feea5f8a5c4d2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xd2e06593f7acfc46946e23929994d69ed4316a2ea9eae0acbba7584224358d444fc2c8dc74a0174253362d976b647eea3353c678c0188901731cd35c037a5172 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5325201602106788cec43e0b1ca568904591b32a528a563ef959a5e97fab8a51618667ba28e18821976bb697a3adb1d814e33bdabd37db0c21640e63bbea9d4c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe27dc2dc8aca4fc4c55ed955fedde2c35f1f1835eaa8b5e8142fac5287516038c24deae42e9ab8602905c6919ac8fb9727822bdb2962c9506ce4ab37864f9ca1 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1264a2f5b5c378ee5837971f9e5a9a4338a47eaf72961bacb241e907cb891ae4766aab8369bab91b84b39b31c239a484a2febcce7b551d1da5c1f2e1b9980f15 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x454b79a65edad8b2091105870ac85fe522e9230e03a1f5b9049e5d03a2577146287ffa632df54ce33d361b920102af8203f2f2123133c6aa6809975e11226d2c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9dc566a04f9a3a41870aaed2a04663f4fe8fd5d7b494a41d73d5045fcf180bf97facb61e98fcc6eaf9b688af96fc4abf4a58b6b3d8b42b4ca311b8d8c02650b0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa1e69176cc4061fb32a1385394e4ccee48d1549914129ccc18ed538f3a5c7c9fa2673b953c681cf3cb35b55740256937c3eaaa440cba6d7c8dd498acf50d9ef3 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x770c748e581e8ed7edea219a09ecb0018a2015d5a8017f746511950f5da1c4ad1ded37a5f054bb1b0b8902cbd3767f9b0cf4e0a8e5a8f29bf555eb89dfe78fad \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x478fe9f5af3431c4d3eb0041181970ebfc4ef63e15f712f3f0882bf6ad45c14698ac62d1c58b687b3811de87e2a3f6bad2a04382e70b98e225680285fad80678 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xd24ed264c3aed6dc5e0b038789f8b96c7a39e5afad1a6d1152e7522dce16cb07057c685ebb3ec13c4d813e7526934a0bedae3a3f69ff5ed67b17ce19c3900d07 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x423cb1aa741ab0a5237c1a1e96d8564a5cd1a4e1cc092690215c66d33c2ac3bc55d265997f49cb54405ba72c621465571b26dc781c6fc224ebdd418042540ffe \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xd628b203825e5c1d6f06fc772be687e4b1236e8525660bebc08612c7d985f1f55c2d01e32f26a994ee775a5d425c1c02d8c75ecc00fc90ede6f83fea0a5e090d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xea07a69a2e207613ee0342ac42375a512a5de80c2de1fe45b8e02fc088afc54e57800714896492d7592f1760ce39a52b2e993f188ae22af2b581338541df9e6d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xb0e17ff4a5cbef557de82ff930b13011bd3f3ec7c9ae048146acacaccfabef30fd1dfe9c431391293ba9c6f2ef4fcc605d0c2f2b6037fe50d064e16ef46725fa \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xaa603aecf389058bad8639cb59cc294c2e07810582bc742d9464b9b1ce1db3c34c6acd1d6ddc15b392e59ea35c1950134adc777d0d7f1f374783d4d671c250c9 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xea6820ab6c18df81c1e83382b22e376a1f0e32ca3cf44b698f2d045e0211d61b91ad2eb23223038fae7ead0ad8151569f7d4ab19d457342fb1092ddb8acb0448 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x9031081bcbc575982c7ef830a3c295e8bf53ae135da5a0a36dd0a8798b9e80730f0dfafae43181eecdcd7f4b5f2e8d92461e9285d3344ede49e6b8f0abbdf990 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xc9c8855f6bf389672a04ffa463cb17a978cd60de6fff056c4babe6e4714405789a117e83f7d16ac0994f12399a18821f02518ffc24b69dc54e1b449d727244af \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x34f12718d044564fb64907fd6da488af13745f71fa519a2241f2ad66173e328c25ab029acb0614d9f455517f2a5ea151b503ac40d765d8739e32611f938357fa \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xd0b0025e5f0fe1b3b63b82dd8d3622f9bf597ca75ee456db436fb9b70feab75b2addf53d418da957197cb831cb9f24815f9260b13c58a21598b17164e99a6db9 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xa201d1f554ed771eacff448c58b847a075cf2e26067dbfe4341ed0d7cac664ed923f67736459c56e2e35ea662eb9cf6b3cd72ef9de03b423513c1553a004eda6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x8418bf8f77a622bf35ada66becc880478e3d21636e7bc67eb16583f06e384f6d36c54a5b3308723fbaf976bbbee491b89864db5849e0143c3f2ec32b8a4e7904 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xf203968c6583ca909214cdfcedee187f3eeb9439ec533326304146787f4b7de96c14eef9d0e76741901125b166be7476143886790e6affdf8d3ce03090da6ba8 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xec3dcd118571b36d0d66a591fc847e3e631b48714c8aba050eba1320212c084b99aed3ca443a8bc0962fa0022da729eb122a26a4fd49b398d57c948346390d3c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xb2533b2ef6147c934a80bb385287ddd0a56db64abcb50e017c9cf292727ef48b9fd71e2ca5a655b1260c8d07bb89612c76faaba2a882c9fc32f06f813c688704 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x5c42d74048f0f95be8cbdd401f5c52404c1c841218797be83c623b592355b3dc5c8345e16c1057e02052555bf341fb79236a27a189f90b9f6fd01b0e5480ae2c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xfa4c794cd00de8256058a2f2fe0db828dce524248d2948659c9dd954baa2664d82a291a2ec9d29a0402822a6039723ae60b35d40ad23098ff35f1501eee05d2e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xc2c67403edabb6712ffd28584485f924ed8bfa9bbe8fc92e79c0fe06e29a0ea908894601bc67f483414ceab1c0e2014ad072fa9d50d039a4f15996b0cf7bd322 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x1265c56f0ff9d983edf4116e74381bf08002d13b16450395bedf89b768c41509cbb84cea3c37383ede857bd2e7822db7201b0bb8009937fbee558087cc5606c0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x48e61492b0edb65f7f30404ed9bbd1df09e6d6b02946663480b56b99dd6501f0d8c3cf1f4836a67d8040af93029ad73ce05015235c07c26b3347a24c813f8994 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xe41e7a792cce6eb2fadc32efbfa1668b09e6835b4dd36573fddf1169b738adb48abb9f265bfa4442f58690d8b88cdcf553ee57356f1bde96c98aaadd0004b45b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x932ff95ddb379cb1b5b4d30c2306072cb558a845ff69e396de62d8ccb9deeda2ed96a7c1e624f9aab477289533cf07b4642a3bdc06f5410cc3aab2f8b8aa00fe \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xa892380640102dbfdb06bf698d3985c890ef7879b885a999a5021a5c2631217592861d5cf27705f7035ec16e1b284dc5d1add6a5e5ea4192358ccf6951b9fbf6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xc4b2f765266e0c216ca5a0ee39d9f3268d4bf529c808b890a4a3355a1f7a9e962df89c835dd3ccddfb20879281aad895833d9292fd7b4394a3c8d0f0b1552d69 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xae96c3dda1bc040dd9f30f16d9118e16237a56decc1badf5e918805f3959dbcdcc206190ce9a81aa06be999899c187f86a112a76c5331eb8635537a0d1597a37 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xe9652c2e421600735f4b580ff9d71ea40ebbe54606411e484decec3b61abf37d7a921d9320a69f1806652b4c7e9c0f5d7e5c4154015f7ca2fbee3214f8d0f875 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x177a0deae7b9263287cd88fea9dff0667fefadced9558b7374215c0abd40b7f50bc2fb6c488f198b0efe8dfbf96ccc3273ccdae095e7909f4764717531cf1e04 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xe9da8f472d16740cea65dab706ef151172a45ce8c48b92196b712277d12c9ad43089503c7bc2e2c98daa64d20969fc082f924c6b19eaec3e8e4aed1f9df273ff \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x83bb4ce6e18f7da1119c219e29fa91ab9d22de9a1612154b7e1c5841f88264310025d0928586feb554229f902a105e3bb6636f20e6c42f7e41529a78594d5e00 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xf2435f6d2b47158c77f3c7057fdc9bb41c30b2937f84c5c6b6cdd3ddfae22bf88b1e5f86dae495349f2bea4a43914e82dac390c23553d5d1b256d01136aece17 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xb2b398d560e595d6d879842cd209cc84c924a57538ffe918aa6f3107492495740d2dadd63f34109c3a19caa665eabb781359cac5c496e56a36bfc6926d3a45a8 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x22104ae3f0d6f6e6579cb6c7e00f4ce253150e2fecb6610d64f5a0643b628c38f6bf26565b91221a9d53b2af71be535bbde0ab3ef0266302668b4683708dc28c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x76697f4126c154b222b4c8e3f87e1c4aebd70a13aa1b73817e97bac1a03af9f8f6eb6008e0fb5fd0a9c8d147f96e3a6d48abe0f322969a8435081ddfbc8c56d7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x83a1afd9a1b99a4d7824bb878db71db8b8718daab4429c879f55edda6c7050ed8efd60ef95b84af213dbdbbbe283bb84fb32817a8bd2476de1d563a7ae3940f7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xb08a0f5ed1b5859b7fdf907c5cfa6439e79f21ef48dfbf5c93b7e7ba10262c0652e5b4ea64dca448eda615d06b851d85773a6a4d94e2fa210c7dc9e6730f222f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xabfb9c9fcaec888f4c41cc0caa0697e857c7438ffd5b44ad31c6a03706e9f507e47b84042a40b40bbfce9ac3086337f1f93a3dd6c73b81b5dbe6b8008d0b195d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xd7b3a005ecef0e48d0c0c27e41ca25f45bfbb4fb379544bc7294645a82afd617380b61409830ebfca9f4b88937ea01cfbac87ebd7dd4c00923d53a899782d5a0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x736e42a1f4bb9a49045220bf4024995bcd982acfc61e23f515ac426f922fa9b29d757095b891a0e25b8e225c227046d744a00bb26172d14e0f1a1fb0d00f9daf \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc3765433d6e727f0b51d6b2e10c9bc10a8e6beca70e57904bd130ca6d72c72015f6e31ee9e66706fe978576b4e0e6d2f956f775cfada9d1a419cdfad6aec15d9 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x77f3cda2f035ae31416334c127cc558f2fe9ac11a828693d2dd58369cc372bc9529bb59abaeaa9330f681aff4e954af7f71f4af57c61a2a1d0edccf64808d072 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x68b9a7b30a6319213df3410e1ba3f51707435d5cbf0a6edcc56c8954a5756d61f1e600be8a4f39fe6424e184995c1dda8515fe26ba5e448a8b833e827bf7a831 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1df3e99efd724a6c0dc0a2823ac9166edbcf1bd7a6cb0413866babc471686c59097c77538a86207890150aedd4185f4510e6818e4c750746101540e32b715b05 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5f05d950f1890fccb8485c90bb3dd12593a54a28214db64eb38cb8717b68adc26156f8487ae3559c289047fd628688ac6f5631282c4e5c388842291bb46f3824 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe2260b2f3dccab0bcb338cc2882486ec3d820dd90bce313c98fa1a585373c12258ec5e6b03cbb1a3ad3a9f05e37e93f84f101b917a0dcacc56b0556e35fd4370 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9940f65d34ead9955365a9a662346df1df231f59b35d11647f1dc539978c123984f76b40d72c82c8959eaa4a4c43718d1a9dde9cd1b355f4516373c1d71ca80d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xaafbd0f00ba4171f53f308074294c05c4a89d70c82bfb22e3bf301d5a612d70492a75d0d7f06a2bce5375d826bcebc537faae1c904f51e84c8fe02de79b9f1ea \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9f7e3c4dfad9eab80fdaadf26b544e5dd077a53bec8d16299774b0414b2968f699fd109f5890c286774d40adcc2c0058282dd91c1044e95a14fb0952a68f92cf \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x657bd65e4f96a0f101b424398e3027c407b429c748304835b2785e8a102cc0dc7eb0b64a4b4cd334114ce8b8d15ca7a54144fd93438b842da690e2e16fc00a0f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xabf5ac2d1d162a67e34eb3c18495ef0f10cf1fe91ac95034ae74573a4917a8e3fac9df84bf7627fedbf6635a3ee9b63c2dac558272f4f33692ba7553f2460b23 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xb18c75b760c19d74eaf60640c27cdca32e617e79fa375af367253fd5d82de0ffcb2cac275e10fa34414c7e487c022e1cc8cc0a4ff1b6aea6699044db55a2d6e8 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc8f4067b6df97c0f776882147e3050ee7fe6515d36bb3543f64d86a421ffc829e6223d7574140a69dbcaf1d9c2adfac04c20eaee5f9fda7647e3ade21fc89d58 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x59cdf5b4960217fb40fb89197ff524d7d07d85ea9e8a86ff2df1de83168834b6718e40d0311781d494418d60d4da3c2c74993e658f4810fe29c921c79e70abea \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x0cd102d8a79598cadba8953351ca90d4e0fc6dfd400c28a8dc5a13a40d22baa877ebaa8b1f5783d37f7ce24a4da699a11299ce7d0243177969c7478e9ab0e9c3 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x55132d223a1cc81ed6d1520e1479781932eae0786a8d966204533d8ac2acf6bda3bfc29f4e2c638e58e1403dff7a755e90cc82fc87ea19b7230c7fe8d29f07f2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xd712b1d48df298318617323fcadd4932df3972f52d8a0f715e185ab1b35138265e752ea28a2391aa65717e0cf99f18167c397266b3daa7142675dc12920f26a0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x64b9bb4270e35f24aa1ff42fa24e37f091d6897743ef2a33b45de3a901cfa1358fe1c8b0b5c8976a77e2cbd70b3fcf1656658ceec5498c64c2f3e441232d6bf6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xea0a144ba2b13f631d017472caf6126fa74a406b15ef655d21a0afb990d73af47295af21864089594cddb95b929c3e7d573e1fca7b46cdaf0d5a947638b4e21e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x98a8e152432ccca7f72f9e1ce4161822df6b989dae89f1fb84f81ea01b97d8badd8d9cda5fbde90fa28f048eee5f72525e793edbd1172867f1d3b45d2d12b5eb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc56873a3aaa4f1c03b07956ba80407614f95cef4a964080dbff67850fde6e45b51ef838e1fd118d6a2220fc6fa7d66581a33663cb77417b240b3ec5e5dd379bd \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9600561209bfd7c43d2342a93f5f2a33b249d1edec0d8494e93731fef49c9111bb03a10ceb809566187fd3664ce6ee38eacb489e8537a74759c99d137082e57f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x546e71f08f7965f19aed709f2e1d446d175caa3665353a26587032dc1a20d09d7fba8244bfe5257c9701b0a5325f658945b4e45a3f8a396b40c8710fdd5141de \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa59076edbc3104a91b98a27be3f166e733b3f412041c0594b27927f28a3e9ce8ccf495d341627a0372dcca6ab90d22743d7a9c5b47ce4c1240c49f0a870390fb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xdb58657fba4f2bd0434188927b298e64b3d6a850c8cee9d6361dbcf1551a4fee9476036aca0b125dae93b76b4f18c4a1714e122c994d0d894bb5399ee88c99fb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x133ec98fa5d8efee9e3db8305dbf2710c92fead62b0e5498cd3b6327a08bcda6829d723b7030edfaefd254544ee98919cb79ae488d288f0b44e2398b47543cf1 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x596dd70417dea3f96b72decf73ebbee411295403914758bcc5d562d1232ad6aa8b14857b58e1cf9ae9b1535ffe4fbdeb4e9b6d67f0739173b64d9bfab00c1f0c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x5557667cab72b0e107bcf82f6afca038342e4dc9a1c9ad16e03dc7f8b087ef861fdfaf39c755ca5f63323740dd13edbbb844a72769442659736031ab8dc9f825 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x117efb8a2696ee71b862baf5718e5e897aa7b454c0b71731a8c51e174d6f47f0fb5f2b3e863b62242ab49a94f4a8c3b6adcc4c33e1f4f8eba0d0f2ab121a136d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x8ba1aedd039e8a27c23c673551ec9036efeed66998fb3371591db8ffd4a3782ef69b6a62969744c9c2052c40cb4600a8a1adc5bf731d0a4f76bb882fb7f20882 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf67f29265d2ff217d3b10a405f10948095527a1130bd9940b449ef76bb911c4fccb4b2e3d16d7e032f91a5eb71ab1d4a67df4430f69707ac71b5d39b30659f3b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x4e8ce661c04af3c5b33513911ecbfa3d939740d19c73e1a988633398cb0ed4cdf038c42bfa3ee51b1161ac21004c42eabe557d045ee33453c9c9bfeebeaaf4ff \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x86902375dc166eb59ad208aa55a5f6b1fd98e00820ae55c82dff32b9cb24691432b12e6fe3132e2175d8de54a95ac4057aa709eb31772a40bdb66aabb1b2d66f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xc98410a63b5283e3fd3746f4f1d40429e185eb675a490aea0355d459d8148cdf07414dd52086902b048bb38c41d9f2e062d66c8a5215cb78c1638bfae90e2eb4 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xa11b8c9834c5f253ac0d6e7887de20cbb41f0085b2f7e35b50ff8795c062865534f17b131199845cfb025335933aec53a25c93956bc52362bcdaa51d33a88d99 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x50740bd39f5bccab5f3d5d5d0450a3af3d5100e061a2fa8101a843704511e51d9f3049b060e68a5fca43e954a553d64ac575418cfe28380793db72e7a85d5459 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xd8f913b6171b665b34523910b161f296d7ad1f04a20291a81c295c2929b4cf8c08ffdbef97042e263d93b82ee12002caaab69d2692c15fed75a271075182a242 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x143ca07a3017510fed894746142d6072e1d36266c75ebde7f9ced543ab224acb252e02ebd9900eddee6f804f9991c44eb6740605ede5aa81c7d19239301dc03a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x2e0a60b017910b147f18237c9e69a9a88f541d22426c3260589c010cdb9213a264353c43d507d17a0f7574672ce0d4d3404172c3864702a9be351bbd46542803 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x68cd82c929fec87a096fbfc4f6da596342ed86a6f8e90862f8e459a14d26849f811f28e9898c566c90748360190632a00539bb9b1dbc12dced2726034c60870f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x20d3f42ca922c4f58ed26eec2f86c77495d9b48d4f0c04f5f1ec99d1f4fb98839cec4b6edced97bc8fa7f12276e6b9736df2b41fe94d27e314fc2587acf393d7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x5985c9aa64ca1f29c6faf3bc713c948138f2e595572337241e16c4b324ce9e10e02742c1250e5ae1e4bcbe6bc00b765e40afeb698d3fa61350bb3e8841de11a5 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x4b33d18ffbbe7ee1aa0ef7644d28c80e1e2359a47ccf8b158c6bd04bfc8dd29ce52f7426bb3a788d6e37d52a840425f4dd7bc5c865745078577202c64f52fc9e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf1adc9150816414eb4f52128618355d9d5bd91ca8912d63f8e7a64ca34b1d7da69d32601866906589eea7d188782eaf246d333dc6e2bd19bf69a9a7b7483fa78 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x0fa5cfdb816c6138bc62a113cef662541dd8c523b05b31c54d5f81367d0a31377688115e683d966ad0210b0f48a8105dcb0bf5fd46ff219be378e551db102923 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x703b416c294aac9b4090aa92c3a1f109334704fc40cbde0a34554e5bc9f4211eabd39733a6cf4cb0f262ae18df506cb9dcba4ecb4b4e0cc1a8ca561b3583e313 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xa3d873e455e18af938d24cf662c6bf37a9af858ebe4bf47a11c96dbff473465c7ed15177b14b7838aac4903c6855adedbc8a66815f0544c86f371a89ee41c0ac \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb099cc5eef6d7321f18012f657a17df19416c8a618dea525df502a1ee6fae657a50256c78e6075e9377d3a0e02ab38fde36ed232b2af9ac77ca6930e81de17e0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x61855979e9803991bb836485fd0888797888dd56e9e8f07ecbba3ce0669373256f44c6815c66c9bd71975571790a8dbb2be8a79b614c1a07c417f48ac0cb5bb9 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x7ca5c33be6ea670eda1354da45efdc57b6c8399f6b1e610654d57237e9b294fa7c15f036ea43ce335307848dc0603b9b5c706f597649013d212bdb0313bea037 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xc583157b04cac89a2bfe8a2320f9e01ce123d8604aa4f133bd9cca72a725947707c383ffd6662b88bb5d1267e4aab6b4cacf41a29fce49dec4f34d97a8ddcef0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x08e39ccae406332695a9cfc04d20d3f733d1eda5ffb1d1771477aa6e2bce440ea646f5f3829a43129ac991a0323c6dc6a2717fa72683c338cd330824ee9bc0e1 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x4333acaa5662f939afd4a38290ac2a39bde7ebd680fee28a047815e6c94c9c54291587af56c9be0e8bf0b96edd09cfa3cc57425e88b333649755ee53b4403c6a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x774aeed719dcbb168d5257834a6419777a8e339a6979d9a93dde3385d76a97c2a5a0478e8ad0ac57164e27c9b5c8bc7eae65f9e6bb9fcd3022dcc03d53f5c885 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x05e02d74bbbf5f3b4192e9fb55c67f37a439da3ff07d6e849fa6d7b7d70a103338a7b61699e253a3a556388a7ec81fe48addb0ca7fba9230e79edae128c0e12e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x85fa8e533d7f8ccb17c8f7992ff8ac2d993eb781003655bbf38455c5ccee44768244f6d87020ab1ef14041d89610f318a7f2cf6a912d97ef97cd29c742d1acb1 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xc85238fd83db5be800a69bcf2d6d4bddc01df075760a83ac9face592fd257ce738d91159bcd66825ce1d661e99d4bc5e2858ec01771c9c2d911d9afff9ff721b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xca0a05f0d9d31709f15a0c19f114dde9103e16907cf42d72232d7d528f4d86f8ce3d05d502ba062889b3807f7326df6ec5c75823bb10bdaaa49765ca59dadd7d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe0726684567b8f6e972ae98a1c743d83344292e41f48d2696272bbe7d7cf28e4fe4ca576cefee21dcf4d05dc1927dbed383bd6383af4f6919c6185cb86c29fc2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x5e3fff3c1f92845ba0dcf1651b7ec20c0da933572c2ce961c0b7944ee4ee3fa13562d8fe5d799f8eb8e528cb431033634fe73318ccec18db2246ad6bafa0c762 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf47266abe3cb33716f3b864e07b033f66af6c7be58a6364c28d6c507b7ff70acf649b9a7396cffbdf77bb5bd7af9196c5299191dedd5c9a6ff04073be2ddb945 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x85ac0b83d4e7d7d59d97c69057d729e8eff4493677e7ca61c55593b87f647fd7fda8d5b2712848a1d4df31ff2f27f60815078aa5f2e59e9db57ea625cbb65bd0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x1f9600cf0bdf811771933679fd1dde21429a0c73f961960af88cd8d1d53a5ffdfaaf5f31cc5f7b28846298ef0a84de0f3abf8e9389814bcb913e21c630ee3cc5 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x6fb5795135c3e9dda4c1f9726330f5c2133c1f10d75784c9acf91e2f5c480a50bcb7c3af863a2ce41df9aa20ec99eb6f9ca328ba3ce70718d4bbde98467f9077 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x0c85da610e0f8ff8ecf6aa169d4a5546125f86d16cf6540852ed508585e62f80521248f909a5d10202e4721be516f6443f0343b4cd77062193f0ecff1fa688c2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x362cfb8a2e90e503a2c6737a72410fea45baf4811c9326fb67b11210c79646b209c45c30b0d36c8858e10bb0ba574fecbe6cca19539b23abc5e2e5c32ad721f6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe5c9a96e3c86cbecd1dbb3115134af53d6eabae04febb9b16bbed023f88d6595b31c96d76614ea1d9fa6cd41d33b69e01a81c8e72189eaceeefea14fcc85ae9b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x9e387402e2c0ed7310ba9fc821fc8bfeb97c7cdc1c745f5bfb9b101c8aefff575aaceaddde7a4a73d913da0fd3cb3b713355d1e1d9b5591f0cee4960ee49f082 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x506bcf4cd7e2d1d680bbefae1f3081a1fbe16d06e053cade3eaddeeeee4aca1cd2da1937e23ac1f02d4198ae01e0fc5262da41b38b30d5c1425e52c48f3d8670 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x8ec5d99117b5d08d9877621063cb351bbf1a75981c0848e9ee3bfb5d2f33d2d657cf5dbf3829e504137e00dc7f10c5d47adb48262c1bcecb09af9e6e836a21e2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x866eed1ec1a323f1bfdcce39d5713711c6c875025dd58d4104aba4274ce9091a55b2c3e25076bd2ccf911a8cc25227c9d4070087d187701554167d7c37192da2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xa3af6b7ba5e61e2bb741deb79693b575f4929b12acaeb6842134067c0640ec26da7ae11f88e37fcbd3bded0347147b7d1689f4deba2f9e60507fa9568b24c1d7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xd93143bed0c88b7620b4eaa41df90750dc6bd54e7401820e063bedf7061c89dbda2336011360f70888a4934f2c7c3fa03ded0e959eadc46ab90faa62e0faf562 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x30d2aed6b932d5ecbbfd6af28463c1ecfe7c178d93c78c3a77fbb50ba939c3623fe83d61d8a980b7ef992f976d4700cca5b8a9dbfe69d097639bbdd1dc3e0bcd \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe3668654fb8f1a3f4f03716ef07f5c99c3ef78f881e2cf2eed90bc0b30375d7590b405dac4afe600f79f3e4ae46c99316aeb1bcc35b6690159bd2105e6c2c0c6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x7ad08082cfe946f44c267270fc18ae6ed8415e069a6b5a4d2f74e0aa916f3c444488d3576c1d2cf9b32b8cd2448ef0bf15b5c38bc09266c689a3142c87b2565e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xdd2db79a4569f54a04a721054dddaee82002e56fae734096a1fbd7d0d5c45d42f0a48b0073caef24e484bae22e987e488bfdf6216175c11a0a6700b6ea484b1f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x06967749c6890b49eeea509129a0a5da20afcf1d521bfb132bec60505a35d0e3ef9f37db07be5fec157ed39c0358ef8611e76517b3af3ad5bd9a4b6c7186713c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xa30eade17313fb80b1a774cd5879408f565ba6681952314812dcb9401df2f7704d9e6318c1dd11d19cb766df6fd6c8d7a5737f84c4bd4013fa5166ad3d15f01e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x684f3ed9abd9e696f61267a93b9e3f990e29980838ae3a17fca5db3c1d8c81a1dfb3e35b16412824526161110d047c57e066b317715d2b1ca73a21d8cbcd2fa7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x6e5ec95f36ae8c7402634ac623b8f58ff26f998c35abbfaea1342dee90f34fe84e05df9219690e911cc50ce16a8aa11eb7f15cceb6f22dbb17c15783e0c5be5c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x165dbaf0c1bdd9d42be3722c488e5079a24091fd7dad07a5beade4c9603cb0682dc3708da84b3b095ca6863ec51f16804b2b297b8dbf31041ce56155ddb2b2cc \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x74deb3f1abe0d0f7faedfb22fd0fa7c7496742a1aa2ccfd64086373df84639f8c6f87a976cda46f35df449c8bce076355d62870b7bf17f2f6907d900b59e1dee \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xdbd34e536724be18061fb45c8f2e479ee586d5ae2ad2145096f4d25fbcbf97168d5a94d5740351a76f107eb40db7337999b7bc0114ad2d00c8b0eb5d61f1a723 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xed4ea51f74204cb8177ea6b80ff8801222f54153397cbc190f39d3c72a264a451fb4043bbce6ca5691f8407c5c17fbf9c96ba8f729bf139a0f0277e6fa89860a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x816f803af6a7e11f0aa487de940ae8a0a30e402721dae1e10d34213e1b0cf99d694d2840b2d2b832f77e1d2feca9df281847905e5301cfa180bd1461309fe4cc \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xa5e1ffe58f26df4a9dd211988634517c07d854be23f66e5e77986e65fac688abd0333036b05baa09a72f13b57b4b872e19c7258b3355357e389833f71ea071f0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x3f0cb2a60e00b839aa07b37fa79e6ff7a287c13fd0b958a5328c3719a1bc26b5edea0238c48bd8cee41bc04b2816e26ced58bf0014e1d59212a82d58a1fdda97 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x92ab7592772b2b881f7e70ae12e5ee8398b76bc0ef94e4c737b7dfcf9854f4f18cf2115345c0d24a30bcd717c27be8d5b140dc015da8862894b241761e253922 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xd1061fe76cbaae0d04ab65e940c76e6bc9b82f09010caf40556b9672aa71a021dc89670edf00f86c32729d330fb09092a0a75f039db49601364b9a5b2379510b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xd136ffb55575c4ff5be64442bb108b83cec060c9bab8a5432e9762f0e32121bf3696990a13291206f08deb193356fda4cde77ebca556adf77099ba42ad4b03d3 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xfac60747f6f5230990e394d61524d5e5c2d7fde9d64cb67971383afded993d28b8ccc24859da6595521f2131f8b29f7249a132b21bd783ddc17df6743baa690f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xaf1c014942d7a667381cc079933a31eee8c9ecba69f1d05957757ff2735a71c20ec47253af465621395e5c5c08b0677345119eaa1d49309afbec7fbb27c85185 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x9de8cce48ed3e96948d3b3afaa80ce3b88300019c9bc6f2448a82a9902ab58fb624caad443502b31a5b346881d74d3a52548fafdebe59134015a4af878d25f1e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x5829756a33e2512e0c52cde712e9c737c4bd5efec68356606c9fca2163cb40262163ea08a65ac6a76a145397423299aa076a8f1f8e9957b8963409f85fdfb230 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xe282452214a9d34232b6c24f6eccf2a97893d2ad9741e9e0b4c874a5c5fc2544446e0b43c0bda9211bbdce61a4762bcf9db641b46ec67ed8f71f3b0ff398d5a9 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x88337537317cc8b51018fb4c4548bbedcbbf28c0c2eec201d8352f9110d08e80d3e1449a0008f62e5f44a27efdaf5ffa99c34abfb0279e2cb7fb8e9e9c091ed3 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x3a5a7bbe7f8eec2371c769e6143d6ee1d449ca7cafaf1851bb96f4c9d2084d3231e74ae18fda9616a031199cb712737f01af2880510224d1e4119c26edadf105 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x2fd6f2fa3d765fa976d488bc81e267be30795510570e980048c76145fbfdf4bf79b6858d1745000c0cd72149a80720225d9483bdd81e2e5e4434e7eec5ba7b0e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x6e873350425cf51f7564bc5fbef921e7c9bf830c9d35f00d3f762b55aa504608e1dfc017499a3ac8abaa201cf072e6e3c9d3bada76e4e9378844aa1bceb461cf \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x7c9fbc4197c48b8a6bee1360043ca58353cb3e40890fd78a6f04ab69cce9c00a88d572841d49943c2d7fc525c7f9fa3a413ff3d8a26a73e6dd226d0bc3b3b4d0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x9068b60510081087c9d4acc4a906fdd20dfe5ea8ea54e817433fad3ee25ea35e086ca5a7983097b0243f41583020699d491123a721bc45daa490b176f7c62b2a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x17e4a9d8daa2ca64826813cde9733f5949d9a30c88260c7d5933c6ea811a27b9f5c4732774466ff8d1f9b0b5d9ec439827e2f795119baf9164b7c7d139fd5ea7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x8fd23473f33b66e7336bce01e3b938f95b31f63f874edb521d5c9ff57969d5d78596f84b5a0447bfeccfd07f6b98710cdcb9306c62ee34ff53be01d0c7e678e4 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x69a2095992f3cddfd5f273c5c8fa9cacb924c58e1b5132c79c8001eb47e3e04fc812189675eafbe68b76579bb21fd056c4974502cedb1a7216c1ee7c42fe1f76 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x3cf8a9a58ac03112f46a64c298a8150dad26d383fb12702ed4e225a8525da5b6ae26e4439d2b09a3635654c8599916d35142ceaeb5b9ef7094c8e918dd2acce6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xf8d36ed24a9593576c0fbe1fca1c45e91bbd440adf76f1e7589793d5cdc1f797084cf42f28d1b949b63ea04f107edbc98ae27a35bb3e635181f6ff7b74946b34 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x1cef4b14c92d23143dc22bc8bff1c7637ae220ad5af5ec7b8fc5b289b592dc536381653840495238ad17efd80e3d067806ec02c93ee7d353fefeb90386312dd0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x6f15242144bfcddaaa200d7e799d514c320cadd2f149143656ef18425774ab340f174dfd87dafc87e4d15fc78dacb1afebe374b21a10208da099a650bae5eed6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x4cb3097f1c37488a5f59c8e175f6989c8a2f5d8dae61a92105c1e46c19da6d64d0d952aad31cdfa0f5e24c90ffca6bfa9402466d6718f6e46adb408f734058a3 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x440183e206d698c7a2730d1e5f71b32707963b9d6f117764657f3a615727f29ff7f69b2ea777fa55cda06b11777ffb77c6c73aa20968f9ffaa2f0c82d8128635 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x8d14780f3f5baf8bb404d9d55185b8d151d1c3c5fa4236f6e5f2d0a6ad41a024eea070561434393d5d75e466795b99304a6455a81f3f220ce70486306b9b6f2a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x4b4d8458b842b658affb89f20635a3cf34036637fac52e83774af8c363c5c99986e74ecdc301dfd17cd87bd5893fcb3a8fd83a27867b7f5f269df497d5cdc821 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xdf88cefbbb63463e09ce6355c7295f42bd686c851d63965ba8d1a41bb30bbf8bb2471a4e72fa61262b5870221fd78d3771c10e13da1c7745e2a2871e15cec100 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x776aed60373a03618957c5a94ee0ffe060aac91f810030e1b21334fd489aba75d3ac5a29f3f64e8d9b6a767c095be327fa8dce9af14687196edd62348e59a620 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x3defc51b1c9b98abb0983b2210d8af346725a940769536fe9d279b372486cf803b031f378cfd45aba481f283b6d30b5f73297d5dc1793ca877168db2b9645b6a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x017334ba5b590f808e52213a51501905e57e6c4dc50bb4c34d07e039d8a29de77ace1725d4c2403ccb86256d48759f5df7de1127b6f0ffd369252370f7eeb511 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x681520926447893b8d3557ecc1ebdba90eb23336ab721e93b954a42bf12a5f6cef5b67dc3d5a345d2ef96a1ed838a13d0512686f6ceba52ddd7c064a3b5a14f0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x25dc433ebaa4d91f9a7180e25f7d119c831ad9c1dbb1b8bdc05d03d3084ed4122ff6aada834a9c5dd3b5b1cec41946a1088e29278aa382819fad83ab188d82d8 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xaf630ded5f31fe2d4fc0b4209710fa38388c7e4d285d43592db68cd78623d1ae4be3f5e159bf7e01fb6baddb92981b96779c72ce4bac828b68e8a46f4853785a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x4cb9299a278deb0617c68dffc002d8f5c7ea71b3601f456f8aa09b50835380e4a91ae1814b6ff460e490a077338039ec2adc15d93992c0668c05206375510f2c \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x276a6185aae025ddbd40ddca7cdcb5e11d9aba1465db83997cbb198ee3aa65976d11bb4d40f8b5eddb305117b4f88b090a5d66918761aee9e87a10024d490edb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xb3be6818a39d860eac2ec503286ee89697f668dd4fceaac27ef9f372affe273e03a76a961f96c3cf03d8acede33afec84a8c899a557bada8b16dc5616295885d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xf80f1f2994576496bc3d150c08404c7dadee844f5b220c0eb780f5d369f0d2481e2852c7dddb112f29c64832a5559e42d6c5c171ad96a5733a98da12a2200b44 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x98e9f02ee744cc60bb24bdf368c4b1a01e70b6d327c38380cd6a306d5451b79802d7b11a2859ffa86bc9e86f80ce67a8fb8aae6adcd0274739822cf2167b961a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x993df19db1d9858d347a101b12278024a0034c70b2ab7a2b40bc87ee5c15e933ce1d952bae328b5a428c8bf39924481466c9ddb42fcccc8592324c8760961366 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xda270368811829cb9103c1bb50c9d144bf3b263a2ef7902558d4d806de58be3df7598b6efc7287a0ebf7e340eacb69992d32e5316ef63b144df2b866796cd934 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x47c01b601fcf1fb694b873ffcbbf6f29a967a62a4d8bb117224dea0059d89a75336a58a71a14a0c8e08474116ede3af09278f75027f5017ec8678de2b3a9fd79 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa457bc1d426fd999113e12ebd82b6acad05856052cf84127b956680b59059c63408d45d054a4fc141bbe75194eb377247180ec7ca46d9c85b9f3380ed5642fe9 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x8ee49acb2433bce380f39d5d35079c17ad446c51a4515a91ff51fb8c15946eb4999a0bc6c08c44633ec509dd43f9b10eb7cd0435475e9bd0674593b1ae8882cb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x8a4572e2e1307d787c2df87ae424f11c29a04a6bd56d170b92ad51f7d93c0b1558749b5c8503e6afcd7f26fc0bb76ac8691b96af396e549897f55f9f84f75668 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x165970869cbac37765df1a5b6668996ff985a1dce898d2e6e3001c99dd4ef50c625178de459f8978eedb762159d74910ce1d406d51568f8c36b698645b99adb7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x6c2e6b6de36b5556a9dd88073a174a22f8c45d82dadf45e12a77080fe78271f59704bff1a27f81c9e4e534036d312d799b12b00f7417fe3e4b5b42fc394d9246 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x4d093bbbbf8d09bdcdece049e41693c3313fe3d7e1c3fab2cbe7468117eb61bf170a805be83c55b5b00a5c39e454dc685916e899ca6d119c115178ac7fbbeda7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x937c18af83d1e5b4ae777dfeed5569f6425de3a3cd1934ab2b07e2ee9daac5728187fa5489e207d93cc315f70657392f6dc7b81908e1ac37a94d5fc550a877bf \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x22a6087b38521a417e96a8649be7ca5086fadad0d399a6128a3eed9f2ef076016a9ea677c9aeec7b6587372a787707dd934b505b7f9b50c13e6a9c004751d3ec \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5793eb71e2e610b279666cdc1ee3fdfbb9d4765573aba7d2d02edd2c9b973818e1a38e3ee42e3062cae853c36fe660f9e1378e3c003c142f7ff3d31304489bf4 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x721093e6f159bc5d74dedc00e1a964d2fe6c98085b7c7afabe821346249072332aa642b7d33841ca47dcfeb1c292f1892026b6cf4fd150319eab171f97e944a4 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x158276bfcc7388cd491511f8f8fdbabc4ef8c5e011341d8f3ffe90e8f37a3ead99551ab339ca8c650a783510c95cad58897e5e99e2f7ebca59fcb85a00908e50 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1f8f6e2464a0ab5b3dad30b55a8a0593decdf5359ef995d07ff4f1b6fd3551ea359f93ecdc95b83e1a31273bab6adde46fdf585495c6e9e06a4cc593287f8c9f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5c0ac65cf450c8c0ea758a0ff1637d435641bcf74c114a12c11524d4f0ad0da3faf3e0f4a886edb51706372e6e072e69177163313e32d3691f14a4c26c6f4641 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x2252c33242e3d31c7d4a176255ead7a2f8573762f4b6d6e07d8784d9879a2655d4acab02ec6d6192861b09318c4fa7de31f00bf15cd460842d550237c3218118 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x54df5ed833117a0da8ce07e7192f07c67dd9578ac400dab173c89520f82b004752f1a6527e55a0661e089755482670844b9eef747a40bc712938e786a2437885 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xff6212eda23c185b56b845937dde409a7fb307679c44f72510e81fd91959cc13987838f9dd0cc76641935bb67622d41256de15f241ae9c4ce86e38d70da572ea \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x88cf6a75f50811a39837a8e04d11b08325f7d8ec24d47942088ce54d66794196574c40ccaa2df8aca347e49f06523d9720583a8ce6f73d4f8ef8ab5fc57d3d3b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x3fbf102070aa2a1ed19a0a779d2a23f4f094712bd5822a5d38ebb5cd341dd3931c30e3f4ea01d99092c833ba23e8c79b651aca0dd1b8c41d5f7670533cb78ca7 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xe3c00b46ea754f23cd3b5d41377fe7142d4146e13594e70d67a541b14a5a1f55e3a4619113c1593cd82bd32dfa74f7e2e27bbc4be449181d31b606c67c8ff591 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc322cd92118aabd445aec705cfc7e90a52fa11c86163eaa97e22ccda4839717679d0b3348b778dfc4a98f5274a1adb343d4cec43df97243a89b812abf4a4940e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x4c3c6d57a0664d5da30c8394375fd8ae8d06e27455e41afc4198cbf509abfdfc86ee823d070715e58fbded3acf3830c5e323a01b28fb629e3e728ceb77e2f13b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xbdeb7ac98af9c80c621707ba229659bbc0c9849a35efe1a32ab0b88943b736280c3f92fcef449337260c5e71f6c5bee5098c2a53a71b62c5d4ebe659db962ba8 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xc0b1afac5368d72b7251a133e13e4c3f271e0570361837d614ebcc0110045056eb78c5569ec668cc07a99d641e9dee321be1b621c03ed276f4870d79b227629a \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xfe0571c189ffa9598bd2b10daca0b41915b79d2af0d182686b4489578fa21be8fff2682722dd4843d3db53627a7ad82923e893a341c8f1d3a81606a42c0fbf03 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa0d996a0157b9c4008fd1daf1d8fbd0749d520f31b913357f2bbbe1100ec7d2307226a46573037a9c03cd36f85d5ff9aa9cd52d1a95b3637205befdebcaf93ba \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xed9964b3619fdd935bfc8df972bb2506f28f19cb821c1262bd62b3ff4338710b07e629bc0fda9b6e35233d770831386fc7b3ccc41316f4ae63164c7843e78c06 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x9f4b88691c86a171acb6c468816bcd93d0ad44e027412758b6980d0225407db0fb4f2475c5266ba59be99d262248708c8ab1aabf5857c09d1c076ce6f84598a3 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xf3b15f353353c828067a48d0cb5cc98b82fd0fe9f0403e675cbd25a702f0601c7254a5c1f12aa67841d9b347bed3720680b3fe8f48b3a3219ec5df26a55f41c6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x0e15259d45b92cb3220d56402b7cecdde2e0c7b35ac8c8fb35bac63491ed0087c7d878333802f9f46f17e663cc5e6a75571527114651b854ca920dc09d9d456d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xf449fc3fb518f2f296fee1686d745967d03c457efc5c843ec7d18603aa0975b7295b28afc80c03a27359abacd0b8707d9fc2017c4c4ab91a128481b82bcd4d42 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x3bacefcce0349291c705d69b39cba778aa0701d0bb2747d3010479c031f6f407e3be7bffe675b6076e7cb84ddd42da866073233515581cc8beb594980927f883 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1587665210000000 1588270010000000 1650737210000000 1682273210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xfd2ad49aab62ebae12f33fe6de7ccf47884d467965b906937194b5fc4bff011da194010a26d10aa3fe51d376fa91f6b24e4a874b9641b755ec78ff6330f913b2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xb3e1d98bb8bad7430a19bb95c9a1f5b1d6b34fe2f5193ea95f069cfd78944aee3e2c0fca478cbd5583010d630d1273adfb563f615eab1187bac00bac7d26deb3 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1588874210000000 1589479010000000 1651946210000000 1683482210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x8e58bc9aa845a8dcb4c93507273ab06f388df9d187a25e6982e2f15a5dd2778c6ea2616a95c4fc8fd01dc76bc667441e9f3db3c58ffe569a9f9634214c379f22 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1589478710000000 1590083510000000 1652550710000000 1684086710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x3c635b2a8a0891f12f3279c0d9e6549c677d1b4616e5233a54fdc9bce4a6224a90f01058553f7744093a19478bd71590f74ba95211aa91ce0806e58175a0756e \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590083210000000 1590688010000000 1653155210000000 1684691210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xc4765bcd9146d2e30f25dad9b3586eccfde80776971bf4126de8abd2c0f48192809a30a41349904bce93bd8a25d2966549b451b732fe049c77e4da8d82e4b600 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1590687710000000 1591292510000000 1653759710000000 1685295710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xbe125ef28ac75b00c11aa8118ca94a84929c6a4216bd6c8ff349b607c83e543b770b0ee24b580141a50ec997a2b73860f43658e1eeaf273b42e7fa2771dab223 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591292210000000 1591897010000000 1654364210000000 1685900210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xa477048519c7f8e54e792da8e2616e4c744c71e897f479c73b13409e7f9130f7d9e3f58c7798cca753a1ca799951c5f713f6d389dd0973c2eacf758a0ed7690d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1591896710000000 1592501510000000 1654968710000000 1686504710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xf65f27fdd6ec270b95757c171a4961b3234b6ddc7f42cdd259741ec405383b12500b5645fc1f74311478277624b3ba16362dadb6bafbd629f7c89c2db86d6b10 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1592501210000000 1593106010000000 1655573210000000 1687109210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x381a76a33cbee8583d1e275d77ff8b4a233cc47f0d87ce76e4ab34fb13cd61b64f0c589be2c9f24cf1988fce64cadf29ebd1d4755445f7d6bee70a0ac2ee3d2d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593105710000000 1593710510000000 1656177710000000 1687713710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xab99a6befa6052eadfb7f61f9d4b3b701c2624cc3f384df41f1a31d51385f991137819b981721c0209a2fece0bb555e805f6ea2681d3d153e0aaaf66f461a092 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1593710210000000 1594315010000000 1656782210000000 1688318210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x352c018bbc511a492262cf5e101aff1d079b4ee563303e06a4f77581976509fad09f88a568c7a75eb521020b30bf1ad39ad07624dca02595bee20049073e6fb6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594314710000000 1594919510000000 1657386710000000 1688922710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xfff1c04f3e24640dbc9b8041f758eaf9f7ce0dcdf3259974e7fc85e2fa8a6905b55a495e567c70289aae9cd9043f30a03ea06608fd34afadb0aa08ec26f4edee \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1594919210000000 1595524010000000 1657991210000000 1689527210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x104974b598dda349ecced03038b53eb9528dee10014385d4d33b02b9a2c953682a05a32a120fb7ce97a5e97af9df3f9102db5cd835e63d8c2a656d1046039a82 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1595523710000000 1596128510000000 1658595710000000 1690131710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xa010b38180f0b7a0c061f7c5bb68d1da3d520d80eff59180f622ffda9bc51f9d2de29a3d75b91932cb1bbd32cd333f4ee8d82255810c91e0ae11400ae84e0378 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596128210000000 1596733010000000 1659200210000000 1690736210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xee0eb3d3eb3906db27a82f41ddc494383f6b613ca5b56e4396b83d04e7c565237f71ce98b3c5581a39f9e47eeb731dc74828e70930528b0d0a09fb1f71869c30 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1596732710000000 1597337510000000 1659804710000000 1691340710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xb72e604db5657b8d528f16d2b4a7fccc12b0b97cc43dd749e9f5d1cb78f7a65776af046ee2646592353ac41b6517a0ec64b37ea7cb3456d763854a1b16eadd2d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597337210000000 1597942010000000 1660409210000000 1691945210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x568c9a5170ffd7ce7ef2eb2f2c294cfd54df443730b6d7d100297e980e7958a13aece3da0a50809810964d26aa0a1c805ec71598888120f22e22b90cd8f962ee \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1597941710000000 1598546510000000 1661013710000000 1692549710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x456a9de9e94e34ed44892ecffdd98a2c13cf14ea322745456c8e3ddcbc42591474514933a8017d01018834096b3e1f09dd22b24f0c6fd554cea781ce2c849f8d \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1598546210000000 1599151010000000 1661618210000000 1693154210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xc236898146d3077793082f98e9a6f88c1897482bc4be742a09cad99b85f28f87eb17da75230273a31ab8be3719568c9a1e4c4aa3e78309873127e1db3adb00e0 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599150710000000 1599755510000000 1662222710000000 1693758710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x81c218ca0a206bd839b2ade8018b88f7c1983900f1a26bf4c89807b10def2e4a53c0245034a6c34e7335d853ec1a4344baf9324711ee52ba9d5925314891defb \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1599755210000000 1600360010000000 1662827210000000 1694363210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x44e130ec640e8492c999d1bb9522ff27606a2ca8f5264a22415c661d0f00ac70989193722ea7fb332e495ca48a36446ad22be424406ee78f60b9d20b089283e2 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600359710000000 1600964510000000 1663431710000000 1694967710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x214da53a649cf2b3ff4255ebb59fb7e7b0412a419b21df0989d0d6af0ef540aac8338e691b31d550ca59c2c8d4d60f12434c034b982d38fe77ead94665e9178f \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1600964210000000 1601569010000000 1664036210000000 1695572210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x3341ff9efe2047bb74b842827056a58d87d46e3e4cbd3fefe1086a1ac55c9fa63795536626654ee22cbd62181fa9fecc1055a91473d1a419705e03cae7174fde \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1601568710000000 1602173510000000 1664640710000000 1696176710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xbc17dc5cabe2dc94e9e7f4ebc48cd3b405debd95214d558c866f9b25e4a20bf01877a1e173d9a71a59e8d19424de6ea41cfe992adfde1995c6bc9850eb707d39 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602173210000000 1602778010000000 1665245210000000 1696781210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x7294a2c2aed5224625bf2261ae05ef0945c5c2e39e68382ce7f282d8906681545a74b4967ea0608143adb52f5e51bdbc928ca81aa42a20a25f4c7890152d4f3b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1602777710000000 1603382510000000 1665849710000000 1697385710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xe6e9928e69600ff897cfc930a9025ed83ae7c222f210748982f78e530ab2ae21d620b5ef5baaf150e92981a95bce2b95d21936828a77a6b4bc0f693ad26294b6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603382210000000 1603987010000000 1666454210000000 1697990210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xfa402d97d8baf09dbf27b6f466e24a272e55a0b525d2201fa61cd2f45c6bda0eac110c05ac97ef914e12a2a5ad5be6181474035982bb7e646c93318443f7524b \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1603986710000000 1604591510000000 1667058710000000 1698594710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x995df75df0a3cda873baea40ad4b18aed83d13f2685d6e94f125681c613430baa1565ec480ffa3a812c08569e93fb9b733fd84beac6ae7abe53819621052c0c6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1604591210000000 1605196010000000 1667663210000000 1699199210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xf83190c4582e1152cd1d1cc323b2b0bce4603dac971c160babf3389cf5e585796e4c3973db82924be749ba9655471d73653774df3963cc86535f423fd628ce48 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585851710000000 1586456510000000 1648923710000000 1680459710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\. - - --- --- Data for Name: auditor_exchange_signkeys; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_exchange_signkeys (master_pub, ep_start, ep_expire, ep_end, exchange_pub, master_sig) FROM stdin; -\\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1585247210000000 1587666410000000 1648319210000000 \\x946e8b5af562e6bdae3f9e9f1996162e81eb835d52f6b1455194d1c8a4afde69 \\x099f81f628dcb585af0d033f33aa03c6070e0d929b3aae82bf8d0496ae1134c9302bda7ba2325470039e1845b7a72b1adccdbe0a0703f89ebeeb2b5876dee503 -\. - - --- --- Data for Name: auditor_exchanges; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_exchanges (master_pub, exchange_url) FROM stdin; -\\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c http://localhost:8081/ -\. - - --- --- Data for Name: auditor_historic_denomination_revenue; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_historic_denomination_revenue (master_pub, denom_pub_hash, revenue_timestamp, revenue_balance_val, revenue_balance_frac, loss_balance_val, loss_balance_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_historic_reserve_summary; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_historic_reserve_summary (master_pub, start_date, end_date, reserve_profits_val, reserve_profits_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_predicted_result; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_predicted_result (master_pub, balance_val, balance_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_aggregation; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_aggregation (master_pub, last_wire_out_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_coin; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_coin (master_pub, last_withdraw_serial_id, last_deposit_serial_id, last_melt_serial_id, last_refund_serial_id, last_recoup_serial_id, last_recoup_refresh_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_deposit_confirmation; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_deposit_confirmation (master_pub, last_deposit_confirmation_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_progress_reserve; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_progress_reserve (master_pub, last_reserve_in_serial_id, last_reserve_out_serial_id, last_reserve_recoup_serial_id, last_reserve_close_serial_id) FROM stdin; -\. - - --- --- Data for Name: auditor_reserve_balance; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_reserve_balance (master_pub, reserve_balance_val, reserve_balance_frac, withdraw_fee_balance_val, withdraw_fee_balance_frac) FROM stdin; -\. - - --- --- Data for Name: auditor_reserves; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_reserves (reserve_pub, master_pub, reserve_balance_val, reserve_balance_frac, withdraw_fee_balance_val, withdraw_fee_balance_frac, expiration_date, auditor_reserves_rowid, origin_account) FROM stdin; -\. - - --- --- Data for Name: auditor_wire_fee_balance; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auditor_wire_fee_balance (master_pub, wire_fee_balance_val, wire_fee_balance_frac) FROM stdin; -\. - - --- --- Data for Name: auth_group; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_group (id, name) FROM stdin; -\. - - --- --- Data for Name: auth_group_permissions; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_group_permissions (id, group_id, permission_id) FROM stdin; -\. - - --- --- Data for Name: auth_permission; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_permission (id, name, content_type_id, codename) FROM stdin; -1 Can add permission 1 add_permission -2 Can change permission 1 change_permission -3 Can delete permission 1 delete_permission -4 Can view permission 1 view_permission -5 Can add group 2 add_group -6 Can change group 2 change_group -7 Can delete group 2 delete_group -8 Can view group 2 view_group -9 Can add user 3 add_user -10 Can change user 3 change_user -11 Can delete user 3 delete_user -12 Can view user 3 view_user -13 Can add content type 4 add_contenttype -14 Can change content type 4 change_contenttype -15 Can delete content type 4 delete_contenttype -16 Can view content type 4 view_contenttype -17 Can add session 5 add_session -18 Can change session 5 change_session -19 Can delete session 5 delete_session -20 Can view session 5 view_session -21 Can add bank account 6 add_bankaccount -22 Can change bank account 6 change_bankaccount -23 Can delete bank account 6 delete_bankaccount -24 Can view bank account 6 view_bankaccount -25 Can add taler withdraw operation 7 add_talerwithdrawoperation -26 Can change taler withdraw operation 7 change_talerwithdrawoperation -27 Can delete taler withdraw operation 7 delete_talerwithdrawoperation -28 Can view taler withdraw operation 7 view_talerwithdrawoperation -29 Can add bank transaction 8 add_banktransaction -30 Can change bank transaction 8 change_banktransaction -31 Can delete bank transaction 8 delete_banktransaction -32 Can view bank transaction 8 view_banktransaction -\. - - --- --- Data for Name: auth_user; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_user (id, password, last_login, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined) FROM stdin; -1 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Bank f t 2020-03-26 19:27:02.111305+01 -2 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Exchange f t 2020-03-26 19:27:02.185388+01 -3 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Tor f t 2020-03-26 19:27:02.253714+01 -4 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f GNUnet f t 2020-03-26 19:27:02.319708+01 -5 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Taler f t 2020-03-26 19:27:02.385619+01 -6 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f FSF f t 2020-03-26 19:27:02.452093+01 -7 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Tutorial f t 2020-03-26 19:27:02.517685+01 -8 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f Survey f t 2020-03-26 19:27:02.583952+01 -9 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f 42 f t 2020-03-26 19:27:03.007416+01 -10 pbkdf2_sha256$180000$RBYjEO0WzE1z$x2Avt35TkOL2pMHvts3B1U1NIJalXZf95WnJhGFOAUs= \N f 43 f t 2020-03-26 19:27:03.433778+01 -11 pbkdf2_sha256$180000$8p8hsOkotA0i$JXXYtj800s5rl0nyU9HCVuMB6ergdsZIVhaN5Qnx2LI= \N f testuser-JjVD1AYx f t 2020-03-26 19:27:05.200825+01 -\. - - --- --- Data for Name: auth_user_groups; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_user_groups (id, user_id, group_id) FROM stdin; -\. - - --- --- Data for Name: auth_user_user_permissions; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.auth_user_user_permissions (id, user_id, permission_id) FROM stdin; -\. - - --- --- Data for Name: denomination_revocations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.denomination_revocations (denom_revocations_serial_id, denom_pub_hash, master_sig) FROM stdin; -1 \\xe0726684567b8f6e972ae98a1c743d83344292e41f48d2696272bbe7d7cf28e4fe4ca576cefee21dcf4d05dc1927dbed383bd6383af4f6919c6185cb86c29fc2 \\x22960d2314f1582a329648f60b9cf4260a030e824b1250bc5579971282746a0aa8d148b988945bedf94a4f3ffb566926e399f7073d2355e578d7e71472140d0f -2 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x21fcac8b4ab4a51300d5a1315655d0ef8cce440fbf4518bc4ef759e4da6fe8f3bd725739ac7d77455dc3b006f66cfdda86567063b187708b588489408c5eda03 -\. - - --- --- Data for Name: denominations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.denominations (denom_pub_hash, denom_pub, master_pub, master_sig, valid_from, expire_withdraw, expire_deposit, expire_legal, coin_val, coin_frac, fee_withdraw_val, fee_withdraw_frac, fee_deposit_val, fee_deposit_frac, fee_refresh_val, fee_refresh_frac, fee_refund_val, fee_refund_frac) FROM stdin; -\\xb08a0f5ed1b5859b7fdf907c5cfa6439e79f21ef48dfbf5c93b7e7ba10262c0652e5b4ea64dca448eda615d06b851d85773a6a4d94e2fa210c7dc9e6730f222f \\x00800003f634a8b280d60e393fc134a026a9e75c73da984ee8b37d6f97126316c21a35030145c82a573dc4c2c8a1aaaeb4190a9ead8c3b5e7324f1f2aa4a4128460c41c63aecfba3a2345ae4fa0ad575077937b99c2fc3db16f3ff57ba26b5509bce6861f7223e18de56e76069a0fef1af8035997118cea476eaad9b8617fb1454af3a21010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x6dec5a22a2f272fcb4578979501441eab3fb2f8e56a714f961006a6f202d84818b99a712220c5f0c0c3f903bf6d33061b30629e71671d0e919bde07fc6c38306 1587665210000000 1588270010000000 1650737210000000 1682273210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x22104ae3f0d6f6e6579cb6c7e00f4ce253150e2fecb6610d64f5a0643b628c38f6bf26565b91221a9d53b2af71be535bbde0ab3ef0266302668b4683708dc28c \\x00800003d55ade68ee8e9736f077580c578526fda98ceeb09b45fda0ea51caac39833bdb2a18b515ae5e651b2cae56f6d52036119b31fd0dee64cc9fdf41187628016eb46db60fee0297c81effe636f910e3c6475afb86990374be80a89ddc305974c7c72b8055b9cdc965b2efc0a2c8fab26d70aea32585fdb75670084011f1128d630f010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x09610beb2ef510eba77251f7f64a731d27911b45a2b34a81e1d82e9d9f0da9c2a4ce305b4ca3b9cb9e96e5b88e64d6aa136bcc45eb9a41b1db595cc86b4b5f02 1585851710000000 1586456510000000 1648923710000000 1680459710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x83a1afd9a1b99a4d7824bb878db71db8b8718daab4429c879f55edda6c7050ed8efd60ef95b84af213dbdbbbe283bb84fb32817a8bd2476de1d563a7ae3940f7 \\x00800003b28058f5eaa720fb59f2af6159888da4879499ee69315b44294a0f286991a9939757cb48209c78f920ebfe3087af83b6123e44249a16e8e82917f63097ea43306937e8ad94c577541d8e5da649bf5176418f130fef96baf66e093d367b80f04cf5d78c08dfc9c17789bb3515281466daed6f7af3093ae1fefba33c3aed5f7151010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xab3fe5dfd1db939ee85243c93249912b8648aacb0ed0908f962387e57b833574f501d6698cc6cdc5f449ac54b598c2dfc25becd2be85bfecb1c1ca33b12d2b0e 1587060710000000 1587665510000000 1650132710000000 1681668710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xb2b398d560e595d6d879842cd209cc84c924a57538ffe918aa6f3107492495740d2dadd63f34109c3a19caa665eabb781359cac5c496e56a36bfc6926d3a45a8 \\x00800003ccf8f6e955ec8dbd5e1fafdbd4c2a5c63d6357c58171c5ce23cec69db797dc7d5d1e634d5cea7484cc2be8ef4615db3f9d0d8ff2769f3f06ded82447c3f4eea765131b0af9d9acae660876f2ab540ad8c1fcebb713f75da2ea03ce49c0c74667771ec592a90d263aa67b3771ec78312614b9998b597c84c7f155d94dc17ba6fb010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xae5361bdb70271fe0370497ebfb224e8a7eccc9a8e6fa6624bd7d31bd1e41f68388b461a04af37d5029372b60b75dbb12a3048acad0e683aad76e725e982790c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x76697f4126c154b222b4c8e3f87e1c4aebd70a13aa1b73817e97bac1a03af9f8f6eb6008e0fb5fd0a9c8d147f96e3a6d48abe0f322969a8435081ddfbc8c56d7 \\x00800003c005baafd68b9a18061a96d08a1f93c22924052134f0a5494208fb1d411886db3e0ecb074ae90bfffc03cf2b2232dd97116220e176379a5a72e8f80e57083e336a15611a673cbeafc0bd938a765a46b41524f29b5c7e736a7dbc2ff01ed34dc3764435fe9ab7a64f839d3346e6930f36081444990c8c44805dadfdb19b79478f010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x9c201cd873b697ee78b1cb5d617dbac0cd8f5b670b74c0e7975648ad0c6c8ff5527024165220e9158fc88021192913ab4a699c6b7ec3436c57ea31a67c4f480e 1586456210000000 1587061010000000 1649528210000000 1681064210000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x5b5d76d5af2cb092c8ff4b46d0d8e1d470bfdf010a456e290b5daf27633401624716c8cad6e767da252c78cf798c9e5bd5b71d34cf9d34788ec2efc8d38db026 \\x00800003ad0b99c6fff794279491456c65ef1115fb9d8dfea6b45f82b4971926815cab2264de5dc5a200289c2ad0212f6d7b595833284a423add333c599f8d92ce818a6eedd2df2557883249446258d516af67f711aced066bd0a9afbc5899ac54b0ea901936b9b05243ec73e6cd4e1275563395f3706565590adc115d28ad0ec84ebff7010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x05bc742ac859e4d65f78b4d2757d79a3e3e1f60fd03b3cac8dd5833f28bc96e950d39a264a322ae3c5a86a9755f9bf7a0b809e1a228a6f8d37e5bea745f54e0a 1587665210000000 1588270010000000 1650737210000000 1682273210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x0075376d6ad4bce8456a069e7bde945b7f9dd36d73480a147b55c2b06d18274dd666d2fcc28d94fcf6e8c401c26d462e2985a6714a59967886979c77f8ff6418 \\x00800003a9e811c8ec80e58b61eb62f02d23473c1a778a7faeb417a8140fb988d39a04dd5c1bdc031a0013e68d9fe7fb734da2e51f25c950e069c16d8f743c314b7035bfd12cd1dbc0243749fa6ca6ffed65674d1124277e54f48dfddb22ce3556352192eeaa41336b225f6416cfdf30e9a234d74d509bfa6604fb37626691e733325bc3010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x911d59d6e060e1acd0b857a95b089939b99411bb8a73918cd52515ff8f6e511ab12b52b51d68fec5ccf96106695644c97d7bd131808e0ad2e3c33d2375c2e205 1585851710000000 1586456510000000 1648923710000000 1680459710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x6a947bbcb38b820a51840d9cc4f0ffae9a605d045f0661f391cb241120e2bf147dd7954aec09deb4e8b70ca0725a6fe0c6bfd486b8470773e0970d0293eb5b30 \\x00800003aceef5e810ff509df46bb7578317fe5bf1a03e15954addc71e0e89b8043882b7ffa46e4dcf8d841527e90bd55e3b53175d6f849a8c211b49bcbf839e3315a820d56d8bf914c091dafa986b03d45974825feb252f8b18cf00119964b535cfcd03983a8a106995455ea0f3747f04673b600b6a00a7417f21538a240bc589f5d053010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x9556a823266bd931524199b26db0e0fa5113646f71b8870e12692bcad8f041d869abba16fd585fdd24d935aef5e2395444367f5f1a0c6658da67227b505d5901 1587060710000000 1587665510000000 1650132710000000 1681668710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xb378eecaa2af3d60482c35dad80df06074d106d106c4a99c0bf17ff78a1c4932f6c61c244ccfc9bce512b86d2e1029b1d79d5f6fa165e29f200906e8a25a1e7b \\x00800003dde42ff25bd4087a637db2c939985b8c32e96ab4a2e56c23d1e0b9d882c7e15def40d30d84363ffe2bbdfbd91dfb174305e772e6aed1dae9955c2580033219d64cbbf69a209c6fe7a71923fa1b349a9fe0b484c76a790da03d8ede39900a120bd4f3a60a755c16ec216f7f0d4e5cead106c197ae01c2a93379c55fe8911b2347010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xa79b383231e346ab1ba67f613471eda9b8e5732f346b8a43dc2ab1fff6f1abdd85aac75cd96eed57fb39e7d22433d3e906979ba92ecfd2673558e0e854916402 1585247210000000 1585852010000000 1648319210000000 1679855210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x05a962dc843c0ff39ee8e5fc3762a8c73db6be6e8777ea3eb8b5cb4e3423f7eae716dd7826800bc9778e004eeff63d38e3e3496475c5574a6978660bff8d677e \\x00800003ea5907be696e6a24713e2a8960145d74e8e787ec45cdf9e425a2fb2723125176c6540d36a64663f8a8a49239043d6a8e4f0cb1d7bcc240661eaeb961f9c2c4d292b724702e0c1da78d602b89e962d9cf4a9f7bc0124957d22fc29a900fcd6679bc9d752191a65b9f81a3393c662dae0f3a5cde312bbbdac6b5aff830decdc883010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x2a507230a1e3189c341c27e63cb2605aa835b69559e3e7ef2ff75c57531b1cfe8e65477022f6fc76d37749d4a6a031970575df387ad909dc5ffd5d2ab58e6d01 1586456210000000 1587061010000000 1649528210000000 1681064210000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x1f9600cf0bdf811771933679fd1dde21429a0c73f961960af88cd8d1d53a5ffdfaaf5f31cc5f7b28846298ef0a84de0f3abf8e9389814bcb913e21c630ee3cc5 \\x00800003cd35fbfe22e73bcb6dae7d7cb25fc6afe7628b1a3a1c2508ceb19b90cc8a6eb7c60ceece972bddb680500a030c29e4578b2bcc3e7000c992ec02811bda634d311d840a72b4735ba94534464b162b94092c192d535391678854c3245594d39ec21ffd5ca9ac2afc864a834b86e5f494004064817fc172c459ae6548eb3c1ce26b010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x40730d9738e4d8a4db917f9aae1e47e8df9b1e3d86208e228f9228b7e2a6b4dcbc0c7c42ea245d36e9d353635f54ae340a8f18886b483de3453d17d92b76db02 1587665210000000 1588270010000000 1650737210000000 1682273210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x5e3fff3c1f92845ba0dcf1651b7ec20c0da933572c2ce961c0b7944ee4ee3fa13562d8fe5d799f8eb8e528cb431033634fe73318ccec18db2246ad6bafa0c762 \\x00800003d92a694f24b843c35b266d64e8255b7d42ba05b344cf172d1e5801009cc1307a6c11454e985e3d107de7c10e44fd5129ff91b6cf6183f09bea1098de73eafdc4640b4bd8f1ba96b01fa4ccc417446e9c05d13b046e6be8fe3b8e1a8f5a5e99ed97fd3aa54e169360b504cc34e670c248b3a2ed6c9ba3e9c30bdff95cf08f0a29010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xc70623f832c4c919187efce808a53ffb5911f70caee101391e572b17499e0d015767186d6683265df2b80b999c99d9e674a1edd472c0082d830d81061368fc02 1585851710000000 1586456510000000 1648923710000000 1680459710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x85ac0b83d4e7d7d59d97c69057d729e8eff4493677e7ca61c55593b87f647fd7fda8d5b2712848a1d4df31ff2f27f60815078aa5f2e59e9db57ea625cbb65bd0 \\x00800003ce500a6d6a3c11ee23d22c03268a0a13606922c59678dea760e235a48c590681fe7794c4d1e63777a1bef2fe7fdb78eeaaaa2396f704df79e6dc21fd3ae140465d7879a2288acbd6f337b964455cea44ae3aaf5955331a742996e772d0b77917cc22b13282729d3f90781587d31da76bf86cf9c8431e1f11ebbe69ebbedd1edd010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xb65706df00d2a8c2ed70f527d5fb29b18d74ec8daf13e32bcfd22404626ea03c6a8df0787d114abcbd95f21925a25137a30081fe2f02d2cf4e0cadfae97ec809 1587060710000000 1587665510000000 1650132710000000 1681668710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe0726684567b8f6e972ae98a1c743d83344292e41f48d2696272bbe7d7cf28e4fe4ca576cefee21dcf4d05dc1927dbed383bd6383af4f6919c6185cb86c29fc2 \\x00800003b0551bf050ee616e0a65669e3aa367e66d0bd6fc8d0c188d31a5179bc6f3ef6a584cedefb23babef8688b0b07a4333203d440375ad0f02199a93b17cb42ca6c52def85dcf6b6a796ef98eb84a051fa05be4ff0646cc21f9cc8619576f3599afda20313b3adff21dfeaf689712d3764f83172c8b5b0291b18ffda239af0a9a163010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x6a38bc0801b022a2701425f901af2f7dcf9d880d155b8ef55f92f9d15e7d02c7558ebbd539e71ad69332f823643fd9d8275edaa3ef147b4cdfe570e861879c0f 1585247210000000 1585852010000000 1648319210000000 1679855210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf47266abe3cb33716f3b864e07b033f66af6c7be58a6364c28d6c507b7ff70acf649b9a7396cffbdf77bb5bd7af9196c5299191dedd5c9a6ff04073be2ddb945 \\x00800003c9c044e7e249e21c0f484f4d08b192186bd0d2f9d0e4ef9ca8c5d61f324c053a095a27700d204435cdeddced1dd0f8644669b46d8e9b79e2af304f42351a0eb094b0f93f6ef102cd0807806d4d3d8f7cb2b69ec866a3f133199b2acd51aa6c219bab92a8a3a37d833499ff9a7eba5d8ba28928702410b9d6620c59a4611ed187010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x74ab80aba48699935bd3fa517ec2c42cbc65a4a0d364d4331919852717e48fefbf4c4b4eb6ced68a57b718274c5e7c172db5899bcc97ab6052a9899011c3b508 1586456210000000 1587061010000000 1649528210000000 1681064210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x8ba1aedd039e8a27c23c673551ec9036efeed66998fb3371591db8ffd4a3782ef69b6a62969744c9c2052c40cb4600a8a1adc5bf731d0a4f76bb882fb7f20882 \\x00800003b98754c02d0e499276a63d9173c48466d7a97f253b8c129dcbeb6b3b6f41362bcbf90448da2722a6fe8655016d434030d6cc7e67617bbff116ddbd4e4e412ab56333aed2f0e014a160c9eec0009f84ba6c09d606e25bf74413fa825e62c37878df606c306c0b41ddecdf854550cb5d5fb236768bb60f16f97f16aaf4b50cdf7d010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x24d467b321192e02030a75cd59439083bcf671e0fd687770d930f4089e1c0f7ba5fd049f7f210064aa96b4bc43b0307e36052a1f56e0fd61f06a5d9531ebf80b 1587665210000000 1588270010000000 1650737210000000 1682273210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x596dd70417dea3f96b72decf73ebbee411295403914758bcc5d562d1232ad6aa8b14857b58e1cf9ae9b1535ffe4fbdeb4e9b6d67f0739173b64d9bfab00c1f0c \\x00800003b0e1c04b9976d6eba81ea37b67007c594a9d7a843f4437e81e26e671e66234e9e7c044d3aafb293cdaeb4a62fa3c9286c4bacac8a5925a1fae8aa84cf911deb8de017893b2317210d7f8b9f13ee8441d922413e54f429dfb3f3c778fd27e6e497a3707bd763349aaab51df7ecfd7ad26d30456d5715958a0f3535e4d38d4a30b010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xe314ee9e945c658a1c06fdf23f42d2ca888890044d9567b4dbfe8071c03165a55025279518e85a9edc312e19ec705fbd0cfe20036fde957bd9d3339b90ca1403 1585851710000000 1586456510000000 1648923710000000 1680459710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x117efb8a2696ee71b862baf5718e5e897aa7b454c0b71731a8c51e174d6f47f0fb5f2b3e863b62242ab49a94f4a8c3b6adcc4c33e1f4f8eba0d0f2ab121a136d \\x00800003aa84ecfda79a2e2ee06163dc14c700f1ef089493f905b39c95b555acc265c68738b0a956f241e41b786fcf8e5a4e44a2a95bad2458ba257454e45274421cc58c88ce300d0619f05b845b6c9f8f3d691159469e5e0f44a21978582d2bc53e800b7b216ab4fea54fa8b3ec2a46c01a635725a763c4eac46dffc02a597699cf8ac5010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x2f5631d9c0da79467142728da1d62d7f70f80463670baf7ae6db47316933f2d0e70dc308c906c453eefe46a07a1b81aab2ef5b2a7a06c3340f350a16a639a003 1587060710000000 1587665510000000 1650132710000000 1681668710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x133ec98fa5d8efee9e3db8305dbf2710c92fead62b0e5498cd3b6327a08bcda6829d723b7030edfaefd254544ee98919cb79ae488d288f0b44e2398b47543cf1 \\x00800003d12b2e46adcb4b64c396b334010401f805bc1f5448d23a854aedbac29ee346cc069eecd774a7d66467f85133533e7ae7d284c091bc499d012867e7b9826991e1d9dd5c9faad98011e342f5192ec64775c1dc93b2b2b5b40b7cdaa450085574b5e682687c9b77866211b8aee01b4ee5bf5f287ada53c9ece7e32e5b1dd34afe15010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x553880a4746a6d8373cfa9ba68be5f9efc0025535abe290eb6741f6df2033f227e6c98858d625ea96b99a859019bd78721ede3066600a3d185bf0a576e85c806 1585247210000000 1585852010000000 1648319210000000 1679855210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x5557667cab72b0e107bcf82f6afca038342e4dc9a1c9ad16e03dc7f8b087ef861fdfaf39c755ca5f63323740dd13edbbb844a72769442659736031ab8dc9f825 \\x00800003edd5526b05915fc86cea4943435410a19f281c1d89a54df84792032e495147511eaf43a84f86a95570f922653a238f97b042d757f0cdc9e969cfc0a075099308880a6dde598eb3a8ed09e8ecf64edcffc0fbf3f0641ed1429a45624e77ceff7aa1d30ec6efd671a55059bcaff6f44a168ed13fd35a74d251975bd4dbb66547a3010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xf36a4245dee05faf5d753ea994002f71f4edceb7a926c600a9eada90b3f2cb132046400340dbde9b4109800a2d52b3d317dacff34fcd1236edad29117ae8aa05 1586456210000000 1587061010000000 1649528210000000 1681064210000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xe282452214a9d34232b6c24f6eccf2a97893d2ad9741e9e0b4c874a5c5fc2544446e0b43c0bda9211bbdce61a4762bcf9db641b46ec67ed8f71f3b0ff398d5a9 \\x00800003cb8272ab137e8957e6b27a69532b8e418d4bae8ff05d5ff728a426577b606d63afc82c2062498dff4957aafde398a7834e5f0e2368598ce52efa69fc9f5dd6d35390b476d803880f4908dd953f98d22949c41694d8c2d3e37e2c229f2246b50ce62b50fe32088f5885fef1028a5aef7dfb307f86625b6eb2dbd145d32bbb9947010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x7c5d50c01a587fa52d1e9ba4eab515b8c1ee794f48e7064d0aa40bddcb9aca9e2c7d05ca25dd2c43bf7873777bebe476e7bfeb01bb1628a8013a996449af1b00 1587665210000000 1588270010000000 1650737210000000 1682273210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xaf1c014942d7a667381cc079933a31eee8c9ecba69f1d05957757ff2735a71c20ec47253af465621395e5c5c08b0677345119eaa1d49309afbec7fbb27c85185 \\x00800003b1bf3b11f7ccc2ff27f974eac3d706d7acfb5449ab83b8d8e9041c6ceef4e255bb779d1221160f4f5cac7e386f8e76acf607dc6bc25171800ed692fd6ab86e4ca021ee55ce71d982970293ff74d5bda9c57914e77bee22bf2f29bcc0655467dd6c28faaf4b10986a20318fd46807b81250713eb65ed39c8d5e8ab3581efbe2cb010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x8b7616206d7866b7c8055bdee7adb397b1f536e4346d4c786221af738a727891ec1916096ffd6559fee2dfb7e96a5e1d97d682255a19ecad12ba0c29334bc709 1585851710000000 1586456510000000 1648923710000000 1680459710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x5829756a33e2512e0c52cde712e9c737c4bd5efec68356606c9fca2163cb40262163ea08a65ac6a76a145397423299aa076a8f1f8e9957b8963409f85fdfb230 \\x00800003990f6be03aa254d61bd3a440c5b36314cd6a094b146a52be5db6cc09c3be4c96377c37b3c63e16d2a680ff720969af10986d4ba1744b3006354202d10918c8268788457bc447b9bd82ee1e296acc0799167ace2b11138abfbec7bd492fb55bc9b768d64bb0b70fb63b19f287c29ba2c48b5ea25ce20fcb38948c17a6463265f1010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x761e40863d9488915d4589a676bcedd05cafb75b904e38f23d5004f3fdd3f672d803aa11b84533817cfeb70650a536a1f8ed747991d8e1cb1274a022b57f2e0b 1587060710000000 1587665510000000 1650132710000000 1681668710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xfac60747f6f5230990e394d61524d5e5c2d7fde9d64cb67971383afded993d28b8ccc24859da6595521f2131f8b29f7249a132b21bd783ddc17df6743baa690f \\x00800003cef2c01704641dc599c84d724e2a23281e41c0b3e169d762e75cbd349c57b21648fee483f3d4f3a835c844b1abe496d92c8b812ffeada1bd501efd5937e6c1e2fb062565d0941fd91d57aab14bafb9b3e472dcafa3008db23a90a6bc371e8314adc1e48ebfd9be4eb090381421bb596b2f9a590feae44abdc7e9d822ed71e791010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x741daa2061da8db0a94be2a9997ab33b9c9b0f0f3de363972987609df8b6a8be20d9303fe9d6cd8c2a77cba01acbcceb66233c386cfd767da624e757dfc9e701 1585247210000000 1585852010000000 1648319210000000 1679855210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x9de8cce48ed3e96948d3b3afaa80ce3b88300019c9bc6f2448a82a9902ab58fb624caad443502b31a5b346881d74d3a52548fafdebe59134015a4af878d25f1e \\x00800003b94088d823d110517028c323cf8eb01011e1242c875323bfca0e1894e19053b015bc801b61366bd90a52d60a36c0387a07cc5cc66e2bcad30756a89e6f416a5a628ade9e3d395e045eafbba08f546028e93e40605bcc08fc0973923b2d81641d9acba5cdf22271a8e0fea3d55a60fd007f4bed17623d85a81aae53e3f06ff4bf010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x9a5d96fb19223c52e8943644d114e0941cf67ddb44f9a467271e7ee81021a842b75c4cb3c449ca82fa87b2495760e7b55adaa2fb285bd0632a5a620c9c3a2102 1586456210000000 1587061010000000 1649528210000000 1681064210000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\x3bacefcce0349291c705d69b39cba778aa0701d0bb2747d3010479c031f6f407e3be7bffe675b6076e7cb84ddd42da866073233515581cc8beb594980927f883 \\x008000039efdb7a58afbbbdfc3af3aa76fd48254eff1f8597ed1b147ce649f423de47858b6b5f07f6e59d1137bc5a0131e9514468c3237ec10f9b67f481c7136a067f95c52c24620c888c2cf6b9d08a0b7ccdf0d9f70e646cfc2ff46d7724d28135600036ed9bb37e78a924f6db1cb6d0779fd56a352f8faf756502b484c1a2b1f27c1af010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xff2eb53c691bf844fc736777e5a81c4d9eee0d9d9c4d9bf6e1549c86365a42847fda7dbc0b810bc69d3b1b1d3b89945603e39a9d80a003852bfc23be2b2e2205 1587665210000000 1588270010000000 1650737210000000 1682273210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xf3b15f353353c828067a48d0cb5cc98b82fd0fe9f0403e675cbd25a702f0601c7254a5c1f12aa67841d9b347bed3720680b3fe8f48b3a3219ec5df26a55f41c6 \\x00800003cd5947b0a750cf42de888eeb4dddf5546075f3ad6e010b1802cfc7141018616b01417cd60c4bac659de6ad3e93227de6377109f4a62c8c6c2cf3cc158c6a6fa8664154f84221732e11a0b44ead391f4a062356f824713f0e57024bd9e93f602f3d7d96a25232dcfc993ffa4820264b49b21746ab6b9ce8d38bdeeb69d540a961010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x68ad49dae3dc521076bb9130713d88974ecab0ce7ca5e5eaa38c6c171396d2c03d28ae1d369ae0de7baf6b30ef622fc72078b99067d9638deeed131cf7e6bf03 1585851710000000 1586456510000000 1648923710000000 1680459710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xf449fc3fb518f2f296fee1686d745967d03c457efc5c843ec7d18603aa0975b7295b28afc80c03a27359abacd0b8707d9fc2017c4c4ab91a128481b82bcd4d42 \\x00800003c65e7547192fde53f1d3d862a15fe8290497f5cfc6a6bf695346c6a0959fbcf01df3afc8eedd2df6555a65e60f0e34e94cfbbda6c58ccc5928f9f35b230c38fee2ccf9dcd0977182197511ab21d7502703a9432fd3ae9089c583d0d503b2a6a071074980f69a922f6a52d38dd24374c98ce95861e753c49fa87de7a0c88dcca9010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xbcbb51a027659295deae26797987edaedb378a3d50f01299065d28d1172a1b781f13733d467458da47dc115d0c789e11e51f156c2167487a30cbfadfa97a530c 1587060710000000 1587665510000000 1650132710000000 1681668710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x00800003ceb8ec579cd089e157fe5155f3d0ffb70db073940f8a163c1a51441a44cff4eecfed0ed60c886107592cbdaafab3ae817182766a6402dd7d6f95aafa3b65b8cbc2fe81ad57d6d2924fbe3c6581f70250ef4ecdab91f43b588e14ef9091a8bd72a61d95e76606b3840beb7794fb92462ef1cae154a2cae67b30525f7bb0a61231010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x7ebdcc5dc79759b6638910ea1e4e979fdf95f360b23b42d7619685eea3025c05144c30c126c6cf064584d844b55ce7ff7fb77b9f55f731277bd44e1d0c751005 1585247210000000 1585852010000000 1648319210000000 1679855210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x0e15259d45b92cb3220d56402b7cecdde2e0c7b35ac8c8fb35bac63491ed0087c7d878333802f9f46f17e663cc5e6a75571527114651b854ca920dc09d9d456d \\x00800003c1e2c9c05b49085c35ac878ec97e53ea09cbfbe8c06c1e069bd477389dffc4ff73f6ba8c3ddd279a161b598d8d599c7e93778d45f89405aa457d77fd912e4ec2793783bd28117fc3c89d9dad1520dd46d58a5ab3ccf73b1bd6cad83cdb08e5992071e356555465f4fccd29a0465f150e18562ab78da1a7e26d288870f12032d5010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xe7fbd1cb37ce89fac2be18b79fcdd893e9706151ee21ce310b95b519c87aa28d0dcf0f996db8004b18f839e0042e4b40d89ff4817ba3e5b7af1cea7465a9010c 1586456210000000 1587061010000000 1649528210000000 1681064210000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\xda270368811829cb9103c1bb50c9d144bf3b263a2ef7902558d4d806de58be3df7598b6efc7287a0ebf7e340eacb69992d32e5316ef63b144df2b866796cd934 \\x00800003a3e5d2201f8f6720e6206acf80cc2ce407adba174d79c4f72d30ec6c83e8d0f0ca7d29c489974824d6fc7aae5d3b203de67c6f5d0db2dc8f8719f09d30f9ded0c0698455dc4baedc6a6627648f5ca4943d1e0e22a3c49dd170c625dc2a6a06e1e9d6d187792a3748e9f73fb7c795bd9a6b59505a0e254e7305546209cc6f0fe9010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x7435cefb6723aa32554ff1fee5f99d41855d59c3c1b180a3b4e5ce7f21a3e31b4a10e71183dcca45404f94b2b8de7ff9373a963a45f3e4c85ad7835a58664005 1587665210000000 1588270010000000 1650737210000000 1682273210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x00800003cd57265e6acbc3fe78eac67ae683406c3ee72b118db97420012fb8ce9faa64dc62e4489a14b72b365f0bd697ba4a375e33029851ac7840207be92b0689736e62b913588a0a95aa72a382236704f885bc32cd8ac01e913640226f4e932155b2083ed05eb0899350ac59120c5e1e3d287c8f63eef98159d4c11b61d3ee84a03c43010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x04eb4aeda3bea01ce30e104dcc9e09a73f1289d382f55ce81d68f86178352bb2fc42ed1b6c500241e923288cccb9bf87d830cdfc984d0103580027dde20e4902 1585851710000000 1586456510000000 1648923710000000 1680459710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x993df19db1d9858d347a101b12278024a0034c70b2ab7a2b40bc87ee5c15e933ce1d952bae328b5a428c8bf39924481466c9ddb42fcccc8592324c8760961366 \\x00800003d9316d8066f9e582fea86b1e1a6d846184987ad96f73f88e66e30853b35c86dfa86953d3264749dec61577d52171e1abd66213ae7eb2999953943060a4530adf930e44bdfa052dc6d890d4315693870f11c4091de89005aba66647f90ddc615dc78f72c1374567950912f85c04a00716e2833e576d403ef8a20e2972e7a2758f010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xb9921d59e4272ae767a979d9e3ab18270fa73f689b2c8d7ba6176344f0cbbb13f4d8d664e7b04ac03f7da44a3849f481a8db0a664f1b366682fcf90ca8c7be02 1587060710000000 1587665510000000 1650132710000000 1681668710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x00800003b986211387b410e1acf0938086595550c7cd4f84115ac0c87fef183d63963a9eb50d58ff0100e33466a39f26da9cb5f9088d829c1e8243c1964b49e66e39320d06ae95b388148e13dce4693fb3309c68b374b521a868f41da9b0235388c592964602202f776f807da998d5caf858b36fe46e983c1b063c28ab7fbbedec3c697b010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x78bcf7e85711ced525576e5c1d52bf16893c4fdf13d5fd4d188c6de4d8222b0d8afe13719f19d5342a2705ad20a8d2180039d82f2de834de769cca8c08e6ae07 1585247210000000 1585852010000000 1648319210000000 1679855210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\x98e9f02ee744cc60bb24bdf368c4b1a01e70b6d327c38380cd6a306d5451b79802d7b11a2859ffa86bc9e86f80ce67a8fb8aae6adcd0274739822cf2167b961a \\x00800003c1f82acfb562d6bad63f16a1bdc8e302dfbbc1f9cf9136f0b5ebd0204abd1e47917635712b2eeb9ce861a50490474e4345ef60042047a1376717510059037edaa8c0df53da16ece15d91b7dacb694521ed903af2ac0af387992da3d326feefe574ec7813ebd7688d77a9170cf70a55e9f63588e1ed57d220102933e780a6f8d1010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x08c5c5d8ec00c2b76214661d2846b6ce2bab719e6fb90822afdd285da69db41a1edec34ca02f05750ee93e275161bb5a9922b1ccb686448ede583729ad4c290b 1586456210000000 1587061010000000 1649528210000000 1681064210000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xd628b203825e5c1d6f06fc772be687e4b1236e8525660bebc08612c7d985f1f55c2d01e32f26a994ee775a5d425c1c02d8c75ecc00fc90ede6f83fea0a5e090d \\x00800003b1ac68a79a3326822f02c389681aeade7733d91ab3a79427c16039783f6f6ca0de0bdcc63c5bbff73f8da7f532a569f5d2a563eed5a826b0485472e71659dff71e2dffe3ea2bffacca6ced7363f77b40a3e6f22c0bd3c6b3e9a27cea48f9aad0a4582f2b0a56182e771d87f08c30f83646fcb3394ebe7a40de8cb1167d4235f5010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x5a703fcd8e76dba0e481a9aaf68d43bdca9b7b9e277d654bcc88fa1b8e8864ea41ef5bc87762dc7127e95e88ec682accde1383d09938c5b261256d2d0204020d 1587665210000000 1588270010000000 1650737210000000 1682273210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x478fe9f5af3431c4d3eb0041181970ebfc4ef63e15f712f3f0882bf6ad45c14698ac62d1c58b687b3811de87e2a3f6bad2a04382e70b98e225680285fad80678 \\x00800003b7aee48ab5d2db9ca0c90bdd4e6248b88117b984a09d3d1fd369373ae92229daf97270d0898958e32507471ab8e0930b63d4cb30585e5dff7f5c11060991ec3bf00c0b6a492be39595674ef0cd1c139c9ad9e04598a97e01ae51d40869c9011b75b7c5cff426c314eb1deb36b2d306e7ab0f03c157b45171ed814523d66ed8d9010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xc981df81e9dbc3700b84e6051a1f6936c7619ea8ec93f01b215754ebeddaa57bc1bac97b902c06ba6a7dd4c91a78ac37bad69e0540214de3649472fdbefae301 1585851710000000 1586456510000000 1648923710000000 1680459710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x423cb1aa741ab0a5237c1a1e96d8564a5cd1a4e1cc092690215c66d33c2ac3bc55d265997f49cb54405ba72c621465571b26dc781c6fc224ebdd418042540ffe \\x00800003cf2c3266dda5e26deeed6f12cbd216497461ef98d732286109cc866bbc281bacbea593f534e77700c6caed6084311fd243f058c53d622b69d7ac525f2eea33ad8796dc6ac6eec5af846df48c413665614c4e92c3cb4f6f3f03dcef1de33e3700ff2d8ae413366d3c92d26d46267c0027d0dec324da79805d85710790afdc1a8b010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x8b37dccb31a6b8a8a860856db7c2695f122f6170750f6e34e11d0eab20eb0bb23ec00c63107078f8015dc29094bf65e58680672fdd43176dde36561acab8e303 1587060710000000 1587665510000000 1650132710000000 1681668710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\x770c748e581e8ed7edea219a09ecb0018a2015d5a8017f746511950f5da1c4ad1ded37a5f054bb1b0b8902cbd3767f9b0cf4e0a8e5a8f29bf555eb89dfe78fad \\x00800003c25aced68214c1987b142f6407c6a40b01c3cac34606abcc69f71e13c5e3064b85a6b0a4ebeab7350e785887cbe9b1bc89746f16488352003fb00b202c71d1dbef46651c18b0c25e080a2a17c9c05f00c76c07bdf01399026a51f9d5e4337e9e4585d7dff0b2ec3ed02db6458c297dc892e3542037180b15993904eefaf64013010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x53048fbf584f2c38ec2fce2d2271bf392eb59fd00579ccf248c0bdfdc1014b60393ca1e5abf0612209b8ef7d787ae009398091b162c4a0a7f4eaf33cacecae09 1585247210000000 1585852010000000 1648319210000000 1679855210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xd24ed264c3aed6dc5e0b038789f8b96c7a39e5afad1a6d1152e7522dce16cb07057c685ebb3ec13c4d813e7526934a0bedae3a3f69ff5ed67b17ce19c3900d07 \\x00800003b7063021c33fe1a2350cd57dd0460a9b87ac5f1e1de626400f6c07b7b930180a8183753725882ba4b484a3995ce50f69bfcaa55decbec1dee1474478ed1b09590672eabb0ec284c40adf1821da15855b79226ab705b915f1a1c7700b8534fb5d8bca6183ff89a975bd772dadb4f4facd3206f048ed71cbe61732557e5f09ca6d010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x9927a1597b6a4ebd9f1a220dcdef44af6121de38591ba5589a9fe360557967d20e0018190feffd4cb403b22bd736415e6de8f3c86b9ad208f6f086374b62fb0b 1586456210000000 1587061010000000 1649528210000000 1681064210000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xf83190c4582e1152cd1d1cc323b2b0bce4603dac971c160babf3389cf5e585796e4c3973db82924be749ba9655471d73653774df3963cc86535f423fd628ce48 \\x0100000398c7409ceac2a45d8107fbc805d73def578387ccc929c08f6ef999c1d31656b8aa88bb7ce82709cb61fc71aa1866d4c208e875e0da6edd6677fc3ee1f4dbf1096ece98873937a4a06c1446653db2aea6bd51c3a288b619420305035c785b9d78120fdf2900bdb51d388c130f66871250ae7fc84e0848f44e4edae8c61811cc9b35f5b8c280bad4103f47febb3476df92ec7feaa3133b3f128e7afe0095b37f7e149c44d2f92e107e544dab6e5926bd3943522d537f0f7ffd201869240e9cf8c6fa11ab840f0ba0f6c918ae451bae71b590ad8c540046e31346f9b0680782c1d5f7a5841c853d39a89da685d31dbe6437e5c1a15b699799297c64d999ed3b3f1b010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xcc08ef004e961fa31c20bae17bc8dd22840cbb448a944006abb024f6bdcaa788cce8a5821f3d11f329b3940480504d6464863e4ff5219ca168cb60ea9b17360c 1585247210000000 1585852010000000 1648319210000000 1679855210000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xabfb9c9fcaec888f4c41cc0caa0697e857c7438ffd5b44ad31c6a03706e9f507e47b84042a40b40bbfce9ac3086337f1f93a3dd6c73b81b5dbe6b8008d0b195d \\x00800003c3e1272d04100a4da90c1c1fa880a9ce307147aea9c3446fc8d8af0c79c8bc5c3d18245f1d0de8341b7604e55f037c699023b1617f4a680b5af11c7667bd179ebc624ada5e9a566f4def432059e4b6987a003f9e0d1642d78f881d35f70e88596c8fc9a04b3fbd58db223c3cf67bf5b918d49c42b8f278d5b9fdf4c22e9b0e8b010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x92b719ff98607bf673e7fd296fb90715bbed78a29c460596bfd6ad18b654e1c1c6710b0e9b2cccf306d33a9d23ba0b69e6c5aa50f172d8a0b4855903f8411603 1588269710000000 1588874510000000 1651341710000000 1682877710000000 5 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\xa901213e3003e1b9010fe14ecec385d940c1062eb55665cabd1b7ecb4bb221b5dc4a504edc0a98341564c526e65f765c0c0339a9c4cacc14047f921974c0bc3a \\x00800003c2fc18727b002faaf51a748d609df4f2decef150315870e32ac863700490a84ad74da172a383e7cac437c2d7c01952fcc8e20acaafc0a95f7bbd39d3ecc16f9176fe346c41124efa51ca753226bd8f63439fcb019f191bd06b28c88144325070d8c30c0647ba0649bb6353da90f52e7456b2d15a91dd83fc08623928e91d644f010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x078d5089fda1a6ba991a9c8258c1502fbaa08a61171598fd716f7733eac65c063bcd1de3f86078518e41803bfe873aa14371418562511455979425568713a804 1588269710000000 1588874510000000 1651341710000000 1682877710000000 10 0 0 1000000 0 1000000 0 3000000 0 1000000 -\\x6fb5795135c3e9dda4c1f9726330f5c2133c1f10d75784c9acf91e2f5c480a50bcb7c3af863a2ce41df9aa20ec99eb6f9ca328ba3ce70718d4bbde98467f9077 \\x00800003ce0c661bdd3ecfce5c3c0a4b600dce4cfbae366e89a36980c73737a3c885b9c18e0bee6aab678ceefb5c7d1fe23625735c1528624e06eb7855e27e633f0b968ad0d28c883ffc38db707d9800abda97d68ae9269bf765f40f7155ae91a7d12d5aed6ba9884c6d2b5a99c4e3fac277e21462f227fc04f2be4a049e16d8aefa43eb010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x20088dda14c294c0d56d5afbd26981e3bc5b22cfc9a1f008f025030fe4811254bd72ed03207d392d88db631da56c4a718ebee6f898b042e75ba6dddfecbe5a0d 1588269710000000 1588874510000000 1651341710000000 1682877710000000 2 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\xf67f29265d2ff217d3b10a405f10948095527a1130bd9940b449ef76bb911c4fccb4b2e3d16d7e032f91a5eb71ab1d4a67df4430f69707ac71b5d39b30659f3b \\x00800003e006a9ea892bd6352b09367421a6434bb14481eef0b9815dbcaf34939bfbf1ab545b0795fd39b1fed1a56d52581e7ee5d0143c9855f0dae8a25046369998320fbba3e6a51cc772110aca3e9871421242b3b1ac5416f5adb1989cf65508a52f0a282bf3017210f8695540531d4ac25c91c4095b3759da44661f34f602d373fa85010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x649d8a73c8d858bb8c82f1d03748c165ae5e6f2c91ec389fefbd1c7fe9f6366c118cd980435d44b818f7051b8fdb8d0e861a77f90cae5c43d9de0f753c8ba70c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 4 0 0 3000000 0 3000000 0 4000000 0 2000000 -\\x88337537317cc8b51018fb4c4548bbedcbbf28c0c2eec201d8352f9110d08e80d3e1449a0008f62e5f44a27efdaf5ffa99c34abfb0279e2cb7fb8e9e9c091ed3 \\x00800003a9fb3a0f9cd59f01975206a2466546bb1151c79e3fd721f46589966b81277b685ddd768f58c505b1a40de62e87073e623748ccde14fe11933c25c1d1d9d9989c501fec933b04921ef94e72e2f27b403b3935d4905a7df21d1943e372195315e62379ed7c040f4d1110eca8095ccc5dbdcf2bcf533ac49db010ca6bea0dbe664f010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x81f04ba3211ad8c24e7e82241511b8ada9087df9cf201620092db4eeb91a52b3bc499e1e9892802972eb3dc82b6b1ee72e445f56e131a7f14d6ae5514e318904 1588269710000000 1588874510000000 1651341710000000 1682877710000000 1 0 0 2000000 0 2000000 0 3000000 0 1000000 -\\xfd2ad49aab62ebae12f33fe6de7ccf47884d467965b906937194b5fc4bff011da194010a26d10aa3fe51d376fa91f6b24e4a874b9641b755ec78ff6330f913b2 \\x00800003a13560cc33a4d3c46ed4936079d4a857a36313d950aa782e0b2e7caf438d76300c0a8f827bc691451755ccd1a12d1520af895de882128c92b21cd270c5d60815bac69ef00944c7389412b801b5ac04553cf4bf77c15463c3ee72f4a69b4df0c32f0af8a34e9d2acd478f60787be2769ec73b08e6ff4248fac33decc33727e75d010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x1938eecca25bf04c6edc549362d35d30f4b435d2b3179bb2faa786e70f0c2e23da53c4528ede3e781975823f597309e52f647189c81fb4458671d394a3cbbc02 1588269710000000 1588874510000000 1651341710000000 1682877710000000 0 1000000 0 1000000 0 1000000 0 1000000 0 1000000 -\\x47c01b601fcf1fb694b873ffcbbf6f29a967a62a4d8bb117224dea0059d89a75336a58a71a14a0c8e08474116ede3af09278f75027f5017ec8678de2b3a9fd79 \\x00800003bf5abf26d345a5a8d9c4bbe7566c68c34c8e94f38078dc5c1e044071954d2aaa75d0c91346c324af56b6965e4c6a36068820f98ef77185043b95a05bbd4f0a4912a0bfd9cd939fc990ecd85d3ad2ead9d5dcce378ed35c08ebdfbc6206887ba2d84fde2b64506a66fd84ea04f8fad937565f2985f2df0dd2213ea4db6240cdad010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\x76672d0041d15cc3a3b29152a0136bb51bac0e056d1bf27398dc9ec8160134281c3e0b38e6ef6ff0d5cd781ad758519a7941b131a221eb7179d8c01c5d73910c 1588269710000000 1588874510000000 1651341710000000 1682877710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\\xea07a69a2e207613ee0342ac42375a512a5de80c2de1fe45b8e02fc088afc54e57800714896492d7592f1760ce39a52b2e993f188ae22af2b581338541df9e6d \\x00800003d584493d65b12ffb09660cdf99fe7a0e73cd2bdc171f3842ee4553b1adabd4fc6cc66898994cbe304f1556bfd146b10c0d99c5f760d0914617e50e5ff2bd3f87afef5be664878951b684de9c04c402845dce1686826657ac3f265a83f5a83ac164d9a565bd76b3e7d7ace886df11e36b43cc261e66cf72273a8569bd1dcaa323010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xcc6fcc2c5aafdb1143b18c713156d7804d6fca3da80a5eeea5819ddd1e0f528a0cf3bee9e6465d1a6e935f8cb83c42c422b30029360188c2cb47d8dacce94c05 1588269710000000 1588874510000000 1651341710000000 1682877710000000 8 0 0 5000000 0 2000000 0 3000000 0 4000000 -\\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\x01000003f03df875cb648ec841dc9a2f1b022dbbcdda85a0a751e4af31f417d93ab82940a39cd6a012173fd2d23660794f4c6abfa808a096ac80693b1e37ddd90e01ceff63814c30b181cc571366f996044b43e8e8353b1aa05e9fb104d54a4cc808b1fa007a052531ae857cb0cf835ffbc6eb8995c7d6cc761dee167f113c315bfa15c54fc5c70a1afc157e9b424863b27aeb1f3f2418f5d8e4704bb950cf697e45af263e03330804c618a4cf74c2b8a291a5c1f5038b829a8f8dd0e0574c15ec31a04f423d7b47496429b1fa76512f90fd1dc1c305a49e8384b3459b2d9ff8b7dc2e156e606c102cb0e73d21c70cd97e602f07ba29d6e884f2ee8579f25525a6b0215b010001 \\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xe7655b0a2a0fe1c405b2dc7172852c07c33964ccae520ed175a6a6901090a3d9d9d1d079c57a8789ae1b2e9b49c6f86f8c3fcbab1395d004fba86b8354012202 1585851710000000 1586456510000000 1648923710000000 1680459710000000 0 10000000 0 1000000 0 1000000 0 3000000 0 1000000 -\. - - --- --- Data for Name: deposit_confirmations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.deposit_confirmations (master_pub, serial_id, h_contract_terms, h_wire, "timestamp", refund_deadline, amount_without_fee_val, amount_without_fee_frac, coin_pub, merchant_pub, exchange_sig, exchange_pub, master_sig) FROM stdin; -\\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c 1 \\x33dd12045a32c69793ec8aff33d4ed3a18e96490ef0e6a95c4216eece585e79c4589523cd3de5c5435b8891935944c19f544c1901152fcdd224bb6daa90793e3 \\xb5a83c13d972e767ee6746d0537d32cffadc8a0af078212c858c4e74d835e965707f782edb666ae541402ec83b136213951e730ec01021fd0d5679583f67e8d8 1585247238000000 1585248138000000 0 1000000 \\x24209fe74c418f2babfdad3860e58645ea750c60e1d1ad1ed22c110ab2eb83a0 \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x0417c7c22bfd7a0af863e0969e493b14e08a9cd6123990867bed9c82baa325518ad5f0400b22d1018754440ca079c758498edd2b806303aa206bc4a208e61e0c \\x946e8b5af562e6bdae3f9e9f1996162e81eb835d52f6b1455194d1c8a4afde69 \\x6de6e4b001000000e0a5ff512e7f0000e38dd6d74c560000c90d00382e7f00004a0d00382e7f0000300d00382e7f0000340d00382e7f0000709900382e7f0000 -\. - - --- --- Data for Name: deposits; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.deposits (deposit_serial_id, coin_pub, amount_with_fee_val, amount_with_fee_frac, "timestamp", refund_deadline, wire_deadline, merchant_pub, h_contract_terms, h_wire, coin_sig, wire, tiny, done) FROM stdin; -1 \\x07fa6375f8679153a23927ce068b019acc3d50fd696e74caf09f2fd776c21cb8 1 0 1585247230000000 1585248130000000 1585248130000000 \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x8390d204c43d8418bdf4a2e5466fb50084a86829ab5b445cd38c199bfdf433a6b2dcb78d977ba238be29fed3640acf62954837308581bfc86bac0c48c0d08997 \\xb5a83c13d972e767ee6746d0537d32cffadc8a0af078212c858c4e74d835e965707f782edb666ae541402ec83b136213951e730ec01021fd0d5679583f67e8d8 \\x8a54ca1e621e70637f08def917a9e7bac14892799508641b2f9d4b82418f05e7c5eea6d732b6782c24b11be23e746161027aef3fc4ee41cf9d69aa775b88710b {"payto_uri":"payto://x-taler-bank/localhost/42","salt":"35XFPHEBXDG1F1XRNGC4299K14CHFQKKBPX2WTSD748Z2ARQR0ZWKM6TWMY3Z2HN1K1AB4HBMBBX21NHY6Z120RZNSASXDX163XZA2G"} f f -2 \\x24209fe74c418f2babfdad3860e58645ea750c60e1d1ad1ed22c110ab2eb83a0 0 2000000 1585247238000000 1585248138000000 1585248138000000 \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x33dd12045a32c69793ec8aff33d4ed3a18e96490ef0e6a95c4216eece585e79c4589523cd3de5c5435b8891935944c19f544c1901152fcdd224bb6daa90793e3 \\xb5a83c13d972e767ee6746d0537d32cffadc8a0af078212c858c4e74d835e965707f782edb666ae541402ec83b136213951e730ec01021fd0d5679583f67e8d8 \\xf4976cd0bb732303872537f5f82dcb90da48297da2475af6d279607bc7b77a7a973344b14795c1e7f0dc7992e43edd1975f71bdedefc348a032f815c07a6d10f {"payto_uri":"payto://x-taler-bank/localhost/42","salt":"35XFPHEBXDG1F1XRNGC4299K14CHFQKKBPX2WTSD748Z2ARQR0ZWKM6TWMY3Z2HN1K1AB4HBMBBX21NHY6Z120RZNSASXDX163XZA2G"} f f -\. - - --- --- Data for Name: django_content_type; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.django_content_type (id, app_label, model) FROM stdin; -1 auth permission -2 auth group -3 auth user -4 contenttypes contenttype -5 sessions session -6 app bankaccount -7 app talerwithdrawoperation -8 app banktransaction -\. - - --- --- Data for Name: django_migrations; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.django_migrations (id, app, name, applied) FROM stdin; -1 contenttypes 0001_initial 2020-03-26 19:27:01.883355+01 -2 auth 0001_initial 2020-03-26 19:27:01.911343+01 -3 app 0001_initial 2020-03-26 19:27:01.957748+01 -4 contenttypes 0002_remove_content_type_name 2020-03-26 19:27:01.98024+01 -5 auth 0002_alter_permission_name_max_length 2020-03-26 19:27:01.9839+01 -6 auth 0003_alter_user_email_max_length 2020-03-26 19:27:01.989985+01 -7 auth 0004_alter_user_username_opts 2020-03-26 19:27:01.996036+01 -8 auth 0005_alter_user_last_login_null 2020-03-26 19:27:02.003583+01 -9 auth 0006_require_contenttypes_0002 2020-03-26 19:27:02.004971+01 -10 auth 0007_alter_validators_add_error_messages 2020-03-26 19:27:02.010342+01 -11 auth 0008_alter_user_username_max_length 2020-03-26 19:27:02.018993+01 -12 auth 0009_alter_user_last_name_max_length 2020-03-26 19:27:02.02738+01 -13 auth 0010_alter_group_name_max_length 2020-03-26 19:27:02.033904+01 -14 auth 0011_update_proxy_permissions 2020-03-26 19:27:02.041875+01 -15 sessions 0001_initial 2020-03-26 19:27:02.046428+01 -\. - - --- --- Data for Name: django_session; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.django_session (session_key, session_data, expire_date) FROM stdin; -\. - - --- --- Data for Name: exchange_wire_fees; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.exchange_wire_fees (exchange_pub, h_wire_method, wire_fee_val, wire_fee_frac, closing_fee_val, closing_fee_frac, start_date, end_date, exchange_sig) FROM stdin; -\\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xf9099467bd884e86871559a62a7f23b6e876bf084a30371891b5129ce4440d3cbe27afe387d39b2ce8d9625abd388517c81bfc8da9f2e0f8c9471bff65a802b2 0 1000000 0 1000000 1577833200000000 1609455600000000 \\x464682af73ec741329585433751b206eb2520bb65470ef018faa1c485030057220b883b6b968b8fbff256cfeecf2f995830ba20dc6a356cdc0207314d5e2af0e -\\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xf9099467bd884e86871559a62a7f23b6e876bf084a30371891b5129ce4440d3cbe27afe387d39b2ce8d9625abd388517c81bfc8da9f2e0f8c9471bff65a802b2 0 1000000 0 1000000 1609455600000000 1640991600000000 \\x472c8ea2c7e1e8cc0bc5c55063f4cbe3d67b2e94355c4fd702b14b64d2986090292f67493a9921a63aa67057c5d169aa2e7f96b4c5d729879675e6d07595dd08 -\\xac008e081df3aa3a18c395c1a8c33888afa3f863481231bf79fb8031dd2a4f5c \\xf9099467bd884e86871559a62a7f23b6e876bf084a30371891b5129ce4440d3cbe27afe387d39b2ce8d9625abd388517c81bfc8da9f2e0f8c9471bff65a802b2 0 1000000 0 1000000 1640991600000000 1672527600000000 \\xc5ced6e9f6914133e532678d4136ddd79180a7465a0fe8f11b9d47f74916b71c5edd6f5064da771d819386714d6bb8cbc252a14554cae356630008a81b7ac70d -\. - - --- --- Data for Name: known_coins; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.known_coins (coin_pub, denom_pub_hash, denom_sig) FROM stdin; -\\x2750ad23f959b4616f9bb9913b2c05789ac60905a9ecccd2a499f99ec9d40d0a \\xe0726684567b8f6e972ae98a1c743d83344292e41f48d2696272bbe7d7cf28e4fe4ca576cefee21dcf4d05dc1927dbed383bd6383af4f6919c6185cb86c29fc2 \\x974ee8270e59824583948825272df1816ad14b0304ec9b37546fc91f8946d27416549486ca279f35b054390663c0475b1f29b9bffdec6bb2450029b742d7694ea034f18f439b17ae7aae6f8acd8f3939d9a4c3fdfb7bbc448993d8b4d082df47d340c5e62faae002d728696cbda03eb4362aff1d4292f6f9d34d6ab6f6685ad9 -\\x07fa6375f8679153a23927ce068b019acc3d50fd696e74caf09f2fd776c21cb8 \\xfac60747f6f5230990e394d61524d5e5c2d7fde9d64cb67971383afded993d28b8ccc24859da6595521f2131f8b29f7249a132b21bd783ddc17df6743baa690f \\x83c04be2454671a89ace301cbb411f274541dfd4f7507b8087902a9b291ed676aec6f727f4d6f1a3e0d476cbbc2168e506d35a832c3e0ccbca28ce88b25c32756368ab972d2fbe5e05f665941beed0282f0ddf81cb41324ea5550294cc3f182c61578a09aa341ed5413fcea49821ce673841694ef953374b07dbabfaa444cfc9 -\\x39ecdf0cece28769866927fdcbc0229e73e0e6458efd948eb07278b8ac0d738c \\xb2b398d560e595d6d879842cd209cc84c924a57538ffe918aa6f3107492495740d2dadd63f34109c3a19caa665eabb781359cac5c496e56a36bfc6926d3a45a8 \\x613eea075a730f76e14eeb41e1baa6eec22ff929880ca8f587f66f402f627d4d1bcfa3936042c55be7cfec44313d25c5a16632314a6d235b416de39be3ba132789106d61a1adaedc8c54a100fc9ac6aeadd2032a4e654029cc67e8a3db891f69915aff2e8519484ad76bd56b2c5be8f4837d6bde18cc5f4b09fd0a679b91cacb -\\x5dda7191fa7b5e84562493ff81198c38d00b847b9c16c26d8b92b906781e7560 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x80074868b3e549225c6c87faa8737dc832aab8407f5d1fb65904eeb4045ae170b002443a63dbd769848f172d8b9e17d469d922fa4cffc6381f1f3dac00266df603d42a70eec700b69b9ede18a95bde9c7938e585a4a48d9c721fd947ae66686487b029cba41e527bdf8ebdc86c5dbfdad788f49b4dc2f58a6403995101e487ee -\\x06a8b55926e31e43b7514c608cc267fe498bbb6ee62655ef792c71966af1fa97 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x9e2827f7ccd5b3444a171d2279740abedb5ee623092e02cd602c7454855475b92de52cfa3dfbe9f060ab8f29f645af7b4cc230575212ad52e9bbe3da8affe17bbc42699e97d81b2fa334c35977dd17716fcf2bf3aee3c1c24a2ac727f26d64554e171f7fac975e08c81ee61d7671ad3e8852fac6171757d1d7c7d39e2554420f -\\x4c647b1aa4a9b73b44a797b104bedcb9dfb4d46ba36b9e7b3f2125b3ba761c4b \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x98337fbf9c56519ec1de2aea2ea0162e13691aaf954b8ac8a32067d7f1a45a5866e99ccb03932bbf1c445100ca70363b4cf28b76e3bc6443666c677ed02a74251d32beaf3a978fef137aa00d655079e32df3bb495d02998bbe41d0e552178bb36f15d10f25f6e609c25ba69a06da8a05e65ebf01ab4f22b7b18373248506956b -\\x6582a1874903dfdb722dbfda9c54cf0715fc63801ed583deb18e180bc8332a22 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x3e9426a6e6f7190342e4c2145619544881470c114cd752cc6648ff3f96d4970ab6c809695dbfe879c60cb03014b8d3714f3a95e8f6c8627271f5ef5e1af9eed4db7257ca7367491b7e99d0342cb57274a4be51f873b1892cf5a1ec548e59e2e8e0919fa4c47b15fc5f973630971e5f7acb3519c372432562b97384f5daec9245 -\\x310b12c172bc4c7af4a0afd129a91fc88f59c07a7a9b78d528971be425169509 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x851da010c78e988cd85fb4ec0e7df7ff360af246eb7e11f2843490c535375aab07f615c7ce1f98e1f636083f44d8e4dd208936f7355b2f074a06ae2e2aa8d74a53e8330999df6667c65a2dbb452b58956928a47be6bbcdb2df9d4fbc802080a54c2cb7bf0a73cadc6c51bb7473bc15b190635c64527c05c0910a2515ed31cf72 -\\x66e756ee0c152112a5a31e2127d3a13df65fdcc6a5d3de9abe803ed293508f05 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x0b100148c18896ae2e7ca3b18f2e7b83497217c4a05d2a64b69e233264dc6f2b817871aa1dfd074d3b48e29fa20f782a45a66922a0d805e7f91b9431b19dcc1bf1a11fbe6165def68d54eb80f5bcb7b37beb38641168ef15d8812b9682dc7d1b3279e499632139d96b7996bb8d88b00b902199b7126d7a492517d673b57a1cb2 -\\x4a4693f51d818eb32db0972f19710b2450e3514033fa33e6588c90e265b56095 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x563182fed54bc151b33f935ade827faf970a393f756f674ac85e31ad6e02b599f9c2ec8498c7b0e9441acb8c68da3688b56c2ce7e26b4aeaa5421356c6149aed33a9832e8f5903f2a140ca499d171d156c04879318ba1f900bc0eae9afc6ac0094d68ad782ddbe49a712c5a59a6a9125217b82c53ee99b4a0a37739872098a4a -\\xeefcdce7677b4b91ba60c28abc7f2f827d8868e09abfb439567e255cff085137 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x9a239c847a3235355ee0ecd526d486f213f3df2a4dcffc8e3e0d691ad59007995d01e6f4723eb9334588a14b993ab4f039bf85efcaa58a251e9b7e64525f0a0a8084215ae18b014405b73ecce7e6e840ca5ae0de3ea46bfad2b81f2e38ec5a5961e2fa3cbb7c61fb67146cf82528e1a9b987be9f83bb7e2927a557d70a00835e -\\x24209fe74c418f2babfdad3860e58645ea750c60e1d1ad1ed22c110ab2eb83a0 \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\x1aa15032c925171a476ee694c75fcbee781cf98fe40034ca13f8369a7e8d0c9a0c1afca19353db50f3c8e6a8ad2fdabfe69c9786182df0a064ca5217c5e0d91882cf7d45109f1fa0435eed069ba3ed872c986fed3c7c6130d2e918733d76e262aedb0ddd4ff03d035dddfd9b65f7de41e1259c0ae5bbf3599841844ff3f0f94b0330e01da7ebf001755604aed05b7372c197bb2812d34e377b104a0026cf7afc36aa09736c8344d7d232f88eda43bd2f540b9844d5334a2834f2c4ab61bc25d43377391b596a47efd666c56c58c524eda63618db277abdfa776230bca74abef035e1996fbdbe5bdbcb7f6a2584141ac43fc59965a05b793c8ccfc22e7faf4c26 -\. - - --- --- Data for Name: merchant_contract_terms; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_contract_terms (order_id, merchant_pub, contract_terms, h_contract_terms, "timestamp", row_id, paid) FROM stdin; -2020.086-0104C3T13YHRE \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x7b22616d6f756e74223a22544553544b55444f533a31222c2273756d6d617279223a22666f6f222c2266756c66696c6c6d656e745f75726c223a22222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538353234383133303030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538353234383133303030307d2c226f726465725f6964223a22323032302e3038362d30313034433354313359485245222c2274696d657374616d70223a7b22745f6d73223a313538353234373233303030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538353333333633303030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224e4730385732305859454e334d3636334a51305448475352483251543759333339303933334656535a4530333351394139584530227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2250504d335234595345424b5046564b3738563835365a394a535a5844533247415931573232423435484837373950314e58354a51305a5652355644504354513538353032584a3156324448313735385945433743303431315a4d364e4359415237584b59485030222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22394d595234594e563935583744355147585a5141394d3739593750543242594e4536353159505854415a313757523931384b5847222c226e6f6e6365223a22573041334b33595850324d415150535131305752543031515a4d523831524a44413244445346583150473345373830504e594530227d \\x8390d204c43d8418bdf4a2e5466fb50084a86829ab5b445cd38c199bfdf433a6b2dcb78d977ba238be29fed3640acf62954837308581bfc86bac0c48c0d08997 1585247230000000 1 t -2020.086-01WE89FA7FS14 \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x7b22616d6f756e74223a22544553544b55444f533a302e3032222c2273756d6d617279223a22626172222c2266756c66696c6c6d656e745f75726c223a22222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538353234383133383030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538353234383133383030307d2c226f726465725f6964223a22323032302e3038362d30315745383946413746533134222c2274696d657374616d70223a7b22745f6d73223a313538353234373233383030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538353333333633383030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224e4730385732305859454e334d3636334a51305448475352483251543759333339303933334656535a4530333351394139584530227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2250504d335234595345424b5046564b3738563835365a394a535a5844533247415931573232423435484837373950314e58354a51305a5652355644504354513538353032584a3156324448313735385945433743303431315a4d364e4359415237584b59485030222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22394d595234594e563935583744355147585a5141394d3739593750543242594e4536353159505854415a313757523931384b5847222c226e6f6e6365223a223156324d4652374850505759313948573859585341594e3150534b54443252594556443048504551503030525347584134343647227d \\x33dd12045a32c69793ec8aff33d4ed3a18e96490ef0e6a95c4216eece585e79c4589523cd3de5c5435b8891935944c19f544c1901152fcdd224bb6daa90793e3 1585247238000000 2 t -\. - - --- --- Data for Name: merchant_deposits; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_deposits (h_contract_terms, merchant_pub, coin_pub, exchange_url, amount_with_fee_val, amount_with_fee_frac, deposit_fee_val, deposit_fee_frac, refund_fee_val, refund_fee_frac, wire_fee_val, wire_fee_frac, signkey_pub, exchange_proof) FROM stdin; -\\x8390d204c43d8418bdf4a2e5466fb50084a86829ab5b445cd38c199bfdf433a6b2dcb78d977ba238be29fed3640acf62954837308581bfc86bac0c48c0d08997 \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x07fa6375f8679153a23927ce068b019acc3d50fd696e74caf09f2fd776c21cb8 http://localhost:8081/ 1 0 0 2000000 0 1000000 0 1000000 \\x946e8b5af562e6bdae3f9e9f1996162e81eb835d52f6b1455194d1c8a4afde69 \\x7b22737461747573223a224445504f5349545f4f4b222c22736967223a2259413239344743533532314d4b46394e5831364b353630503942515341514842524356474e4d424443413748444b4d473850415744304d3835383936445330373433544a4d50425a564443454a41583654504a30424738595a44524b5a4d575354585a51383152222c22707562223a224a4851385050514e43424b425642485a4b5446484b354750355430595130545841425642324841484a4b38574839354656534d47227d -\\x33dd12045a32c69793ec8aff33d4ed3a18e96490ef0e6a95c4216eece585e79c4589523cd3de5c5435b8891935944c19f544c1901152fcdd224bb6daa90793e3 \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x24209fe74c418f2babfdad3860e58645ea750c60e1d1ad1ed22c110ab2eb83a0 http://localhost:8081/ 0 2000000 0 1000000 0 1000000 0 1000000 \\x946e8b5af562e6bdae3f9e9f1996162e81eb835d52f6b1455194d1c8a4afde69 \\x7b22737461747573223a224445504f5349545f4f4b222c22736967223a2230474257464748425a4e58304e59333357324239574a3956324b47384e3736503238575331314b565850453835454e33344e38524e4e46473830354a354d383147584134383335304637334e474a4345564d4e52305252334e3847365148353231334b31573330222c22707562223a224a4851385050514e43424b425642485a4b5446484b354750355430595130545841425642324841484a4b38574839354656534d47227d -\. - - --- --- Data for Name: merchant_orders; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_orders (order_id, merchant_pub, contract_terms, "timestamp") FROM stdin; -2020.086-0104C3T13YHRE \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x7b22616d6f756e74223a22544553544b55444f533a31222c2273756d6d617279223a22666f6f222c2266756c66696c6c6d656e745f75726c223a22222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538353234383133303030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538353234383133303030307d2c226f726465725f6964223a22323032302e3038362d30313034433354313359485245222c2274696d657374616d70223a7b22745f6d73223a313538353234373233303030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538353333333633303030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224e4730385732305859454e334d3636334a51305448475352483251543759333339303933334656535a4530333351394139584530227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2250504d335234595345424b5046564b3738563835365a394a535a5844533247415931573232423435484837373950314e58354a51305a5652355644504354513538353032584a3156324448313735385945433743303431315a4d364e4359415237584b59485030222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22394d595234594e563935583744355147585a5141394d3739593750543242594e4536353159505854415a313757523931384b5847227d 1585247230000000 -2020.086-01WE89FA7FS14 \\x4d3d827abb497a7696f0efeea4d0e9f1eda12fd5718a1f5bba57c27e612144fb \\x7b22616d6f756e74223a22544553544b55444f533a302e3032222c2273756d6d617279223a22626172222c2266756c66696c6c6d656e745f75726c223a22222c22726566756e645f646561646c696e65223a7b22745f6d73223a313538353234383133383030307d2c22776972655f7472616e736665725f646561646c696e65223a7b22745f6d73223a313538353234383133383030307d2c226f726465725f6964223a22323032302e3038362d30315745383946413746533134222c2274696d657374616d70223a7b22745f6d73223a313538353234373233383030307d2c227061795f646561646c696e65223a7b22745f6d73223a313538353333333633383030307d2c226d61785f776972655f666565223a22544553544b55444f533a302e31222c226d61785f666565223a22544553544b55444f533a302e31222c22776972655f6665655f616d6f7274697a6174696f6e223a312c226d65726368616e745f626173655f75726c223a22687474703a2f2f6c6f63616c686f73743a393936362f7075626c69632f222c2270726f6475637473223a5b5d2c226d65726368616e74223a7b226e616d65223a224d65726368616e7420496e632e222c22696e7374616e6365223a2264656661756c74227d2c2265786368616e676573223a5b7b2275726c223a22687474703a2f2f6c6f63616c686f73743a383038312f222c226d61737465725f707562223a224e4730385732305859454e334d3636334a51305448475352483251543759333339303933334656535a4530333351394139584530227d5d2c2261756469746f7273223a5b5d2c22685f77697265223a2250504d335234595345424b5046564b3738563835365a394a535a5844533247415931573232423435484837373950314e58354a51305a5652355644504354513538353032584a3156324448313735385945433743303431315a4d364e4359415237584b59485030222c22776972655f6d6574686f64223a22782d74616c65722d62616e6b222c226d65726368616e745f707562223a22394d595234594e563935583744355147585a5141394d3739593750543242594e4536353159505854415a313757523931384b5847227d 1585247238000000 -\. - - --- --- Data for Name: merchant_proofs; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_proofs (exchange_url, wtid, execution_time, signkey_pub, proof) FROM stdin; -\. - - --- --- Data for Name: merchant_refunds; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_refunds (rtransaction_id, merchant_pub, h_contract_terms, coin_pub, reason, refund_amount_val, refund_amount_frac, refund_fee_val, refund_fee_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_session_info; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_session_info (session_id, fulfillment_url, order_id, merchant_pub, "timestamp") FROM stdin; -\. - - --- --- Data for Name: merchant_tip_pickups; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tip_pickups (tip_id, pickup_id, amount_val, amount_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_tip_reserve_credits; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tip_reserve_credits (reserve_priv, credit_uuid, "timestamp", amount_val, amount_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_tip_reserves; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tip_reserves (reserve_priv, expiration, balance_val, balance_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_tips; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_tips (reserve_priv, tip_id, exchange_url, justification, extra, "timestamp", amount_val, amount_frac, left_val, left_frac) FROM stdin; -\. - - --- --- Data for Name: merchant_transfers; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.merchant_transfers (h_contract_terms, coin_pub, wtid) FROM stdin; -\. - - --- --- Data for Name: prewire; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.prewire (prewire_uuid, type, finished, buf) FROM stdin; -\. - - --- --- Data for Name: recoup; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.recoup (recoup_uuid, coin_pub, coin_sig, coin_blind, amount_val, amount_frac, "timestamp", h_blind_ev) FROM stdin; -1 \\x2750ad23f959b4616f9bb9913b2c05789ac60905a9ecccd2a499f99ec9d40d0a \\x458250decaaee758800ede6a5f0dffa49e8a2ee946bbcfa37156d6a9ab5032f25fc83874092e1868fa17f8c747547f1afc956cb57a9f39989f14fec6bd6ec007 \\xdb7023ef2d57c4f4500a37295021194aea177622a15f4d8c11fd0136b269265a 2 0 1585247229000000 \\xe4c580166cc482aeed98e877c5c4b6d288c458c78ffdea5eff38729a2412bf787c7a462e5705103920288717ef27a3dbabd1c1c07ad7ea425e25ed7763dcc1f0 -\. - - --- --- Data for Name: recoup_refresh; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.recoup_refresh (recoup_refresh_uuid, coin_pub, coin_sig, coin_blind, amount_val, amount_frac, "timestamp", h_blind_ev) FROM stdin; -1 \\x5dda7191fa7b5e84562493ff81198c38d00b847b9c16c26d8b92b906781e7560 \\xfd217b015e0ccf9054b607a5ed62f1eeccbf65ed85277424418d9992671c38272eaed29d337a8e3542df1b650cb07abe436156d0790a1fcf0f902aaff6e32a0d \\xa6257f6882d3cc5c3c9b882d692f7e5736a732bb3396bbb3975bba0b18e6321e 0 10000000 1585852036000000 \\xc88c70b05f6f8cff8c173bcf1b223478c51c4497ba93c2472fe4dc76d00689cb4951a8ceca4d00944d8bde9cf2aac94db5e129c6e5be44a1a7ff8a864b3bd0d9 -2 \\x06a8b55926e31e43b7514c608cc267fe498bbb6ee62655ef792c71966af1fa97 \\x8061b43e162908e52a6ad932109c20125708e1aac8c147a95d9fba80fd81f1c5e4d903f83656f6ca9ec3dfaa4bc1533adb3c5f972c19acace87028551b822502 \\xf6d96f6a32d51fc9eac7282ab677bf1639f62d8d78e1fa9d159d6507b492ca27 0 10000000 1585852036000000 \\x33b42711b523febdb144fd930a49b050ed9108da4f653c9d7ff79c6fa3a77942449f6abdaa9ec0f43f8b2ee892082dec6e8fd86d244be5cc7504ae7b625420e3 -3 \\x4c647b1aa4a9b73b44a797b104bedcb9dfb4d46ba36b9e7b3f2125b3ba761c4b \\x093df9c0402076959641e4063e3aed2278bf4d52eb6da260b72a1c7a38db4d9b8064d8bd76a8c03f262e5d805f77adc54dac03b776287b616d27fb42f7bae70f \\xe7c812758c46b02b551f8ec6c3b936db1c28a6ff9e2004668d530f9708aaae33 0 10000000 1585852036000000 \\xf98f4b7afe27fdd8a572159413cfff527f6249d8731feb2f81811572cd3719f4daf4e671fee2bf180d1a15a203a6c5fe4c8d6f3a9e00d2f074e44efe3b4c44b8 -4 \\x6582a1874903dfdb722dbfda9c54cf0715fc63801ed583deb18e180bc8332a22 \\x790190f22f2d60f54114ee168b6e9f58d2466763299c04012796678e98c1723bc99baec9c542c0d10a459b38a7e9fed7d17c470106a62098f77305955ea1ba08 \\xd0a6359ef0fb86433c3d34a89594107fac6aeb9d4b3cfed5dcb8a07087561ce7 0 10000000 1585852036000000 \\x9e88a7e41f31c1048782955bde254a663e55c6764ea9b9354918221c2c6053ec2b6832fb72a80435c0b2055d754dde03ee7dac4e3251037150180d02f363364f -5 \\x310b12c172bc4c7af4a0afd129a91fc88f59c07a7a9b78d528971be425169509 \\xb11b6cf502182e7661c368187179872574d68836bbd7f4ddaf72ff14c04862030197cd760a129022fa70743f4adbfc0fd71c0fb36d5d9d1a299d27f7582e5706 \\xea2a6013507080345e8e68b0a5da32560da61e31f65da3c61ed0ec2da203d75c 0 10000000 1585852036000000 \\xe2d21bfbb014870b62172458af49b6b8e6a36af38c79afbfd9fad9d66420b3d8af2e98c5b6c1a16fd49aca7b74bbfdb4ccce32d879d79f2a579afec89b627317 -6 \\x66e756ee0c152112a5a31e2127d3a13df65fdcc6a5d3de9abe803ed293508f05 \\xfb67164fb92f9c194e9d11adad127973532b74e6b6d44e917cd445cd05931a3da0a0e64cee92272d1501af215f355cd015f96c6f2ab8a5a7cae63dd8b54ce90a \\x795951840313147957428fbc8f2eee4bea77042c2546331a46c9c6d0e79ef242 0 10000000 1585852036000000 \\x5def2ae83577b46954abe9fccec8930c9d9f0d825bc545b224f990545f9b6fb1c38d559677ea9252ca3daeeac5963dc79fc860a240b7b3a7b9af8ed47a679b14 -7 \\x4a4693f51d818eb32db0972f19710b2450e3514033fa33e6588c90e265b56095 \\x170c35d8d4e6fc0f470701f2d08f4f038c47af1a5a590294783d714606cbc58b2f517f6bc33b68567548d04079f0a0b0c58707ac132e0df116a9079a77871d07 \\xea00a088f3efc2497b7d93976134696330398f4b4a4bff48df050e9a0161dcc9 0 10000000 1585852036000000 \\xb697df52aad42496994e2737f2980617856867883392fa8dcf71eea3a69896ae3385d84bf5e32226ae51553fbb5cffdbf57cfa6764d6d6918ec978c9f4971a82 -8 \\xeefcdce7677b4b91ba60c28abc7f2f827d8868e09abfb439567e255cff085137 \\xcbeb077660ab284a9ec0bae485c65c1c8c8244689648611612934063e740e1f0e3f01e7a309e5befea045fbb81e20c90b2353dc503020eecc2f378c5565ebe0c \\x6d4a775680ef7de6a176cfc0d6e3ab00c5401f4a4e2bd53ef982a35cc97b1cdc 0 10000000 1585852036000000 \\xe5ca930828a38b367f72ec9e268125eda82664be5fecfa3841df1ca0e9a9ec6e6c719153eb6a44aeb2675e4f3d013d11e51edbd492bacbc8bf8656bd626d108a -\. - - --- --- Data for Name: refresh_commitments; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refresh_commitments (melt_serial_id, rc, old_coin_pub, old_coin_sig, amount_with_fee_val, amount_with_fee_frac, noreveal_index) FROM stdin; -1 \\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 \\x39ecdf0cece28769866927fdcbc0229e73e0e6458efd948eb07278b8ac0d738c \\x62a900a609109f343f68b39c5e0508b8cdde3da11fe8d0e21145ab5575abc8a0629f7328baa62c206296686b0b6a63370657135bbba8fa88be3b24353cd01f0f 5 0 0 -2 \\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f \\x39ecdf0cece28769866927fdcbc0229e73e0e6458efd948eb07278b8ac0d738c \\x7cab0997915f3c39464afcde89e7e35df1a450bbad44128b78f7da52f3328a73f3b0890a2f330ad76ca6e5d30caabd71e3e4e7ece21f5576964da4594dec8904 0 80000000 0 -3 \\xfcc21691669f322732ca1b3229921c06ad7de9ac8bbeb67cf83424a2380ad26f70552b222c21be55287447acba12746af988ed5bbddff7331589c2a3376879ec \\x24209fe74c418f2babfdad3860e58645ea750c60e1d1ad1ed22c110ab2eb83a0 \\xc24c117ead15d951c26b1748c302d574ee01b05be54ce134d33994a200cd2fb4b1b2e03e85dd1786a36874dd9f0a51645ad5d8cf24eca34ad13df75418f4bc0b 0 7000000 0 -\. - - --- --- Data for Name: refresh_revealed_coins; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refresh_revealed_coins (rc, freshcoin_index, link_sig, denom_pub_hash, coin_ev, h_coin_ev, ev_sig) FROM stdin; -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 0 \\x12b4debb810bd37ece7834604c3ba148cf831542903204b1247ee57a9d9e45428d388c4846926bbe840c548f2b3b3508af5bda66d78445663d930dc55b32ee09 \\x596dd70417dea3f96b72decf73ebbee411295403914758bcc5d562d1232ad6aa8b14857b58e1cf9ae9b1535ffe4fbdeb4e9b6d67f0739173b64d9bfab00c1f0c \\x01707fabae5b3f80339b9e28271b6d3ee4e63741de61b4b274cf742032fc9a6f38c352b798fda4a8c490a5a8886a9367abf5f20282060e2590d0a8ceb127e5cf6bc353c08e1b20ec0f6803c10d0aea3fd5e20f2bf02bf0b783c6df3a1d464bbe973efeb98442a99dab83bdab0b8add7e78cc42ac4422628a67fe3e0bbad83d6a \\x9ed687c6aeaf69d91788dd87a1d2adb4c68c0849a5baf0e4e1397ebd16a4b1ecec28da59196593f5f25db205a1562117027639ff772a3dc0efef4f531936a83e \\x80a780980d0f24d0b9735b55cc2c83238c97866ad50ab9ee3490cdda8b024b6dc7b02fcf9cc34ecd59dc5f671af4d5325224e4a9bf14a6591a7a276cb5aa6a9f19a948c354df538ed5cdf7809758934b3ff5b96153cd7b317d6f17c32d1aec40aa11699cdb44ca6c3fa2dad9b9624fd1d161452c4acc4f0c37a8f1864c58302a -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 1 \\x52b38f12698482134ba9474f05c7067fa0b7d0e88eb8b8ff940f639997e248275aacc8f14cfaf377d8d66dea69caf3741eb0946a6cd10de7f7ae657278a73e00 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\xc83267d087846d48caf06d8a713e7cc66bf62c580630bc455149216cddcee9cfecb4fcb53b930794e99762bbaab9d82a5b6c0e5f15046907f949be7725891b66757c2421f9af5c32df310049bb6454aafc31802710df4432a10c954a6726c3980ba0faff437233670f7253ef6f37235e566630d24697014798525db15434bad6 \\xe5ca930828a38b367f72ec9e268125eda82664be5fecfa3841df1ca0e9a9ec6e6c719153eb6a44aeb2675e4f3d013d11e51edbd492bacbc8bf8656bd626d108a \\x794ac3266e873423e8295af80eeb3f36c6d6df8f4e57ce5495875ef52b2ead63fdbe8e1810fddeff996118bb3f9d58ab8698c50cc4675b2763b44794a474f9a00e8cdece7f586627b1c905a04dc61e4165ce3268deb0dcdedb4d9b0e80414fa3ddac03f691161cdf7445c4beaf72394cfdd96789a519a6a998f7ce79dd381763 -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 2 \\xe5d363effc8515ebac851b8595b5f6524c6bd72d929eae91618c6afba69e12b26e8543c10ec55f1e8f7b80c259a171b10d98b7f9f2ba4d1221eff2cd9c28a50e \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\xa4ebd6b85fa5150c4f43edb97a706a389f6832f2da4ffe55d3bb52690aa669340f3772165a752a000a7bd010f5df257d849846407bb952a67c5d26a5fe8630c90d6accda7e99acaa513a7a1d7c75a9f519e9f14ee19afd98c98806eb48171df68d97862c7689f760b566eb0517d99bed4297657f796bf9472137f0c52b58ec54 \\xc88c70b05f6f8cff8c173bcf1b223478c51c4497ba93c2472fe4dc76d00689cb4951a8ceca4d00944d8bde9cf2aac94db5e129c6e5be44a1a7ff8a864b3bd0d9 \\x66102cd4f231135457f477d78f2a4237b8c2a1f1dbefa15185bd89fc7eedc878217512d2c927400fa405a84a5d3f5327b8f2f083a505ed15ed5cb50ac7b5a998f45a309e0439f0ea5da2899b22ae45b5078295cfadf9c41bd801282b72d74490e31828e5d82bba5a8ef7d37eba3bc46b47cd42c0d5cff9215792ed689756cac1 -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 3 \\x95bd7c78e505e0f035256c88a0cb82b57b2b0f5b1a910f5c89ee538eb25b24ab0814781321c29494fec061c6b069919a245ba868ddc900baf720de49875ac507 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\xc5c2680371529b827e0c36f3f7999be4ad4b722ca0c64bf008bbab9fdfbc8dda025aa6ffb64f40fea79d628e197c147f02a93d489061b765ad03df46a89729b41376bd9bbb1481b94edf2186dfb4d6a46d4e931833e659ae73c5a42b6aa38e3c1b150ec54fd4d382eb33faecdc105f596e15f9564e369300181a157b50738118 \\x9e88a7e41f31c1048782955bde254a663e55c6764ea9b9354918221c2c6053ec2b6832fb72a80435c0b2055d754dde03ee7dac4e3251037150180d02f363364f \\x0ea5f18220402f4c3b1f1ac361a210490b0b8c9093f24b7192a6c53d6cda08482f39a58f6984d3d8f9926effa1c077f1556943d10d4aeb32c92b8ab6eab009cdd2cc0bfd473b6c1e421337abc15faf531ac8ff82ce5b341830289c750ab67b3b1a2b9fad44c980b248a22920070c5ce2b0595cca031286a4d86d75192cf8b8da -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 4 \\xc92ad8dccfd74b064cf8e0c878b07a64c9d569a59b14d020e44bf452686456cce2d278749387c79b8fd8d475bf7521c2f3026a54c3df116fae5873b70cb26601 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x6e5cac4b0e48806e94acab58742a2f32a297648c1a3a52bca43f78a155657e24814a1da3f9d8b77722c5bf5225a9bd8c9b035d8d2094b67b5f726640447c6652b19a6f0aa0616a068a5b0255980a099749867a0db1bc649807ea461209231db08f7fd5797f8adb9f29f23a072202be8370acb9f859d865622805654d1fc4a5ae \\x33b42711b523febdb144fd930a49b050ed9108da4f653c9d7ff79c6fa3a77942449f6abdaa9ec0f43f8b2ee892082dec6e8fd86d244be5cc7504ae7b625420e3 \\x59acac73f58980d9730dbcb7401e57a1ca22a10a46adc2c4b59cb7a4dc3e7bbd0e9761315a23df78ed3ec7ac1709e7d4330c785fcfa10df3ba0b374881eab0a6f7bb85cfeb7fdc5060472a931ffbe6646cb6c48e5c77e5bd0a950051e4914af78111247dc419be12a62aac4384433b8ed0f04d5877e3ddb29cb068c37adc0ed4 -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 5 \\xbb38496d1d1a79d3aacdbbf888ef6dc053531eff1bbd01bfbf1c3589578de6cc2d0e0da06032ee6967b969f975499acb111f62ea52df767dbc7f6069d65dd001 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x8245e8ebed90310ab7728d08e80bef8bb1937739b46aaa3212ac8147dc354edeac4c29f3022f74a4427cc692f5ad08eaf22052e969ad76c0f40eb2509aa01b25485522faac96766c774afbd4cfc9c579bc23939bab896f2ff35c0a42b3ef36f420b2866bcaa0aa8a7c395ad7bc36eec9c2ee68c41c9cb47c102a2c0c51f0bff8 \\xf98f4b7afe27fdd8a572159413cfff527f6249d8731feb2f81811572cd3719f4daf4e671fee2bf180d1a15a203a6c5fe4c8d6f3a9e00d2f074e44efe3b4c44b8 \\x583c50c1d8e486a47b3feac3c2a4977c263a6a4d5b515099c20e4747e819ea23faf0488a3a19efeb06cf0544e237a0c61b0ac2d4fde3f9df204a255b16171a2166b68b059fb43030ededfe7ae635bcfd5e77feee6d53bfb6e829da96bb9e750a15c14f3eba8c03b7f51809b1ccd80f249bf1aee2565e83063a0dc8430e1985fb -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 6 \\xacf163dd694450addc765dfee90db4b3278923f396e9e659b52c0d28ea5b714b90782932a671581551b71392df2a9006135f392052e1bd4516dccc59ccfa1105 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x7ee1c4e887a71495ea8536079562dda9c0c6b408d6b66a602b1aedabe967ffd538a5e8b35d023aadaec3ee01c9b717314beaddc171b4ea719792f9f12bf5ca61a1006a1d28deefc550c45a2d4ef7215654c0edd7ca299ba2e43a0c0f92d669c7e578f69252d2c0177a4febfa31ca210d67a4d3919c90e3827ce4a36c8fa4bad9 \\xb697df52aad42496994e2737f2980617856867883392fa8dcf71eea3a69896ae3385d84bf5e32226ae51553fbb5cffdbf57cfa6764d6d6918ec978c9f4971a82 \\x14fb3bb757d2929f96c399b859ad0feed63f9506d5ce34fd8965916e5541a60577bae519b15292287355368d3ddb5d071764509881ada194365e2443d6bed62d6d4383749d83451343362fe7c81019fde94051e2d772e0d9160e4a1529b039a9faa5a107a0d9434ccb3d176666a1df0dfda60d208cf1ac518363dfbc09418fc7 -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 7 \\xcb38875258c9294ee196d9f5bdcb51a737fd2de505a46f8bcfecb181569f96a9c08bb39b1ee6f0233dc26a461ec017e1eb741a0a9d538a502bc0c4a3e2383108 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\xca95ab52a78d3a587584a3d9e04cbd4c89d2ea8ba4ed55147cdcb44770750cc62e832ef8446869652ab1ed38841ac0bc0c226accd2790af562a00905534b76c9040a5cc93cf971e2f3954429aa4a1d726885c0990c98e20a3e63aba7aa0a4925397614f59ad63d9b531a12858e39b2940c6469b4ba7f5b34d4ac77f2e1edf4 \\xe2d21bfbb014870b62172458af49b6b8e6a36af38c79afbfd9fad9d66420b3d8af2e98c5b6c1a16fd49aca7b74bbfdb4ccce32d879d79f2a579afec89b627317 \\xa1261c9ca930dfe1201760be1ca6cdf2cfccfc5199c3248771a123a3dc1b29e9df520b037ffbd8496840faba4f170b636a068d89639d3595ddd3ea1724fbea8c65de7b24a05936dcc871d22608afeae08bfa20b0745ec6e3939ae1e76e852faa9f1b2872fa4e49777ec2d5c108f15884f9de7fbd50cecc0a9ffcbf35e59f27ff -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 8 \\x97f293befcafecd875f4c154785c02cc097a0b703cb61aa99408d4495091c5862be75327197dccdd56c48067e444c19da0a9a19c1377d632be95920f8ee19901 \\x7f1749df7f2033f92e5a5a3ff9117934b7ac5d5757da9424b0d46d4286359678d67fca8b3792ad086bf23bae26833ed5ca3715373ab56ada7aa69db79df5c3fe \\x7830fdaddbf1548106a2e99e8910352cc4f1fac6737bfa10b8b4b60281f99cdc4294fba9140e85f3d11754a111023a109583e9a6c08a1d3721595084c59352f0b4a9d91cfebc1a81f5565daf28f15d11f8961157683d5c7585531a096152ccaa60087b52ede2f4498c23d0930062927f82822d32479107e7b3ee8e40b26964c7 \\x5def2ae83577b46954abe9fccec8930c9d9f0d825bc545b224f990545f9b6fb1c38d559677ea9252ca3daeeac5963dc79fc860a240b7b3a7b9af8ed47a679b14 \\x4a462c82e05a6151a1d986f8d38edbb72af73a049c4c2c76c44850e7182e8e37ae3756dad822d78e07394f34d030b2e493ddf0b5df2736ccb3a0197be412299823372f13db485c047a756add7b8df946d75d9d7323a4b7a02eb15e60705f9bbade4b4372143b44ed5ec072d9520112df00c84079fe40f2013dbef62e31d01fec -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 9 \\x28c07b28799f691cf5aa7121d9f8bdce5df35b00dfb678a1ad96f7da7a495b9f993dcf953d2cc8a458169f743254d671eb875c5cfe9f1af9f9a93ad487407008 \\xf3b15f353353c828067a48d0cb5cc98b82fd0fe9f0403e675cbd25a702f0601c7254a5c1f12aa67841d9b347bed3720680b3fe8f48b3a3219ec5df26a55f41c6 \\x8771d525e4929d7be8e026073dc4b9bb1b1bb1e05bdcfb072ae2c7e0d919f4ee37348042e12a1b050e95506bbbc08c67ee3f4af245acac8611e4785208ef07c2b288c11f30c5f5f17171d1e21cd081b62ebf329754058432af7b8f9981968193ddd295aa9eba357ca06cf3a33d52debe63abb8ffa39c4dd4820ce05d07a0961d \\xab7cf97af456270d04840d41e1420a3d79ac47efb841554badbb32094dbe8f2c059826449360f79195a8f6cdfb1b0c76b1dcc4a3b0284302861f4591d871332a \\xc9e95d0d1d54ee4acc6b46403c02b165e3be7331006ae440b2d2dfd7ef3a3d0dfb3bfeb1b9f55fd7d3fb1a89441bf445fc9826770f1ad9eda2e9b1e3cfa2e2e8a61372c5fe42cb4938bb60f63eb519edd1ac793326640292fa5373b19d20b3db8ff702665244a54c8c23e8a6ca07320515f8729863c9927d7a3774c17c63cf77 -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 10 \\x5ad43c0ccde2c664e79cfbf76553df07f2e52462f6f83c7fdb24c3f0926916a6b67e5b0f4183d7d15e8e05d670090500302c0b1c912f11c3e8fa83c38677fb05 \\xf3b15f353353c828067a48d0cb5cc98b82fd0fe9f0403e675cbd25a702f0601c7254a5c1f12aa67841d9b347bed3720680b3fe8f48b3a3219ec5df26a55f41c6 \\x579db5e78f4e053806b6d8ca301acf0ff90a049a7c57402dd501e63946276c93ab41b38ca042e0ae4646c241899d991e800416bf80665c00587ab09e900761f784a18b157ed41bb4638ff92880dd9e2a6cd041add28f4ca0451ce5f4718505035766c6948d2af25d000dc7db2fa90291b7e2c63fc10d79f5d531cb928794b010 \\x5723f688454576fab541a9216c6ce1292954b3da870bd8f1f1547c622bdb7913ec1d6580a4fc0a6f929ecddc744f82f367aea9976682ebe0342ddf9eb22106de \\x8640e9a747b7db3b62b7955e690624552aaa41a7c89f3e937d7ea6c649f3cffe37f83a74e6aeb277017c9e06c0eda2904e1e280043e96c2d9c8b504a50f44b2df7dba382956cc08b897b245fb31db371387f1610bd3c80b422e2508a3b234252d3de37b5a597e089102af07dc9392a5d3bb04c3d31e9f2efc29317e95997cc5a -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 11 \\x965f589b30e912fbd1f6f2887cec7f6a37701a7bfcf84d9ba70350d126efa35b1b721dcfc353f5777125a0b28e256b9645a153ba7b2c542054ba5fc345baec0c \\xf3b15f353353c828067a48d0cb5cc98b82fd0fe9f0403e675cbd25a702f0601c7254a5c1f12aa67841d9b347bed3720680b3fe8f48b3a3219ec5df26a55f41c6 \\x2a67d2eda9b1b84392d22bc220e1c1be939d8ab64176bd88813e63e1f3cb9f2f7c9049628a985fbf89920241c52adcf2d6c94e1f0a77b138145b0acca646f979b9437f305ceca4044e09d30f22f677a62be9fdbac0791f68482b59a6ffab0326595a3ce6676b905d8eb23ad0caa78d67ef60d57eaf2f8a158fa78d2008d07ad5 \\x361c3090eb3b4ed5d74b8c7c939fc95b5b7c35e3630a1058e1a58a99c4e3120d29ffbb1d426bd83958aef562b457579e0578406a64621fa596487fd44e3e9eed \\x4ef120adad7e3212425a4f13fbceb610af2bf9ff373192c25e2d6ebd7402b1f9349d675c8691bac38d2391e0e4e8f42b9f001619fd86590084d52a822f197359384b62f18b34506588f9e1ebeaf0c7debc8d950655fc5fc0e4b0ed06125eae63a37e9caba20c2216fa9a3de8ba9235780950741d69b2cec5a27229c14f6e2022 -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f 0 \\x53a6f7525578adba5deb77351745a19c77953ee2495bfe1d1f34298ef3436e7f873be770f6b668d757b499e2153e248768e8a663cfd74395f49b608f423a9c0d \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\x1f1807b89a9acd9dcfe852bae1ff6db0cfa5b0ec6c80c04896a5e018300fc6d469fe4ddce79f0b77159606b048f46fae222d64f742a28768fa6bef7242cb850fb4c3e7f81095e9ef11111f75e0fa864c520f2a22af5326aa9d079b8913ebd22518968e61257e1df2dfb6d8a6d9570ce5d97bfa8bfff2d9612905bf77b52bc9a84626b01f5f27160b3dedb2dc5dd3cefd2afb3a3b2897c20f15c4c13bae0b40c55a56c3b3e361253019db2f5c5c82491c59ef875eb62802d5a68202be6c0865e7b5317f624932f687fc9d7dc99f103ef7906d87cf114dad387e5def4cd12180f4f8159b857fdd8c27cb4c8c53ffd77a3983eca367f65b736027e1fd72c73fadd7 \\xab2c69696fb2382100cd3dc3f67a3fcbb65eb45df22cf50bab30f6cd3777f431aaa174ea9b0337c447dd67b23f5fe8f3216dd8636e5268efa47a7361444c88ea \\x3ab00ba7a3c4c84eeece5d7a14beb177a0589f830e9b2293256aedddf775a10bc1422931727c5940a2acfe8a596661d352d56a291c7636ea011e5119fd05789ba8595b2b608dbc8d53cb427bfa85a0eedac49c39db84d791da4d72012b5a0d19cbc6198b247a73adbf2a544783600395f9e0f25faf78b415280afe655e6285a3f82ae6472bc3c994b27e1561072500bf65fc9aa8b4ea90f66fc5990fe535b427aade933936b2e8dbfa38d6e0261f3f5198cd0afd22f4118b0a4cf77ab2577a6fd34c19430c7a147a801f60fd38b833d2ee9f071b5c6e4f7276d77f45daf0a1a66eca3927e693640965b1a79eb4f7731ae8fd3e5d36e8c631fc600bf317ff468c -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f 1 \\x371335ef38d97b73042c2dc656d34e5d0d416154838a503d66a2daf1791c82b130889809ec3b0cbc40417690d07fd8b41ff754139ba9c9e8c84d172258b33004 \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\xd3f5a10d829522cd19fc83f462b2999312122acb59fac2da00110645827be939ada4eb4a51af509f6b7e0cdeac01eefbeb24aca7aafd7ed6237c97994c04b82d0cc8991a531998e0fff8cd1310f9481842616c0be35702568585261f17c75014c4077e439a8c19a6fd256c43d27fb226e065e2cde55846136b8e13946b89666b876364adba49d4a22947d438c40cef662be3dd2f24b6cdf0f5b119c6ef8cabc450f95266eedfff3c83f6af96e6382622db5a660da3029f5b98c6830348f1a0664ac741fc711316e2d2d87a79427f8254320242e07e89161d81f2d4b5bd9e32e5dd23b6a8cb2ecab25a55b630f5bbc7004fad9be8d421cb54167014cbec8ec316 \\x8406d4566067f679aa9ef346855a8577b2690dd0342dffe8911b6419890b9936541d56dcdbdf308fc712db037e579d4244e3d04daed505c8f99d600d334e37e6 \\x268445af33e672f8fa4b1ecc72548f23a815882a5a93b2be7f9a118eab5ae5164145a3ae9b5fab216a8be4af408f12f051b7a8b2de2140e905cca384ef12a9d945952a195b3366805e26a7dea78ba561addde400841c74cafe3448db4511725f11670564c5053e8e85a10d7f852fa005a9d4f191f374956fac7d1c594dbf3c0f003937bcb7e6e4555c110a81d6e29c527a4b839b8a32a685a9badd0d6b40c62f2caa23386fe35c25f25e1c2e4993ccde80bfac90e6071fd0a7f303174f333e9e3604090f3754910efabda9ed786d186ecfb934993dd77c64f4d72b1750e09ca6439e1f520df6402813ec5b866aa83d46eb0356093136cb3f57753bf0b9289f62 -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f 2 \\x362a9a20844e454a0fc9062289bc478c3beff6538c000ed3adaa4127b7e878deec7ca9c77c1ade56a3deb5eaa97be1f3b9858612c1a2551f25a87e6a28459e0c \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\x19f30be726726f1638c9b89529e453dcc6ee3107355789939b0beddb4456d6267700a6e819e8f490ef73e4807a921798e8d4a6942283a568edeb09d7853fb5f0c9c9bbbb4835df31d36a454da9824dcea80ab33c017150511e52073ced14ec49c8f7789102f2af8676ed443df189fb6f5b8e73a6d8efa7da9ec72fd84b9411b689e03fa647ee90cfdba377b81ed4e778cd46a13eff27a4b3509986174b80b5ef04abf5ead4d5220504dd7afc1a1c9120b472c1077f082a260fed9b5f67a0d7bee086defd30d745ee3934bd3fd3235723ca5e9520af0e65bc7d4a4dbca8e2680c625807afa6990b235d423f321ec64a05de77a5b9abd0b20e6eb485f403705792 \\xc3c0b807d039a1d4e344642d2a975e840b933487ea9b50d6494b5d74cca65e9c2d14f203ac2cd50282aed3b06e5b372cf7a7463d2267cfffc2e2b1e90c7118a6 \\xdb633de0bf4fc1e3f2778aff868919f269857d0c2f9feff4ba342a8c1004e5e9a0f29a5817c7755f3118fc394177ee0d7cf52a5c9bdf561f38c69a77ff62f23a3a4adf8035d05d41b72860aefd10ab14889f87ebc0a710d7eb60306a60d3ac31091b77c57b8a3b0ed9d8cba24f52660c90c151dc58ebe94025b0cb717d1565a52a88a6525babac36d608335192f747d87f6348eedd8676824f599d4a46bf70e92173294f5eea4ddc48591eb89deeaf38c629ab5aac77a725de28ee9829f227610b4cc3f0ca06fc61ff5737a4567ad556bf0745f2922a1c54dd823f2eb2d5b2fbd09b8e1e738440418ebcb0f1eb51a33e9f9d28833c53a0baad128ff2abc8fcc8 -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f 3 \\x4119ced37056b0de05ff5bdbcff621bd9a5acf9329a6aae9613bc84f8680767191c935cfbb568cb95f9c79e939b21a8cc509cf760462b96a0fad0ca5b7edbc04 \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\x57e6b0c6bb6896570069f7090ffebf89d62a34096464481d00a1e59b98ca420458134471c93445fbc774bb71b59fd39dbe0c5d8deebf5689b6789bc377a2facc6fe24aa767d07c2d3e918f7d8c24dd41b79e5eeb876a7e81f3634cc7c38e4e3522a9911e1486f703325ec9a8da51cac3d10341312f05efe97785d76d147e3e071c0a7f587dc607980d62687598b322f7f1cd6ea39d32d91e70e48404789755143b3d7e7529dfe6622fadf5419022b48d53742875fc812c1d5261fc02e8ea69b7567d8445b8a932cd0d24ade68dd91bc957912213981f8e8e2cec3c28b5114ce8de2949f0e8273eb9dbd2010f79a728088a784affc29c50abefdad816955381c6 \\x953fc67b1b484fee9538b57932b9f14837262235ef202751de5987669df27c31ae6bfa9f7ab79f8a35074a975b2986f9d2649077af075e435a29cdbe7ad90f97 \\x436b9e94484b36eaf6b733f1f4f2947941da0b319271300586ec02a6c35550a820e2c9daba0b3649f74aa1ef080708f3238f0fb2ca15f4a762a12f61296886fe14d6e2e1a72cf3615822d5e4500cf9859baf0ebf1f0027bdbe2d893d9baed2cd28a3ac84a252348b7e52ee0a6f132cbbffe9bf0de4013773ad553cea139bf116c0fa0cc7610741120b6f18f288b23985e9faffd829fdbe739aa06bd6976639a5e085a22446eee7d98343ff9402c8dd72c52b10db1ef7a5c86b6b73afe71082edaed4d8575c4f50f1d8ed1f99551f5912cb3dd05ed91b2610dcaf65172fa091ea7b49039ee12e2a8c2ed62c2c097935a1c90e15d041e8d230bf39073b188abb65 -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f 4 \\x55ad17639332de18700a2b670e5dad0589f29404103cb5163cbc105528cfb82799d67b2ad941d80962eaa7856e3695edf6cab28fc9cd7b9300c778f6a961df04 \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\x91da6326fa9c5efe992f8c7d807177fe464b7edc247f3ae78ee3629f61755af4e370535ad2b60dd66eedcf76e262f59f27cac267d64c4b7978674eaedec95ae637f9cd918e8c2237abd4ee29d3e0a4d5442f488599aa56489ceb4519f7232a91b49bd7c6f35d9c328d677ef45c194da3a34d2faffe61e07f3ef14d076c8c088c9d5777fb4698efd7d70e28ee1fd19c22f4aa078622aa4632182b3f556bcaab63ca740809e8f0c1205ed21897b870a49f1485ded8238d1b969d96385c0d48a243383107f829d4d40dd76a780e0ddcecb226e6a6660725cf822a1dde0c16f2ce07b58785820c3be10383b3ee014c80b81c63690f4ceba3b249c7214acc581d066c \\xc6417a65789b64630e1f9298b67698608d1be14019df4f06be73c342c96e2f91c6129b64f9887bfce3fca30f1d8b7c1c19ce302f5458b9fccb0b39753779f782 \\x3a2bb7356333a9903e1f1cd46936eabe6f25a11fbf56e2e153f8a1c41a18944c78ea5202cf9351651e82647ade3c926d5bee177124a34fc00b38323c2fc7a043b62528355810f5814f6b990ee4f16cf33965047e577fe9db77fd20d199ea0989da6f9cfcc5436219e71f5c4a6d8f60fa01b32159e24c3b49c71d6bf07f223e51e9e3a0035cfffff0a5928fbdc4179810893b17cf654a5b82b8edcc466588402a197a2959dfa40fd69f03cc6a3c0892d8bb75cce3aa05b0a906d04ec6be657439e750373f9f1080e174dc9b215df1945b19398ea8ca077a57e7bc10fc6286d214799b7a83e843a36346d340a0c47caf48cc61c35f88ad854912fced88eaaadbb7 -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f 5 \\xea792ede870a12621f594314e274f07150e6788559929de7de7d8169e75cf69f7204e6cbd8054e221b11eb2666ac63e6a3584a81feef99c28be70d570775250f \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\x83ab4f307610060a1c81c4b74cc69a4073017cd0b599f89cee9218900be96a971f43b095d2a05c03975573ad52498767bca75f15c7b58a6e49d2fc9489d40c0ed2dffc51d0751a1b4f0ff2ae7675308963bf6570dfc3ff14e6a5a8bc1f5de113bb228bdc10d7d31bd78d32824fa82cc43b55aa89927595fd8d69bc4f0ba0d93627ec139be1d9e85b08ec426c9023e34d63e675c3848d19b86bc2593ae5c7819e7e727854b9f2b434a601a78b3c2e88161f526a9c1ab41d38dc31869a72b7d088f0723eba93d652567510962d0b4d14d63b2a59f1d148bf5ec3212d96c6c50d7d7c78487504b58c69ea3f9d5cb0ecc32a3a66184176624120446c7e87cd1d0b94 \\x2ee3482d4ce1c97a5621dff114c2e52746a13e5c72a85a5e48d2ffecc33c86ec6b0ce9788a579e12ff825007d2f56acf5e6e5aa5ce0e2ec8ff31d1d0f532eb33 \\x58d9e0f411b619d277f8b71196c9be30ea9da4166302b9d8869e4199122e9464852dde58bbc3021afb0caa86a359d05888ea4eb54b83f3a6ac83f9cb5e39144e1c83f768ac768314f6b7d5e836a0f214c019c0286674681c9faf5d2886c5ec6c533835f704b76115a9f7213fb838573cb24083f8b0447e5c7b45faf0d35ea4183eee899187e9c9ff8edc2d59a6736950a0e40581fe8c4ea22328f610229b431d17a8317c10f4125f5cf36c7dd4edb7e440e59a584d077db1a2faae5bc1a384ea22d7a585a424e54712799be149f703ac5cf5ae115337a8808a04d3902b25fbe7da5bb404beeb3da63d21e75191f88fa1cfe64c81b7cde7697836877082ba3e95 -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f 6 \\xa02bfeaa2d5a66c44e6f233365f760f53018cc1d96499a235a90e9c1437781dfcd6768cdfb502797ce4006666781933d687af7ff85d7226e7d8db6da73199a0b \\xb09b6217d72bdb8f393332f676b9c85c2e246a6685c6f4ee8e96384b23ca29e89e587f782d24625001c7cd6cea13e85fdcc9591452f43c6d717d24297dd2dec6 \\xd1014baba95c600cf77ac40559b28b03bbd579283989af84c6b3adeb7bef11887b19bab7c5eb174ffddce3fc0ab486c307d6ee6ed82d5954cf74ac1419cbe454d65a92302fdcfabab8937f021aab344ac6644d61fa099dd1a807a09600c8e3da34eb95add3135492f6345a50f4c298491add7b9fe0464ba7c439619423e619bd1dbfbbcf391b69db3cc4881e42b2cc3975e925dfbb33a118fe1ae46ffef5fe034e6adbaddad4b8ebc12235f1909275208afab5bcabe2c8af65622b3f74053c53b6aa67f2b6ea0a6b5eec1c70ddc6278d873338eecc44318160dfed19bba0df973db28b18f4ae55c0234b553d67b74231c6e289a1b8c92d242838e7e41512f90e \\x3e8065c139bf41a32fd187274c4af1bd718cb0c016f35d527a4716ddc2b3c3e88cea7924653c09dd6c62205e5e582cf96069e14bc6d2004dfda9d03d750a3547 \\xef6f6482550a54bcac032e78e3ff441bc10bd903d139f9db8c134c9267056c8b8a1ca54d6c5c42129ce2718789628503ecb0f3b7397f979601c445b72c6c040a39fa4aceccec75faac68ef74ef9788cc28c525507db6b51b36db066e183b28616fa31447e61f6c0be44b6ab44ad551496a7ee6c0b9c3768b2982abaf4a88200739dc1964c9b05dc007ca4cb698ab2ecd0d18d5237eece654e9081612fbd5c85056226f6fa036d3d2446e04f4dca68324be91d92476cbed46a73386972841e0ba2519e2ae27d93120b11f2a8e72c41cf250f12efe03c914034f92cdd2df0a0974b809ec3cd166c8baafe527c811cc72b1db912a3e436abe61aa387646b817eefa -\\xfcc21691669f322732ca1b3229921c06ad7de9ac8bbeb67cf83424a2380ad26f70552b222c21be55287447acba12746af988ed5bbddff7331589c2a3376879ec 0 \\x6e35b295208cceeb9c6c199b1f1ae52fda3e4ccab3543b5bf8b506fcc8756b1bc0073e437ea2851f66e63894512ec5916eab0a158c0932dbb20a45678681720d \\xf3b15f353353c828067a48d0cb5cc98b82fd0fe9f0403e675cbd25a702f0601c7254a5c1f12aa67841d9b347bed3720680b3fe8f48b3a3219ec5df26a55f41c6 \\x6536da6ceb5cec792ae76b6acb5710a99ecaf1190c097bdd5a1e1af087c2442e7e9e962c572150a055bc2cb781d20fb1bf6f1e9ca216a1bf2ccca468bd39ee5c6416ca22101e47e4176e3409b714cc356663c19ae637780d676b6b308f1fe463719d803c85236d465e3994c16dbe680fcdbbb6a7755f7761db0f32ea1edfc66a \\x4107b1e138fb50ea7bdaac15afeee44167327b376467af5522796a454868a29ce6db869eb2cbeddaa3077f8d15d6caa58fe436a7f481813d734073863714c232 \\x51bf9d87d5bdda5de0751041ae9a2ddc14988105bd394e4180f0a86b52d4f8df1ac7e1f6225d9fb20c2445396ad6f0152ec5c5251e35e20714ff13e2c0df5ecaef3060c2da1adcb0c8255692a9e8190f69195b83a702fbeeec934521b3402bf7bbdd8c8b0ac30ce97301195ce6ae970aeceb686783a3ae8f1b33f43fbcfad956 -\\xfcc21691669f322732ca1b3229921c06ad7de9ac8bbeb67cf83424a2380ad26f70552b222c21be55287447acba12746af988ed5bbddff7331589c2a3376879ec 1 \\x3bc4b3e1be4d49b66bf2094752ccc521082565f02dd53c7469d452d22cd9dd934417cd35fa12efe3e75ad826862bef6a8da065d551d6a06258bfba8c39bef502 \\xf3b15f353353c828067a48d0cb5cc98b82fd0fe9f0403e675cbd25a702f0601c7254a5c1f12aa67841d9b347bed3720680b3fe8f48b3a3219ec5df26a55f41c6 \\xb2a698d8cf72b3d4b36ffe39fc03540e28a7ecaf645b59d69d4e16a7908c971eb408cb1789fce47071bb3ec8bd94df9b71ef97c79477a733df1e51bcb71f0aa2558622e8aa3ef3df62f530e30b1e308f6bffe691aeac1ba43b63bb46d8b4aea9aa1567184c9ed7fa25c95bef29379978577a73aa3ce6aac40402de46cb8f585f \\x13e40e2ba06c26a3ead37ec342533624f82ac4a6ac517a415c77d40a788dedf478ac1f3179c08e5f45107f2cf34b0a39169f203671d774065bdb51f21341fcd5 \\xba1ca7ba386e938215ab43af0a60b8ff2ea78d5d4e63c182441d99d370f200cf66388dc237258a8e6f2ce3b5384787d24e3609c84a83fa6af431edb673d6df2138179c5cd66e32f4246438b02998d1e1c63c108159e07eeaecc9e11871178bd72525ae901b66d5cdac22791bf8ab9403957733ae335a4b4db1865ed9dcad37a5 -\. - - --- --- Data for Name: refresh_transfer_keys; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refresh_transfer_keys (rc, transfer_pub, transfer_privs) FROM stdin; -\\x31cced9afea62ba3578d70d72b0fb97669a4e3337ae4e20df97c4754dd7e9c279fa14b0eebe7041289b281d3d7604e7c53b6e7eba614d8a29cab3a559707b785 \\xd918c54605c7e14648b928b526ed8038148c15af15e293a1c5ba6d687ee91056 \\x9a86bcdbb3d50a280f8de9623bd82135a36799d7de417d8a7021f5cbb9e2ce71b2c8c52445efa89e81e1c8c7b440601719b6508e9db637d902a873fd4ab2bf1a -\\x9299f109ba5bbfb69085914e2112d4857a48d4a1f87bac2dc3f161e1e160566f3b1908b1102c1f58619f812c7cccd8efe7cf76056a55ddcb9bb598f1f49cea3f \\x14df49a28a7c6c38f3e7d5d6185105b7382b2a8f996bf0038d1442ce331f834c \\x972486fadf7f64314b0b46238bb42920083c2b669c311ac887ff2e596b6096ff50b70e22dfc1b04412eb3422f03b81fe16816c1ee53c1585d355d5d4e9bb81d7 -\\xfcc21691669f322732ca1b3229921c06ad7de9ac8bbeb67cf83424a2380ad26f70552b222c21be55287447acba12746af988ed5bbddff7331589c2a3376879ec \\x83f68c7d166403c62d94e094e08cbb0a9aacc0862d230ccf972846a5b99a6a18 \\xf64291cb3a36b748230f9eb097439b0138e4854bd33d56da070b2321ed20bc8eb73263a72f5f5e269b9c6e8271e6e74a26cffc5e5c3dea208cf8367b796b39dd -\. - - --- --- Data for Name: refunds; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.refunds (refund_serial_id, coin_pub, merchant_pub, merchant_sig, h_contract_terms, rtransaction_id, amount_with_fee_val, amount_with_fee_frac) FROM stdin; -\. - - --- --- Data for Name: reserves; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves (reserve_pub, account_details, current_balance_val, current_balance_frac, expiration_date, gc_date) FROM stdin; -\\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 payto://x-taler-bank/localhost/testuser-JjVD1AYx 0 0 1587666429000000 1805999230000000 -\. - - --- --- Data for Name: reserves_close; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves_close (close_uuid, reserve_pub, execution_date, wtid, receiver_account, amount_val, amount_frac, closing_fee_val, closing_fee_frac) FROM stdin; -\. - - --- --- Data for Name: reserves_in; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves_in (reserve_in_serial_id, reserve_pub, wire_reference, credit_val, credit_frac, sender_account_details, exchange_account_section, execution_date) FROM stdin; -1 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 2 8 0 payto://x-taler-bank/localhost/testuser-JjVD1AYx exchange-account-1 1585247225000000 -\. - - --- --- Data for Name: reserves_out; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.reserves_out (reserve_out_serial_id, h_blind_ev, denom_pub_hash, denom_sig, reserve_pub, reserve_sig, execution_date, amount_with_fee_val, amount_with_fee_frac) FROM stdin; -1 \\xe2a5976be0ff4d8fcbc4158806046c4d13e5451be8a85b16e0f733a349f12f021dbdd7fdab0d3c97cd80e2a0962321f44ff82d5cacf8bf7a2ef3d0e57839fef7 \\xb2b398d560e595d6d879842cd209cc84c924a57538ffe918aa6f3107492495740d2dadd63f34109c3a19caa665eabb781359cac5c496e56a36bfc6926d3a45a8 \\x88d94c7ef6b9fdbe123821244ccc8cc7d5bf4f4f3f88341a7d0bdd5bab04fb0f2e06e2fbebca41eb8d6d926f0da55fab4bbe32cb9bd39e05ba305106dd31002547e62637030349da5ab8f468de6e232856f946f79db511649d469c08b8f014e7c4503a9fcd74247c15e85ab5189b537060900e20f641c6390e32b9443d15f8cf \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xc6dcafdc44aa3c23118876a2f1a1cb240fa57a3510c2c650f48764f680f2273b342a73683b80bd6011b4d15688cda9866a17747109a20268092d1e853ce52d0d 1585247226000000 5 1000000 -2 \\x729dbcc6b62e8c06af71732625ab60fc87ff2b8c8f67eec84c2fc091ff96acab9d6e46d9daec54cdbdcfed0c971487d232c070707ba45dc842318f4d82f759d2 \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x5503753f883cb430a8f127898411600b0446a87d3f9b0f590d69530bb648e214130d2a02228fd0e380cfa4c7787948d54cbb64070ece94ff077065309e3f164168481ff29375ac141765db17149e12b269f8b9b8a3f6b527b87c8bc8537ae0d36ad7b7c085365d3c69a59f5fd0afddbedfc0beb226fe008534e108d391cf0f16 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x2d6cf195d1f05247afb9849c499b6dec127d5a97fc1d91f1992309046d6cf4419230af94de47b49555f909d6cc65f23214cdb537512a8fabb5b6944e1c503f02 1585247226000000 0 11000000 -3 \\x2f445f26fdeed3207cff9fc26c0da8cb334ae9cffa6c504e6113e01ca870450f9427e43e7fef653f161562c68b49cc032425247db5ec0beab3c48f5ea2afed4a \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x5dfaa41d01999757ba3c2989dcd95d32e90a55573f12ffb1b7482edb149cc71a068cdd8ac8f124c932be077ccc1a1d5884a8a3696c32d0771205b4088c6b7f7aa972b6e03352587acb341e9d5cfa7a6a8dde24a0d19b8f4f3a256d623a7403c105c4f8726d65b5428f141ee49566100f5ada7d3853a3d8ab91ce1ae586106f1d \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xf8f3cf5095af2246a7465ea7f9b42f1cca5168dc5b071a5f72d9e0b7218101fde22ef841fba2021ead35833da8232dbb755a53e5e83c9547bbbc831d3589dd07 1585247226000000 0 11000000 -4 \\xb461405da8de1da0bbed12352af73b58860dd9222b0ee43d6bd410e10c830c140df671286b8818abc1664cc260de8957b40dc5085f44f3f65facce7c949f44fd \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x83dbe0e184f2445941d57c8ead85ab4d22f86db1cee9c15c9958772b9ac870b32064e82ca7db7a8cfcb18f95d0656fffe8b2d2ec185cef483fd830868c11f1f52563b32f3cd50ff7a9401a41d13b5850ef79fee7f8031a45c692c0a843c1c4ed1dbd41cc0bb12efd29fa5755569fe359fcf25d8f134a9c5192d81114ab421bbe \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xa75434524d67b0316a1c51ebcd99cfaaabb91a37b3848ac47b063d6653afa13fe1aed35f15b17ec0a7c29b56144588440d234ec7e4650f93f3db57960fba4400 1585247226000000 0 2000000 -5 \\xe4c580166cc482aeed98e877c5c4b6d288c458c78ffdea5eff38729a2412bf787c7a462e5705103920288717ef27a3dbabd1c1c07ad7ea425e25ed7763dcc1f0 \\xe0726684567b8f6e972ae98a1c743d83344292e41f48d2696272bbe7d7cf28e4fe4ca576cefee21dcf4d05dc1927dbed383bd6383af4f6919c6185cb86c29fc2 \\x84869b61fd17f94c8a23e40424b1247e94a4cf5208962106a63db062be1ce1f54dd86e1f1a7dff56a03ad1a769abb4ca34844dd9593208d053cbe656fe64e5e790c9db67012988cafe65a3fcaa0a844720b9b13b26e0e977cb18cb3753bae29f43b5e2185116a40644dbc83b8408c32a1fc67e4f18ca2037fac27909c370ba6d \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x4d675f9bd9890c61184e3676c30d16de23bf4c6c7e72b101608e22903b1a6768de0b2286f3af8e8ff31532fbed5959394e7bb88cba6cca884390818d13826604 1585247226000000 2 3000000 -6 \\xfbe66b1b4843b2790ccff3d22d3454aa433919d967a231523f0178503914c79ebed229e74519c0a201d03384c181b8e30aeaee8be86b7fd109febb06f6c8dcbf \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x3321faadd56c35f36d7398a8f77ee4a2969a499e3c90a41e1c91d6512f2c89156ea535c7bda92fa6c43edbce360d9d26bed704f0a4a363e6390f06c36d55b47c13d0f9f45d10d87ee2006068ca2d7ba8ca87cc003c1c95fc0d2947240e0d6d0ed041501842dd54eab84a7fa232dda60bdbaff7c31e1ed01ed8210d99e8d8b402 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xb91d7e405e3c4d8a87c57d6e7abc2b01906cb1bbe72ffd7b30beb3e3c34ba9a76adeaaf18cf15be12a47745ac9d9bf91b2c0cab180e857af7f3c0a4419a2f208 1585247226000000 0 11000000 -7 \\xb8406db7a5f0ef73155b7c696136e3867c0088b166d904cbb511f431be02ef0d7f9d5965928954582a15ddc734953341e2286df1a004a3f08b57bbbd1b9cafef \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x1ecc94b5f450b885c41f612509ca1babcab67e46d291e94d22ad28d24dfe258b896c25311cc9d51fc40e83c87c7071f539a27a8a6c3e02f61945c199a6d21e0c431c232802d23ba10bdf3516097da8a236471748115dd4ba468642ff750746b06890c1a3050276a53568b31b919659c268751b73a2ecec37489b451c34530cd4 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xefa63a164c772c419d203f6aa9137e571e922666d43634906a782c14423c039fbffe10251eb683a78c299d43c8571b9a6829978bfab1386125bbb688eed8d609 1585247226000000 0 11000000 -8 \\x80f9cd293cccb47979a32a7a48ca65db99e7931c98b48183fca8c116a907c703677270a1b2dc52f3ce32a4145e02a40041beaebfddc97c5e14d0c525d1cdba20 \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x7f003d48d5382176d0d1721e464ae92715b294bd21b4512f69730c5e1bdda025e3c96c5fd49791fc9351283545c1e3cc07947972f8ab27bea324a6521b684b101b1ac35791f26d0af2526e3b06e5d90d401f78af82ad3f03f00b342c52361d331543e4b40be61fca3d205e443eeb4c57d8648f56c85d3ba8f6fe21e343a750ce \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x690318e2a4dad9ae83ec0a684c5d4ffb3b1dde44d3b261ebac5c24377947a66be425d6d1467e3b4fcd25c2f566b383cf2c88e905953f56dfa1795cf03c89b803 1585247226000000 0 2000000 -9 \\x9ee5fcdd21814ca508e77fb1f12878fd8fde8de0dbf98c09c4eafbdb16d1a891a5cdf4fc6bb27b35f332cab91777340b925ba6cb09814f8151b5b877cb472050 \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x9a71e4484e30c9b649e6ba6c64a4450f758e34226d369ca0837ca459776fb2f142b572b1e64d846bb4845c362d8ca07268fed5b31edbf65f413fb2fb1caa8abc83d92d0da49fdafff32042ef867989bb78957e59faac66291837a8c3fa230fbc992f404a1a31924f6f99e7a8d76949db7dbba57ac103df3c1d767c33623c4270 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xaf53eb48f261b549c9de5270cae9795bd7a8592391759de3b521bb79acadb53ea78a25d14674f863bb21c05d96ea43e25a6ec5e18faa544650896f0f8534360a 1585247226000000 0 2000000 -10 \\x60632d0439e49678b7f284dfab08a4a3e657f521465d440bb103dd6012da2514ef38b48f972765d56c27460428450c6618d5cbeef6a71adfb1b2abf64fc4bf68 \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x5a35b65a05ef66471acb62788150dc92f0d3bdb5af550eedd18f364e88bb30f53d95a1a740348d3c2a92d5df395655a87920724068fd877dfed267c172cc2d065769b83e220bb743f450ab6c609c32171e49333dfa13a696c393d0ea0c3a955262410f5e096963a606d7e7012b7c5bc1d5408f71fce7978df5a5723d7f69d3a1 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xe0d59b95446aef3ad0ee8128d7f6f59e20639def53ecca82072f799f2f93246d2bb5e8f9197ccddbe5c3cdba9299bd2346d558dc60c9102cc5986ec58eb82b06 1585247226000000 0 11000000 -11 \\xca41556b29565f0be8a1614df891946e35d4e20c1e613d983c2401102d56e89615780ce613a025470c2b03ca188314d510109a52adbd99c3fbc8aefca447dc8b \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\xa8b27505ef3eb313171476cf80897adc89921bcb3e97eb758b3b0b928909eca42249182e8595faa046dd8f545a021a8c3b25b0d3022e3a5e77a928000ad3402147a562ee6b78744976cf2db1a64fe03f308987db1f85ec1197a049bbc506d979c9666951d57cc9daa0893b0241de5a977e35f736dee165b619ba0aeb090edc59 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x86b3e87a469ffbe0504a6289882427bf04f70446e8be4195572d48a9d5fe2225b939bab7a562b47bc3ad91892cc095231d107213760a17e8c27a405c1547a10c 1585247226000000 0 11000000 -12 \\x4b53c212fc6d01d19b6eea549ef51d69255630cbe2828ee728ac02457cb885f03dff8d89c6bd63e51f7fe0172b644b967a24061dd25ccb83a6d18626a31e37c3 \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\xa30d8e019e066ee05a44e8b7327c9fcf7d6e503e4815f5bc885b99656dd1acd1985b43d8ded53cf587196cf06a8e27890bb51d883c79c7da39795ba68cc3abcae887f682c38ab3d8988269e4a72550fbf1c92af8eb2376aa55359f899345bebff26c3ce9a7ea5f57ed122eae9f4c43c293b3eefb2d732379a7247b902aa87113 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x574c05f5afae8c1191d0a8a577f430590c01f7f4b99f47ebfccb8f0f65504a5ef8a8dbbfac9227d696f3b886f97741625707ddcdc6aae474e688552041bafe0d 1585247226000000 0 2000000 -13 \\xde66e8165426c0a5506e3cda95fa32a5e5ad78fe18c8af2a6309416a86d69da1132131edca99b2684c0a0793246143d7b1bdadb8f6ee09e2201134fa0d0994ff \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x936ac8eb60f0dbba8c146170c1c46da9b6dcf604c7759be8de925b990425c6e2f129516ed0234a13d5782db59b49b1a2a56185a5674a749c0b89f4869e2997678a86d7effb16a4b8348aa1470d0dfa559beb5b3e240f331415449911a1d63a85247b4bade791b3093d36a993d2785ad17ed099da4e22867ac9f8491448acdeff \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x00a69d0a669a3561d1a2718eab1af264b955e59eb0b0f977e956d2af4074fb018530ce72aba04ebfcaa9b16caa48f3845078c464156165c5ea7975ee0f096807 1585247226000000 0 11000000 -14 \\xf2cf47750bf61cd70088a8c23f5a2449aa915d839e23d20cd845166b2183e7788b25df00d0da40fee13af660a10e5e85b0bc878d807e1c5f13046e0ed151537d \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x6b1f1eba71b3e8fa153b47f0d5acb90903ec86e69adf63d40a78ecb75ec1025029295d7d354eaba636ab7f06f28250026ce8ace07b3ea294fbfab77339fc6cf7dbaf86cfbb8ac2d1c88655012dbc5211b84eb4af42d8fe5bb5b841568586cd749df3b20ede2d2b6cdd6d9ce9d0f207d4bd79843ea18f8de57f98ced3898d43e1 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x8bbb9c97d8e2ae2298bca00cee1e52e86260d46f4205991d33315829a702634fa07c518934ece2e8598481c573cbf6e7c3918302ea877efddf3d4596d6eedd03 1585247226000000 0 11000000 -15 \\x0e53156fba4e75d71bb1dd03ec212bb660cff0c2d5bc3683d6677a4fda7ff6c9644bd039ae479cd315c2a9445cdfcedac1aa2e323ae501fd0d2c04781c37cc62 \\xfac60747f6f5230990e394d61524d5e5c2d7fde9d64cb67971383afded993d28b8ccc24859da6595521f2131f8b29f7249a132b21bd783ddc17df6743baa690f \\x1b4a73f61abd43fe3032e7bd7f2ae75b7d4b7aaf1d52a7ffa41cad1fcfaba3df9ad4f53f682164ff189a5cae3f5476d800d48769a444608b0f88960fdef16c3538c55281221fb882edc57f474e4deff47300e2a920124e54a8076258edd1c372e5944a9fe9f5df7875595efb55c6efd8d3cf3df45fc81e4a1f5dfca7f72a1200 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xf732e916f16f2b6362f54323dd483ef92745dd1d65933427ba12a223628595d3896831f95c69ac8afbfc7e211f60878983cb1df60cf1ffa8aee4c01d716f840c 1585247229000000 1 2000000 -16 \\x8462d40f51d83a81b975f8944404ac198173e851992a346e07ad09c859093a2a19ca7bb8c78d9c1b063a5ce248932ba32bc6a3ed07329f3c9609a4be9858bf8f \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x3d0bef9880eabf5d8e4db31ddc896f5cac12daf48f1cdd5a4a8dbfca48ca645c11148b32e15a441d6e17c7669ea10f51bf596d10b741ebd898d64bf7b498f9cce4fe7203f371ae03e5b2cfd261ef336a00817aecd243ec61ac5849a35536246eab312708d61cc8abbbd50b1cc9a6bae4ad5f40d564b607ddf9ef426c65264613 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x44bbadffed4ee4587f92605e72d67103f92345399352d406f7d38811461b6ae3eca9ffd1d201d875dfc1b3bed85a5ae857dbbcf8fc551c3e86edd11c2157a80e 1585247230000000 0 11000000 -17 \\x4b35931e6ead2975c9099cfc47fe715087be04a7c3730a131cf16dcd6e8b5fbd1b58e660afa7d1022cba95f9a2e1bacf6187115329db523d6b9aa404345853bc \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x705c95c755ac42c1280f8ef6bfe442362d3aaa9f373fe5090338cbb39531f6c0ff83d3724a0e098ad1b6af8831ad26473c8990d2bff5a18c6133692f8dc9ac0ffa0a80b2906d022a3b35de9aab72e18032f2279e9d8f82cdd993f0a07f9e6d15ce9c8e54fe22ba64d992c7c9314854c4a8162814e0bcfbc53c92b3738c2b0fcf \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xb7c5f441cecda52fd4c0626d811518acd09904e87633a9935fa160e4ec43d553e472c6ab87dedf6c159416c312355d90801c8c4924e1a9add31cb89722164609 1585247230000000 0 11000000 -18 \\x05f3a74fe2fe247762d754fcdd5bcb83d563ecfe3b6afcf5bb7c84ff818896fa3080d0311117990e576e31d54d3656c121018fe343bd32faf81b6ad6a21e332f \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x9a46f96041f4a79916724a0761def85dd23f21dc710642e665793d7055d3f1764fdcd177a287aa609886016d3b42578d0cd9acde50f46473d6f772e2949ccf00db546f37a53697f8cf3e63024d742f752508927af9ff6950fc3e6ee7032c3d49a79f858ec12d01bee7f78ba5b5e6e5ca31a10920d634544e0b5dac4b61490d5d \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xebc8717aabfabd10282204f9ef88b55edfc5949ae3e18b98e14a7d3e07abe0e82c3501628c6673b6655c75d9f8c2c4662a3e3624dc8bc4e7bd11f726e2c0c408 1585247230000000 0 11000000 -19 \\x66ae656c02e2fffdec39453e05cbc4422de0bae93fc22f845a681e9c0a80c5b27b11b16813ef6a63a184884b0eb911ef09f7b92fa043d48a320c7dea5c2bac7f \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x6edf87b1913134c93ffd14a9734c2e4b69bf841b7ba133606d26edddd69b3561ea733d3de73bc3a3780f0feef8817d5e5b0d4a7b13bcfd185deb5594a1a3c9d5b3d9929d8d566c1c9769de373a035c033ac02c98974c55229493225dcb880d54fdc56e95a8ff1c945a28ca7c63952cf138626c05549c0ce7664883818d00bf11 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x96bd755d90921484fe6689a86486e106d45fc78dc6ab6a73f9ca9f584d3825d6cc245658e10f5875954f6ecfb0c700362605a5d2804db0b72851a98397cf510d 1585247230000000 0 2000000 -20 \\x8a31eeabe64ae80d2c0c99c68e7200f5089608071ff04cfa32fc40c0143ccbec2d190a2aedf72ad5926177665e55f3ef66a3e19a9401afba76ef539e7451870f \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x08c3e0f40be0aaabcb31d5f8045ee908192792e0980c12945bbe5dfdcd1e779386b9fdfbddae72bf84021918967496c69e9d0f9630a3b4975b2dbbed4e6a4a4df8ce88f1c538131b519a1b4cd795c01b8e204440a3590b9ce757409b349442ca72f12f4e4f0e080be5628eb75aea9d6174726b88e393535d1a4ca314f82fb284 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x0884c026f4df818dc7723823ee1542f6bdc81738478e7491842630473d5c67fcc2c1660cf0be1f45fce434c81c38b6dd9d3c1db74d5c241c29d04c658a18390a 1585247230000000 0 11000000 -25 \\xf2a6c8490d5759e9cd44d8e474ee8aac282a95326b8af1b3e6cd097f65e055633f8a95f456add1ae539a161142b551001ea7d643630e561169a0b0c2f2054917 \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x65d094cd42bf265e17f74ec061b5f58f07b460c9942f9049346e620d98c1109b4b1ac4b4db065539c8159f198824c271c41be310b14f2f0ad4276cc5d18f8aae19a8eed68eacd558dc82f270232dae708d259ae0250c5166950fe88b6c63bf6d296883d449d9daf3cc30d1e32861da0b3ac9703118e2b0e9411141646b3843a7 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xd87631d6086f3e5d71e211aacf324a7ec853b15b77c4b17e88c6d5920949c86a9b60e74ff1953c16c8430017925e2868c0c1ce7f51b0cbe1c8ced9d27824530d 1585247230000000 0 11000000 -21 \\x8faff62e01a2e73d5510bc93d1dce5bcc032e616c0650201650ca170dc815ec175e6223c85b232553c08a00bdf5d0db1ceaff775c91f2d9afac0ba97e9b63081 \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\xc1cbe09f93ec79424d690499b928d23c2653cf52f5fcd624d40627382fd35756c985f91e4d971da86ede32db8b0ed286f55fb02794d723866e61e9cee99a6765c7e42ae8f926d8d73a7f95441219450df3386fa0ea5949f8a83ed298f33c7cf3cdd16a7eefababc065429ee72db1cd79d065671dc3af70a21d97fbb8a211a975 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xeaea23d476645ffe095d8d6f5969d9b88e74a95a18ffbec57c5207fddb6c52f0805f0aade8995b788e11b215489792af2c8409798a4d17e2979ee078cd750609 1585247230000000 0 2000000 -22 \\x58a82e4e4716bde678b3532cc06632b50d47afc1637391e2b6e95b3fea751077a746967495c3ea32994316e4bbe2bf8bf2e1637a882938802e5429b43e4f0c84 \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x7681e9b708d5e987a6dc6b23f081273b2f5645d2b3a6bae978f11e2cbb93e31061d23b1865fc8dee54d5205480929ed5dfae1c166e00575dbaa53eeed8b8b53405bf89a8fe2ac5bb1fbf2bc11c340492e307797d7d0b1edd8a10d44b1c1b72b20a784b03fdccb6eeb8b1038f8c68a5524230d57677e01402510c8d1a2bc4803e \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x221c138f646f4ca50f54b87b942db487c126e49fe35e67af9457864d26d4bd013928efaae98a9d18bd064cefc5bdf82dcfbcc949ca041e35fa20e83953950809 1585247230000000 0 2000000 -23 \\x9aaa401c7cbe71171a1cf1a75fbcad721f2071a2495622c3a2be00fe19addf942c29260bb2e427310938e85cbe0bc76adbb19bbfb27e40fb69c4156010c7802a \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x24dedb75ebc6b9529c652c41b88dd408f6a5078845d464a27ae4473a1d3f6aa93c719303ba1ef5fdde5a83941ca804179491e0cc22007af400c61c9175e0776b9879c6cc422a464c752c6eb06766553ca3c241bb4bb68810d7c9e4f723deacb2daaa3741a3c5b25ccce0d92e92dabdb659ceb9c4c1c8c4eefaab8b500cd0a1ca \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xf2c6e943016d8b743bab51992d1418edc8c340f45afc66464cd4d18dd7fe208235f35f5f3515cd7bed5e097b5e75eb9f8ac8d5eca59ae9432275d62dbe5e1806 1585247230000000 0 2000000 -24 \\x6ecd5993d2ebb9c51f62e3fb88db2092e39c63fbdbbe87adc8b9f3c874a2c89b1b20b87ba0ab1e8c25c57e272cbf584ab94bd666b45c299fda51b6e46d7425a0 \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x2900c01b645d85e0e49a1649cd416b5367bd3401f64d3b5230b05aa047e0dc6ba9c555056e51cffec724b2c38bdf0ed14519f098d987fd4b629ac27d1173c46203285913837c82422373b37707f7d866ed454ea90609ffff635efe7f0d79fbc916c8058dd3b108f07f3353e6fd8ceecb38fd7d12278b9e001e22630c888b625b \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xa134ac4ed1d1b5f83410753def597fcc22933c4e437c1de44136990fc4a42bfad1b4bf427c73a58024ccbd0500180628da898c73e737d56377e63bb781ecb208 1585247230000000 0 11000000 -26 \\x16c88a50e2920c8a330585b2e490e22929c6d7ce9abb2d519c6381efc9e939248fdca90b509ec25c2a0de4b13046e1692e9bde9304a03825c0bbf31db4043b50 \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x9a027e2d37b4eaf80f54372d5097332208e4c9daa42f7615855e545c01c3424e703150911901cfd8e7c82748c324e3f7000f3ec6168bbaa64f40b8cec7db1be6ff581c47506581add4828a9ccf031d52816dd7912872d221eff1ba197ecc7ba2e5e442384326e3075382623775a9be991e3ad14aa023c12e51aede29d14dba30 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\xb1ab12d70329f3942c13b29a4419fbf0b2d3c7321f11068faceb35a7e9bd9470c4decfd72e4a5384c02eab97b567c71fe926b9e8a058317e9eaef0bc0e27830f 1585247230000000 0 11000000 -27 \\x4a773b09239e4eb500fc1f7901824a15d989f9d0fabf717bacd3a8a81c7ae9858fea32244fbd882f0f55d8763262a34508b0a9e1ce50b96c3e04212568a724c8 \\x747f5c89194b7266b995701b18f8f5f9b31a1f18997b72aa306b12fe8c1be3db30507cf68c32408ad8ed9accdf31dfb56ac917b362dd21e4727b7e499540110f \\x216c2135704cf4f5e1275784111b36a56bfdc9a5370a0197a8b610db27c170074e30f37079cfd0a64ffd919236c1bd8e98c4ad1939e51e43adc0e180cfcc08d0ae2ac0565d5350662ab50700ea87b17a08ee280896b7d98cdb3abfd459297b3da7ea536cd75d420e516b7f25a85e9380bdff17750bbdf2857c6fab1c9029902c \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x8ff08d79c31ee50fecab4b49730ed7c04d8f5fcadf1fd3279e128c88a0e8d0044d2927e090f4a674a6bb4224461bdee8b6fae97c484c37e8a832bda5cdce0b0b 1585247230000000 0 2000000 -28 \\x77f76187f4587134ab7e00b26347225863ef176a0d9885c4206e01611cca519ea0c5fc5ac6cdcbaef3823b9cca6bab32487bd9c5e0ccaaa00614917c9355c168 \\x515baaf90e9c05724c56f5304095310345032d27286e6136a972ac6017b9f67fa608a11a806b632cc1f7d367ea63e1df40cd2d0c0756de82f829bc67f8b82ec5 \\x711ef153eafca8a60f7a7033d50f96ab6f614d8ebde72ef96742d5d351cc75f409a9c8a25f8151e39fcfc7de7299e3f0a725b58705f4822ffbe9ebca7d0ace87722e91848ea5fb94f637c65d145b803781b23d1a22dc2742aec014364dc54ed6ce4aab2eb13da550b4b08e62d09297af96ae27f4098a2fe276b3e90e7b791502 \\x56df2171b6b15ab33867ed818451aa0b082e06e9246b7fab3c180c1e60ec3a36 \\x91cdc2831948debbebfb4f1cdc9f68eedf602e0a7972891a92db3f486a4517422d8b8f53301415a572bdcb80b28d1b4ba9e7050d5070fc82bc7503dea2c8f506 1585247230000000 0 11000000 -\. - - --- --- Data for Name: wire_auditor_account_progress; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_auditor_account_progress (master_pub, account_name, last_wire_reserve_in_serial_id, last_wire_wire_out_serial_id, wire_in_off, wire_out_off) FROM stdin; -\. - - --- --- Data for Name: wire_auditor_progress; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_auditor_progress (master_pub, last_timestamp, last_reserve_close_uuid) FROM stdin; -\. - - --- --- Data for Name: wire_fee; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_fee (wire_method, start_date, end_date, wire_fee_val, wire_fee_frac, closing_fee_val, closing_fee_frac, master_sig) FROM stdin; -\. - - --- --- Data for Name: wire_out; Type: TABLE DATA; Schema: public; Owner: - --- - -COPY public.wire_out (wireout_uuid, execution_date, wtid_raw, wire_target, exchange_account_section, amount_val, amount_frac) FROM stdin; -\. - - --- --- Name: aggregation_tracking_aggregation_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.aggregation_tracking_aggregation_serial_id_seq', 1, false); - - --- --- Name: app_bankaccount_account_no_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.app_bankaccount_account_no_seq', 11, true); - - --- --- Name: app_banktransaction_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.app_banktransaction_id_seq', 2, true); - - --- --- Name: auditor_reserves_auditor_reserves_rowid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auditor_reserves_auditor_reserves_rowid_seq', 1, false); - - --- --- Name: auth_group_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_group_id_seq', 1, false); - - --- --- Name: auth_group_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_group_permissions_id_seq', 1, false); - - --- --- Name: auth_permission_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_permission_id_seq', 32, true); - - --- --- Name: auth_user_groups_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_user_groups_id_seq', 1, false); - - --- --- Name: auth_user_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_user_id_seq', 11, true); - - --- --- Name: auth_user_user_permissions_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.auth_user_user_permissions_id_seq', 1, false); - - --- --- Name: denomination_revocations_denom_revocations_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.denomination_revocations_denom_revocations_serial_id_seq', 2, true); - - --- --- Name: deposit_confirmations_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.deposit_confirmations_serial_id_seq', 1, true); - - --- --- Name: deposits_deposit_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.deposits_deposit_serial_id_seq', 2, true); - - --- --- Name: django_content_type_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.django_content_type_id_seq', 8, true); - - --- --- Name: django_migrations_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.django_migrations_id_seq', 15, true); - - --- --- Name: merchant_contract_terms_row_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.merchant_contract_terms_row_id_seq', 2, true); - - --- --- Name: merchant_refunds_rtransaction_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.merchant_refunds_rtransaction_id_seq', 1, false); - - --- --- Name: prewire_prewire_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.prewire_prewire_uuid_seq', 1, false); - - --- --- Name: recoup_recoup_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.recoup_recoup_uuid_seq', 1, true); - - --- --- Name: recoup_refresh_recoup_refresh_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.recoup_refresh_recoup_refresh_uuid_seq', 8, true); - - --- --- Name: refresh_commitments_melt_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.refresh_commitments_melt_serial_id_seq', 3, true); - - --- --- Name: refunds_refund_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.refunds_refund_serial_id_seq', 1, false); - - --- --- Name: reserves_close_close_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.reserves_close_close_uuid_seq', 1, false); - - --- --- Name: reserves_in_reserve_in_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.reserves_in_reserve_in_serial_id_seq', 1, true); - - --- --- Name: reserves_out_reserve_out_serial_id_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.reserves_out_reserve_out_serial_id_seq', 28, true); - - --- --- Name: wire_out_wireout_uuid_seq; Type: SEQUENCE SET; Schema: public; Owner: - --- - -SELECT pg_catalog.setval('public.wire_out_wireout_uuid_seq', 1, false); - - --- --- Name: patches patches_pkey; Type: CONSTRAINT; Schema: _v; Owner: - --- - -ALTER TABLE ONLY _v.patches - ADD CONSTRAINT patches_pkey PRIMARY KEY (patch_name); - - --- --- Name: aggregation_tracking aggregation_tracking_aggregation_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT aggregation_tracking_aggregation_serial_id_key UNIQUE (aggregation_serial_id); - - --- --- Name: aggregation_tracking aggregation_tracking_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT aggregation_tracking_pkey PRIMARY KEY (deposit_serial_id); - - --- --- Name: app_bankaccount app_bankaccount_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount - ADD CONSTRAINT app_bankaccount_pkey PRIMARY KEY (account_no); - - --- --- Name: app_bankaccount app_bankaccount_user_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount - ADD CONSTRAINT app_bankaccount_user_id_key UNIQUE (user_id); - - --- --- Name: app_banktransaction app_banktransaction_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_pkey PRIMARY KEY (id); - - --- --- Name: app_banktransaction app_banktransaction_request_uid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_request_uid_key UNIQUE (request_uid); - - --- --- Name: app_talerwithdrawoperation app_talerwithdrawoperation_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_talerwithdrawoperation - ADD CONSTRAINT app_talerwithdrawoperation_pkey PRIMARY KEY (withdraw_id); - - --- --- Name: auditor_denomination_pending auditor_denomination_pending_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denomination_pending - ADD CONSTRAINT auditor_denomination_pending_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: auditor_denominations auditor_denominations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denominations - ADD CONSTRAINT auditor_denominations_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: auditor_exchanges auditor_exchanges_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_exchanges - ADD CONSTRAINT auditor_exchanges_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_historic_denomination_revenue auditor_historic_denomination_revenue_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_historic_denomination_revenue - ADD CONSTRAINT auditor_historic_denomination_revenue_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: auditor_progress_aggregation auditor_progress_aggregation_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_aggregation - ADD CONSTRAINT auditor_progress_aggregation_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_progress_coin auditor_progress_coin_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_coin - ADD CONSTRAINT auditor_progress_coin_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_progress_deposit_confirmation auditor_progress_deposit_confirmation_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_deposit_confirmation - ADD CONSTRAINT auditor_progress_deposit_confirmation_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_progress_reserve auditor_progress_reserve_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_reserve - ADD CONSTRAINT auditor_progress_reserve_pkey PRIMARY KEY (master_pub); - - --- --- Name: auditor_reserves auditor_reserves_auditor_reserves_rowid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserves - ADD CONSTRAINT auditor_reserves_auditor_reserves_rowid_key UNIQUE (auditor_reserves_rowid); - - --- --- Name: auth_group auth_group_name_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group - ADD CONSTRAINT auth_group_name_key UNIQUE (name); - - --- --- Name: auth_group_permissions auth_group_permissions_group_id_permission_id_0cd325b0_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissions_group_id_permission_id_0cd325b0_uniq UNIQUE (group_id, permission_id); - - --- --- Name: auth_group_permissions auth_group_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissions_pkey PRIMARY KEY (id); - - --- --- Name: auth_group auth_group_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group - ADD CONSTRAINT auth_group_pkey PRIMARY KEY (id); - - --- --- Name: auth_permission auth_permission_content_type_id_codename_01ab375a_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission - ADD CONSTRAINT auth_permission_content_type_id_codename_01ab375a_uniq UNIQUE (content_type_id, codename); - - --- --- Name: auth_permission auth_permission_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission - ADD CONSTRAINT auth_permission_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_groups auth_user_groups_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_groups auth_user_groups_user_id_group_id_94350c0c_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_user_id_group_id_94350c0c_uniq UNIQUE (user_id, group_id); - - --- --- Name: auth_user auth_user_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user - ADD CONSTRAINT auth_user_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_user_permissions auth_user_user_permissions_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permissions_pkey PRIMARY KEY (id); - - --- --- Name: auth_user_user_permissions auth_user_user_permissions_user_id_permission_id_14a6b632_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permissions_user_id_permission_id_14a6b632_uniq UNIQUE (user_id, permission_id); - - --- --- Name: auth_user auth_user_username_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user - ADD CONSTRAINT auth_user_username_key UNIQUE (username); - - --- --- Name: denomination_revocations denomination_revocations_denom_revocations_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations - ADD CONSTRAINT denomination_revocations_denom_revocations_serial_id_key UNIQUE (denom_revocations_serial_id); - - --- --- Name: denomination_revocations denomination_revocations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations - ADD CONSTRAINT denomination_revocations_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: denominations denominations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denominations - ADD CONSTRAINT denominations_pkey PRIMARY KEY (denom_pub_hash); - - --- --- Name: deposit_confirmations deposit_confirmations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations - ADD CONSTRAINT deposit_confirmations_pkey PRIMARY KEY (h_contract_terms, h_wire, coin_pub, merchant_pub, exchange_sig, exchange_pub, master_sig); - - --- --- Name: deposit_confirmations deposit_confirmations_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations - ADD CONSTRAINT deposit_confirmations_serial_id_key UNIQUE (serial_id); - - --- --- Name: deposits deposits_coin_pub_merchant_pub_h_contract_terms_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits - ADD CONSTRAINT deposits_coin_pub_merchant_pub_h_contract_terms_key UNIQUE (coin_pub, merchant_pub, h_contract_terms); - - --- --- Name: deposits deposits_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits - ADD CONSTRAINT deposits_pkey PRIMARY KEY (deposit_serial_id); - - --- --- Name: django_content_type django_content_type_app_label_model_76bd3d3b_uniq; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_content_type - ADD CONSTRAINT django_content_type_app_label_model_76bd3d3b_uniq UNIQUE (app_label, model); - - --- --- Name: django_content_type django_content_type_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_content_type - ADD CONSTRAINT django_content_type_pkey PRIMARY KEY (id); - - --- --- Name: django_migrations django_migrations_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_migrations - ADD CONSTRAINT django_migrations_pkey PRIMARY KEY (id); - - --- --- Name: django_session django_session_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.django_session - ADD CONSTRAINT django_session_pkey PRIMARY KEY (session_key); - - --- --- Name: exchange_wire_fees exchange_wire_fees_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.exchange_wire_fees - ADD CONSTRAINT exchange_wire_fees_pkey PRIMARY KEY (exchange_pub, h_wire_method, start_date, end_date); - - --- --- Name: known_coins known_coins_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.known_coins - ADD CONSTRAINT known_coins_pkey PRIMARY KEY (coin_pub); - - --- --- Name: merchant_contract_terms merchant_contract_terms_h_contract_terms_merchant_pub_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms - ADD CONSTRAINT merchant_contract_terms_h_contract_terms_merchant_pub_key UNIQUE (h_contract_terms, merchant_pub); - - --- --- Name: merchant_contract_terms merchant_contract_terms_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms - ADD CONSTRAINT merchant_contract_terms_pkey PRIMARY KEY (order_id, merchant_pub); - - --- --- Name: merchant_contract_terms merchant_contract_terms_row_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_contract_terms - ADD CONSTRAINT merchant_contract_terms_row_id_key UNIQUE (row_id); - - --- --- Name: merchant_deposits merchant_deposits_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_deposits - ADD CONSTRAINT merchant_deposits_pkey PRIMARY KEY (h_contract_terms, coin_pub); - - --- --- Name: merchant_orders merchant_orders_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_orders - ADD CONSTRAINT merchant_orders_pkey PRIMARY KEY (order_id, merchant_pub); - - --- --- Name: merchant_proofs merchant_proofs_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_proofs - ADD CONSTRAINT merchant_proofs_pkey PRIMARY KEY (wtid, exchange_url); - - --- --- Name: merchant_refunds merchant_refunds_rtransaction_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_refunds - ADD CONSTRAINT merchant_refunds_rtransaction_id_key UNIQUE (rtransaction_id); - - --- --- Name: merchant_session_info merchant_session_info_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_session_info - ADD CONSTRAINT merchant_session_info_pkey PRIMARY KEY (session_id, fulfillment_url, merchant_pub); - - --- --- Name: merchant_session_info merchant_session_info_session_id_fulfillment_url_order_id_m_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_session_info - ADD CONSTRAINT merchant_session_info_session_id_fulfillment_url_order_id_m_key UNIQUE (session_id, fulfillment_url, order_id, merchant_pub); - - --- --- Name: merchant_tip_pickups merchant_tip_pickups_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_pickups - ADD CONSTRAINT merchant_tip_pickups_pkey PRIMARY KEY (pickup_id); - - --- --- Name: merchant_tip_reserve_credits merchant_tip_reserve_credits_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_reserve_credits - ADD CONSTRAINT merchant_tip_reserve_credits_pkey PRIMARY KEY (credit_uuid); - - --- --- Name: merchant_tip_reserves merchant_tip_reserves_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_reserves - ADD CONSTRAINT merchant_tip_reserves_pkey PRIMARY KEY (reserve_priv); - - --- --- Name: merchant_tips merchant_tips_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tips - ADD CONSTRAINT merchant_tips_pkey PRIMARY KEY (tip_id); - - --- --- Name: merchant_transfers merchant_transfers_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_transfers - ADD CONSTRAINT merchant_transfers_pkey PRIMARY KEY (h_contract_terms, coin_pub); - - --- --- Name: prewire prewire_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.prewire - ADD CONSTRAINT prewire_pkey PRIMARY KEY (prewire_uuid); - - --- --- Name: recoup recoup_recoup_uuid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup - ADD CONSTRAINT recoup_recoup_uuid_key UNIQUE (recoup_uuid); - - --- --- Name: recoup_refresh recoup_refresh_recoup_refresh_uuid_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh - ADD CONSTRAINT recoup_refresh_recoup_refresh_uuid_key UNIQUE (recoup_refresh_uuid); - - --- --- Name: refresh_commitments refresh_commitments_melt_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments - ADD CONSTRAINT refresh_commitments_melt_serial_id_key UNIQUE (melt_serial_id); - - --- --- Name: refresh_commitments refresh_commitments_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments - ADD CONSTRAINT refresh_commitments_pkey PRIMARY KEY (rc); - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_coin_ev_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_coin_ev_key UNIQUE (coin_ev); - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_h_coin_ev_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_h_coin_ev_key UNIQUE (h_coin_ev); - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_pkey PRIMARY KEY (rc, freshcoin_index); - - --- --- Name: refresh_transfer_keys refresh_transfer_keys_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_transfer_keys - ADD CONSTRAINT refresh_transfer_keys_pkey PRIMARY KEY (rc); - - --- --- Name: refunds refunds_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds - ADD CONSTRAINT refunds_pkey PRIMARY KEY (coin_pub, merchant_pub, h_contract_terms, rtransaction_id); - - --- --- Name: refunds refunds_refund_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds - ADD CONSTRAINT refunds_refund_serial_id_key UNIQUE (refund_serial_id); - - --- --- Name: reserves_close reserves_close_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_close - ADD CONSTRAINT reserves_close_pkey PRIMARY KEY (close_uuid); - - --- --- Name: reserves_in reserves_in_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in - ADD CONSTRAINT reserves_in_pkey PRIMARY KEY (reserve_pub, wire_reference); - - --- --- Name: reserves_in reserves_in_reserve_in_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in - ADD CONSTRAINT reserves_in_reserve_in_serial_id_key UNIQUE (reserve_in_serial_id); - - --- --- Name: reserves_out reserves_out_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_pkey PRIMARY KEY (h_blind_ev); - - --- --- Name: reserves_out reserves_out_reserve_out_serial_id_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_reserve_out_serial_id_key UNIQUE (reserve_out_serial_id); - - --- --- Name: reserves reserves_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves - ADD CONSTRAINT reserves_pkey PRIMARY KEY (reserve_pub); - - --- --- Name: wire_auditor_account_progress wire_auditor_account_progress_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_account_progress - ADD CONSTRAINT wire_auditor_account_progress_pkey PRIMARY KEY (master_pub, account_name); - - --- --- Name: wire_auditor_progress wire_auditor_progress_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_progress - ADD CONSTRAINT wire_auditor_progress_pkey PRIMARY KEY (master_pub); - - --- --- Name: wire_fee wire_fee_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_fee - ADD CONSTRAINT wire_fee_pkey PRIMARY KEY (wire_method, start_date); - - --- --- Name: wire_out wire_out_pkey; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_out - ADD CONSTRAINT wire_out_pkey PRIMARY KEY (wireout_uuid); - - --- --- Name: wire_out wire_out_wtid_raw_key; Type: CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_out - ADD CONSTRAINT wire_out_wtid_raw_key UNIQUE (wtid_raw); - - --- --- Name: aggregation_tracking_wtid_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX aggregation_tracking_wtid_index ON public.aggregation_tracking USING btree (wtid_raw); - - --- --- Name: INDEX aggregation_tracking_wtid_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.aggregation_tracking_wtid_index IS 'for lookup_transactions'; - - --- --- Name: app_banktransaction_credit_account_id_a8ba05ac; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_credit_account_id_a8ba05ac ON public.app_banktransaction USING btree (credit_account_id); - - --- --- Name: app_banktransaction_date_f72bcad6; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_date_f72bcad6 ON public.app_banktransaction USING btree (date); - - --- --- Name: app_banktransaction_debit_account_id_5b1f7528; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_debit_account_id_5b1f7528 ON public.app_banktransaction USING btree (debit_account_id); - - --- --- Name: app_banktransaction_request_uid_b7d06af5_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_banktransaction_request_uid_b7d06af5_like ON public.app_banktransaction USING btree (request_uid varchar_pattern_ops); - - --- --- Name: app_talerwithdrawoperation_selected_exchange_account__6c8b96cf; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_talerwithdrawoperation_selected_exchange_account__6c8b96cf ON public.app_talerwithdrawoperation USING btree (selected_exchange_account_id); - - --- --- Name: app_talerwithdrawoperation_withdraw_account_id_992dc5b3; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX app_talerwithdrawoperation_withdraw_account_id_992dc5b3 ON public.app_talerwithdrawoperation USING btree (withdraw_account_id); - - --- --- Name: auditor_historic_reserve_summary_by_master_pub_start_date; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auditor_historic_reserve_summary_by_master_pub_start_date ON public.auditor_historic_reserve_summary USING btree (master_pub, start_date); - - --- --- Name: auditor_reserves_by_reserve_pub; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auditor_reserves_by_reserve_pub ON public.auditor_reserves USING btree (reserve_pub); - - --- --- Name: auth_group_name_a6ea08ec_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_group_name_a6ea08ec_like ON public.auth_group USING btree (name varchar_pattern_ops); - - --- --- Name: auth_group_permissions_group_id_b120cbf9; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_group_permissions_group_id_b120cbf9 ON public.auth_group_permissions USING btree (group_id); - - --- --- Name: auth_group_permissions_permission_id_84c5c92e; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_group_permissions_permission_id_84c5c92e ON public.auth_group_permissions USING btree (permission_id); - - --- --- Name: auth_permission_content_type_id_2f476e4b; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_permission_content_type_id_2f476e4b ON public.auth_permission USING btree (content_type_id); - - --- --- Name: auth_user_groups_group_id_97559544; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_groups_group_id_97559544 ON public.auth_user_groups USING btree (group_id); - - --- --- Name: auth_user_groups_user_id_6a12ed8b; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_groups_user_id_6a12ed8b ON public.auth_user_groups USING btree (user_id); - - --- --- Name: auth_user_user_permissions_permission_id_1fbb5f2c; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_user_permissions_permission_id_1fbb5f2c ON public.auth_user_user_permissions USING btree (permission_id); - - --- --- Name: auth_user_user_permissions_user_id_a95ead1b; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_user_permissions_user_id_a95ead1b ON public.auth_user_user_permissions USING btree (user_id); - - --- --- Name: auth_user_username_6821ab7c_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX auth_user_username_6821ab7c_like ON public.auth_user USING btree (username varchar_pattern_ops); - - --- --- Name: denominations_expire_legal_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX denominations_expire_legal_index ON public.denominations USING btree (expire_legal); - - --- --- Name: deposits_coin_pub_merchant_contract_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX deposits_coin_pub_merchant_contract_index ON public.deposits USING btree (coin_pub, merchant_pub, h_contract_terms); - - --- --- Name: INDEX deposits_coin_pub_merchant_contract_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.deposits_coin_pub_merchant_contract_index IS 'for deposits_get_ready'; - - --- --- Name: deposits_get_ready_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX deposits_get_ready_index ON public.deposits USING btree (tiny, done, wire_deadline, refund_deadline); - - --- --- Name: deposits_iterate_matching_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX deposits_iterate_matching_index ON public.deposits USING btree (merchant_pub, h_wire, done, wire_deadline); - - --- --- Name: INDEX deposits_iterate_matching_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.deposits_iterate_matching_index IS 'for deposits_iterate_matching'; - - --- --- Name: django_session_expire_date_a5c62663; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX django_session_expire_date_a5c62663 ON public.django_session USING btree (expire_date); - - --- --- Name: django_session_session_key_c0390e0f_like; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX django_session_session_key_c0390e0f_like ON public.django_session USING btree (session_key varchar_pattern_ops); - - --- --- Name: known_coins_by_denomination; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX known_coins_by_denomination ON public.known_coins USING btree (denom_pub_hash); - - --- --- Name: merchant_transfers_by_coin; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX merchant_transfers_by_coin ON public.merchant_transfers USING btree (h_contract_terms, coin_pub); - - --- --- Name: merchant_transfers_by_wtid; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX merchant_transfers_by_wtid ON public.merchant_transfers USING btree (wtid); - - --- --- Name: prepare_iteration_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX prepare_iteration_index ON public.prewire USING btree (finished); - - --- --- Name: INDEX prepare_iteration_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.prepare_iteration_index IS 'for wire_prepare_data_get and gc_prewire'; - - --- --- Name: recoup_by_coin_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_by_coin_index ON public.recoup USING btree (coin_pub); - - --- --- Name: recoup_by_h_blind_ev; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_by_h_blind_ev ON public.recoup USING btree (h_blind_ev); - - --- --- Name: recoup_for_by_reserve; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_for_by_reserve ON public.recoup USING btree (coin_pub, h_blind_ev); - - --- --- Name: recoup_refresh_by_coin_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_refresh_by_coin_index ON public.recoup_refresh USING btree (coin_pub); - - --- --- Name: recoup_refresh_by_h_blind_ev; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_refresh_by_h_blind_ev ON public.recoup_refresh USING btree (h_blind_ev); - - --- --- Name: recoup_refresh_for_by_reserve; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX recoup_refresh_for_by_reserve ON public.recoup_refresh USING btree (coin_pub, h_blind_ev); - - --- --- Name: refresh_commitments_old_coin_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refresh_commitments_old_coin_pub_index ON public.refresh_commitments USING btree (old_coin_pub); - - --- --- Name: refresh_revealed_coins_coin_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refresh_revealed_coins_coin_pub_index ON public.refresh_revealed_coins USING btree (denom_pub_hash); - - --- --- Name: refresh_transfer_keys_coin_tpub; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refresh_transfer_keys_coin_tpub ON public.refresh_transfer_keys USING btree (rc, transfer_pub); - - --- --- Name: INDEX refresh_transfer_keys_coin_tpub; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.refresh_transfer_keys_coin_tpub IS 'for get_link (unsure if this helps or hurts for performance as there should be very few transfer public keys per rc, but at least in theory this helps the ORDER BY clause)'; - - --- --- Name: refunds_coin_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX refunds_coin_pub_index ON public.refunds USING btree (coin_pub); - - --- --- Name: reserves_close_by_reserve; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_close_by_reserve ON public.reserves_close USING btree (reserve_pub); - - --- --- Name: reserves_expiration_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_expiration_index ON public.reserves USING btree (expiration_date, current_balance_val, current_balance_frac); - - --- --- Name: INDEX reserves_expiration_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.reserves_expiration_index IS 'used in get_expired_reserves'; - - --- --- Name: reserves_gc_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_gc_index ON public.reserves USING btree (gc_date); - - --- --- Name: INDEX reserves_gc_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.reserves_gc_index IS 'for reserve garbage collection'; - - --- --- Name: reserves_in_exchange_account_serial; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_in_exchange_account_serial ON public.reserves_in USING btree (exchange_account_section, reserve_in_serial_id DESC); - - --- --- Name: reserves_in_execution_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_in_execution_index ON public.reserves_in USING btree (exchange_account_section, execution_date); - - --- --- Name: reserves_out_execution_date; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_out_execution_date ON public.reserves_out USING btree (execution_date); - - --- --- Name: reserves_out_for_get_withdraw_info; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_out_for_get_withdraw_info ON public.reserves_out USING btree (denom_pub_hash, h_blind_ev); - - --- --- Name: reserves_out_reserve_pub_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX reserves_out_reserve_pub_index ON public.reserves_out USING btree (reserve_pub); - - --- --- Name: INDEX reserves_out_reserve_pub_index; Type: COMMENT; Schema: public; Owner: - --- - -COMMENT ON INDEX public.reserves_out_reserve_pub_index IS 'for get_reserves_out'; - - --- --- Name: wire_fee_gc_index; Type: INDEX; Schema: public; Owner: - --- - -CREATE INDEX wire_fee_gc_index ON public.wire_fee USING btree (end_date); - - --- --- Name: aggregation_tracking aggregation_tracking_deposit_serial_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT aggregation_tracking_deposit_serial_id_fkey FOREIGN KEY (deposit_serial_id) REFERENCES public.deposits(deposit_serial_id) ON DELETE CASCADE; - - --- --- Name: app_bankaccount app_bankaccount_user_id_2722a34f_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_bankaccount - ADD CONSTRAINT app_bankaccount_user_id_2722a34f_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_banktransaction app_banktransaction_credit_account_id_a8ba05ac_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_credit_account_id_a8ba05ac_fk_app_banka FOREIGN KEY (credit_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_banktransaction app_banktransaction_debit_account_id_5b1f7528_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_banktransaction - ADD CONSTRAINT app_banktransaction_debit_account_id_5b1f7528_fk_app_banka FOREIGN KEY (debit_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_talerwithdrawoperation app_talerwithdrawope_selected_exchange_ac_6c8b96cf_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_talerwithdrawoperation - ADD CONSTRAINT app_talerwithdrawope_selected_exchange_ac_6c8b96cf_fk_app_banka FOREIGN KEY (selected_exchange_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: app_talerwithdrawoperation app_talerwithdrawope_withdraw_account_id_992dc5b3_fk_app_banka; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.app_talerwithdrawoperation - ADD CONSTRAINT app_talerwithdrawope_withdraw_account_id_992dc5b3_fk_app_banka FOREIGN KEY (withdraw_account_id) REFERENCES public.app_bankaccount(account_no) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auditor_denomination_pending auditor_denomination_pending_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denomination_pending - ADD CONSTRAINT auditor_denomination_pending_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.auditor_denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: auth_group_permissions auth_group_permissio_permission_id_84c5c92e_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissio_permission_id_84c5c92e_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_group_permissions auth_group_permissions_group_id_b120cbf9_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_group_permissions - ADD CONSTRAINT auth_group_permissions_group_id_b120cbf9_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_permission auth_permission_content_type_id_2f476e4b_fk_django_co; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_permission - ADD CONSTRAINT auth_permission_content_type_id_2f476e4b_fk_django_co FOREIGN KEY (content_type_id) REFERENCES public.django_content_type(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_groups auth_user_groups_group_id_97559544_fk_auth_group_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_group_id_97559544_fk_auth_group_id FOREIGN KEY (group_id) REFERENCES public.auth_group(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_groups auth_user_groups_user_id_6a12ed8b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_groups - ADD CONSTRAINT auth_user_groups_user_id_6a12ed8b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_user_permissions auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permi_permission_id_1fbb5f2c_fk_auth_perm FOREIGN KEY (permission_id) REFERENCES public.auth_permission(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: auth_user_user_permissions auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auth_user_user_permissions - ADD CONSTRAINT auth_user_user_permissions_user_id_a95ead1b_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES public.auth_user(id) DEFERRABLE INITIALLY DEFERRED; - - --- --- Name: denomination_revocations denomination_revocations_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.denomination_revocations - ADD CONSTRAINT denomination_revocations_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: deposits deposits_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposits - ADD CONSTRAINT deposits_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub) ON DELETE CASCADE; - - --- --- Name: known_coins known_coins_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.known_coins - ADD CONSTRAINT known_coins_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: auditor_exchange_signkeys master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_exchange_signkeys - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_denominations master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_denominations - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_reserve master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_reserve - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_aggregation master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_aggregation - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_deposit_confirmation master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_deposit_confirmation - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_progress_coin master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_progress_coin - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: wire_auditor_account_progress master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_account_progress - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: wire_auditor_progress master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.wire_auditor_progress - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_reserves master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserves - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_reserve_balance master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_reserve_balance - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_wire_fee_balance master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_wire_fee_balance - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_balance_summary master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_balance_summary - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_historic_denomination_revenue master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_historic_denomination_revenue - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_historic_reserve_summary master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_historic_reserve_summary - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: deposit_confirmations master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.deposit_confirmations - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: auditor_predicted_result master_pub_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.auditor_predicted_result - ADD CONSTRAINT master_pub_ref FOREIGN KEY (master_pub) REFERENCES public.auditor_exchanges(master_pub) ON DELETE CASCADE; - - --- --- Name: merchant_deposits merchant_deposits_h_contract_terms_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_deposits - ADD CONSTRAINT merchant_deposits_h_contract_terms_fkey FOREIGN KEY (h_contract_terms, merchant_pub) REFERENCES public.merchant_contract_terms(h_contract_terms, merchant_pub); - - --- --- Name: merchant_tip_pickups merchant_tip_pickups_tip_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.merchant_tip_pickups - ADD CONSTRAINT merchant_tip_pickups_tip_id_fkey FOREIGN KEY (tip_id) REFERENCES public.merchant_tips(tip_id) ON DELETE CASCADE; - - --- --- Name: recoup recoup_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup - ADD CONSTRAINT recoup_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub); - - --- --- Name: recoup recoup_h_blind_ev_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup - ADD CONSTRAINT recoup_h_blind_ev_fkey FOREIGN KEY (h_blind_ev) REFERENCES public.reserves_out(h_blind_ev) ON DELETE CASCADE; - - --- --- Name: recoup_refresh recoup_refresh_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh - ADD CONSTRAINT recoup_refresh_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub); - - --- --- Name: recoup_refresh recoup_refresh_h_blind_ev_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.recoup_refresh - ADD CONSTRAINT recoup_refresh_h_blind_ev_fkey FOREIGN KEY (h_blind_ev) REFERENCES public.refresh_revealed_coins(h_coin_ev) ON DELETE CASCADE; - - --- --- Name: refresh_commitments refresh_commitments_old_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_commitments - ADD CONSTRAINT refresh_commitments_old_coin_pub_fkey FOREIGN KEY (old_coin_pub) REFERENCES public.known_coins(coin_pub) ON DELETE CASCADE; - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash) ON DELETE CASCADE; - - --- --- Name: refresh_revealed_coins refresh_revealed_coins_rc_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_revealed_coins - ADD CONSTRAINT refresh_revealed_coins_rc_fkey FOREIGN KEY (rc) REFERENCES public.refresh_commitments(rc) ON DELETE CASCADE; - - --- --- Name: refresh_transfer_keys refresh_transfer_keys_rc_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refresh_transfer_keys - ADD CONSTRAINT refresh_transfer_keys_rc_fkey FOREIGN KEY (rc) REFERENCES public.refresh_commitments(rc) ON DELETE CASCADE; - - --- --- Name: refunds refunds_coin_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.refunds - ADD CONSTRAINT refunds_coin_pub_fkey FOREIGN KEY (coin_pub) REFERENCES public.known_coins(coin_pub) ON DELETE CASCADE; - - --- --- Name: reserves_close reserves_close_reserve_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_close - ADD CONSTRAINT reserves_close_reserve_pub_fkey FOREIGN KEY (reserve_pub) REFERENCES public.reserves(reserve_pub) ON DELETE CASCADE; - - --- --- Name: reserves_in reserves_in_reserve_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_in - ADD CONSTRAINT reserves_in_reserve_pub_fkey FOREIGN KEY (reserve_pub) REFERENCES public.reserves(reserve_pub) ON DELETE CASCADE; - - --- --- Name: reserves_out reserves_out_denom_pub_hash_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_denom_pub_hash_fkey FOREIGN KEY (denom_pub_hash) REFERENCES public.denominations(denom_pub_hash); - - --- --- Name: reserves_out reserves_out_reserve_pub_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.reserves_out - ADD CONSTRAINT reserves_out_reserve_pub_fkey FOREIGN KEY (reserve_pub) REFERENCES public.reserves(reserve_pub) ON DELETE CASCADE; - - --- --- Name: aggregation_tracking wire_out_ref; Type: FK CONSTRAINT; Schema: public; Owner: - --- - -ALTER TABLE ONLY public.aggregation_tracking - ADD CONSTRAINT wire_out_ref FOREIGN KEY (wtid_raw) REFERENCES public.wire_out(wtid_raw) ON DELETE CASCADE DEFERRABLE; - - --- --- PostgreSQL database dump complete --- - diff --git a/src/auditor/taler-auditor-httpd_deposit-confirmation.c b/src/auditor/taler-auditor-httpd_deposit-confirmation.c index 5f84a7253..1039164c4 100644 --- a/src/auditor/taler-auditor-httpd_deposit-confirmation.c +++ b/src/auditor/taler-auditor-httpd_deposit-confirmation.c @@ -155,7 +155,7 @@ verify_and_execute_deposit_confirmation ( .purpose.size = htonl (sizeof (struct TALER_DepositConfirmationPS)), .h_contract_terms = dc->h_contract_terms, .h_wire = dc->h_wire, - .timestamp = GNUNET_TIME_absolute_hton (dc->timestamp), + .exchange_timestamp = GNUNET_TIME_absolute_hton (dc->exchange_timestamp), .refund_deadline = GNUNET_TIME_absolute_hton (dc->refund_deadline), .coin_pub = dc->coin_pub, .merchant = dc->merchant @@ -224,7 +224,8 @@ TAH_DEPOSIT_CONFIRMATION_handler (struct TAH_RequestHandler *rh, struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_fixed_auto ("h_contract_terms", &dc.h_contract_terms), GNUNET_JSON_spec_fixed_auto ("h_wire", &dc.h_wire), - GNUNET_JSON_spec_absolute_time ("timestamp", &dc.timestamp), + GNUNET_JSON_spec_absolute_time ("exchange_timestamp", + &dc.exchange_timestamp), GNUNET_JSON_spec_absolute_time ("refund_deadline", &dc.refund_deadline), TALER_JSON_spec_amount ("amount_without_fee", &dc.amount_without_fee), GNUNET_JSON_spec_fixed_auto ("coin_pub", &dc.coin_pub), diff --git a/src/auditor/taler-helper-auditor-coins.c b/src/auditor/taler-helper-auditor-coins.c index 663532afb..1a03ac72d 100644 --- a/src/auditor/taler-helper-auditor-coins.c +++ b/src/auditor/taler-helper-auditor-coins.c @@ -1535,7 +1535,8 @@ refresh_session_cb (void *cls, * * @param cls closure * @param rowid unique serial ID for the deposit in our DB - * @param timestamp when did the deposit happen + * @param exchange_timestamp when did the exchange get the deposit + * @param wallet_timestamp when did the contract signing happen * @param merchant_pub public key of the merchant * @param denom_pub denomination public key of @a coin_pub * @param coin_pub public key of the coin @@ -1553,7 +1554,8 @@ refresh_session_cb (void *cls, static int deposit_cb (void *cls, uint64_t rowid, - struct GNUNET_TIME_Absolute timestamp, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Absolute wallet_timestamp, const struct TALER_MerchantPublicKeyP *merchant_pub, const struct TALER_DenominationPublicKey *denom_pub, const struct TALER_CoinSpendPublicKeyP *coin_pub, @@ -1611,7 +1613,7 @@ deposit_cb (void *cls, .purpose.purpose = htonl (TALER_SIGNATURE_WALLET_COIN_DEPOSIT), .purpose.size = htonl (sizeof (dr)), .h_contract_terms = *h_contract_terms, - .timestamp = GNUNET_TIME_absolute_hton (timestamp), + .wallet_timestamp = GNUNET_TIME_absolute_hton (wallet_timestamp), .refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline), .deposit_fee = issue->fee_deposit, .merchant = *merchant_pub, @@ -1802,7 +1804,6 @@ refund_cb (void *cls, .coin_pub = *coin_pub, .merchant = *merchant_pub, .rtransaction_id = GNUNET_htonll (rtransaction_id), - .refund_fee = issue->fee_refund }; TALER_amount_hton (&rr.refund_amount, diff --git a/src/auditor/taler-helper-auditor-deposits.c b/src/auditor/taler-helper-auditor-deposits.c index 291558590..ed23c6a52 100644 --- a/src/auditor/taler-helper-auditor-deposits.c +++ b/src/auditor/taler-helper-auditor-deposits.c @@ -114,11 +114,15 @@ test_dc (void *cls, .h_wire = dc->h_wire, .refund_deadline = dc->refund_deadline }; + struct GNUNET_TIME_Absolute exchange_timestamp; + struct TALER_Amount deposit_fee; qs = TALER_ARL_edb->have_deposit (TALER_ARL_edb->cls, TALER_ARL_esession, &dep, - GNUNET_NO /* do not check refund deadline */); + GNUNET_NO /* do not check refund deadline */, + &deposit_fee, + &exchange_timestamp); if (qs > 0) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, @@ -137,7 +141,8 @@ test_dc (void *cls, TALER_ARL_report (report_deposit_confirmation_inconsistencies, json_pack ("{s:o, s:o, s:I, s:o}", "timestamp", - TALER_ARL_json_from_time_abs (dc->timestamp), + TALER_ARL_json_from_time_abs ( + dc->exchange_timestamp), "amount", TALER_JSON_from_amount (&dc->amount_without_fee), "rowid", diff --git a/src/auditor/taler-helper-auditor-reserves.c b/src/auditor/taler-helper-auditor-reserves.c index 26adbb581..0b140e740 100644 --- a/src/auditor/taler-helper-auditor-reserves.c +++ b/src/auditor/taler-helper-auditor-reserves.c @@ -550,7 +550,6 @@ handle_reserve_out (void *cls, } /* check reserve_sig (first: setup remaining members of wsrd) */ - wsrd.withdraw_fee = issue->fee_withdraw; TALER_amount_hton (&wsrd.amount_with_fee, amount_with_fee); if (GNUNET_OK != diff --git a/src/auditor/test-auditor.sh b/src/auditor/test-auditor.sh index 57b017d28..edf5fec59 100755 --- a/src/auditor/test-auditor.sh +++ b/src/auditor/test-auditor.sh @@ -1872,6 +1872,12 @@ else fi fi -check_with_database "auditor-basedb" +# run tests with pre-build database, if one is available +if test -x auditor-basedb.mpub +then + check_with_database "auditor-basedb" +else + fail=77 +fi exit $fail diff --git a/src/auditor/test-revocation.sh b/src/auditor/test-revocation.sh index 714fcc8a1..1b5070a3b 100755 --- a/src/auditor/test-revocation.sh +++ b/src/auditor/test-revocation.sh @@ -543,6 +543,12 @@ else fi fi -check_with_database "revoke-basedb" +# run tests with pre-build database, if one is available +if test -x revoke-basedb.mpub +then + check_with_database "revoke-basedb" +else + fail=77 +fi exit $fail diff --git a/src/auditordb/auditor-0001.sql b/src/auditordb/auditor-0001.sql index ff8867bee..b511a4d5b 100644 --- a/src/auditordb/auditor-0001.sql +++ b/src/auditordb/auditor-0001.sql @@ -251,7 +251,7 @@ CREATE TABLE IF NOT EXISTS deposit_confirmations ,serial_id BIGSERIAL UNIQUE ,h_contract_terms BYTEA CHECK (LENGTH(h_contract_terms)=64) ,h_wire BYTEA CHECK (LENGTH(h_wire)=64) - ,timestamp INT8 NOT NULL + ,exchange_timestamp INT8 NOT NULL ,refund_deadline INT8 NOT NULL ,amount_without_fee_val INT8 NOT NULL ,amount_without_fee_frac INT4 NOT NULL diff --git a/src/auditordb/drop0001.sql b/src/auditordb/drop0001.sql index 80f953e32..8e42c8094 100644 --- a/src/auditordb/drop0001.sql +++ b/src/auditordb/drop0001.sql @@ -43,8 +43,8 @@ DROP TABLE IF EXISTS auditor_denominations CASCADE; DROP TABLE IF EXISTS deposit_confirmations CASCADE; DROP TABLE IF EXISTS auditor_exchanges CASCADE; --- Drop versioning (0000.sql) -DROP SCHEMA IF EXISTS _v CASCADE; +-- Drop versioning (auditor-0001.sql) +SELECT _v.unregister_patch('auditor-0001'); -- And we're out of here... COMMIT; diff --git a/src/auditordb/plugin_auditordb_postgres.c b/src/auditordb/plugin_auditordb_postgres.c index 467c4c6db..4f9101fdc 100644 --- a/src/auditordb/plugin_auditordb_postgres.c +++ b/src/auditordb/plugin_auditordb_postgres.c @@ -269,7 +269,7 @@ postgres_get_session (void *cls) "(master_pub" ",h_contract_terms" ",h_wire" - ",timestamp" + ",exchange_timestamp" ",refund_deadline" ",amount_without_fee_val" ",amount_without_fee_frac" @@ -286,7 +286,7 @@ postgres_get_session (void *cls) " serial_id" ",h_contract_terms" ",h_wire" - ",timestamp" + ",exchange_timestamp" ",refund_deadline" ",amount_without_fee_val" ",amount_without_fee_frac" @@ -1126,7 +1126,7 @@ postgres_insert_deposit_confirmation ( GNUNET_PQ_query_param_auto_from_type (&dc->master_public_key), GNUNET_PQ_query_param_auto_from_type (&dc->h_contract_terms), GNUNET_PQ_query_param_auto_from_type (&dc->h_wire), - TALER_PQ_query_param_absolute_time (&dc->timestamp), + TALER_PQ_query_param_absolute_time (&dc->exchange_timestamp), TALER_PQ_query_param_absolute_time (&dc->refund_deadline), TALER_PQ_query_param_amount (&dc->amount_without_fee), GNUNET_PQ_query_param_auto_from_type (&dc->coin_pub), @@ -1207,8 +1207,8 @@ deposit_confirmation_cb (void *cls, &dc.h_contract_terms), GNUNET_PQ_result_spec_auto_from_type ("h_wire", &dc.h_wire), - GNUNET_PQ_result_spec_absolute_time ("timestamp", - &dc.timestamp), + GNUNET_PQ_result_spec_absolute_time ("exchange_timestamp", + &dc.exchange_timestamp), GNUNET_PQ_result_spec_absolute_time ("refund_deadline", &dc.refund_deadline), TALER_PQ_RESULT_SPEC_AMOUNT ("amount_without_fee", diff --git a/src/exchange-tools/taler-exchange-keyup.c b/src/exchange-tools/taler-exchange-keyup.c index a3e3bce29..0ea661d49 100644 --- a/src/exchange-tools/taler-exchange-keyup.c +++ b/src/exchange-tools/taler-exchange-keyup.c @@ -1016,9 +1016,9 @@ create_wire_fee_for_method (void *cls, af->wire_fee.currency)) ) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Invalid or missing amount in `%s' under `%s'\n", - section, - opt); + "Invalid or missing amount for option `%s' in section `%s'\n", + opt, + section); *ret = GNUNET_SYSERR; GNUNET_free (opt); break; @@ -1038,9 +1038,9 @@ create_wire_fee_for_method (void *cls, af->closing_fee.currency)) ) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Invalid or missing amount in `%s' under `%s'\n", - section, - opt); + "Invalid or missing amount for option `%s' in section `%s'\n", + opt, + section); *ret = GNUNET_SYSERR; GNUNET_free (opt); break; diff --git a/src/exchange/taler-exchange-aggregator.c b/src/exchange/taler-exchange-aggregator.c index 21a29e506..69c73746c 100644 --- a/src/exchange/taler-exchange-aggregator.c +++ b/src/exchange/taler-exchange-aggregator.c @@ -330,6 +330,8 @@ refund_by_coin_cb (void *cls, * * @param cls a `struct AggregationUnit` * @param row_id identifies database entry + * @param exchange_timestamp when did the deposit happen + * @param wallet_timestamp when did the contract happen * @param merchant_pub public key of the merchant * @param coin_pub public key of the coin * @param amount_with_fee amount that was deposited including fee @@ -343,6 +345,8 @@ refund_by_coin_cb (void *cls, static enum GNUNET_DB_QueryStatus deposit_cb (void *cls, uint64_t row_id, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Absolute wallet_timestamp, const struct TALER_MerchantPublicKeyP *merchant_pub, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *amount_with_fee, @@ -358,6 +362,8 @@ deposit_cb (void *cls, /* NOTE: potential optimization: use custom SQL API to not fetch this one: */ (void) wire_deadline; /* already checked by SQL query */ + (void) exchange_timestamp; + (void) wallet_timestamp; au->merchant_pub = *merchant_pub; GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Aggregator processing payment %s with amount %s\n", @@ -501,6 +507,8 @@ deposit_cb (void *cls, * * @param cls a `struct AggregationUnit` * @param row_id identifies database entry + * @param exchange_timestamp when did the exchange receive the deposit + * @param wallet_timestamp when did the wallet sign the contract * @param merchant_pub public key of the merchant * @param coin_pub public key of the coin * @param amount_with_fee amount that was deposited including fee @@ -514,6 +522,8 @@ deposit_cb (void *cls, static enum GNUNET_DB_QueryStatus aggregate_cb (void *cls, uint64_t row_id, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Absolute wallet_timestamp, const struct TALER_MerchantPublicKeyP *merchant_pub, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *amount_with_fee, @@ -529,6 +539,8 @@ aggregate_cb (void *cls, /* NOTE: potential optimization: use custom SQL API to not fetch these: */ (void) wire_deadline; /* checked by SQL */ + (void) exchange_timestamp; + (void) wallet_timestamp; (void) wire; /* must match */ GNUNET_break (0 == GNUNET_memcmp (&au->merchant_pub, merchant_pub)); diff --git a/src/exchange/taler-exchange-httpd.c b/src/exchange/taler-exchange-httpd.c index 339303d53..c614b711e 100644 --- a/src/exchange/taler-exchange-httpd.c +++ b/src/exchange/taler-exchange-httpd.c @@ -421,6 +421,45 @@ proceed_with_handler (const struct TEH_RequestHandler *rh, /** + * Handle a "/seed" request. + * + * @param rh context of the handler + * @param connection the MHD connection to handle + * @param args array of additional options (must be empty for this function) + * @return MHD result code + */ +static MHD_RESULT +handler_seed (const struct TEH_RequestHandler *rh, + struct MHD_Connection *connection, + const char *const args[]) +{ +#define SEED_SIZE 32 + char *body; + MHD_RESULT ret; + struct MHD_Response *resp; + + (void) rh; + body = malloc (SEED_SIZE); /* must use malloc(), because MHD will use free() */ + if (NULL == body) + return MHD_NO; + GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE, + body, + SEED_SIZE); + resp = MHD_create_response_from_buffer (SEED_SIZE, + body, + MHD_RESPMEM_MUST_FREE); + TALER_MHD_add_global_headers (resp); + ret = MHD_queue_response (connection, + MHD_HTTP_OK, + resp); + GNUNET_break (MHD_YES == ret); + MHD_destroy_response (resp); + return ret; +#undef SEED_SIZE +} + + +/** * Handle incoming HTTP request. * * @param cls closure for MHD daemon (unused) @@ -472,6 +511,11 @@ handle_mhd_request (void *cls, .method = MHD_HTTP_METHOD_GET, .handler.get = &TEH_handler_agpl_redirect }, + { + .url = "seed", + .method = MHD_HTTP_METHOD_GET, + .handler.get = &handler_seed + }, /* Terms of service */ { .url = "terms", @@ -654,9 +698,10 @@ handle_mhd_request (void *cls, { struct TEH_RequestHandler *rh = &handlers[i]; - if (0 != strncmp (tok, - rh->url, - tok_size)) + if ( (0 != strncmp (tok, + rh->url, + tok_size)) || + (tok_size != strlen (rh->url) ) ) continue; found = GNUNET_YES; /* The URL is a match! What we now do depends on the method. */ @@ -782,8 +827,8 @@ exchange_serve_process_config (void) &TEH_master_public_key. eddsa_pub)) { - fprintf (stderr, - "Invalid master public key given in exchange configuration."); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Invalid master public key given in exchange configuration."); GNUNET_free (master_public_key_str); return GNUNET_SYSERR; } @@ -795,14 +840,18 @@ exchange_serve_process_config (void) if (GNUNET_OK != TEH_WIRE_init (TEH_cfg)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to setup wire subsystem\n"); return GNUNET_SYSERR; + } if (NULL == (TEH_plugin = TALER_EXCHANGEDB_plugin_load (TEH_cfg))) { - fprintf (stderr, - "Failed to initialize DB subsystem\n"); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to initialize DB subsystem\n"); TEH_WIRE_done (); return GNUNET_SYSERR; } @@ -814,6 +863,8 @@ exchange_serve_process_config (void) &serve_unixpath, &unixpath_mode)) { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to setup HTTPd subsystem\n"); TEH_WIRE_done (); return GNUNET_SYSERR; } diff --git a/src/exchange/taler-exchange-httpd_deposit.c b/src/exchange/taler-exchange-httpd_deposit.c index 3f895857b..fe8fdf061 100644 --- a/src/exchange/taler-exchange-httpd_deposit.c +++ b/src/exchange/taler-exchange-httpd_deposit.c @@ -47,7 +47,7 @@ * @param coin_pub public key of the coin * @param h_wire hash of wire details * @param h_contract_terms hash of contract details - * @param timestamp client's timestamp + * @param exchange_timestamp exchange's timestamp * @param refund_deadline until when this deposit be refunded * @param merchant merchant public key * @param amount_without_fee fraction of coin value to deposit, without the fee @@ -58,7 +58,7 @@ reply_deposit_success (struct MHD_Connection *connection, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct GNUNET_HashCode *h_wire, const struct GNUNET_HashCode *h_contract_terms, - struct GNUNET_TIME_Absolute timestamp, + struct GNUNET_TIME_Absolute exchange_timestamp, struct GNUNET_TIME_Absolute refund_deadline, const struct TALER_MerchantPublicKeyP *merchant, const struct TALER_Amount *amount_without_fee) @@ -70,7 +70,7 @@ reply_deposit_success (struct MHD_Connection *connection, .purpose.size = htonl (sizeof (dc)), .h_contract_terms = *h_contract_terms, .h_wire = *h_wire, - .timestamp = GNUNET_TIME_absolute_hton (timestamp), + .exchange_timestamp = GNUNET_TIME_absolute_hton (exchange_timestamp), .refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline), .coin_pub = *coin_pub, .merchant = *merchant @@ -88,12 +88,16 @@ reply_deposit_success (struct MHD_Connection *connection, TALER_EC_EXCHANGE_BAD_CONFIGURATION, "no keys"); } - return TALER_MHD_reply_json_pack (connection, - MHD_HTTP_OK, - "{s:s, s:o, s:o}", - "status", "DEPOSIT_OK", - "sig", GNUNET_JSON_from_data_auto (&sig), - "pub", GNUNET_JSON_from_data_auto (&pub)); + return TALER_MHD_reply_json_pack ( + connection, + MHD_HTTP_OK, + "{s:o, s:o, s:o}", + "exchange_timestamp", + GNUNET_JSON_from_time_abs (exchange_timestamp), + "exchange_sig", + GNUNET_JSON_from_data_auto (&sig), + "exchange_pub", + GNUNET_JSON_from_data_auto (&pub)); } @@ -108,6 +112,11 @@ struct DepositContext const struct TALER_EXCHANGEDB_Deposit *deposit; /** + * Our timestamp (when we received the request). + */ + struct GNUNET_TIME_Absolute exchange_timestamp; + + /** * Value of the coin. */ struct TALER_Amount value; @@ -116,12 +125,11 @@ struct DepositContext /** - * Execute database transaction for /deposit. Runs the transaction - * logic; IF it returns a non-error code, the transaction logic MUST - * NOT queue a MHD response. IF it returns an hard error, the - * transaction logic MUST queue a MHD response and set @a mhd_ret. IF - * it returns the soft error code, the function MAY be called again to - * retry and MUST not queue a MHD response. + * Check if /deposit is already in the database. IF it returns a non-error + * code, the transaction logic MUST NOT queue a MHD response. IF it returns + * an hard error, the transaction logic MUST queue a MHD response and set @a + * mhd_ret. We do return a "hard" error also if we found the deposit in the + * database and generated a regular response. * * @param cls a `struct DepositContext` * @param connection MHD request context @@ -130,20 +138,22 @@ struct DepositContext * @return transaction status */ static enum GNUNET_DB_QueryStatus -deposit_transaction (void *cls, - struct MHD_Connection *connection, - struct TALER_EXCHANGEDB_Session *session, - MHD_RESULT *mhd_ret) +deposit_precheck (void *cls, + struct MHD_Connection *connection, + struct TALER_EXCHANGEDB_Session *session, + MHD_RESULT *mhd_ret) { struct DepositContext *dc = cls; const struct TALER_EXCHANGEDB_Deposit *deposit = dc->deposit; - struct TALER_Amount spent; + struct TALER_Amount deposit_fee; enum GNUNET_DB_QueryStatus qs; qs = TEH_plugin->have_deposit (TEH_plugin->cls, session, deposit, - GNUNET_YES /* check refund deadline */); + GNUNET_YES /* check refund deadline */, + &deposit_fee, + &dc->exchange_timestamp); if (qs < 0) { if (GNUNET_DB_STATUS_HARD_ERROR == qs) @@ -165,12 +175,12 @@ deposit_transaction (void *cls, GNUNET_assert (0 <= TALER_amount_subtract (&amount_without_fee, &deposit->amount_with_fee, - &deposit->deposit_fee)); + &deposit_fee)); *mhd_ret = reply_deposit_success (connection, &deposit->coin.coin_pub, &deposit->h_wire, &deposit->h_contract_terms, - deposit->timestamp, + dc->exchange_timestamp, deposit->refund_deadline, &deposit->merchant_pub, &amount_without_fee); @@ -178,6 +188,44 @@ deposit_transaction (void *cls, never try again. */ return GNUNET_DB_STATUS_HARD_ERROR; } + return GNUNET_DB_STATUS_SUCCESS_NO_RESULTS; +} + + +/** + * Execute database transaction for /deposit. Runs the transaction + * logic; IF it returns a non-error code, the transaction logic MUST + * NOT queue a MHD response. IF it returns an hard error, the + * transaction logic MUST queue a MHD response and set @a mhd_ret. IF + * it returns the soft error code, the function MAY be called again to + * retry and MUST not queue a MHD response. + * + * @param cls a `struct DepositContext` + * @param connection MHD request context + * @param session database session and transaction to use + * @param[out] mhd_ret set to MHD status on error + * @return transaction status + */ +static enum GNUNET_DB_QueryStatus +deposit_transaction (void *cls, + struct MHD_Connection *connection, + struct TALER_EXCHANGEDB_Session *session, + MHD_RESULT *mhd_ret) +{ + struct DepositContext *dc = cls; + const struct TALER_EXCHANGEDB_Deposit *deposit = dc->deposit; + struct TALER_Amount spent; + enum GNUNET_DB_QueryStatus qs; + + /* Theoretically, someone other threat may have received + and committed the deposit in the meantime. Check now + that we are in the transaction scope. */ + qs = deposit_precheck (cls, + connection, + session, + mhd_ret); + if (qs < 0) + return qs; /* Start with fee for THIS transaction */ spent = deposit->amount_with_fee; @@ -237,6 +285,7 @@ deposit_transaction (void *cls, } qs = TEH_plugin->insert_deposit (TEH_plugin->cls, session, + dc->exchange_timestamp, deposit); if (GNUNET_DB_STATUS_HARD_ERROR == qs) { @@ -251,45 +300,6 @@ deposit_transaction (void *cls, /** - * Check that @a ts is reasonably close to our own RTC. - * - * @param ts timestamp to check - * @return #GNUNET_OK if @a ts is reasonable - */ -static int -check_timestamp_current (struct GNUNET_TIME_Absolute ts) -{ - struct GNUNET_TIME_Relative r; - struct GNUNET_TIME_Relative tolerance; - - /* Let's be VERY generous (after all, this is basically about - which year the deposit counts for in terms of tax purposes) */ - tolerance = GNUNET_TIME_UNIT_MONTHS; - r = GNUNET_TIME_absolute_get_duration (ts); - if (r.rel_value_us > tolerance.rel_value_us) - { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Deposit timestamp too old: %llu vs %llu > %llu\n", - (unsigned long long) ts.abs_value_us, - (unsigned long long) GNUNET_TIME_absolute_get ().abs_value_us, - (unsigned long long) tolerance.rel_value_us); - return GNUNET_SYSERR; - } - r = GNUNET_TIME_absolute_get_remaining (ts); - if (r.rel_value_us > tolerance.rel_value_us) - { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Deposit timestamp too new: %llu vs %llu < - %llu\n", - (unsigned long long) ts.abs_value_us, - (unsigned long long) GNUNET_TIME_absolute_get ().abs_value_us, - (unsigned long long) tolerance.rel_value_us); - return GNUNET_SYSERR; - } - return GNUNET_OK; -} - - -/** * Handle a "/coins/$COIN_PUB/deposit" request. Parses the JSON, and, if * successful, passes the JSON data to #deposit_transaction() to * further check the details of the operation specified. If everything checks @@ -312,15 +322,22 @@ TEH_handler_deposit (struct MHD_Connection *connection, struct GNUNET_HashCode my_h_wire; struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_json ("wire", &wire), - TALER_JSON_spec_amount ("contribution", &deposit.amount_with_fee), + TALER_JSON_spec_amount ("contribution", + &deposit.amount_with_fee), GNUNET_JSON_spec_fixed_auto ("denom_pub_hash", &deposit.coin.denom_pub_hash), - TALER_JSON_spec_denomination_signature ("ub_sig", &deposit.coin.denom_sig), - GNUNET_JSON_spec_fixed_auto ("merchant_pub", &deposit.merchant_pub), - GNUNET_JSON_spec_fixed_auto ("h_contract_terms", &deposit.h_contract_terms), - GNUNET_JSON_spec_fixed_auto ("h_wire", &deposit.h_wire), - GNUNET_JSON_spec_fixed_auto ("coin_sig", &deposit.csig), - GNUNET_JSON_spec_absolute_time ("timestamp", &deposit.timestamp), + TALER_JSON_spec_denomination_signature ("ub_sig", + &deposit.coin.denom_sig), + GNUNET_JSON_spec_fixed_auto ("merchant_pub", + &deposit.merchant_pub), + GNUNET_JSON_spec_fixed_auto ("h_contract_terms", + &deposit.h_contract_terms), + GNUNET_JSON_spec_fixed_auto ("h_wire", + &deposit.h_wire), + GNUNET_JSON_spec_fixed_auto ("coin_sig", + &deposit.csig), + GNUNET_JSON_spec_absolute_time ("timestamp", + &deposit.timestamp), GNUNET_JSON_spec_absolute_time ("refund_deadline", &deposit.refund_deadline), GNUNET_JSON_spec_absolute_time ("wire_transfer_deadline", @@ -359,17 +376,6 @@ TEH_handler_deposit (struct MHD_Connection *connection, TALER_EC_DEPOSIT_REFUND_DEADLINE_AFTER_WIRE_DEADLINE, "refund_deadline"); } - - if (GNUNET_OK != - check_timestamp_current (deposit.timestamp)) - { - GNUNET_break_op (0); - GNUNET_JSON_parse_free (spec); - return TALER_MHD_reply_with_error (connection, - MHD_HTTP_BAD_REQUEST, - TALER_EC_DEPOSIT_INVALID_TIMESTAMP, - "timestamp"); - } if (GNUNET_OK != TALER_JSON_merchant_wire_signature_hash (wire, &my_h_wire)) @@ -393,6 +399,26 @@ TEH_handler_deposit (struct MHD_Connection *connection, "h_wire"); } + /* Check for idempotency: did we get this request before? */ + dc.deposit = &deposit; + { + MHD_RESULT mhd_ret; + + if (GNUNET_OK != + TEH_DB_run_transaction (connection, + "precheck deposit", + &mhd_ret, + &deposit_precheck, + &dc)) + { + GNUNET_JSON_parse_free (spec); + return mhd_ret; + } + } + + /* new deposit */ + dc.exchange_timestamp = GNUNET_TIME_absolute_get (); + (void) GNUNET_TIME_round_abs (&dc.exchange_timestamp); /* check denomination exists and is valid */ { struct TEH_KS_StateHandle *key_state; @@ -400,7 +426,7 @@ TEH_handler_deposit (struct MHD_Connection *connection, enum TALER_ErrorCode ec; unsigned int hc; - key_state = TEH_KS_acquire (GNUNET_TIME_absolute_get ()); + key_state = TEH_KS_acquire (dc.exchange_timestamp); if (NULL == key_state) { TALER_LOG_ERROR ("Lacking keys to operate\n"); @@ -494,7 +520,7 @@ TEH_handler_deposit (struct MHD_Connection *connection, .purpose.size = htonl (sizeof (dr)), .h_contract_terms = deposit.h_contract_terms, .h_wire = deposit.h_wire, - .timestamp = GNUNET_TIME_absolute_hton (deposit.timestamp), + .wallet_timestamp = GNUNET_TIME_absolute_hton (deposit.timestamp), .refund_deadline = GNUNET_TIME_absolute_hton (deposit.refund_deadline), .merchant = deposit.merchant_pub, .coin_pub = deposit.coin.coin_pub @@ -520,7 +546,6 @@ TEH_handler_deposit (struct MHD_Connection *connection, } /* execute transaction */ - dc.deposit = &deposit; { MHD_RESULT mhd_ret; @@ -549,7 +574,7 @@ TEH_handler_deposit (struct MHD_Connection *connection, &deposit.coin.coin_pub, &deposit.h_wire, &deposit.h_contract_terms, - deposit.timestamp, + dc.exchange_timestamp, deposit.refund_deadline, &deposit.merchant_pub, &amount_without_fee); diff --git a/src/exchange/taler-exchange-httpd_keystate.c b/src/exchange/taler-exchange-httpd_keystate.c index 152d2dad5..fbb5da356 100644 --- a/src/exchange/taler-exchange-httpd_keystate.c +++ b/src/exchange/taler-exchange-httpd_keystate.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2014--2019 Taler Systems SA + Copyright (C) 2014--2020 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software @@ -44,7 +44,7 @@ * #TALER_PROTOCOL_CURRENT and #TALER_PROTOCOL_AGE in * exchange_api_handle.c! */ -#define EXCHANGE_PROTOCOL_VERSION "7:0:0" +#define EXCHANGE_PROTOCOL_VERSION "8:0:0" /** @@ -801,7 +801,7 @@ reload_keys_denom_iter (void *cls, handle_signal (SIGTERM); return GNUNET_SYSERR; } - + GNUNET_assert (NULL != dki->denom_priv.rsa_private_key); GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Adding denomination key `%s' (%s) to active set\n", alias, @@ -1660,6 +1660,9 @@ reload_public_denoms_cb ( GNUNET_h2s (&issue->properties.denom_hash)); return; } + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Loaded denomination key %s from DB, no private key (hopefully revoked!)\n", + GNUNET_h2s (&issue->properties.denom_hash)); /* we can assert here as we checked for duplicates just above */ GNUNET_assert (GNUNET_OK == ret); } diff --git a/src/exchange/taler-exchange-httpd_refund.c b/src/exchange/taler-exchange-httpd_refund.c index 7c2b149f2..a6a2c3d6f 100644 --- a/src/exchange/taler-exchange-httpd_refund.c +++ b/src/exchange/taler-exchange-httpd_refund.c @@ -73,12 +73,13 @@ reply_refund_success (struct MHD_Connection *connection, TALER_EC_EXCHANGE_BAD_CONFIGURATION, "no online signing key"); } - return TALER_MHD_reply_json_pack (connection, - MHD_HTTP_OK, - "{s:s, s:o, s:o}", - "status", "REFUND_OK", - "sig", GNUNET_JSON_from_data_auto (&sig), - "pub", GNUNET_JSON_from_data_auto (&pub)); + return TALER_MHD_reply_json_pack ( + connection, + MHD_HTTP_OK, + "{s:o, s:o, s:o}", + "refund_fee", TALER_JSON_from_amount (&refund->refund_fee), + "exchange_sig", GNUNET_JSON_from_data_auto (&sig), + "exchange_pub", GNUNET_JSON_from_data_auto (&pub)); } @@ -246,18 +247,15 @@ refund_transaction (void *cls, } /* check currency is compatible */ - if ( (GNUNET_YES != - TALER_amount_cmp_currency (&refund->details.refund_amount, - &dep->amount_with_fee)) || - (GNUNET_YES != - TALER_amount_cmp_currency (&refund->details.refund_fee, - &dep->deposit_fee)) ) + if (GNUNET_YES != + TALER_amount_cmp_currency (&refund->details.refund_amount, + &dep->amount_with_fee)) { GNUNET_break_op (0); /* currency mismatch */ TEH_plugin->free_coin_transaction_list (TEH_plugin->cls, tl); *mhd_ret = TALER_MHD_reply_with_error (connection, - MHD_HTTP_PRECONDITION_FAILED, + MHD_HTTP_BAD_REQUEST, TALER_EC_REFUND_CURRENCY_MISMATCH, "currencies involved do not match"); return GNUNET_DB_STATUS_HARD_ERROR; @@ -339,15 +337,14 @@ refund_transaction (void *cls, * the fee structure, so this is not done here. * * @param connection the MHD connection to handle - * @param refund information about the refund + * @param[in,out] refund information about the refund * @return MHD result code */ static MHD_RESULT verify_and_execute_refund (struct MHD_Connection *connection, - const struct TALER_EXCHANGEDB_Refund *refund) + struct TALER_EXCHANGEDB_Refund *refund) { struct GNUNET_HashCode denom_hash; - struct TALER_Amount expect_fee; { struct TALER_RefundRequestPS rr = { @@ -361,8 +358,6 @@ verify_and_execute_refund (struct MHD_Connection *connection, TALER_amount_hton (&rr.refund_amount, &refund->details.refund_amount); - TALER_amount_hton (&rr.refund_fee, - &refund->details.refund_fee); if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_MERCHANT_REFUND, &rr, @@ -429,43 +424,12 @@ verify_and_execute_refund (struct MHD_Connection *connection, ec, "denomination not found, but coin known"); } - TALER_amount_ntoh (&expect_fee, + TALER_amount_ntoh (&refund->details.refund_fee, &dki->issue.properties.fee_refund); } TEH_KS_release (key_state); } - /* Check refund fee matches fee of denomination key! */ - if (GNUNET_YES != - TALER_amount_cmp_currency (&expect_fee, - &refund->details.refund_fee) ) - { - GNUNET_break_op (0); - return TALER_MHD_reply_with_error (connection, - MHD_HTTP_BAD_REQUEST, - TALER_EC_REFUND_FEE_CURRENCY_MISMATCH, - "refund_fee"); - } - { - int fee_cmp; - - fee_cmp = TALER_amount_cmp (&refund->details.refund_fee, - &expect_fee); - if (-1 == fee_cmp) - { - return TALER_MHD_reply_with_error (connection, - MHD_HTTP_BAD_REQUEST, - TALER_EC_REFUND_FEE_TOO_LOW, - "refund_fee"); - } - if (1 == fee_cmp) - { - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - "Refund fee proposed by merchant is higher than necessary.\n"); - } - } - - /* Finally run the actual transaction logic */ { MHD_RESULT mhd_ret; @@ -502,16 +466,20 @@ TEH_handler_refund (struct MHD_Connection *connection, const struct TALER_CoinSpendPublicKeyP *coin_pub, const json_t *root) { - struct TALER_EXCHANGEDB_Refund refund; + struct TALER_EXCHANGEDB_Refund refund = { + .details.refund_fee.currency = {0} /* set to invalid, just to be sure */ + }; struct GNUNET_JSON_Specification spec[] = { - TALER_JSON_spec_amount ("refund_amount", &refund.details.refund_amount), - TALER_JSON_spec_amount ("refund_fee", &refund.details.refund_fee), + TALER_JSON_spec_amount ("refund_amount", + &refund.details.refund_amount), GNUNET_JSON_spec_fixed_auto ("h_contract_terms", &refund.details.h_contract_terms), - GNUNET_JSON_spec_fixed_auto ("merchant_pub", &refund.details.merchant_pub), + GNUNET_JSON_spec_fixed_auto ("merchant_pub", + &refund.details.merchant_pub), GNUNET_JSON_spec_uint64 ("rtransaction_id", &refund.details.rtransaction_id), - GNUNET_JSON_spec_fixed_auto ("merchant_sig", &refund.details.merchant_sig), + GNUNET_JSON_spec_fixed_auto ("merchant_sig", + &refund.details.merchant_sig), GNUNET_JSON_spec_end () }; @@ -527,27 +495,6 @@ TEH_handler_refund (struct MHD_Connection *connection, if (GNUNET_NO == res) return MHD_YES; /* failure */ } - if (GNUNET_YES != - TALER_amount_cmp_currency (&refund.details.refund_amount, - &refund.details.refund_fee) ) - { - GNUNET_break_op (0); - GNUNET_JSON_parse_free (spec); - return TALER_MHD_reply_with_error (connection, - MHD_HTTP_BAD_REQUEST, - TALER_EC_REFUND_FEE_CURRENCY_MISMATCH, - "refund_amount or refund_fee"); - } - if (-1 == TALER_amount_cmp (&refund.details.refund_amount, - &refund.details.refund_fee) ) - { - GNUNET_break_op (0); - GNUNET_JSON_parse_free (spec); - return TALER_MHD_reply_with_error (connection, - MHD_HTTP_BAD_REQUEST, - TALER_EC_REFUND_FEE_ABOVE_AMOUNT, - "refund_amount"); - } { MHD_RESULT res; diff --git a/src/exchange/taler-exchange-httpd_responses.c b/src/exchange/taler-exchange-httpd_responses.c index 06673afc1..f65951614 100644 --- a/src/exchange/taler-exchange-httpd_responses.c +++ b/src/exchange/taler-exchange-httpd_responses.c @@ -66,7 +66,7 @@ TEH_RESPONSE_compile_transaction_history ( .purpose.size = htonl (sizeof (dr)), .h_contract_terms = deposit->h_contract_terms, .h_wire = deposit->h_wire, - .timestamp = GNUNET_TIME_absolute_hton (deposit->timestamp), + .wallet_timestamp = GNUNET_TIME_absolute_hton (deposit->timestamp), .refund_deadline = GNUNET_TIME_absolute_hton ( deposit->refund_deadline), .merchant = deposit->merchant_pub, @@ -185,8 +185,6 @@ TEH_RESPONSE_compile_transaction_history ( TALER_amount_hton (&rr.refund_amount, &refund->refund_amount); - TALER_amount_hton (&rr.refund_fee, - &refund->refund_fee); #if ENABLE_SANITY_CHECKS /* internal sanity check before we hand out a bogus sig... */ if (GNUNET_OK != diff --git a/src/exchange/taler-exchange-httpd_wire.c b/src/exchange/taler-exchange-httpd_wire.c index 38bbad4ad..471fa4fad 100644 --- a/src/exchange/taler-exchange-httpd_wire.c +++ b/src/exchange/taler-exchange-httpd_wire.c @@ -341,6 +341,8 @@ TEH_WIRE_init (const struct GNUNET_CONFIGURATION_Handle *cfg) &ret); if (GNUNET_OK != ret) { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Error setting up bank accounts\n"); TEH_WIRE_done (); return GNUNET_SYSERR; } @@ -349,6 +351,8 @@ TEH_WIRE_init (const struct GNUNET_CONFIGURATION_Handle *cfg) (0 == json_object_size (wire_fee_object)) ) { TEH_WIRE_done (); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "No bank accounts configured\n"); return GNUNET_SYSERR; } wire_methods = json_pack ("{s:O, s:O, s:o}", diff --git a/src/exchange/taler-exchange-httpd_withdraw.c b/src/exchange/taler-exchange-httpd_withdraw.c index 4d662e712..c4c72d6a4 100644 --- a/src/exchange/taler-exchange-httpd_withdraw.c +++ b/src/exchange/taler-exchange-httpd_withdraw.c @@ -306,8 +306,6 @@ withdraw_transaction (void *cls, #endif wc->collectable.denom_pub_hash = wc->denom_pub_hash; wc->collectable.amount_with_fee = wc->amount_required; - TALER_amount_ntoh (&wc->collectable.withdraw_fee, - &wc->dki->issue.properties.fee_withdraw); wc->collectable.reserve_pub = wc->wsrd.reserve_pub; wc->collectable.h_coin_envelope = wc->wsrd.h_coin_envelope; wc->collectable.reserve_sig = wc->signature; @@ -436,8 +434,6 @@ TEH_handler_withdraw (const struct TEH_RequestHandler *rh, } TALER_amount_hton (&wc.wsrd.amount_with_fee, &wc.amount_required); - TALER_amount_hton (&wc.wsrd.withdraw_fee, - &fee_withdraw); } /* verify signature! */ diff --git a/src/exchangedb/drop0001.sql b/src/exchangedb/drop0001.sql index f0f46a611..4d06fd510 100644 --- a/src/exchangedb/drop0001.sql +++ b/src/exchangedb/drop0001.sql @@ -43,8 +43,8 @@ DROP TABLE IF EXISTS reserves CASCADE; DROP TABLE IF EXISTS denomination_revocations CASCADE; DROP TABLE IF EXISTS denominations CASCADE; --- Drop versioning (0000.sql) -DROP SCHEMA IF EXISTS _v CASCADE; +-- Unregister patch (0001.sql) +SELECT _v.unregister_patch('exchange-0001'); -- And we're out of here... COMMIT; diff --git a/src/exchangedb/exchange-0001.sql b/src/exchangedb/exchange-0001.sql index bec9af5ba..ad05e7797 100644 --- a/src/exchangedb/exchange-0001.sql +++ b/src/exchangedb/exchange-0001.sql @@ -254,7 +254,8 @@ CREATE TABLE IF NOT EXISTS deposits ,coin_pub BYTEA NOT NULL REFERENCES known_coins (coin_pub) ON DELETE CASCADE ,amount_with_fee_val INT8 NOT NULL ,amount_with_fee_frac INT4 NOT NULL - ,timestamp INT8 NOT NULL + ,wallet_timestamp INT8 NOT NULL + ,exchange_timestamp INT8 NOT NULL ,refund_deadline INT8 NOT NULL ,wire_deadline INT8 NOT NULL ,merchant_pub BYTEA NOT NULL CHECK (LENGTH(merchant_pub)=32) diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index 69db09a53..dede901f9 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -796,7 +796,7 @@ postgres_get_session (void *cls) "(coin_pub" ",amount_with_fee_val" ",amount_with_fee_frac" - ",timestamp" + ",wallet_timestamp" ",refund_deadline" ",wire_deadline" ",merchant_pub" @@ -804,22 +804,28 @@ postgres_get_session (void *cls) ",h_wire" ",coin_sig" ",wire" + ",exchange_timestamp" ") VALUES " "($1, $2, $3, $4, $5, $6, $7, $8, $9, $10," - " $11);", - 11), + " $11, $12);", + 12), /* Fetch an existing deposit request, used to ensure idempotency during /deposit processing. Used in #postgres_have_deposit(). */ GNUNET_PQ_make_prepare ("get_deposit", "SELECT" " amount_with_fee_val" ",amount_with_fee_frac" - ",timestamp" + ",denominations.fee_deposit_val" + ",denominations.fee_deposit_frac" + ",wallet_timestamp" + ",exchange_timestamp" ",refund_deadline" ",wire_deadline" ",h_contract_terms" ",h_wire" " FROM deposits" + " JOIN known_coins USING (coin_pub)" + " JOIN denominations USING (denom_pub_hash)" " WHERE ((coin_pub=$1)" " AND (merchant_pub=$3)" " AND (h_contract_terms=$2))" @@ -830,7 +836,8 @@ postgres_get_session (void *cls) "SELECT" " amount_with_fee_val" ",amount_with_fee_frac" - ",timestamp" + ",wallet_timestamp" + ",exchange_timestamp" ",merchant_pub" ",denom.denom_pub" ",coin_pub" @@ -881,6 +888,8 @@ postgres_get_session (void *cls) ",wire" ",merchant_pub" ",coin_pub" + ",exchange_timestamp" + ",wallet_timestamp" " FROM deposits" " JOIN known_coins USING (coin_pub)" " JOIN denominations denom USING (denom_pub_hash)" @@ -900,6 +909,8 @@ postgres_get_session (void *cls) ",denom.fee_deposit_val" ",denom.fee_deposit_frac" ",wire_deadline" + ",exchange_timestamp" + ",wallet_timestamp" ",h_contract_terms" ",coin_pub" " FROM deposits" @@ -945,7 +956,7 @@ postgres_get_session (void *cls) ",amount_with_fee_frac" ",denom.fee_deposit_val" ",denom.fee_deposit_frac" - ",timestamp" + ",wallet_timestamp" ",refund_deadline" ",wire_deadline" ",merchant_pub" @@ -1801,8 +1812,12 @@ postgres_iterate_denomination_info (void *cls, .cb_cls = cb_cls, .pg = pc }; + struct TALER_EXCHANGEDB_Session *session; - return GNUNET_PQ_eval_prepared_multi_select (postgres_get_session (pc)->conn, + session = postgres_get_session (pc); + if (NULL == session) + return GNUNET_DB_STATUS_HARD_ERROR; + return GNUNET_PQ_eval_prepared_multi_select (session->conn, "denomination_iterate", params, &domination_cb_helper, @@ -2571,6 +2586,8 @@ postgres_get_reserve_history (void *cls, * @param session database connection * @param deposit deposit to search for * @param check_extras whether to check extra fields match or not + * @param[out] deposit_fee set to the deposit fee the exchange charged + * @param[out] exchange_timestamp set to the time when the exchange received the deposit * @return 1 if we know this operation, * 0 if this exact deposit is unknown to us, * otherwise transaction error status @@ -2579,7 +2596,9 @@ static enum GNUNET_DB_QueryStatus postgres_have_deposit (void *cls, struct TALER_EXCHANGEDB_Session *session, const struct TALER_EXCHANGEDB_Deposit *deposit, - int check_extras) + int check_extras, + struct TALER_Amount *deposit_fee, + struct GNUNET_TIME_Absolute *exchange_timestamp) { struct PostgresClosure *pg = cls; struct GNUNET_PQ_QueryParam params[] = { @@ -2592,12 +2611,16 @@ postgres_have_deposit (void *cls, struct GNUNET_PQ_ResultSpec rs[] = { TALER_PQ_RESULT_SPEC_AMOUNT ("amount_with_fee", &deposit2.amount_with_fee), - TALER_PQ_result_spec_absolute_time ("timestamp", + TALER_PQ_result_spec_absolute_time ("wallet_timestamp", &deposit2.timestamp), + TALER_PQ_result_spec_absolute_time ("exchange_timestamp", + exchange_timestamp), TALER_PQ_result_spec_absolute_time ("refund_deadline", &deposit2.refund_deadline), TALER_PQ_result_spec_absolute_time ("wire_deadline", &deposit2.wire_deadline), + TALER_PQ_RESULT_SPEC_AMOUNT ("fee_deposit", + deposit_fee), GNUNET_PQ_result_spec_auto_from_type ("h_wire", &deposit2.h_wire), GNUNET_PQ_result_spec_end @@ -2776,6 +2799,8 @@ postgres_get_ready_deposit (void *cls, struct TALER_Amount amount_with_fee; struct TALER_Amount deposit_fee; struct GNUNET_TIME_Absolute wire_deadline; + struct GNUNET_TIME_Absolute wallet_timestamp; + struct GNUNET_TIME_Absolute exchange_timestamp; struct GNUNET_HashCode h_contract_terms; struct TALER_MerchantPublicKeyP merchant_pub; struct TALER_CoinSpendPublicKeyP coin_pub; @@ -2788,6 +2813,10 @@ postgres_get_ready_deposit (void *cls, &amount_with_fee), TALER_PQ_RESULT_SPEC_AMOUNT ("fee_deposit", &deposit_fee), + TALER_PQ_result_spec_absolute_time ("exchange_timestamp", + &exchange_timestamp), + TALER_PQ_result_spec_absolute_time ("wallet_timestamp", + &wallet_timestamp), TALER_PQ_result_spec_absolute_time ("wire_deadline", &wire_deadline), GNUNET_PQ_result_spec_auto_from_type ("h_contract_terms", @@ -2817,6 +2846,8 @@ postgres_get_ready_deposit (void *cls, qs = deposit_cb (deposit_cb_cls, serial_id, + exchange_timestamp, + wallet_timestamp, &merchant_pub, &coin_pub, &amount_with_fee, @@ -2898,6 +2929,8 @@ match_deposit_cb (void *cls, { struct TALER_Amount amount_with_fee; struct TALER_Amount deposit_fee; + struct GNUNET_TIME_Absolute exchange_timestamp; + struct GNUNET_TIME_Absolute wallet_timestamp; struct GNUNET_TIME_Absolute wire_deadline; struct GNUNET_HashCode h_contract_terms; struct TALER_CoinSpendPublicKeyP coin_pub; @@ -2912,6 +2945,10 @@ match_deposit_cb (void *cls, &deposit_fee), TALER_PQ_result_spec_absolute_time ("wire_deadline", &wire_deadline), + TALER_PQ_result_spec_absolute_time ("exchange_timestamp", + &exchange_timestamp), + TALER_PQ_result_spec_absolute_time ("wallet_timestamp", + &wallet_timestamp), GNUNET_PQ_result_spec_auto_from_type ("h_contract_terms", &h_contract_terms), GNUNET_PQ_result_spec_auto_from_type ("coin_pub", @@ -2930,6 +2967,8 @@ match_deposit_cb (void *cls, } qs = mdc->deposit_cb (mdc->deposit_cb_cls, serial_id, + exchange_timestamp, + wallet_timestamp, mdc->merchant_pub, &coin_pub, &amount_with_fee, @@ -3033,6 +3072,8 @@ postgres_get_known_coin (void *cls, coin_info->coin_pub = *coin_pub; if (NULL == session) session = postgres_get_session (pc); + if (NULL == session) + return GNUNET_DB_STATUS_HARD_ERROR; return GNUNET_PQ_eval_prepared_singleton_select (session->conn, "get_known_coin", params, @@ -3072,6 +3113,8 @@ postgres_get_coin_denomination ( TALER_B2S (coin_pub)); if (NULL == session) session = postgres_get_session (pc); + if (NULL == session) + return GNUNET_DB_STATUS_HARD_ERROR; return GNUNET_PQ_eval_prepared_singleton_select (session->conn, "get_coin_denomination", params, @@ -3210,12 +3253,14 @@ postgres_ensure_coin_known (void *cls, * * @param cls the `struct PostgresClosure` with the plugin-specific state * @param session connection to the database + * @param exchange_timestamp time the exchange received the deposit request * @param deposit deposit information to store * @return query result status */ static enum GNUNET_DB_QueryStatus postgres_insert_deposit (void *cls, struct TALER_EXCHANGEDB_Session *session, + struct GNUNET_TIME_Absolute exchange_timestamp, const struct TALER_EXCHANGEDB_Deposit *deposit) { struct GNUNET_PQ_QueryParam params[] = { @@ -3229,6 +3274,7 @@ postgres_insert_deposit (void *cls, GNUNET_PQ_query_param_auto_from_type (&deposit->h_wire), GNUNET_PQ_query_param_auto_from_type (&deposit->csig), TALER_PQ_query_param_json (deposit->receiver_wire_account), + TALER_PQ_query_param_absolute_time (&exchange_timestamp), GNUNET_PQ_query_param_end }; @@ -3437,6 +3483,8 @@ postgres_get_melt (void *cls, melt->session.coin.denom_sig.rsa_signature = NULL; if (NULL == session) session = postgres_get_session (pg); + if (NULL == session) + return GNUNET_DB_STATUS_HARD_ERROR; qs = GNUNET_PQ_eval_prepared_singleton_select (session->conn, "get_melt", params, @@ -4042,7 +4090,7 @@ add_coin_deposit (void *cls, &deposit->amount_with_fee), TALER_PQ_RESULT_SPEC_AMOUNT ("fee_deposit", &deposit->deposit_fee), - TALER_PQ_result_spec_absolute_time ("timestamp", + TALER_PQ_result_spec_absolute_time ("wallet_timestamp", &deposit->timestamp), TALER_PQ_result_spec_absolute_time ("refund_deadline", &deposit->refund_deadline), @@ -5462,14 +5510,17 @@ deposit_serial_helper_cb (void *cls, for (unsigned int i = 0; i<num_results; i++) { struct TALER_EXCHANGEDB_Deposit deposit; + struct GNUNET_TIME_Absolute exchange_timestamp; struct TALER_DenominationPublicKey denom_pub; uint8_t done = 0; uint64_t rowid; struct GNUNET_PQ_ResultSpec rs[] = { TALER_PQ_RESULT_SPEC_AMOUNT ("amount_with_fee", &deposit.amount_with_fee), - TALER_PQ_result_spec_absolute_time ("timestamp", + TALER_PQ_result_spec_absolute_time ("wallet_timestamp", &deposit.timestamp), + TALER_PQ_result_spec_absolute_time ("exchange_timestamp", + &exchange_timestamp), GNUNET_PQ_result_spec_auto_from_type ("merchant_pub", &deposit.merchant_pub), GNUNET_PQ_result_spec_rsa_public_key ("denom_pub", @@ -5505,6 +5556,7 @@ deposit_serial_helper_cb (void *cls, } ret = dsc->cb (dsc->cb_cls, rowid, + exchange_timestamp, deposit.timestamp, &deposit.merchant_pub, &denom_pub, diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c index 11183c704..043095e7b 100644 --- a/src/exchangedb/test_exchangedb.c +++ b/src/exchangedb/test_exchangedb.c @@ -833,6 +833,8 @@ static uint64_t deposit_rowid; * @param cls closure a `struct TALER_EXCHANGEDB_Deposit *` * @param rowid unique ID for the deposit in our DB, used for marking * it as 'tiny' or 'done' + * @param exchange_timestamp when did the deposit happen + * @param wallet_timestamp when did the wallet sign the contract * @param merchant_pub public key of the merchant * @param coin_pub public key of the coin * @param amount_with_fee amount that was deposited including fee @@ -846,6 +848,8 @@ static uint64_t deposit_rowid; static enum GNUNET_DB_QueryStatus deposit_cb (void *cls, uint64_t rowid, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Absolute wallet_timestamp, const struct TALER_MerchantPublicKeyP *merchant_pub, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *amount_with_fee, @@ -890,7 +894,8 @@ deposit_cb (void *cls, * * @param cls closure * @param rowid unique serial ID for the deposit in our DB - * @param timestamp when did the deposit happen + * @param exchange_timestamp when did the deposit happen + * @param wallet_timestamp when did the wallet sign the contract * @param merchant_pub public key of the merchant * @param denom_pub denomination of the @a coin_pub * @param coin_pub public key of the coin @@ -908,7 +913,8 @@ deposit_cb (void *cls, static int audit_deposit_cb (void *cls, uint64_t rowid, - struct GNUNET_TIME_Absolute timestamp, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Absolute wallet_timestamp, const struct TALER_MerchantPublicKeyP *merchant_pub, const struct TALER_DenominationPublicKey *denom_pub, const struct TALER_CoinSpendPublicKeyP *coin_pub, @@ -1878,15 +1884,27 @@ run (void *cls) plugin->ensure_coin_known (plugin->cls, session, &deposit.coin)); - FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != - plugin->insert_deposit (plugin->cls, + { + struct GNUNET_TIME_Absolute now; + struct GNUNET_TIME_Absolute r; + struct TALER_Amount deposit_fee; + + now = GNUNET_TIME_absolute_get (); + GNUNET_TIME_round_abs (&now); + FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != + plugin->insert_deposit (plugin->cls, + session, + now, + &deposit)); + FAILIF (1 != + plugin->have_deposit (plugin->cls, session, - &deposit)); - FAILIF (1 != - plugin->have_deposit (plugin->cls, - session, - &deposit, - GNUNET_YES)); + &deposit, + GNUNET_YES, + &deposit_fee, + &r)); + FAILIF (now.abs_value_us != r.abs_value_us); + } { struct GNUNET_TIME_Absolute start_range; struct GNUNET_TIME_Absolute end_range; @@ -1983,18 +2001,27 @@ run (void *cls) session, "test-2")); RND_BLK (&deposit2.merchant_pub); /* should fail if merchant is different */ - FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != - plugin->have_deposit (plugin->cls, - session, - &deposit2, - GNUNET_YES)); - deposit2.merchant_pub = deposit.merchant_pub; - RND_BLK (&deposit2.coin.coin_pub); /* should fail if coin is different */ - FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != - plugin->have_deposit (plugin->cls, - session, - &deposit2, - GNUNET_YES)); + { + struct GNUNET_TIME_Absolute r; + struct TALER_Amount deposit_fee; + + FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != + plugin->have_deposit (plugin->cls, + session, + &deposit2, + GNUNET_YES, + &deposit_fee, + &r)); + deposit2.merchant_pub = deposit.merchant_pub; + RND_BLK (&deposit2.coin.coin_pub); /* should fail if coin is different */ + FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != + plugin->have_deposit (plugin->cls, + session, + &deposit2, + GNUNET_YES, + &deposit_fee, + &r)); + } FAILIF (GNUNET_OK != test_melting (session)); FAILIF (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != diff --git a/src/include/taler_auditordb_plugin.h b/src/include/taler_auditordb_plugin.h index 9a7f6ed7a..7c58e654e 100644 --- a/src/include/taler_auditordb_plugin.h +++ b/src/include/taler_auditordb_plugin.h @@ -300,9 +300,9 @@ struct TALER_AUDITORDB_DepositConfirmation struct GNUNET_HashCode h_wire; /** - * Time when this confirmation was generated. + * Time when this deposit confirmation was generated by the exchange. */ - struct GNUNET_TIME_Absolute timestamp; + struct GNUNET_TIME_Absolute exchange_timestamp; /** * How much time does the @e merchant have to issue a refund diff --git a/src/include/taler_bank_service.h b/src/include/taler_bank_service.h index 0212e61f1..c5d0e5cac 100644 --- a/src/include/taler_bank_service.h +++ b/src/include/taler_bank_service.h @@ -384,16 +384,16 @@ struct TALER_BANK_DebitDetails const char *exchange_base_url; /** - * payto://-URL of the source account that + * payto://-URI of the source account that * send the funds. */ - const char *debit_account_url; + const char *debit_account_url; // FIXME: rename: url->uri /** - * payto://-URL of the target account that + * payto://-URI of the target account that * received the funds. */ - const char *credit_account_url; + const char *credit_account_url; // FIXME: rename: url->uri }; diff --git a/src/include/taler_error_codes.h b/src/include/taler_error_codes.h deleted file mode 100644 index f75464c35..000000000 --- a/src/include/taler_error_codes.h +++ /dev/null @@ -1,2550 +0,0 @@ -/* - This file is part of TALER - Copyright (C) 2016, 2017, 2019 Taler Systems SA - - TALER is free software; you can redistribute it and/or modify it under the - terms of the GNU General Public License as published by the Free Software - Foundation; either version 3, or (at your option) any later version. - - TALER is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - A PARTICULAR PURPOSE. See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along with - TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> -*/ - -/** - * @file taler_error_codes.h - * @brief error codes returned by GNU Taler - * - * This file defines constants for error codes returned - * in Taler APIs. We use codes above 1000 to avoid any - * confusing with HTTP status codes. All constants have the - * shared prefix "TALER_EC_" to indicate that they are error - * codes. - * - * THIS FILE IS AUTO-GENERATED, DO NOT MODIFY! - * If you want to add an error code, please add it in the - * taler-util.git repository. Instructions - * for this are in the README in taler-util.git. - */ -#ifndef TALER_ERROR_CODES_H -#define TALER_ERROR_CODES_H - -/** - * Enumeration with all possible Taler error codes. - */ -enum TALER_ErrorCode -{ - - /** - * Special code to indicate no error (or no "code" present). - */ - TALER_EC_NONE = 0, - - /** - * Special code to indicate that a non-integer error code was returned - * in the JSON response. - */ - TALER_EC_INVALID = 1, - - /** - * The response we got from the server was not even in JSON format. - */ - TALER_EC_INVALID_RESPONSE = 2, - - /** - * Generic implementation error: this function was not yet - * implemented. - */ - TALER_EC_NOT_IMPLEMENTED = 3, - - /** - * Exchange is badly configured and thus cannot operate. - */ - TALER_EC_EXCHANGE_BAD_CONFIGURATION = 4, - - /** - * Internal assertion error. - */ - TALER_EC_INTERNAL_INVARIANT_FAILURE = 5, - - /** - * Operation timed out. - */ - TALER_EC_TIMEOUT = 6, - - /** - * Exchange failed to allocate memory for building JSON reply. - */ - TALER_EC_JSON_ALLOCATION_FAILURE = 7, - - /** - * HTTP method invalid for this URL. - */ - TALER_EC_METHOD_INVALID = 8, - - /** - * Operation specified invalid for this URL (resulting in a "NOT - * FOUND" for the overall response). - */ - TALER_EC_OPERATION_INVALID = 9, - - /** - * There is no endpoint defined for the URL provided by the client - * (returned together with a #MHD_HTTP_NOT_FOUND status code). - */ - TALER_EC_ENDPOINT_UNKNOWN = 10, - - /** - * The URI is longer than the longest URI the HTTP server is willing - * to parse. Returned together with an HTTP status code of - * #MHD_HTTP_URI_TOO_LONG. - */ - TALER_EC_URI_TOO_LONG = 11, - - /** - * The number of segments included in the URI does not match the - * number of segments expected by the endpoint. (returned together - * with a #MHD_HTTP_NOT_FOUND status code). - */ - TALER_EC_WRONG_NUMBER_OF_SEGMENTS = 12, - - /** - * The start and end-times in the wire fee structure leave a hole. - * This is not allowed. Generated as an error on the client-side. - */ - TALER_EC_HOLE_IN_WIRE_FEE_STRUCTURE = 13, - - /** - * The version string given does not follow the expected - * CURRENT:REVISION:AGE Format. Generated as an error on the client - * side. - */ - TALER_EC_VERSION_MALFORMED = 14, - - /** - * The client-side experienced an internal failure. Generated as an - * error on the client side. - */ - TALER_EC_CLIENT_INTERNAL_FAILURE = 15, - - /** - * The exchange failed to even just initialize its connection to the - * database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_SETUP_FAILED = 1001, - - /** - * The exchange encountered an error event to just start the database - * transaction. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_START_FAILED = 1002, - - /** - * The exchange encountered an error event to commit the database - * transaction (hard, unrecoverable error). This response is provided - * with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_COMMIT_FAILED_HARD = 1003, - - /** - * The exchange encountered an error event to commit the database - * transaction, even after repeatedly retrying it there was always a - * conflicting transaction. (This indicates a repeated serialization - * error; should only happen if some client maliciously tries to - * create conflicting concurrent transactions.) This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DB_COMMIT_FAILED_ON_RETRY = 1004, - - /** - * The exchange had insufficient memory to parse the request. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PARSER_OUT_OF_MEMORY = 1005, - - /** - * The JSON in the client's request to the exchange was malformed. - * (Generic parse error). This response is provided with HTTP status - * code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_JSON_INVALID = 1006, - - /** - * The JSON in the client's request to the exchange was malformed. - * Details about the location of the parse error are provided. This - * response is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_JSON_INVALID_WITH_DETAILS = 1007, - - /** - * A required parameter in the request to the exchange was missing. - * This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PARAMETER_MISSING = 1008, - - /** - * A parameter in the request to the exchange was malformed. This - * response is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PARAMETER_MALFORMED = 1009, - - /** - * The exchange failed to obtain the transaction history of the given - * coin from the database while generating an insufficient funds - * errors. This can happen during /deposit or /recoup requests. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_COIN_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1010, - - /** - * Internal logic error. Some server-side function failed that really - * should not. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_INTERNAL_LOGIC_ERROR = 1011, - - /** - * The method specified in a payto:// URI is not one we expected. - */ - TALER_EC_PAYTO_WRONG_METHOD = 1012, - - /** - * The payto:// URI is malformed. - */ - TALER_EC_PAYTO_MALFORMED = 1013, - - /** - * We failed to update the database of known coins. - */ - TALER_EC_DB_COIN_HISTORY_STORE_ERROR = 1014, - - /** - * The public key of given to a /coins/ handler was malformed. - */ - TALER_EC_COINS_INVALID_COIN_PUB = 1050, - - /** - * The reserve key of given to a /reserves/ handler was malformed. - */ - TALER_EC_RESERVES_INVALID_RESERVE_PUB = 1051, - - /** - * The public key of given to a /transfers/ handler was malformed. - */ - TALER_EC_TRANSFERS_INVALID_WTID = 1052, - - /** - * The wire hash of given to a /deposits/ handler was malformed. - */ - TALER_EC_DEPOSITS_INVALID_H_WIRE = 1053, - - /** - * The merchant key of given to a /deposits/ handler was malformed. - */ - TALER_EC_DEPOSITS_INVALID_MERCHANT_PUB = 1054, - - /** - * The hash of the contract terms given to a /deposits/ handler was - * malformed. - */ - TALER_EC_DEPOSITS_INVALID_H_CONTRACT_TERMS = 1055, - - /** - * The coin public key of given to a /deposits/ handler was malformed. - */ - TALER_EC_DEPOSITS_INVALID_COIN_PUB = 1056, - - /** - * The body returned by the exchange for a /deposits/ request was - * malformed. Error created client-side. - */ - TALER_EC_DEPOSITS_INVALID_BODY_BY_EXCHANGE = 1057, - - /** - * The signature returned by the exchange in a /deposits/ request was - * malformed. Error created client-side. - */ - TALER_EC_DEPOSITS_INVALID_SIGNATURE_BY_EXCHANGE = 1058, - - /** - * The given reserve does not have sufficient funds to admit the - * requested withdraw operation at this time. The response includes - * the current "balance" of the reserve as well as the transaction - * "history" that lead to this balance. This response is provided - * with HTTP status code #MHD_HTTP_CONFLICT. - */ - TALER_EC_WITHDRAW_INSUFFICIENT_FUNDS = 1100, - - /** - * The exchange has no information about the "reserve_pub" that was - * given. This response is provided with HTTP status code - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_WITHDRAW_RESERVE_UNKNOWN = 1101, - - /** - * The amount to withdraw together with the fee exceeds the numeric - * range for Taler amounts. This is not a client failure, as the coin - * value and fees come from the exchange's configuration. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_AMOUNT_FEE_OVERFLOW = 1102, - - /** - * All of the deposited amounts into this reserve total up to a value - * that is too big for the numeric range for Taler amounts. This is - * not a client failure, as the transaction history comes from the - * exchange's configuration. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_AMOUNT_DEPOSITS_OVERFLOW = 1103, - - /** - * For one of the historic withdrawals from this reserve, the exchange - * could not find the denomination key. This is not a client failure, - * as the transaction history comes from the exchange's configuration. - * This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_HISTORIC_DENOMINATION_KEY_NOT_FOUND = 1104, - - /** - * All of the withdrawals from reserve total up to a value that is too - * big for the numeric range for Taler amounts. This is not a client - * failure, as the transaction history comes from the exchange's - * configuration. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_AMOUNT_WITHDRAWALS_OVERFLOW = 1105, - - /** - * The exchange somehow knows about this reserve, but there seem to - * have been no wire transfers made. This is not a client failure, as - * this is a database consistency issue of the exchange. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_RESERVE_WITHOUT_WIRE_TRANSFER = 1106, - - /** - * The exchange failed to create the signature using the denomination - * key. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_SIGNATURE_FAILED = 1107, - - /** - * The exchange failed to store the withdraw operation in its - * database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_DB_STORE_ERROR = 1108, - - /** - * The exchange failed to check against historic withdraw data from - * database (as part of ensuring the idempotency of the operation). - * This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_DB_FETCH_ERROR = 1109, - - /** - * The exchange is not aware of the denomination key the wallet - * requested for the withdrawal. This response is provided with HTTP - * status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_WITHDRAW_DENOMINATION_KEY_NOT_FOUND = 1110, - - /** - * The signature of the reserve is not valid. This response is - * provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_WITHDRAW_RESERVE_SIGNATURE_INVALID = 1111, - - /** - * When computing the reserve history, we ended up with a negative - * overall balance, which should be impossible. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1112, - - /** - * When computing the reserve history, we ended up with a negative - * overall balance, which should be impossible. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_RESERVE_HISTORY_IMPOSSIBLE = 1113, - - /** - * Validity period of the coin to be withdrawn is in the future. - * Returned with an HTTP status of #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_WITHDRAW_VALIDITY_IN_FUTURE = 1114, - - /** - * Withdraw period of the coin to be withdrawn is in the past. - * Returned with an HTTP status of #MHD_HTTP_GONE. - */ - TALER_EC_WITHDRAW_VALIDITY_IN_PAST = 1115, - - /** - * Withdraw period of the coin to be withdrawn is in the past. - * Returned with an HTTP status of #MHD_HTTP_GONE. - */ - TALER_EC_DENOMINATION_KEY_LOST = 1116, - - /** - * The exchange's database entry with the reserve balance summary is - * inconsistent with its own history of the reserve. Returned with an - * HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_WITHDRAW_RESERVE_BALANCE_CORRUPT = 1117, - - /** - * The exchange responded with a reply that did not satsify the - * protocol. This error is not used in the protocol but created - * client-side. - */ - TALER_EC_WITHDRAW_REPLY_MALFORMED = 1118, - - /** - * The client failed to unblind the blind signature. This error is not - * used in the protocol but created client-side. - */ - TALER_EC_WITHDRAW_UNBLIND_FAILURE = 1119, - - /** - * The exchange failed to obtain the transaction history of the given - * reserve from the database. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_RESERVE_STATUS_DB_ERROR = 1150, - - /** - * The reserve status was requested using a unknown key, to be - * returned with 404 Not Found. - */ - TALER_EC_RESERVE_STATUS_UNKNOWN = 1151, - - /** - * The exchange responded with a reply that did not satsify the - * protocol. This error is not used in the protocol but created - * client-side. - */ - TALER_EC_RESERVE_STATUS_REPLY_MALFORMED = 1152, - - /** - * The respective coin did not have sufficient residual value for the - * /deposit operation (i.e. due to double spending). The "history" in - * the respose provides the transaction history of the coin proving - * this fact. This response is provided with HTTP status code - * #MHD_HTTP_CONFLICT. - */ - TALER_EC_DEPOSIT_INSUFFICIENT_FUNDS = 1200, - - /** - * The exchange failed to obtain the transaction history of the given - * coin from the database (this does not happen merely because the - * coin is seen by the exchange for the first time). This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_HISTORY_DB_ERROR = 1201, - - /** - * The exchange failed to store the /depost information in the - * database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_STORE_DB_ERROR = 1202, - - /** - * The exchange database is unaware of the denomination key that - * signed the coin (however, the exchange process is; this is not - * supposed to happen; it can happen if someone decides to purge the - * DB behind the back of the exchange process). Hence the deposit is - * being refused. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_DB_DENOMINATION_KEY_UNKNOWN = 1203, - - /** - * The exchange was trying to lookup the denomination key for the - * purpose of a DEPOSIT operation. However, the denomination key is - * unavailable for that purpose. This can be because it is entirely - * unknown to the exchange or not in the validity period for the - * deposit operation. Hence the deposit is being refused. This - * response is provided with HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_DEPOSIT_DENOMINATION_KEY_UNKNOWN = 1204, - - /** - * The signature made by the coin over the deposit permission is not - * valid. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_COIN_SIGNATURE_INVALID = 1205, - - /** - * The signature of the denomination key over the coin is not valid. - * This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_DENOMINATION_SIGNATURE_INVALID = 1206, - - /** - * The stated value of the coin after the deposit fee is subtracted - * would be negative. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_NEGATIVE_VALUE_AFTER_FEE = 1207, - - /** - * The stated refund deadline is after the wire deadline. This - * response is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_REFUND_DEADLINE_AFTER_WIRE_DEADLINE = 1208, - - /** - * The exchange does not recognize the validity of or support the - * given wire format type. This response is provided with HTTP status - * code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_TYPE = 1209, - - /** - * The exchange failed to canonicalize and hash the given wire format. - * For example, the merchant failed to provide the "salt" or a valid - * payto:// URI in the wire details. Note that while the exchange - * will do some basic sanity checking on the wire details, it cannot - * warrant that the banking system will ultimately be able to route to - * the specified address, even if this check passed. This response is - * provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_JSON = 1210, - - /** - * The hash of the given wire address does not match the hash - * specified in the proposal data. This response is provided with - * HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_CONTRACT_HASH_CONFLICT = 1211, - - /** - * The exchange detected that the given account number is invalid for - * the selected wire format type. This response is provided with HTTP - * status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSIT_INVALID_WIRE_FORMAT_ACCOUNT_NUMBER = 1213, - - /** - * Timestamp included in deposit permission is intolerably far off - * with respect to the clock of the exchange. - */ - TALER_EC_DEPOSIT_INVALID_TIMESTAMP = 1218, - - /** - * Validity period of the denomination key is in the future. Returned - * with an HTTP status of #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_DEPOSIT_DENOMINATION_VALIDITY_IN_FUTURE = 1219, - - /** - * Denomination key of the coin is past the deposit deadline. - * Returned with an HTTP status of #MHD_HTTP_GONE. - */ - TALER_EC_DEPOSIT_DENOMINATION_EXPIRED = 1220, - - /** - * The signature provided by the exchange is not valid. Error created - * client-side. - */ - TALER_EC_DEPOSIT_INVALID_SIGNATURE_BY_EXCHANGE = 1221, - - /** - * The currency specified for the deposit is different from the - * currency of the coin. This response is provided with HTTP status - * code #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_DEPOSIT_CURRENCY_MISMATCH = 1222, - - /** - * The respective coin did not have sufficient residual value for the - * /refresh/melt operation. The "history" in this response provdes - * the "residual_value" of the coin, which may be less than its - * "original_value". This response is provided with HTTP status code - * #MHD_HTTP_CONFLICT. - */ - TALER_EC_MELT_INSUFFICIENT_FUNDS = 1300, - - /** - * The respective coin did not have sufficient residual value for the - * /refresh/melt operation. The "history" in this response provdes - * the "residual_value" of the coin, which may be less than its - * "original_value". This response is provided with HTTP status code - * #MHD_HTTP_CONFLICT. - */ - TALER_EC_MELT_DENOMINATION_KEY_NOT_FOUND = 1301, - - /** - * The exchange had an internal error reconstructing the transaction - * history of the coin that was being melted. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_MELT_COIN_HISTORY_COMPUTATION_FAILED = 1302, - - /** - * The exchange failed to check against historic melt data from - * database (as part of ensuring the idempotency of the operation). - * This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_MELT_DB_FETCH_ERROR = 1303, - - /** - * The exchange failed to store session data in the database. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_MELT_DB_STORE_SESSION_ERROR = 1304, - - /** - * The exchange encountered melt fees exceeding the melted coin's - * contribution. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_MELT_FEES_EXCEED_CONTRIBUTION = 1305, - - /** - * The denomination key signature on the melted coin is invalid. This - * response is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_MELT_DENOMINATION_SIGNATURE_INVALID = 1306, - - /** - * The signature made with the coin to be melted is invalid. This - * response is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_MELT_COIN_SIGNATURE_INVALID = 1307, - - /** - * The exchange failed to obtain the transaction history of the given - * coin from the database while generating an insufficient funds - * errors. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_MELT_HISTORY_DB_ERROR_INSUFFICIENT_FUNDS = 1308, - - /** - * The denomination of the given coin has past its expiration date and - * it is also not a valid zombie (that is, was not refreshed with the - * fresh coin being subjected to recoup). - */ - TALER_EC_MELT_COIN_EXPIRED_NO_ZOMBIE = 1309, - - /** - * The signature returned by the exchange in a melt request was - * malformed. Error created client-side. - */ - TALER_EC_MELT_INVALID_SIGNATURE_BY_EXCHANGE = 1310, - - /** - * The currency specified for the melt amount is different from the - * currency of the coin. This response is provided with HTTP status - * code #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_MELT_CURRENCY_MISMATCH = 1311, - - /** - * The exchange is unaware of the denomination key that was used to - * sign the melted zombie coin. This response is provided with HTTP - * status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFRESH_RECOUP_DENOMINATION_KEY_NOT_FOUND = 1351, - - /** - * Validity period of the denomination key is in the future. Returned - * with an HTTP status of #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_REFRESH_RECOUP_DENOMINATION_VALIDITY_IN_FUTURE = 1352, - - /** - * Denomination key of the coin is past the deposit deadline. - * Returned with an HTTP status of #MHD_HTTP_GONE. - */ - TALER_EC_REFRESH_RECOUP_DENOMINATION_EXPIRED = 1353, - - /** - * Denomination key of the coin is past the deposit deadline. - * Returned with an HTTP status of #MHD_HTTP_GONE. - */ - TALER_EC_REFRESH_ZOMBIE_DENOMINATION_EXPIRED = 1354, - - /** - * The provided transfer keys do not match up with the original - * commitment. Information about the original commitment is included - * in the response. This response is provided with HTTP status code - * #MHD_HTTP_CONFLICT. - */ - TALER_EC_REVEAL_COMMITMENT_VIOLATION = 1370, - - /** - * Failed to produce the blinded signatures over the coins to be - * returned. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REVEAL_SIGNING_ERROR = 1371, - - /** - * The exchange is unaware of the refresh session specified in the - * request. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REVEAL_SESSION_UNKNOWN = 1372, - - /** - * The exchange failed to retrieve valid session data from the - * database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REVEAL_DB_FETCH_SESSION_ERROR = 1373, - - /** - * The exchange failed to retrieve previously revealed data from the - * database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REVEAL_DB_FETCH_REVEAL_ERROR = 1374, - - /** - * The exchange failed to retrieve commitment data from the database. - * This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REVEAL_DB_COMMIT_ERROR = 1375, - - /** - * The size of the cut-and-choose dimension of the private transfer - * keys request does not match #TALER_CNC_KAPPA - 1. This response is - * provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REVEAL_CNC_TRANSFER_ARRAY_SIZE_INVALID = 1376, - - /** - * The number of coins to be created in refresh exceeds the limits of - * the exchange. private transfer keys request does not match - * #TALER_CNC_KAPPA - 1. This response is provided with HTTP status - * code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REVEAL_NEW_DENOMS_ARRAY_SIZE_EXCESSIVE = 1377, - - /** - * The number of envelopes given does not match the number of - * denomination keys given. This response is provided with HTTP status - * code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REVEAL_NEW_DENOMS_ARRAY_SIZE_MISMATCH = 1378, - - /** - * The exchange encountered a numeric overflow totaling up the cost - * for the refresh operation. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REVEAL_COST_CALCULATION_OVERFLOW = 1379, - - /** - * The exchange's cost calculation shows that the melt amount is below - * the costs of the transaction. This response is provided with HTTP - * status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REVEAL_AMOUNT_INSUFFICIENT = 1380, - - /** - * The exchange is unaware of the denomination key that was requested - * for one of the fresh coins. This response is provided with HTTP - * status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REVEAL_FRESH_DENOMINATION_KEY_NOT_FOUND = 1381, - - /** - * The signature made with the coin over the link data is invalid. - * This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REVEAL_LINK_SIGNATURE_INVALID = 1382, - - /** - * The exchange failed to generate the signature as it could not find - * the signing key for the denomination. This response is provided - * with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REVEAL_KEYS_MISSING = 1383, - - /** - * The refresh session hash given to a /refreshes/ handler was - * malformed. - */ - TALER_EC_REVEAL_INVALID_RCH = 1384, - - /** - * The exchange responded with a reply that did not satsify the - * protocol. This error is not used in the protocol but created - * client-side. - */ - TALER_EC_REVEAL_REPLY_MALFORMED = 1385, - - /** - * The coin specified in the link request is unknown to the exchange. - * This response is provided with HTTP status code - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_LINK_COIN_UNKNOWN = 1400, - - /** - * The exchange responded with a reply that did not satsify the - * protocol. This error is not used in the protocol but created - * client-side. - */ - TALER_EC_LINK_REPLY_MALFORMED = 1401, - - /** - * The exchange knows literally nothing about the coin we were asked - * to refund. But without a transaction history, we cannot issue a - * refund. This is kind-of OK, the owner should just refresh it - * directly without executing the refund. This response is provided - * with HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFUND_COIN_NOT_FOUND = 1500, - - /** - * We could not process the refund request as the coin's transaction - * history does not permit the requested refund at this time. The - * "history" in the response proves this. This response is provided - * with HTTP status code #MHD_HTTP_CONFLICT. - */ - TALER_EC_REFUND_CONFLICT = 1501, - - /** - * The exchange knows about the coin we were asked to refund, but not - * about the specific /deposit operation. Hence, we cannot issue a - * refund (as we do not know if this merchant public key is authorized - * to do a refund). This response is provided with HTTP status code - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFUND_DEPOSIT_NOT_FOUND = 1503, - - /** - * The currency specified for the refund is different from the - * currency of the coin. This response is provided with HTTP status - * code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_CURRENCY_MISMATCH = 1504, - - /** - * When we tried to check if we already paid out the coin, the - * exchange's database suddenly disagreed with data it previously - * provided (internal inconsistency). This response is provided with - * HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFUND_DB_INCONSISTENT = 1505, - - /** - * The exchange can no longer refund the customer/coin as the money - * was already transferred (paid out) to the merchant. (It should be - * past the refund deadline.) This response is provided with HTTP - * status code #MHD_HTTP_GONE. - */ - TALER_EC_REFUND_MERCHANT_ALREADY_PAID = 1506, - - /** - * The amount the exchange was asked to refund exceeds (with fees) the - * total amount of the deposit (including fees). This response is - * provided with HTTP status code #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_REFUND_INSUFFICIENT_FUNDS = 1507, - - /** - * The exchange failed to recover information about the denomination - * key of the refunded coin (even though it recognizes the key). - * Hence it could not check the fee strucutre. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFUND_DENOMINATION_KEY_NOT_FOUND = 1508, - - /** - * The refund fee specified for the request is lower than the refund - * fee charged by the exchange for the given denomination key of the - * refunded coin. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_FEE_TOO_LOW = 1509, - - /** - * The exchange failed to store the refund information to its - * database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFUND_STORE_DB_ERROR = 1510, - - /** - * The refund fee is specified in a different currency than the refund - * amount. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_FEE_CURRENCY_MISMATCH = 1511, - - /** - * The refunded amount is smaller than the refund fee, which would - * result in a negative refund. This response is provided with HTTP - * status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_FEE_ABOVE_AMOUNT = 1512, - - /** - * The signature of the merchant is invalid. This response is provided - * with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_REFUND_MERCHANT_SIGNATURE_INVALID = 1513, - - /** - * Merchant backend failed to create the refund confirmation - * signature. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_REFUND_MERCHANT_SIGNING_FAILED = 1514, - - /** - * The signature returned by the exchange in a refund request was - * malformed. Error created client-side. - */ - TALER_EC_REFUND_INVALID_SIGNATURE_BY_EXCHANGE = 1515, - - /** - * The wire format specified in the "sender_account_details" is not - * understood or not supported by this exchange. Returned with an HTTP - * status code of #MHD_HTTP_NOT_FOUND. (As we did not find an - * interpretation of the wire format.) - */ - TALER_EC_ADMIN_ADD_INCOMING_WIREFORMAT_UNSUPPORTED = 1600, - - /** - * The currency specified in the "amount" parameter is not supported - * by this exhange. Returned with an HTTP status code of - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_ADMIN_ADD_INCOMING_CURRENCY_UNSUPPORTED = 1601, - - /** - * The exchange failed to store information about the incoming - * transfer in its database. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ADMIN_ADD_INCOMING_DB_STORE = 1602, - - /** - * The exchange encountered an error (that is not about not finding - * the wire transfer) trying to lookup a wire transfer identifier in - * the database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRANSFERS_GET_DB_FETCH_FAILED = 1700, - - /** - * The exchange found internally inconsistent data when resolving a - * wire transfer identifier in the database. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRANSFERS_GET_DB_INCONSISTENT = 1701, - - /** - * The exchange did not find information about the specified wire - * transfer identifier in the database. This response is provided - * with HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRANSFERS_GET_WTID_NOT_FOUND = 1702, - - /** - * The exchange did not find information about the wire transfer fees - * it charged. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRANSFERS_GET_WIRE_FEE_NOT_FOUND = 1703, - - /** - * The exchange found a wire fee that was above the total transfer - * value (and thus could not have been charged). This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRANSFERS_GET_WIRE_FEE_INCONSISTENT = 1704, - - /** - * The exchange responded with a reply that did not satsify the - * protocol. This error is not used in the protocol but created - * client-side. - */ - TALER_EC_TRANSFERS_GET_REPLY_MALFORMED = 1705, - - /** - * The exchange found internally inconsistent fee data when resolving - * a transaction in the database. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSITS_GET_DB_FEE_INCONSISTENT = 1800, - - /** - * The exchange encountered an error (that is not about not finding - * the transaction) trying to lookup a transaction in the database. - * This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSITS_GET_DB_FETCH_FAILED = 1801, - - /** - * The exchange did not find information about the specified - * transaction in the database. This response is provided with HTTP - * status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_DEPOSITS_GET_NOT_FOUND = 1802, - - /** - * The exchange failed to identify the wire transfer of the - * transaction (or information about the plan that it was supposed to - * still happen in the future). This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSITS_GET_WTID_RESOLUTION_ERROR = 1803, - - /** - * The signature of the merchant is invalid. This response is provided - * with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_DEPOSITS_GET_MERCHANT_SIGNATURE_INVALID = 1804, - - /** - * The given denomination key is not in the "recoup" set of the - * exchange right now. This response is provided with an HTTP status - * code of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_RECOUP_DENOMINATION_KEY_UNKNOWN = 1850, - - /** - * The given coin signature is invalid for the request. This response - * is provided with an HTTP status code of #MHD_HTTP_FORBIDDEN. - */ - TALER_EC_RECOUP_SIGNATURE_INVALID = 1851, - - /** - * The signature of the denomination key over the coin is not valid. - * This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_RECOUP_DENOMINATION_SIGNATURE_INVALID = 1852, - - /** - * The exchange failed to access its own database about reserves. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_RECOUP_DB_FETCH_FAILED = 1853, - - /** - * The exchange could not find the corresponding withdraw operation. - * The request is denied. This response is provided with an HTTP - * status code of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_RECOUP_WITHDRAW_NOT_FOUND = 1854, - - /** - * The exchange obtained an internally inconsistent transaction - * history for the given coin. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_RECOUP_HISTORY_DB_ERROR = 1855, - - /** - * The exchange failed to store information about the recoup to be - * performed in the database. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_RECOUP_DB_PUT_FAILED = 1856, - - /** - * The coin's remaining balance is zero. The request is denied. This - * response is provided with an HTTP status code of - * #MHD_HTTP_FORBIDDEN. - */ - TALER_EC_RECOUP_COIN_BALANCE_ZERO = 1857, - - /** - * The exchange failed to reproduce the coin's blinding. This response - * is provided with an HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_RECOUP_BLINDING_FAILED = 1858, - - /** - * The coin's remaining balance is zero. The request is denied. This - * response is provided with an HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR - */ - TALER_EC_RECOUP_COIN_BALANCE_NEGATIVE = 1859, - - /** - * Validity period of the denomination key is in the future. Returned - * with an HTTP status of #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_RECOUP_DENOMINATION_VALIDITY_IN_FUTURE = 1860, - - /** - * The exchange responded with a reply that did not satsify the - * protocol. This error is not used in the protocol but created - * client-side. - */ - TALER_EC_RECOUP_REPLY_MALFORMED = 1861, - - /** - * The "have" parameter was not a natural number. This response is - * provied with an HTTP status code of #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_KEYS_HAVE_NOT_NUMERIC = 1900, - - /** - * We currently cannot find any keys. This response is provied with an - * HTTP status code of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_KEYS_MISSING = 1901, - - /** - * This exchange does not allow clients to request /keys for times - * other than the current (exchange) time. This response is provied - * with an HTTP status code of #MHD_HTTP_FORBIDDEN. - */ - TALER_EC_KEYS_TIMETRAVEL_FORBIDDEN = 1902, - - /** - * The keys response was malformed. This error is generated client- - * side. - */ - TALER_EC_KEYS_INVALID = 1903, - - /** - * The backend could not find the merchant instance specified in the - * request. This response is provided with HTTP status code - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_INSTANCE_UNKNOWN = 2000, - - /** - * The backend lacks a wire transfer method configuration option for - * the given instance. - */ - TALER_EC_PROPOSAL_INSTANCE_CONFIGURATION_LACKS_WIRE = 2002, - - /** - * The merchant failed to provide a meaningful response to a /pay - * request. This error is created client-side. - */ - TALER_EC_PAY_MERCHANT_INVALID_RESPONSE = 2100, - - /** - * The exchange failed to provide a meaningful response to a /deposit - * request. This response is provided with HTTP status code - * #MHD_HTTP_FAILED_DEPENDENCY, or #MHD_HTTP_CONFLICT in case the - * exchange reports #TALER_EC_DEPOSIT_INSUFFICIENT_FUNDS (aka double - * spending). - */ - TALER_EC_PAY_EXCHANGE_FAILED = 2101, - - /** - * The merchant failed to commit the exchanges' response to a /deposit - * request to its database. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_STORE_PAY_ERROR = 2102, - - /** - * The specified exchange is not supported/trusted by this merchant. - * This response is provided with HTTP status code - * #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_PAY_EXCHANGE_REJECTED = 2103, - - /** - * The denomination key used for payment is not listed among the - * denomination keys of the exchange. This response is provided with - * HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_DENOMINATION_KEY_NOT_FOUND = 2104, - - /** - * The denomination key used for payment is not audited by an auditor - * approved by the merchant. This response is provided with HTTP - * status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_DENOMINATION_KEY_AUDITOR_FAILURE = 2105, - - /** - * There was an integer overflow totaling up the amounts or deposit - * fees in the payment. This response is provided with HTTP status - * code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_AMOUNT_OVERFLOW = 2106, - - /** - * The deposit fees exceed the total value of the payment. This - * response is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_FEES_EXCEED_PAYMENT = 2107, - - /** - * After considering deposit and wire fees, the payment is - * insufficient to satisfy the required amount for the contract. The - * client should revisit the logic used to calculate fees it must - * cover. This response is provided with HTTP status code - * #MHD_HTTP_ACCEPTED. - */ - TALER_EC_PAY_PAYMENT_INSUFFICIENT_DUE_TO_FEES = 2108, - - /** - * Even if we do not consider deposit and wire fees, the payment is - * insufficient to satisfy the required amount for the contract. This - * response is provided with HTTP status code #MHD_HTTP_ACCEPTED. - */ - TALER_EC_PAY_PAYMENT_INSUFFICIENT = 2109, - - /** - * The signature over the contract of one of the coins was invalid. - * This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_COIN_SIGNATURE_INVALID = 2110, - - /** - * We failed to contact the exchange for the /pay request. This - * response is provided with HTTP status code - * #MHD_HTTP_REQUEST_TIMEOUT. - */ - TALER_EC_PAY_EXCHANGE_TIMEOUT = 2111, - - /** - * When we tried to find information about the exchange to issue the - * deposit, we failed. This usually only happens if the merchant - * backend is somehow unable to get its own HTTP client logic to work. - * This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_EXCHANGE_LOOKUP_FAILED = 2112, - - /** - * The refund deadline in the contract is after the transfer deadline. - * This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR as this should have been caught - * when the offer was first setup. - */ - TALER_EC_PAY_REFUND_DEADLINE_PAST_WIRE_TRANSFER_DEADLINE = 2114, - - /** - * The request fails to provide coins for the payment. This response - * is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_COINS_ARRAY_EMPTY = 2115, - - /** - * The merchant failed to fetch the contract terms from the merchant's - * database. This response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_FETCH_PAY_ERROR = 2116, - - /** - * The merchant failed to fetch the merchant's previous state with - * respect to transactions from its database. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_FETCH_TRANSACTION_ERROR = 2117, - - /** - * The merchant failed to store the merchant's state with respect to - * the transaction in its database. This response is provided with - * HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_DB_STORE_TRANSACTION_ERROR = 2119, - - /** - * The exchange failed to provide a valid response to the merchant's - * /keys request. This response is provided with HTTP status code - * #MHD_HTTP_FAILED_DEPENDENDCY. - */ - TALER_EC_PAY_EXCHANGE_KEYS_FAILURE = 2120, - - /** - * The payment is too late, the offer has expired. This response is - * provided with HTTP status code #MHD_HTTP_GONE. - */ - TALER_EC_PAY_OFFER_EXPIRED = 2121, - - /** - * The "merchant" field is missing in the proposal data. This response - * is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PAY_MERCHANT_FIELD_MISSING = 2122, - - /** - * Failed computing a hash code (likely server out-of-memory). This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_FAILED_COMPUTE_PROPOSAL_HASH = 2123, - - /** - * Failed to locate merchant's account information matching the wire - * hash given in the proposal. This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_WIRE_HASH_UNKNOWN = 2124, - - /** - * We got different currencies for the wire fee and the maximum wire - * fee. This response is provided with HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_WIRE_FEE_CURRENCY_MISMATCH = 2125, - - /** - * A unknown merchant public key was included in the payment. That - * happens typically when the wallet sends the payment to the wrong - * merchant instance. This response is provided with an HTTP status - * code of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_PAY_WRONG_INSTANCE = 2127, - - /** - * The exchange failed to give us a response when we asked for /keys. - * This response is provided with HTTP status code - * #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_PAY_EXCHANGE_HAS_NO_KEYS = 2128, - - /** - * The deposit time for the denomination has expired. This response is - * provided with HTTP status code #MHD_HTTP_GONE. - */ - TALER_EC_PAY_DENOMINATION_DEPOSIT_EXPIRED = 2129, - - /** - * The proposal is not known to the backend. This response is provided - * with an HTTP status code of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_PAY_PROPOSAL_NOT_FOUND = 2130, - - /** - * The exchange of the deposited coin charges a wire fee that could - * not be added to the total (total amount too high). This response - * is provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_EXCHANGE_WIRE_FEE_ADDITION_FAILED = 2131, - - /** - * The contract was not fully paid because of refunds. Note that - * clients MAY treat this as paid if, for example, contracts must be - * executed despite of refunds. This response is provided with HTTP - * status code #MHD_HTTP_PAYMENT_REQUIRED. - */ - TALER_EC_PAY_REFUNDED = 2132, - - /** - * According to our database, we have refunded more than we were paid - * (which should not be possible). This response is provided with HTTP - * status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PAY_REFUNDS_EXCEED_PAYMENTS = 2133, - - /** - * Legacy stuff. Remove me with protocol v1. This response is provided - * with HTTP status code #MHD_HTTP_PREREQUISTE. - */ - TALER_EC_PAY_ABORT_REFUND_REFUSED_PAYMENT_COMPLETE = 2134, - - /** - * The merchant failed to contact the exchange. This response is - * provided with HTTP status code of #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_ABORT_EXCHANGE_KEYS_FAILURE = 2150, - - /** - * The merchant failed to send the exchange the refund request. This - * response is provided with HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ABORT_EXCHANGE_REFUND_FAILED = 2151, - - /** - * The merchant failed to find the exchange to process the lookup. - * This response is provided with HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ABORT_EXCHANGE_LOOKUP_FAILED = 2152, - - /** - * The merchant failed to store the abort request in its database. - * This response is provided with HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ABORT_DB_STORE_ABORT_ERROR = 2153, - - /** - * The merchant failed to repeatedly serialize the transaction. This - * response is provided with HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ABORT_DB_STORE_TRANSACTION_ERROR = 2154, - - /** - * The merchant failed in the lookup part of the transaction. This - * response is provided with HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ABORT_DB_FETCH_TRANSACTION_ERROR = 2155, - - /** - * The merchant could not find the contract. This response is provided - * with HTTP status code of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_ABORT_CONTRACT_NOT_FOUND = 2156, - - /** - * The payment was already completed and thus cannot be aborted - * anymore. This response is provided with HTTP status code of - * #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_ABORT_REFUND_REFUSED_PAYMENT_COMPLETE = 2157, - - /** - * The hash provided by the wallet does not match the order. This - * response is provided with HTTP status code of #MHD_HTTP_FORBIDDEN. - */ - TALER_EC_ABORT_CONTRACT_HASH_MISSMATCH = 2158, - - /** - * The array of coins cannot be empty. This response is provided with - * HTTP status code of #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_ABORT_COINS_ARRAY_EMPTY = 2159, - - /** - * The merchant experienced a timeout processing the request. This - * response is provided with HTTP status code of - * #MHD_HTTP_REQUEST_TIMEOUT. - */ - TALER_EC_ABORT_EXCHANGE_TIMEOUT = 2160, - - /** - * Integer overflow with specified timestamp argument detected. This - * response is provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_HISTORY_TIMESTAMP_OVERFLOW = 2200, - - /** - * Failed to retrieve history from merchant database. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_HISTORY_DB_FETCH_ERROR = 2201, - - /** - * The backend could not find the contract specified in the request. - * This response is provided with HTTP status code - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_POLL_PAYMENT_CONTRACT_NOT_FOUND = 2250, - - /** - * The response provided by the merchant backend was malformed. This - * error is created client-side. - */ - TALER_EC_POLL_PAYMENT_REPLY_MALFORMED = 2251, - - /** - * We failed to contact the exchange for the /track/transaction - * request. This response is provided with HTTP status code - * #MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_TRACK_TRANSACTION_EXCHANGE_TIMEOUT = 2300, - - /** - * We failed to get a valid /keys response from the exchange for the - * /track/transaction request. This response is provided with HTTP - * status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSACTION_EXCHANGE_KEYS_FAILURE = 2301, - - /** - * The backend could not find the transaction specified in the - * request. This response is provided with HTTP status code - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSACTION_TRANSACTION_UNKNOWN = 2302, - - /** - * The backend had a database access error trying to retrieve - * transaction data from its database. The response is provided with - * HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSACTION_DB_FETCH_TRANSACTION_ERROR = 2303, - - /** - * The backend had a database access error trying to retrieve payment - * data from its database. The response is provided with HTTP status - * code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSACTION_DB_FETCH_PAYMENT_ERROR = 2304, - - /** - * The backend found no applicable deposits in the database. This is - * odd, as we know about the transaction, but not about deposits we - * made for the transaction. The response is provided with HTTP - * status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TRACK_TRANSACTION_DB_NO_DEPOSITS_ERROR = 2305, - - /** - * We failed to obtain a wire transfer identifier for one of the coins - * in the transaction. The response is provided with HTTP status code - * #MHD_HTTP_FAILED_DEPENDENCY if the exchange had a hard error, or - * #MHD_HTTP_ACCEPTED if the exchange signaled that the transfer was - * in progress. - */ - TALER_EC_TRACK_TRANSACTION_COIN_TRACE_ERROR = 2306, - - /** - * We failed to obtain the full wire transfer identifier for the - * transfer one of the coins was aggregated into. The response is - * provided with HTTP status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSACTION_WIRE_TRANSFER_TRACE_ERROR = 2307, - - /** - * We got conflicting reports from the exhange with respect to which - * transfers are included in which aggregate. The response is provided - * with HTTP status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSACTION_CONFLICTING_REPORTS = 2308, - - /** - * We failed to contact the exchange for the /track/transfer request. - * This response is provided with HTTP status code - * #MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_TRACK_TRANSFER_EXCHANGE_TIMEOUT = 2400, - - /** - * We failed to obtain an acceptable /keys response from the exchange - * for the /track/transfer request. This response is provided with - * HTTP status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSFER_EXCHANGE_KEYS_FAILURE = 2401, - - /** - * We failed to persist coin wire transfer information in our merchant - * database. The response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_STORE_COIN_ERROR = 2402, - - /** - * We internally failed to execute the /track/transfer request. The - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_REQUEST_ERROR = 2403, - - /** - * We failed to persist wire transfer information in our merchant - * database. The response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_STORE_TRANSFER_ERROR = 2404, - - /** - * The exchange returned an error from /track/transfer. The response - * is provided with HTTP status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSFER_EXCHANGE_ERROR = 2405, - - /** - * We failed to fetch deposit information from our merchant database. - * The response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_FETCH_DEPOSIT_ERROR = 2406, - - /** - * We encountered an internal logic error. The response is provided - * with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TRACK_TRANSFER_DB_INTERNAL_LOGIC_ERROR = 2407, - - /** - * The exchange gave conflicting information about a coin which has - * been wire transferred. The response is provided with HTTP status - * code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSFER_CONFLICTING_REPORTS = 2408, - - /** - * The merchant backend had problems in creating the JSON response. - */ - TALER_EC_TRACK_TRANSFER_JSON_RESPONSE_ERROR = 2409, - - /** - * The exchange charged a different wire fee than what it originally - * advertised, and it is higher. The response is provied with an HTTP - * status of #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TRACK_TRANSFER_JSON_BAD_WIRE_FEE = 2410, - - /** - * The merchant backend cannot create an instance under the given - * identifier as one already exists. Use PATCH to modify the existing - * entry. The response is provied with an HTTP status of - * #MHD_HTTP_CONFLICT. - */ - TALER_EC_POST_INSTANCES_ALREADY_EXISTS = 2450, - - /** - * The merchant backend cannot create an instance because the - * specified bank accounts are somehow invalid. The response is - * provied with an HTTP status of #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_POST_INSTANCES_BAD_PAYTO_URIS = 2451, - - /** - * The merchant backend cannot create an instance because it failed to - * start the database transaction. The response is provied with an - * HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_POST_INSTANCES_DB_START_ERROR = 2452, - - /** - * The merchant backend cannot create an instance because it failed to - * commit the database transaction. The response is provied with an - * HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_POST_INSTANCES_DB_COMMIT_ERROR = 2453, - - /** - * The merchant backend cannot delete an instance because it failed to - * commit the database transaction. The response is provied with an - * HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DELETE_INSTANCES_ID_DB_HARD_FAILURE = 2454, - - /** - * The merchant backend cannot delete the data because it already does - * not exist. The response is provied with an HTTP status of - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_DELETE_INSTANCES_ID_NO_SUCH_INSTANCE = 2455, - - /** - * The merchant backend cannot update an instance because the - * specified bank accounts are somehow invalid. The response is - * provied with an HTTP status of #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PATCH_INSTANCES_BAD_PAYTO_URIS = 2456, - - /** - * The merchant backend cannot patch an instance because it failed to - * start the database transaction. The response is provied with an - * HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PATCH_INSTANCES_DB_START_ERROR = 2457, - - /** - * The merchant backend cannot patch an instance because it failed to - * commit the database transaction. The response is provied with an - * HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PATCH_INSTANCES_DB_COMMIT_ERROR = 2458, - - /** - * The hash provided in the request of /map/in does not match the - * contract sent alongside in the same request. - */ - TALER_EC_MAP_IN_UNMATCHED_HASH = 2500, - - /** - * The backend encountered an error while trying to store the - * h_contract_terms into the database. The response is provided with - * HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PROPOSAL_STORE_DB_ERROR = 2501, - - /** - * The backend encountered an error while trying to retrieve the - * proposal data from database. Likely to be an internal error. The - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PROPOSAL_LOOKUP_DB_ERROR = 2502, - - /** - * The proposal being looked up is not found on this merchant. - * Returned with an HTTP status code of #MHD_HTTP_NOT_FOUND - */ - TALER_EC_PROPOSAL_LOOKUP_NOT_FOUND = 2503, - - /** - * The proposal had no timestamp and the backend failed to obtain the - * local time. Likely to be an internal error. The response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PROPOSAL_NO_LOCALTIME = 2504, - - /** - * The order provided to the backend could not be parsed, some - * required fields were missing or ill-formed. Returned with an HTTP - * status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PROPOSAL_ORDER_PARSE_ERROR = 2505, - - /** - * The backend encountered an error while trying to find the existing - * proposal in the database. The response is provided with HTTP status - * code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PROPOSAL_STORE_DB_ERROR_HARD = 2506, - - /** - * The backend encountered an error while trying to find the existing - * proposal in the database. The response is provided with HTTP status - * code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PROPOSAL_STORE_DB_ERROR_SOFT = 2507, - - /** - * The backend encountered an error: the proposal already exists. The - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PROPOSAL_STORE_DB_ERROR_ALREADY_EXISTS = 2508, - - /** - * The order provided to the backend uses an amount in a currency that - * does not match the backend's configuration. Returned with HTTP - * status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_PROPOSAL_ORDER_BAD_CURRENCY = 2509, - - /** - * The response provided by the merchant backend was malformed. This - * error is created client-side. - */ - TALER_EC_PROPOSAL_REPLY_MALFORMED = 2510, - - /** - * The order provided to the backend could not be deleted, it is not - * known. Returned with an HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_ORDERS_DELETE_NO_SUCH_ORDER = 2511, - - /** - * The order provided to the backend could not be deleted, our offer - * is still valid and awaiting payment. Returned with an HTTP status - * code #MHD_HTTP_CONFLICT. - */ - TALER_EC_ORDERS_DELETE_AWAITING_PAYMENT = 2512, - - /** - * The order provided to the backend could not be deleted, due to a - * database error. Returned with an HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ORDERS_DELETE_DB_HARD_FAILURE = 2513, - - /** - * The order provided to the backend could not be completed, due to a - * database error trying to fetch product inventory data. Returned - * with an HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ORDERS_LOOKUP_PRODUCT_DB_HARD_FAILURE = 2514, - - /** - * The order provided to the backend could not be completed, due to a - * database serialization error (which should be impossible) trying to - * fetch product inventory data. Returned with an HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ORDERS_LOOKUP_PRODUCT_DB_SOFT_FAILURE = 2515, - - /** - * The order provided to the backend could not be completed, because a - * product to be completed via inventory data is not actually in our - * inventory. Returned with an HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_ORDERS_LOOKUP_PRODUCT_NOT_FOUND = 2516, - - /** - * We could not obtain a list of all orders because of a database - * failure. Returned with an HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ORDERS_GET_DB_LOOKUP_ERROR = 2517, - - /** - * We could not claim the order because of a database failure. - * Returned with an HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ORDERS_CLAIM_HARD_DB_ERROR = 2518, - - /** - * We could not claim the order because of a database serialization - * failure. Returned with an HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_ORDERS_CLAIM_SOFT_DB_ERROR = 2519, - - /** - * We could not claim the order because the backend is unaware of it. - * Returned with an HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_ORDERS_CLAIM_NOT_FOUND = 2520, - - /** - * We could not claim the order because someone else claimed it first. - * Returned with an HTTP status code #MHD_HTTP_CONFLICT. - */ - TALER_EC_ORDERS_ALREADY_CLAIMED = 2521, - - /** - * The merchant backend failed to lookup the products. The response is - * provied with an HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_GET_PRODUCTS_DB_LOOKUP_ERROR = 2550, - - /** - * The merchant backend failed to start the transaction. The response - * is provied with an HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PRODUCTS_POST_DB_START_ERROR = 2551, - - /** - * The product ID exists. The response is provied with an HTTP status - * of #MHD_HTTP_CONFLICT. - */ - TALER_EC_PRODUCTS_POST_CONFLICT_PRODUCT_EXISTS = 2552, - - /** - * The merchant backend failed to serialize the transaction. The - * response is provied with an HTTP status of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PRODUCTS_POST_DB_COMMIT_SOFT_ERROR = 2553, - - /** - * The merchant backend failed to commit the transaction. The response - * is provied with an HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PRODUCTS_POST_DB_COMMIT_HARD_ERROR = 2554, - - /** - * The merchant backend failed to commit the transaction. The response - * is provied with an HTTP status of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PRODUCTS_PATCH_DB_COMMIT_HARD_ERROR = 2555, - - /** - * The merchant backend did not find the product to be updated. The - * response is provied with an HTTP status of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_PRODUCTS_PATCH_UNKNOWN_PRODUCT = 2556, - - /** - * The update would have reduced the total amount of product lost, - * which is not allowed. The response is provied with an HTTP status - * of #MHD_HTTP_CONFLICT. - */ - TALER_EC_PRODUCTS_PATCH_TOTAL_LOST_REDUCED = 2557, - - /** - * The update would have mean that more stocks were lost than what - * remains from total inventory after sales, which is not allowed. The - * response is provied with an HTTP status of #MHD_HTTP_CONFLICT. - */ - TALER_EC_PRODUCTS_PATCH_TOTAL_LOST_EXCEEDS_STOCKS = 2558, - - /** - * The update would have reduced the total amount of product in stock, - * which is not allowed. The response is provied with an HTTP status - * of #MHD_HTTP_CONFLICT. - */ - TALER_EC_PRODUCTS_PATCH_TOTAL_STOCKED_REDUCED = 2559, - - /** - * The lock request is for more products than we have left (unlocked) - * in stock. The response is provied with an HTTP status of - * #MHD_HTTP_CONFLICT. - */ - TALER_EC_PRODUCTS_LOCK_INSUFFICIENT_STOCKS = 2560, - - /** - * The lock request is for an unknown product. The response is provied - * with an HTTP status of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_PRODUCTS_LOCK_UNKNOWN_PRODUCT = 2561, - - /** - * The deletion request resulted in a hard database error. The - * response is provied with an HTTP status of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_PRODUCTS_DELETE_DB_HARD_FAILURE = 2562, - - /** - * The deletion request was for a product unknown to the backend. The - * response is provied with an HTTP status of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_PRODUCTS_DELETE_NO_SUCH_PRODUCT = 2563, - - /** - * The deletion request is for a product that is locked. The response - * is provied with an HTTP status of #MHD_HTTP_CONFLICT. - */ - TALER_EC_PRODUCTS_DELETE_CONFLICTING_LOCK = 2564, - - /** - * The merchant returned a malformed response. Error created client- - * side. - */ - TALER_EC_REFUND_LOOKUP_INVALID_RESPONSE = 2600, - - /** - * The frontend gave an unknown order id to issue the refund to. - */ - TALER_EC_REFUND_ORDER_ID_UNKNOWN = 2601, - - /** - * The amount to be refunded is inconsistent: either is lower than the - * previous amount being awarded, or it is too big to be paid back. In - * this second case, the fault stays on the business dept. side. - * Returned with an HTTP status of #MHD_HTTP_CONFLICT. - */ - TALER_EC_REFUND_INCONSISTENT_AMOUNT = 2602, - - /** - * The backend encountered an error while trying to retrieve the - * payment data from database. Likely to be an internal error. - */ - TALER_EC_REFUND_LOOKUP_DB_ERROR = 2603, - - /** - * The backend encountered an error while trying to retrieve the - * payment data from database. Likely to be an internal error. - */ - TALER_EC_REFUND_MERCHANT_DB_COMMIT_ERROR = 2604, - - /** - * Payments are stored in a single db transaction; this error - * indicates that one db operation within that transaction failed. - * This might involve storing of coins or other related db operations, - * like starting/committing the db transaction or marking a contract - * as paid. - */ - TALER_EC_PAY_DB_STORE_PAYMENTS_ERROR = 2605, - - /** - * The backend failed to sign the refund request. - */ - TALER_EC_PAY_REFUND_SIGNATURE_FAILED = 2606, - - /** - * The merchant backend is not available of any applicable refund(s) - * for this order. Returned with an HTTP status of - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_REFUND_LOOKUP_NO_REFUND = 2607, - - /** - * The backend knows the instance that was supposed to support the - * tip, but it was not configured for tipping (i.e. has no exchange - * associated with it). Likely to be a configuration error. Returned - * with an HTTP status code of #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_TIP_AUTHORIZE_INSTANCE_DOES_NOT_TIP = 2701, - - /** - * The reserve that was used to fund the tips has expired. Returned - * with an HTTP status code of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TIP_AUTHORIZE_RESERVE_EXPIRED = 2702, - - /** - * The reserve that was used to fund the tips was not found in the DB. - * Returned with an HTTP status code of #MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_TIP_AUTHORIZE_RESERVE_UNKNOWN = 2703, - - /** - * The backend knows the instance that was supposed to support the - * tip, and it was configured for tipping. However, the funds - * remaining are insufficient to cover the tip, and the merchant - * should top up the reserve. Returned with an HTTP status code of - * #MHD_HTTP_PRECONDITION FAILED. - */ - TALER_EC_TIP_AUTHORIZE_INSUFFICIENT_FUNDS = 2704, - - /** - * The backend had trouble accessing the database to persist - * information about the tip authorization. Returned with an HTTP - * status code of internal error. - */ - TALER_EC_TIP_AUTHORIZE_DB_HARD_ERROR = 2705, - - /** - * The backend had trouble accessing the database to persist - * information about the tip authorization. The problem might be - * fixable by repeating the transaction. - */ - TALER_EC_TIP_AUTHORIZE_DB_SOFT_ERROR = 2706, - - /** - * The backend failed to obtain a reserve status from the exchange. - * This response is provided with HTTP status code - * #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_STATUS_FAILED_EXCHANGE_DOWN = 2707, - - /** - * The backend got an empty (!) reserve history from the exchange. - * This response is provided with HTTP status code - * #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_FAILED_EMPTY = 2708, - - /** - * The backend got an invalid reserve history (fails to start with a - * deposit) from the exchange. This response is provided with HTTP - * status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_INVALID_NO_DEPOSIT = 2709, - - /** - * The backend got an 404 response from the exchange when it inquired - * about the reserve history. The response is provided with HTTP - * status code #MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_TIP_QUERY_RESERVE_UNKNOWN_TO_EXCHANGE = 2710, - - /** - * The backend got a reserve with a currency that does not match the - * backend's currency. The response is provided with HTTP status code - * #MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_TIP_QUERY_RESERVE_CURRENCY_MISMATCH = 2711, - - /** - * The backend got a reserve history with amounts it cannot process - * (addition failure in deposits). The response is provided with HTTP - * status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_ARITHMETIC_ISSUE_DEPOSIT = 2712, - - /** - * The backend got a reserve history with amounts it cannot process - * (addition failure in withdraw amounts). The response is provided - * with HTTP status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_ARITHMETIC_ISSUE_WITHDRAW = 2713, - - /** - * The backend got a reserve history with amounts it cannot process - * (addition failure in closing amounts). The response is provided - * with HTTP status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_ARITHMETIC_ISSUE_CLOSED = 2714, - - /** - * The backend got a reserve history with inconsistent amounts. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_ARITHMETIC_ISSUE_INCONSISTENT = 2715, - - /** - * The backend encountered a database error querying tipping reserves. - */ - TALER_EC_TIP_QUERY_DB_ERROR = 2716, - - /** - * The backend got an unexpected resever history reply from the - * exchange. This response is provided with HTTP status code - * #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_FAILED = 2717, - - /** - * The backend got a reserve history with amounts it cannot process - * (addition failure in withdraw amounts). The response is provided - * with HTTP status code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_QUERY_RESERVE_HISTORY_ARITHMETIC_ISSUE_RECOUP = 2718, - - /** - * The backend knows the instance that was supposed to support the - * tip, but it was not configured for tipping (i.e. has no exchange - * associated with it). Likely to be a configuration error. Returned - * with an HTTP status code of #MHD_HTTP_PRECONDITION_FAILED. - */ - TALER_EC_TIP_QUERY_INSTANCE_DOES_NOT_TIP = 2719, - - /** - * The tip id is unknown. This could happen if the tip id is wrong or - * the tip authorization expired. - */ - TALER_EC_TIP_QUERY_TIP_ID_UNKNOWN = 2720, - - /** - * The backend had trouble accessing the database to persist - * information about enabling tips. Returned with an HTTP status code - * of internal error. - */ - TALER_EC_TIP_ENABLE_DB_TRANSACTION_ERROR = 2750, - - /** - * The tip ID is unknown. This could happen if the tip has expired. - * Returned with an HTTP status code of #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_TIP_PICKUP_TIP_ID_UNKNOWN = 2800, - - /** - * The amount requested exceeds the remaining tipping balance for this - * tip ID. Returned with an HTTP status code of "Conflict" (as it - * conflicts with a previous pickup operation). - */ - TALER_EC_TIP_PICKUP_NO_FUNDS = 2801, - - /** - * We encountered a DB error, repeating the request may work. - */ - TALER_EC_TIP_PICKUP_DB_ERROR_SOFT = 2802, - - /** - * We encountered a DB error, repeating the request will not help. - * This is an internal server error. - */ - TALER_EC_TIP_PICKUP_DB_ERROR_HARD = 2803, - - /** - * The same pickup ID was already used for picking up a different - * amount. This points to a very strange internal error as the pickup - * ID is derived from the denomination key which is tied to a - * particular amount. Hence this should also be an internal server - * error. - */ - TALER_EC_TIP_PICKUP_AMOUNT_CHANGED = 2804, - - /** - * We failed to contact the exchange to obtain the denomination keys. - * Returned with a response code #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_PICKUP_EXCHANGE_DOWN = 2805, - - /** - * We contacted the exchange to obtain any denomination keys, but got - * no valid keys. Returned with a response code - * #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_PICKUP_EXCHANGE_LACKED_KEYS = 2806, - - /** - * We contacted the exchange to obtain at least one of the - * denomination keys specified in the request. Returned with a - * response code "not found" (404). - */ - TALER_EC_TIP_PICKUP_EXCHANGE_LACKED_KEY = 2807, - - /** - * We encountered an arithmetic issue totaling up the amount to - * withdraw. Returned with a response code of #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_TIP_PICKUP_EXCHANGE_AMOUNT_OVERFLOW = 2808, - - /** - * The number of planchets specified exceeded the limit. Returned with - * a response code of #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_TIP_PICKUP_EXCHANGE_TOO_MANY_PLANCHETS = 2809, - - /** - * The merchant failed to initialize the withdraw operaiton. Returned - * with a response code of #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TIP_PICKUP_WITHDRAW_FAILED = 2810, - - /** - * The merchant failed to initialize the withdraw operaiton. Returned - * with a response code of #MHD_HTTP_FAILED_DEPENDENCY. - */ - TALER_EC_TIP_PICKUP_WITHDRAW_FAILED_AT_EXCHANGE = 2811, - - /** - * The client failed to unblind the signature returned by the - * merchant. Generated client-side. - */ - TALER_EC_TIP_PICKUP_UNBLIND_FAILURE = 2812, - - /** - * We failed to contract terms from our merchant database. The - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_CHECK_PAYMENT_DB_FETCH_CONTRACT_TERMS_ERROR = 2911, - - /** - * We failed to contract terms from our merchant database. The - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_CHECK_PAYMENT_DB_FETCH_ORDER_ERROR = 2912, - - /** - * The order id we're checking is unknown, likely the frontend did not - * create the order first. - */ - TALER_EC_CHECK_PAYMENT_ORDER_ID_UNKNOWN = 2913, - - /** - * Failed computing a hash code (likely server out-of-memory). This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_CHECK_PAYMENT_FAILED_COMPUTE_PROPOSAL_HASH = 2914, - - /** - * Signature "session_sig" failed to verify. This response is provided - * with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_CHECK_PAYMENT_SESSION_SIGNATURE_INVALID = 2915, - - /** - * The response we received from the merchant is malformed. This error - * is generated client-side. - */ - TALER_EC_CHECK_PAYMENT_RESPONSE_MALFORMED = 2916, - - /** - * The signature from the exchange on the deposit confirmation is - * invalid. Returned with a "400 Bad Request" status code. - */ - TALER_EC_DEPOSIT_CONFIRMATION_SIGNATURE_INVALID = 3000, - - /** - * The auditor had trouble storing the deposit confirmation in its - * database. Returned with an HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_DEPOSIT_CONFIRMATION_STORE_DB_ERROR = 3001, - - /** - * The auditor had trouble retrieving the exchange list from its - * database. Returned with an HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_LIST_EXCHANGES_DB_ERROR = 3002, - - /** - * The auditor had trouble storing an exchange in its database. - * Returned with an HTTP status code of - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_AUDITOR_EXCHANGE_STORE_DB_ERROR = 3003, - - /** - * The auditor (!) responded with a reply that did not satsify the - * protocol. This error is not used in the protocol but created - * client-side. - */ - TALER_EC_AUDITOR_EXCHANGES_REPLY_MALFORMED = 3004, - - /** - * The exchange failed to compute ECDH. This response is provided - * with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_ECDH_ERROR = 4000, - - /** - * The EdDSA test signature is invalid. This response is provided - * with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_TEST_EDDSA_INVALID = 4001, - - /** - * The exchange failed to compute the EdDSA test signature. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_EDDSA_ERROR = 4002, - - /** - * The exchange failed to generate an RSA key. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_RSA_GEN_ERROR = 4003, - - /** - * The exchange failed to compute the public RSA key. This response - * is provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_RSA_PUB_ERROR = 4004, - - /** - * The exchange failed to compute the RSA signature. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_TEST_RSA_SIGN_ERROR = 4005, - - /** - * The JSON in the server's response was malformed. This response is - * provided with HTTP status code of 0. - */ - TALER_EC_SERVER_JSON_INVALID = 5000, - - /** - * A signature in the server's response was malformed. This response - * is provided with HTTP status code of 0. - */ - TALER_EC_SERVER_SIGNATURE_INVALID = 5001, - - /** - * Wire transfer attempted with credit and debit party being the same - * bank account. - */ - TALER_EC_BANK_SAME_ACCOUNT = 5102, - - /** - * Wire transfer impossible, due to financial limitation of the party - * that attempted the payment. - */ - TALER_EC_BANK_UNALLOWED_DEBIT = 5103, - - /** - * Arithmetic operation between two amounts of different currency was - * attempted. - */ - TALER_EC_BANK_CURRENCY_MISMATCH = 5104, - - /** - * At least one GET parameter was either missing or invalid for the - * requested operation. - */ - TALER_EC_BANK_PARAMETER_MISSING_OR_INVALID = 5105, - - /** - * JSON body sent was invalid for the requested operation. - */ - TALER_EC_BANK_JSON_INVALID = 5106, - - /** - * Negative number was used (as value and/or fraction) to initiate a - * Amount object. - */ - TALER_EC_BANK_NEGATIVE_NUMBER_AMOUNT = 5107, - - /** - * A number too big was used (as value and/or fraction) to initiate a - * amount object. - */ - TALER_EC_BANK_NUMBER_TOO_BIG = 5108, - - /** - * Could not login for the requested operation. - */ - TALER_EC_BANK_LOGIN_FAILED = 5109, - - /** - * The bank account referenced in the requested operation was not - * found. Returned along "400 Not found". - */ - TALER_EC_BANK_UNKNOWN_ACCOUNT = 5110, - - /** - * The transaction referenced in the requested operation (typically a - * reject operation), was not found. - */ - TALER_EC_BANK_TRANSACTION_NOT_FOUND = 5111, - - /** - * Bank received a malformed amount string. - */ - TALER_EC_BANK_BAD_FORMAT_AMOUNT = 5112, - - /** - * The client does not own the account credited by the transaction - * which is to be rejected, so it has no rights do reject it. To be - * returned along HTTP 403 Forbidden. - */ - TALER_EC_BANK_REJECT_NO_RIGHTS = 5200, - - /** - * This error code is returned when no known exception types captured - * the exception, and comes along with a 500 Internal Server Error. - */ - TALER_EC_BANK_UNMANAGED_EXCEPTION = 5300, - - /** - * This error code is used for all those exceptions that do not really - * need a specific error code to return to the client, but need to - * signal the middleware that the bank is not responding with 500 - * Internal Server Error. Used for example when a client is trying to - * register with a unavailable username. - */ - TALER_EC_BANK_SOFT_EXCEPTION = 5400, - - /** - * The request UID for a request to transfer funds has already been - * used, but with different details for the transfer. - */ - TALER_EC_BANK_TRANSFER_REQUEST_UID_REUSED = 5500, - - /** - * The sync service failed to access its database. This response is - * provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_SYNC_DB_FETCH_ERROR = 6000, - - /** - * The sync service failed find the record in its database. This - * response is provided with HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_SYNC_BACKUP_UNKNOWN = 6001, - - /** - * The sync service failed find the account in its database. This - * response is provided with HTTP status code #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_SYNC_ACCOUNT_UNKNOWN = 6002, - - /** - * The SHA-512 hash provided in the If-None-Match header is malformed. - * This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_SYNC_BAD_IF_NONE_MATCH = 6003, - - /** - * The SHA-512 hash provided in the If-Match header is malformed or - * missing. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_SYNC_BAD_IF_MATCH = 6004, - - /** - * The signature provided in the "Sync-Signature" header is malformed - * or missing. This response is provided with HTTP status code - * #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_SYNC_BAD_SYNC_SIGNATURE = 6005, - - /** - * The signature provided in the "Sync-Signature" header does not - * match the account, old or new Etags. This response is provided with - * HTTP status code #MHD_HTTP_FORBIDDEN. - */ - TALER_EC_SYNC_INVALID_SIGNATURE = 6007, - - /** - * The "Content-length" field for the upload is either not a number, - * or too big, or missing. This response is provided with HTTP status - * code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_SYNC_BAD_CONTENT_LENGTH = 6008, - - /** - * The "Content-length" field for the upload is too big based on the - * server's terms of service. This response is provided with HTTP - * status code #MHD_HTTP_PAYLOAD_TOO_LARGE. - */ - TALER_EC_SYNC_EXCESSIVE_CONTENT_LENGTH = 6009, - - /** - * The server is out of memory to handle the upload. Trying again - * later may succeed. This response is provided with HTTP status code - * #MHD_HTTP_PAYLOAD_TOO_LARGE. - */ - TALER_EC_SYNC_OUT_OF_MEMORY_ON_CONTENT_LENGTH = 6010, - - /** - * The uploaded data does not match the Etag. This response is - * provided with HTTP status code #MHD_HTTP_BAD_REQUEST. - */ - TALER_EC_SYNC_INVALID_UPLOAD = 6011, - - /** - * We failed to check for existing upload data in the database. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_SYNC_DATABASE_FETCH_ERROR = 6012, - - /** - * HTTP server was being shutdown while this operation was pending. - * This response is provided with HTTP status code - * #MHD_HTTP_SERVICE_UNAVAILABLE. - */ - TALER_EC_SYNC_SHUTDOWN = 6013, - - /** - * HTTP server experienced a timeout while awaiting promised payment. - * This response is provided with HTTP status code - * #MHD_HTTP_REQUEST_TIMEOUT. - */ - TALER_EC_SYNC_PAYMENT_TIMEOUT = 6014, - - /** - * Sync could not store order data in its own database. This response - * is provided with HTTP status code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_SYNC_PAYMENT_CREATE_DB_ERROR = 6015, - - /** - * Sync could not store payment confirmation in its own database. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_SYNC_PAYMENT_CONFIRM_DB_ERROR = 6016, - - /** - * Sync could not fetch information about possible existing orders - * from its own database. This response is provided with HTTP status - * code #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_SYNC_PAYMENT_CHECK_ORDER_DB_ERROR = 6017, - - /** - * Sync could not setup the payment request with its own backend. This - * response is provided with HTTP status code - * #MHD_HTTP_INTERNAL_SERVER_ERROR. - */ - TALER_EC_SYNC_PAYMENT_CREATE_BACKEND_ERROR = 6018, - - /** - * The sync service failed find the backup to be updated in its - * database. This response is provided with HTTP status code - * #MHD_HTTP_NOT_FOUND. - */ - TALER_EC_SYNC_PREVIOUS_BACKUP_UNKNOWN = 6019, - - /** - * End of error code range. - */ - TALER_EC_END = 9999, - -}; - - -#endif diff --git a/src/include/taler_exchange_service.h b/src/include/taler_exchange_service.h index f7fa71443..02ab182f2 100644 --- a/src/include/taler_exchange_service.h +++ b/src/include/taler_exchange_service.h @@ -745,6 +745,32 @@ TALER_EXCHANGE_wire_cancel (struct TALER_EXCHANGE_WireHandle *wh); /** + * Sign a deposit permission. Function for wallets. + * + * @param amount the amount to be deposited + * @param deposit_fee the deposit fee we expect to pay + * @param h_wire hash of the merchant’s account details + * @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange) + * @param coin_priv coin’s private key + * @param wallet_timestamp timestamp when the contract was finalized, must not be too far in the future + * @param merchant_pub the public key of the merchant (used to identify the merchant for refund requests) + * @param refund_deadline date until which the merchant can issue a refund to the customer via the exchange (can be zero if refunds are not allowed); must not be after the @a wire_deadline + * @param[out] coin_sig set to the signature made with purpose #TALER_SIGNATURE_WALLET_COIN_DEPOSIT + */ +void +TALER_EXCHANGE_deposit_permission_sign ( + const struct TALER_Amount *amount, + const struct TALER_Amount *deposit_fee, + const struct GNUNET_HashCode *h_wire, + const struct GNUNET_HashCode *h_contract_terms, + const struct TALER_CoinSpendPrivateKeyP *coin_priv, + struct GNUNET_TIME_Absolute wallet_timestamp, + const struct TALER_MerchantPublicKeyP *merchant_pub, + struct GNUNET_TIME_Absolute refund_deadline, + struct TALER_CoinSpendSignatureP *coin_sig); + + +/** * @brief A Deposit Handle */ struct TALER_EXCHANGE_DepositHandle; @@ -756,6 +782,7 @@ struct TALER_EXCHANGE_DepositHandle; * * @param cls closure * @param hr HTTP response data + * @param deposit_timestamp time when the exchange generated the deposit confirmation * @param exchange_sig signature provided by the exchange * @param exchange_pub exchange key used to sign @a obj, or NULL */ @@ -763,6 +790,7 @@ typedef void (*TALER_EXCHANGE_DepositResultCallback) ( void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, + struct GNUNET_TIME_Absolute deposit_timestamp, const struct TALER_ExchangeSignatureP *exchange_sig, const struct TALER_ExchangePublicKeyP *exchange_pub); @@ -851,6 +879,7 @@ struct TALER_EXCHANGE_RefundHandle; * * @param cls closure * @param hr HTTP response data + * @param refund_fee the refund fee the exchange charged us * @param sign_key exchange key used to sign @a obj, or NULL * @param signature the actual signature, or NULL on error */ @@ -858,6 +887,7 @@ typedef void (*TALER_EXCHANGE_RefundCallback) ( void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, + const struct TALER_Amount *refund_fee, const struct TALER_ExchangePublicKeyP *sign_key, const struct TALER_ExchangeSignatureP *signature); @@ -878,7 +908,6 @@ typedef void * @param amount the amount to be refunded; must be larger than the refund fee * (as that fee is still being subtracted), and smaller than the amount * (with deposit fee) of the original deposit contribution of this coin - * @param refund_fee fee applicable to this coin for the refund * @param h_contract_terms hash of the contact of the merchant with the customer that is being refunded * @param coin_pub coin’s public key of the coin from the original deposit operation * @param rtransaction_id transaction id for the transaction between merchant and customer (of refunding operation); @@ -894,7 +923,6 @@ typedef void struct TALER_EXCHANGE_RefundHandle * TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange, const struct TALER_Amount *amount, - const struct TALER_Amount *refund_fee, const struct GNUNET_HashCode *h_contract_terms, const struct TALER_CoinSpendPublicKeyP *coin_pub, uint64_t rtransaction_id, @@ -922,7 +950,6 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange, * @param amount the amount to be refunded; must be larger than the refund fee * (as that fee is still being subtracted), and smaller than the amount * (with deposit fee) of the original deposit contribution of this coin - * @param refund_fee fee applicable to this coin for the refund * @param h_contract_terms hash of the contact of the merchant with the customer that is being refunded * @param coin_pub coin’s public key of the coin from the original deposit operation * @param rtransaction_id transaction id for the transaction between merchant and customer (of refunding operation); @@ -939,7 +966,6 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange, struct TALER_EXCHANGE_RefundHandle * TALER_EXCHANGE_refund2 (struct TALER_EXCHANGE_Handle *exchange, const struct TALER_Amount *amount, - const struct TALER_Amount *refund_fee, const struct GNUNET_HashCode *h_contract_terms, const struct TALER_CoinSpendPublicKeyP *coin_pub, uint64_t rtransaction_id, @@ -1585,31 +1611,67 @@ struct TALER_EXCHANGE_TransfersGetHandle; /** + * Information the exchange returns per wire transfer. + */ +struct TALER_EXCHANGE_TransferData +{ + + /** + * exchange key used to sign + */ + struct TALER_ExchangePublicKeyP exchange_pub; + + /** + * exchange signature over the transfer data + */ + struct TALER_ExchangeSignatureP exchange_sig; + + /** + * hash of the wire transfer address the transfer went to + */ + struct GNUNET_HashCode h_wire; + + /** + * time when the exchange claims to have performed the wire transfer + */ + struct GNUNET_TIME_Absolute execution_time; + + /** + * Actual amount of the wire transfer, excluding the wire fee. + */ + struct TALER_Amount total_amount; + + /** + * wire fee that was charged by the exchange + */ + struct TALER_Amount wire_fee; + + /** + * length of the @e details array + */ + unsigned int details_length; + + /** + * array with details about the combined transactions + */ + const struct TALER_TrackTransferDetails *details; + +}; + + +/** * Function called with detailed wire transfer data, including all * of the coin transactions that were combined into the wire transfer. * * @param cls closure * @param hr HTTP response data - * @param sign_key exchange key used to sign @a json, or NULL - * @param h_wire hash of the wire transfer address the transfer went to, or NULL on error - * @param execution_time time when the exchange claims to have performed the wire transfer - * @param total_amount total amount of the wire transfer, or NULL if the exchange could - * not provide any @a wtid (set only if @a http_status is #MHD_HTTP_OK) - * @param wire_fee wire fee that was charged by the exchange - * @param details_length length of the @a details array - * @param details array with details about the combined transactions + * @param ta transfer data, (set only if @a http_status is #MHD_HTTP_OK, otherwise NULL) */ typedef void (*TALER_EXCHANGE_TransfersGetCallback)( void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, - const struct TALER_ExchangePublicKeyP *sign_key, - const struct GNUNET_HashCode *h_wire, - struct GNUNET_TIME_Absolute execution_time, - const struct TALER_Amount *total_amount, - const struct TALER_Amount *wire_fee, - unsigned int details_length, - const struct TALER_TrackTransferDetails *details); + const struct TALER_EXCHANGE_TransferData *ta); /** @@ -1651,24 +1713,56 @@ struct TALER_EXCHANGE_DepositGetHandle; /** + * Data returned for a successful GET /deposits/ request. Note that + * most fields are only set if the status is #MHD_HTTP_OK. Only + * the @e execution_time is available if the status is #MHD_HTTP_ACCEPTED. + */ +struct TALER_EXCHANGE_DepositData +{ + + /** + * exchange key used to sign, all zeros if exchange did not + * yet execute the transaction + */ + struct TALER_ExchangePublicKeyP exchange_pub; + + /** + * signature from the exchange over the deposit data, all zeros if exchange did not + * yet execute the transaction + */ + struct TALER_ExchangeSignatureP exchange_sig; + + /** + * wire transfer identifier used by the exchange, all zeros if exchange did not + * yet execute the transaction + */ + struct TALER_WireTransferIdentifierRawP wtid; + + /** + * actual or planned execution time for the wire transfer + */ + struct GNUNET_TIME_Absolute execution_time; + + /** + * contribution to the total amount by this coin, all zeros if exchange did not + * yet execute the transaction + */ + struct TALER_Amount coin_contribution; +}; + + +/** * Function called with detailed wire transfer data. * * @param cls closure * @param hr HTTP response data - * @param sign_key exchange key used to sign @a json, or NULL - * @param wtid wire transfer identifier used by the exchange, NULL if exchange did not - * yet execute the transaction - * @param execution_time actual or planned execution time for the wire transfer - * @param coin_contribution contribution to the total amount by this coin (can be NULL) + * @param dd details about the deposit (NULL on errors) */ typedef void (*TALER_EXCHANGE_DepositGetCallback)( void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, - const struct TALER_ExchangePublicKeyP *sign_key, - const struct TALER_WireTransferIdentifierRawP *wtid, - struct GNUNET_TIME_Absolute execution_time, - const struct TALER_Amount *coin_contribution); + const struct TALER_EXCHANGE_DepositData *dd); /** diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h index 4fd580724..9fb932362 100644 --- a/src/include/taler_exchangedb_plugin.h +++ b/src/include/taler_exchangedb_plugin.h @@ -975,6 +975,8 @@ struct TALER_EXCHANGEDB_Session; * @param cls closure * @param rowid unique ID for the deposit in our DB, used for marking * it as 'tiny' or 'done' + * @param exchange_timestamp when did the exchange receive the deposit + * @param wallet_timestamp when did the wallet sign the contract * @param merchant_pub public key of the merchant * @param coin_pub public key of the coin * @param amount_with_fee amount that was deposited including fee @@ -990,6 +992,8 @@ typedef enum GNUNET_DB_QueryStatus (*TALER_EXCHANGEDB_DepositIterator)( void *cls, uint64_t rowid, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Absolute wallet_timestamp, const struct TALER_MerchantPublicKeyP *merchant_pub, const struct TALER_CoinSpendPublicKeyP *coin_pub, const struct TALER_Amount *amount_with_fee, @@ -1022,7 +1026,8 @@ typedef void * * @param cls closure * @param rowid unique serial ID for the deposit in our DB - * @param timestamp when did the deposit happen + * @param exchange_timestamp when did the deposit happen + * @param wallet_timestamp when did the contract happen * @param merchant_pub public key of the merchant * @param denom_pub denomination public key of @a coin_pub * @param coin_pub public key of the coin @@ -1042,7 +1047,8 @@ typedef int (*TALER_EXCHANGEDB_DepositCallback)( void *cls, uint64_t rowid, - struct GNUNET_TIME_Absolute timestamp, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Absolute wallet_timestamp, const struct TALER_MerchantPublicKeyP *merchant_pub, const struct TALER_DenominationPublicKey *denom_pub, const struct TALER_CoinSpendPublicKeyP *coin_pub, @@ -1841,6 +1847,8 @@ struct TALER_EXCHANGEDB_Plugin * @param session database connection * @param deposit deposit to search for * @param check_extras whether to check extra fields or not + * @param[out] deposit_fee set to the deposit fee the exchange charged + * @param[out] exchange_timestamp set to the time when the exchange received the deposit * @return 1 if we know this operation, * 0 if this exact deposit is unknown to us, * otherwise transaction error status @@ -1849,7 +1857,9 @@ struct TALER_EXCHANGEDB_Plugin (*have_deposit)(void *cls, struct TALER_EXCHANGEDB_Session *session, const struct TALER_EXCHANGEDB_Deposit *deposit, - int check_extras); + int check_extras, + struct TALER_Amount *deposit_fee, + struct GNUNET_TIME_Absolute *exchange_timestamp); /** @@ -1857,12 +1867,14 @@ struct TALER_EXCHANGEDB_Plugin * * @param cls the @e cls of this struct with the plugin-specific state * @param session connection to the database + * @param exchange_timestamp time the exchange received the deposit request * @param deposit deposit information to store * @return query result status */ enum GNUNET_DB_QueryStatus (*insert_deposit)(void *cls, struct TALER_EXCHANGEDB_Session *session, + struct GNUNET_TIME_Absolute exchange_timestamp, const struct TALER_EXCHANGEDB_Deposit *deposit); diff --git a/src/include/taler_mhd_lib.h b/src/include/taler_mhd_lib.h index 71006e8bc..8cfb80721 100644 --- a/src/include/taler_mhd_lib.h +++ b/src/include/taler_mhd_lib.h @@ -264,7 +264,8 @@ TALER_MHD_parse_post_cleanup_callback (void *con_cls); /** * Parse JSON object into components based on the given field - * specification. + * specification. If parsing fails, we return an HTTP + * status code of 400 (#MHD_HTTP_BAD_REQUEST). * * @param connection the connection to send an error response to * @param root the JSON node to start the navigation at. @@ -283,6 +284,30 @@ TALER_MHD_parse_json_data (struct MHD_Connection *connection, /** + * Parse JSON object that we (the server!) generated into components based on + * the given field specification. The difference to + * #TALER_MHD_parse_json_data() is that this function will fail + * with an HTTP failure of 500 (internal server error) in case + * parsing fails, instead of blaming it on the client with a + * 400 (#MHD_HTTP_BAD_REQUEST). + * + * @param connection the connection to send an error response to + * @param root the JSON node to start the navigation at. + * @param spec field specification for the parser + * @return + * #GNUNET_YES if navigation was successful (caller is responsible + * for freeing allocated variable-size data using + * GNUNET_JSON_parse_free() when done) + * #GNUNET_NO if json is malformed, error response was generated + * #GNUNET_SYSERR on internal error + */ +enum GNUNET_GenericReturnValue +TALER_MHD_parse_internal_json_data (struct MHD_Connection *connection, + const json_t *root, + struct GNUNET_JSON_Specification *spec); + + +/** * Parse JSON array into components based on the given field * specification. Generates error response on parse errors. * diff --git a/src/include/taler_signatures.h b/src/include/taler_signatures.h index f55f0c2e4..7f9e090a1 100644 --- a/src/include/taler_signatures.h +++ b/src/include/taler_signatures.h @@ -317,19 +317,6 @@ struct TALER_WithdrawRequestPS struct TALER_AmountNBO amount_with_fee; /** - * Withdrawal fee charged by the exchange. This must match the Exchange's - * denomination key's withdrawal fee. If the client puts in an - * invalid withdrawal fee (too high or too low) that does not match - * the Exchange's denomination key, the withdraw operation is invalid - * and will be rejected by the exchange. The @e amount_with_fee minus - * the @e withdraw_fee is must match the value of the generated - * coin. We include this in what is being signed so that we can - * verify a exchange's accounting without needing to access the - * respective denomination key information each time. - */ - struct TALER_AmountNBO withdraw_fee; - - /** * Hash of the denomination public key for the coin that is withdrawn. */ struct GNUNET_HashCode h_denomination_pub GNUNET_PACKED; @@ -376,7 +363,7 @@ struct TALER_DepositRequestPS * deposit request in a timely fashion (so back-dating is not * prevented). */ - struct GNUNET_TIME_AbsoluteNBO timestamp; + struct GNUNET_TIME_AbsoluteNBO wallet_timestamp; /** * How much time does the merchant have to issue a refund request? @@ -442,9 +429,10 @@ struct TALER_DepositConfirmationPS struct GNUNET_HashCode h_wire GNUNET_PACKED; /** - * Time when this confirmation was generated. + * Time when this confirmation was generated / when the exchange received + * the deposit request. */ - struct GNUNET_TIME_AbsoluteNBO timestamp; + struct GNUNET_TIME_AbsoluteNBO exchange_timestamp; /** * How much time does the @e merchant have to issue a refund @@ -517,17 +505,6 @@ struct TALER_RefundRequestPS */ struct TALER_AmountNBO refund_amount; - /** - * Refund fee charged by the exchange. This must match the - * Exchange's denomination key's refund fee. If the client puts in - * an invalid refund fee (too high or too low) that does not match - * the Exchange's denomination key, the refund operation is invalid - * and will be rejected by the exchange. The @e amount_with_fee - * minus the @e refund_fee is the amount that will be credited to - * the original coin. - */ - struct TALER_AmountNBO refund_fee; - }; @@ -1153,10 +1130,8 @@ struct TALER_ProposalDataPS struct PaymentResponsePS { /** - * Set to TALER_SIGNATURE_MERCHANT_PAYMENT_OK so far. Note that - * unsuccessful payments are usually proven by some exchange's signature, - * thus it is unlikely that a merchant needs to set a purpose other than - * the above mentioned + * Set to #TALER_SIGNATURE_MERCHANT_PAYMENT_OK. Note that + * unsuccessful payments are usually proven by some exchange's signature. */ struct GNUNET_CRYPTO_EccSignaturePurpose purpose; diff --git a/src/include/taler_sq_lib.h b/src/include/taler_sq_lib.h new file mode 100644 index 000000000..66bd38c82 --- /dev/null +++ b/src/include/taler_sq_lib.h @@ -0,0 +1,152 @@ +/* + This file is part of TALER + Copyright (C) 2020 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file include/taler_sq_lib.h + * @brief helper functions for DB interactions with SQLite + * @author Jonathan Buchanan + */ +#ifndef TALER_SQ_LIB_H_ +#define TALER_SQ_LIB_H_ + +#include <sqlite3.h> +#include <jansson.h> +#include <gnunet/gnunet_sq_lib.h> +#include "taler_util.h" + +/** + * Generate query parameter for a currency, consisting of the + * components "value", "fraction" in this order. The + * types must be a 64-bit integer and a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_amount_nbo (const struct TALER_AmountNBO *x); + + +/** + * Generate query parameter for a currency, consisting of the + * components "value", "fraction" in this order. The + * types must be a 64-bit integer and a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_amount (const struct TALER_Amount *x); + + +/** + * Generate query parameter for a JSON object (stored as a string + * in the DB). Note that @a x must really be a JSON object or array, + * passing just a value (string, integer) is not supported and will + * result in an abort. + * + * @param x pointer to the json object to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_json (const json_t *x); + + +/** + * Generate query parameter for an absolute time value. + * In contrast to + * #GNUNET_SQ_query_param_absolute_time(), this function + * will abort (!) if the time given is not rounded! + * The database must store a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_absolute_time (const struct GNUNET_TIME_Absolute *x); + + +/** + * Generate query parameter for an absolute time value. + * In contrast to + * #GNUNET_SQ_query_param_absolute_time(), this function + * will abort (!) if the time given is not rounded! + * The database must store a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_absolute_time_nbo (const struct + GNUNET_TIME_AbsoluteNBO *x); + + +/** + * Currency amount expected. + * + * @param currency currency to use for @a amount + * @param[out] amount where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_amount_nbo (const char *currency, + struct TALER_AmountNBO *amount); + + +/** + * Currency amount expected. + * + * @param currency currency to use for @a amount + * @param[out] amount where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_amount (const char *currency, + struct TALER_Amount *amount); + + +/** + * json_t expected. + * + * @param[out] jp where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_json (json_t **jp); + + +/** + * Rounded absolute time expected. + * In contrast to #GNUNET_SQ_query_param_absolute_time_nbo(), + * this function ensures that the result is rounded and can + * be converted to JSON. + * + * @param[out] at where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_absolute_time (struct GNUNET_TIME_Absolute *at); + + +/** + * Rounded absolute time expected. + * In contrast to #GNUNET_SQ_result_spec_absolute_time_nbo(), + * this function ensures that the result is rounded and can + * be converted to JSON. + * + * @param[out] at where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_absolute_time_nbo (struct GNUNET_TIME_AbsoluteNBO *at); + + +#endif /* TALER_SQ_LIB_H_ */ + +/* end of include/taler_sq_lib.h */ diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h index 0696573ea..d4251364f 100644 --- a/src/include/taler_testing_lib.h +++ b/src/include/taler_testing_lib.h @@ -388,10 +388,9 @@ struct TALER_TESTING_Interpreter void *final_cleanup_cb_cls; /** - * Instruction pointer. Tells #interpreter_run() which - * instruction to run next. Need (signed) int because - * it gets -1 when rewinding the interpreter to the first - * CMD. + * Instruction pointer. Tells #interpreter_run() which instruction to run + * next. Need (signed) int because it gets -1 when rewinding the + * interpreter to the first CMD. */ int ip; @@ -599,7 +598,22 @@ TALER_TESTING_interpreter_fail (struct TALER_TESTING_Interpreter *is); * @return a end-command. */ struct TALER_TESTING_Command -TALER_TESTING_cmd_end (); +TALER_TESTING_cmd_end (void); + + +/** + * Make the instruction pointer point to @a target_label + * only if @a counter is greater than zero. + * + * @param label command label + * @param target_label label of the new instruction pointer's destination after the jump; + * must be before the current instruction + * @param counter counts how many times the rewinding is to happen. + */ +struct TALER_TESTING_Command +TALER_TESTING_cmd_rewind_ip (const char *label, + const char *target_label, + unsigned int counter); /** @@ -816,7 +830,6 @@ TALER_TESTING_setup_with_auditor_and_exchange (TALER_TESTING_Main main_cb, * @param config_filename configuration filename. * @param bank_url base URL of the bank, used by `wget' to check * that the bank was started right. - * * @return the process, or NULL if the process could not * be started. */ @@ -839,6 +852,7 @@ TALER_TESTING_run_bank (const char *config_filename, struct TALER_TESTING_LibeufinServices TALER_TESTING_run_libeufin (const struct TALER_TESTING_BankConfiguration *bc); + /** * Runs the Fakebank by guessing / extracting the portnumber * from the base URL. @@ -1089,7 +1103,7 @@ TALER_TESTING_cmd_admin_add_incoming ( * @param payto_debit_account which account sends money. * @param auth authentication data * @param ref reference to a command that can offer a reserve - * private key. + * private key or public key. * @return the command. */ struct TALER_TESTING_Command @@ -1346,6 +1360,16 @@ TALER_TESTING_cmd_status (const char *label, unsigned int expected_response_code); /** + * Index of the deposit value trait of a deposit command. + */ +#define TALER_TESTING_CMD_DEPOSIT_TRAIT_IDX_DEPOSIT_VALUE 0 + +/** + * Index of the deposit fee trait of a deposit command. + */ +#define TALER_TESTING_CMD_DEPOSIT_TRAIT_IDX_DEPOSIT_FEE 1 + +/** * Create a "deposit" command. * * @param label command label. @@ -1670,7 +1694,6 @@ TALER_TESTING_cmd_check_bank_empty (const char *label); * @param label command label. * @param expected_response_code expected HTTP status code. * @param refund_amount the amount to ask a refund for. - * @param refund_fee expected refund fee. * @param coin_reference reference to a command that can * provide a coin to be refunded. * @param refund_transaction_id transaction id to use @@ -1682,7 +1705,6 @@ struct TALER_TESTING_Command TALER_TESTING_cmd_refund_with_id (const char *label, unsigned int expected_response_code, const char *refund_amount, - const char *refund_fee, const char *deposit_reference, uint64_t refund_transaction_id); @@ -1693,7 +1715,6 @@ TALER_TESTING_cmd_refund_with_id (const char *label, * @param label command label. * @param expected_response_code expected HTTP status code. * @param refund_amount the amount to ask a refund for. - * @param refund_fee expected refund fee. * @param coin_reference reference to a command that can * provide a coin to be refunded. * @@ -1703,7 +1724,6 @@ struct TALER_TESTING_Command TALER_TESTING_cmd_refund (const char *label, unsigned int expected_response_code, const char *refund_amount, - const char *refund_fee, const char *deposit_reference); @@ -1890,6 +1910,18 @@ TALER_TESTING_cmd_batch_next (struct TALER_TESTING_Interpreter *is); struct TALER_TESTING_Command * TALER_TESTING_cmd_batch_get_current (const struct TALER_TESTING_Command *cmd); + +/** + * Set what command the batch should be at. + * + * @param cmd current batch command + * @param new_ip where to move the IP + */ +void +TALER_TESTING_cmd_batch_set_current (const struct TALER_TESTING_Command *cmd, + unsigned int new_ip); + + /** * Make a serialize-keys CMD. * @@ -1921,6 +1953,7 @@ TALER_TESTING_cmd_connect_with_state (const char *label, * @param dbc collects plugin and session handles * @param merchant_name Human-readable name of the merchant. * @param merchant_account merchant's account name (NOT a payto:// URI) + * @param exchange_timestamp when did the exchange receive the deposit * @param wire_deadline point in time where the aggregator should have * wired money to the merchant. * @param amount_with_fee amount to deposit (inclusive of deposit fee) @@ -1928,14 +1961,15 @@ TALER_TESTING_cmd_connect_with_state (const char *label, * @return the command. */ struct TALER_TESTING_Command -TALER_TESTING_cmd_insert_deposit (const char *label, - const struct - TALER_TESTING_DatabaseConnection *dbc, - const char *merchant_name, - const char *merchant_account, - struct GNUNET_TIME_Relative wire_deadline, - const char *amount_with_fee, - const char *deposit_fee); +TALER_TESTING_cmd_insert_deposit ( + const char *label, + const struct TALER_TESTING_DatabaseConnection *dbc, + const char *merchant_name, + const char *merchant_account, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Relative wire_deadline, + const char *amount_with_fee, + const char *deposit_fee); /** @@ -2340,6 +2374,31 @@ TALER_TESTING_make_trait_denom_sig ( /** + * Offer number trait, 32-bit version. + * + * @param index the number's index number. + * @param n number to offer. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_uint32 (unsigned int index, + const uint32_t *n); + + +/** + * Obtain a "number" value from @a cmd, 32-bit version. + * + * @param cmd command to extract the number from. + * @param index the number's index number. + * @param[out] n set to the number coming from @a cmd. + * @return #GNUNET_OK on success. + */ +int +TALER_TESTING_get_trait_uint32 (const struct TALER_TESTING_Command *cmd, + unsigned int index, + const uint32_t **n); + + +/** * Offer number trait, 64-bit version. * * @param index the number's index number. @@ -2365,6 +2424,31 @@ TALER_TESTING_get_trait_uint64 (const struct TALER_TESTING_Command *cmd, /** + * Offer number trait, 64-bit signed version. + * + * @param index the number's index number. + * @param n number to offer. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_int64 (unsigned int index, + const int64_t *n); + + +/** + * Obtain a "number" value from @a cmd, 64-bit signed version. + * + * @param cmd command to extract the number from. + * @param index the number's index number. + * @param[out] n set to the number coming from @a cmd. + * @return #GNUNET_OK on success. + */ +int +TALER_TESTING_get_trait_int64 (const struct TALER_TESTING_Command *cmd, + unsigned int index, + const int64_t **n); + + +/** * Offer a number. * * @param index the number's index number. @@ -2514,6 +2598,33 @@ TALER_TESTING_make_trait_exchange_keys (unsigned int index, /** + * Obtain json from @a cmd. + * + * @param cmd command to extract the json from. + * @param index index number associate with the json on offer. + * @param[out] json where to write the json. + * @return #GNUNET_OK on success. + */ +int +TALER_TESTING_get_trait_json (const struct TALER_TESTING_Command *cmd, + unsigned int index, + const json_t **json); + + +/** + * Offer json in a trait. + * + * @param index index number associate with the json + * on offer. + * @param json json to offer. + * @return the trait. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_json (unsigned int index, + const json_t *json); + + +/** * Obtain a private key from a "merchant". Used e.g. to obtain * a merchant's priv to sign a /track request. * @@ -2854,4 +2965,33 @@ TALER_TESTING_make_trait_absolute_time ( unsigned int index, const struct GNUNET_TIME_Absolute *time); + +/** + * Obtain a relative time from @a cmd. + * + * @param cmd command to extract trait from + * @param index which time to pick if + * @a cmd has multiple on offer. + * @param[out] time set to the wanted WTID. + * @return #GNUNET_OK on success + */ +int +TALER_TESTING_get_trait_relative_time ( + const struct TALER_TESTING_Command *cmd, + unsigned int index, + const struct GNUNET_TIME_Relative **time); + + +/** + * Offer a relative time. + * + * @param index associate the object with this index + * @param time which object should be returned + * @return the trait. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_relative_time ( + unsigned int index, + const struct GNUNET_TIME_Relative *time); + #endif diff --git a/src/include/taler_util.h b/src/include/taler_util.h index c7bf9c02a..22d7f7f2a 100644 --- a/src/include/taler_util.h +++ b/src/include/taler_util.h @@ -298,4 +298,52 @@ char * TALER_xtalerbank_account_from_payto (const char *payto); +/** + * Possible values for a binary filter. + */ +enum TALER_EXCHANGE_YesNoAll +{ + /** + * If condition is yes. + */ + TALER_EXCHANGE_YNA_YES = 1, + + /** + * If condition is no. + */ + TALER_EXCHANGE_YNA_NO = 2, + + /** + * Condition disabled. + */ + TALER_EXCHANGE_YNA_ALL = 3 +}; + + +/** + * Convert query argument to @a yna value. + * + * @param connection connection to take query argument from + * @param arg argument to try for + * @param default_val value to assign if the argument is not present + * @param[out] value to set + * @return true on success, false if the parameter was malformed + */ +bool +TALER_arg_to_yna (struct MHD_Connection *connection, + const char *arg, + enum TALER_EXCHANGE_YesNoAll default_val, + enum TALER_EXCHANGE_YesNoAll *yna); + + +/** + * Convert YNA value to a string. + * + * @param yna value to convert + * @return string representation ("yes"/"no"/"all"). + */ +const char * +TALER_yna_to_string (enum TALER_EXCHANGE_YesNoAll yna); + + #endif diff --git a/src/lib/auditor_api_deposit_confirmation.c b/src/lib/auditor_api_deposit_confirmation.c index cddfe8b14..1856a89f4 100644 --- a/src/lib/auditor_api_deposit_confirmation.c +++ b/src/lib/auditor_api_deposit_confirmation.c @@ -148,7 +148,7 @@ handle_deposit_confirmation_finished (void *cls, * * @param h_wire hash of merchant wire details * @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the auditor) - * @param timestamp timestamp when the contract was finalized, must not be too far in the future + * @param exchange_timestamp timestamp when the deposit was received by the wallet * @param refund_deadline date until which the merchant can issue a refund to the customer via the auditor (can be zero if refunds are not allowed); must not be after the @a wire_deadline * @param amount_without_fee the amount confirmed to be wired by the exchange to the merchant * @param coin_pub coin’s public key @@ -165,7 +165,7 @@ handle_deposit_confirmation_finished (void *cls, static int verify_signatures (const struct GNUNET_HashCode *h_wire, const struct GNUNET_HashCode *h_contract_terms, - struct GNUNET_TIME_Absolute timestamp, + struct GNUNET_TIME_Absolute exchange_timestamp, struct GNUNET_TIME_Absolute refund_deadline, const struct TALER_Amount *amount_without_fee, const struct TALER_CoinSpendPublicKeyP *coin_pub, @@ -184,7 +184,7 @@ verify_signatures (const struct GNUNET_HashCode *h_wire, .purpose.size = htonl (sizeof (dc)), .h_contract_terms = *h_contract_terms, .h_wire = *h_wire, - .timestamp = GNUNET_TIME_absolute_hton (timestamp), + .exchange_timestamp = GNUNET_TIME_absolute_hton (exchange_timestamp), .refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline), .coin_pub = *coin_pub, .merchant = *merchant_pub @@ -256,7 +256,7 @@ verify_signatures (const struct GNUNET_HashCode *h_wire, * @param auditor the auditor handle; the auditor must be ready to operate * @param h_wire hash of merchant wire details * @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the auditor) - * @param timestamp timestamp when the contract was finalized, must not be too far in the future + * @param exchange_timestamp timestamp when deposit was received by the exchange * @param refund_deadline date until which the merchant can issue a refund to the customer via the auditor (can be zero if refunds are not allowed); must not be after the @a wire_deadline * @param amount_without_fee the amount confirmed to be wired by the exchange to the merchant * @param coin_pub coin’s public key @@ -278,7 +278,7 @@ TALER_AUDITOR_deposit_confirmation ( struct TALER_AUDITOR_Handle *auditor, const struct GNUNET_HashCode *h_wire, const struct GNUNET_HashCode *h_contract_terms, - struct GNUNET_TIME_Absolute timestamp, + struct GNUNET_TIME_Absolute exchange_timestamp, struct GNUNET_TIME_Absolute refund_deadline, const struct TALER_Amount *amount_without_fee, const struct TALER_CoinSpendPublicKeyP *coin_pub, @@ -298,7 +298,7 @@ TALER_AUDITOR_deposit_confirmation ( json_t *deposit_confirmation_obj; CURL *eh; - (void) GNUNET_TIME_round_abs (×tamp); + (void) GNUNET_TIME_round_abs (&exchange_timestamp); (void) GNUNET_TIME_round_abs (&refund_deadline); (void) GNUNET_TIME_round_abs (&ep_start); (void) GNUNET_TIME_round_abs (&ep_expire); @@ -308,7 +308,7 @@ TALER_AUDITOR_deposit_confirmation ( if (GNUNET_OK != verify_signatures (h_wire, h_contract_terms, - timestamp, + exchange_timestamp, refund_deadline, amount_without_fee, coin_pub, @@ -336,7 +336,8 @@ TALER_AUDITOR_deposit_confirmation ( "h_wire", GNUNET_JSON_from_data_auto (h_wire), "h_contract_terms", GNUNET_JSON_from_data_auto ( h_contract_terms), - "timestamp", GNUNET_JSON_from_time_abs (timestamp), + "exchange_timestamp", GNUNET_JSON_from_time_abs ( + exchange_timestamp), "refund_deadline", GNUNET_JSON_from_time_abs (refund_deadline), "amount_without_fee", TALER_JSON_from_amount ( amount_without_fee), diff --git a/src/lib/exchange_api_common.c b/src/lib/exchange_api_common.c index 2cde8d136..e7e87487b 100644 --- a/src/lib/exchange_api_common.c +++ b/src/lib/exchange_api_common.c @@ -146,11 +146,12 @@ TALER_EXCHANGE_parse_reserve_history ( { struct TALER_ReserveSignatureP sig; struct TALER_WithdrawRequestPS withdraw_purpose; + struct TALER_Amount withdraw_fee; struct GNUNET_JSON_Specification withdraw_spec[] = { GNUNET_JSON_spec_fixed_auto ("reserve_sig", &sig), - TALER_JSON_spec_amount_nbo ("withdraw_fee", - &withdraw_purpose.withdraw_fee), + TALER_JSON_spec_amount ("withdraw_fee", + &withdraw_fee), GNUNET_JSON_spec_fixed_auto ("h_denom_pub", &withdraw_purpose.h_denomination_pub), GNUNET_JSON_spec_fixed_auto ("h_coin_envelope", @@ -189,26 +190,23 @@ TALER_EXCHANGE_parse_reserve_history ( { const struct TALER_EXCHANGE_Keys *key_state; const struct TALER_EXCHANGE_DenomPublicKey *dki; - struct TALER_Amount fee; key_state = TALER_EXCHANGE_get_keys (exchange); dki = TALER_EXCHANGE_get_denomination_key_by_hash (key_state, &withdraw_purpose. h_denomination_pub); - TALER_amount_ntoh (&fee, - &withdraw_purpose.withdraw_fee); if ( (GNUNET_YES != - TALER_amount_cmp_currency (&fee, + TALER_amount_cmp_currency (&withdraw_fee, &dki->fee_withdraw)) || (0 != - TALER_amount_cmp (&fee, + TALER_amount_cmp (&withdraw_fee, &dki->fee_withdraw)) ) { GNUNET_break_op (0); GNUNET_JSON_parse_free (withdraw_spec); return GNUNET_SYSERR; } - rh->details.withdraw.fee = fee; + rh->details.withdraw.fee = withdraw_fee; } rh->details.withdraw.out_authorization_sig = json_object_get (transaction, @@ -526,7 +524,7 @@ TALER_EXCHANGE_verify_coin_history ( GNUNET_JSON_spec_fixed_auto ("h_wire", &dr.h_wire), GNUNET_JSON_spec_absolute_time_nbo ("timestamp", - &dr.timestamp), + &dr.wallet_timestamp), GNUNET_JSON_spec_absolute_time_nbo ("refund_deadline", &dr.refund_deadline), TALER_JSON_spec_amount_nbo ("deposit_fee", @@ -634,9 +632,16 @@ TALER_EXCHANGE_verify_coin_history ( else if (0 == strcasecmp (type, "REFUND")) { - struct TALER_RefundRequestPS rr; struct TALER_MerchantSignatureP sig; + struct TALER_Amount refund_fee; + struct TALER_RefundRequestPS rr = { + .purpose.size = htonl (sizeof (rr)), + .purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND), + .coin_pub = *coin_pub + }; struct GNUNET_JSON_Specification spec[] = { + TALER_JSON_spec_amount ("refund_fee", + &refund_fee), GNUNET_JSON_spec_fixed_auto ("merchant_sig", &sig), GNUNET_JSON_spec_fixed_auto ("h_contract_terms", @@ -645,8 +650,6 @@ TALER_EXCHANGE_verify_coin_history ( &rr.merchant), GNUNET_JSON_spec_uint64 ("rtransaction_id", &rr.rtransaction_id), - TALER_JSON_spec_amount_nbo ("refund_fee", - &rr.refund_fee), GNUNET_JSON_spec_end () }; @@ -658,9 +661,6 @@ TALER_EXCHANGE_verify_coin_history ( GNUNET_break_op (0); return GNUNET_SYSERR; } - rr.purpose.size = htonl (sizeof (rr)); - rr.purpose.purpose = htonl (TALER_SIGNATURE_MERCHANT_REFUND); - rr.coin_pub = *coin_pub; TALER_amount_hton (&rr.refund_amount, &amount); if (GNUNET_OK != @@ -683,13 +683,11 @@ TALER_EXCHANGE_verify_coin_history ( /* check that refund fee matches our expectations from /keys! */ if (NULL != dk) { - TALER_amount_ntoh (&fee, - &rr.refund_fee); if ( (GNUNET_YES != - TALER_amount_cmp_currency (&fee, + TALER_amount_cmp_currency (&refund_fee, &dk->fee_refund)) || (0 != - TALER_amount_cmp (&fee, + TALER_amount_cmp (&refund_fee, &dk->fee_refund)) ) { GNUNET_break_op (0); diff --git a/src/lib/exchange_api_deposit.c b/src/lib/exchange_api_deposit.c index 5f3749931..351fa7a10 100644 --- a/src/lib/exchange_api_deposit.c +++ b/src/lib/exchange_api_deposit.c @@ -160,7 +160,7 @@ auditor_cb (void *cls, ah, &dh->depconf.h_wire, &dh->depconf.h_contract_terms, - GNUNET_TIME_absolute_ntoh (dh->depconf.timestamp), + GNUNET_TIME_absolute_ntoh (dh->depconf.exchange_timestamp), GNUNET_TIME_absolute_ntoh (dh->depconf.refund_deadline), &amount_without_fee, &dh->depconf.coin_pub, @@ -196,8 +196,10 @@ verify_deposit_signature_ok (struct TALER_EXCHANGE_DepositHandle *dh, { const struct TALER_EXCHANGE_Keys *key_state; struct GNUNET_JSON_Specification spec[] = { - GNUNET_JSON_spec_fixed_auto ("sig", exchange_sig), - GNUNET_JSON_spec_fixed_auto ("pub", exchange_pub), + GNUNET_JSON_spec_fixed_auto ("exchange_sig", exchange_sig), + GNUNET_JSON_spec_fixed_auto ("exchange_pub", exchange_pub), + GNUNET_JSON_spec_absolute_time_nbo ("exchange_timestamp", + &dh->depconf.exchange_timestamp), GNUNET_JSON_spec_end () }; @@ -386,6 +388,7 @@ handle_deposit_finished (void *cls, } dh->cb (dh->cb_cls, &hr, + GNUNET_TIME_absolute_ntoh (dh->depconf.exchange_timestamp), es, ep); TALER_EXCHANGE_deposit_cancel (dh); @@ -429,7 +432,7 @@ verify_signatures (const struct TALER_EXCHANGE_DenomPublicKey *dki, .purpose.size = htonl (sizeof (dr)), .h_contract_terms = *h_contract_terms, .h_wire = *h_wire, - .timestamp = GNUNET_TIME_absolute_hton (timestamp), + .wallet_timestamp = GNUNET_TIME_absolute_hton (timestamp), .refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline), .merchant = *merchant_pub, .coin_pub = *coin_pub @@ -488,6 +491,59 @@ verify_signatures (const struct TALER_EXCHANGE_DenomPublicKey *dki, /** + * Sign a deposit permission. Function for wallets. + * + * @param amount the amount to be deposited + * @param deposit_fee the deposit fee we expect to pay + * @param h_wire hash of the merchant’s account details + * @param h_contract_terms hash of the contact of the merchant with the customer (further details are never disclosed to the exchange) + * @param coin_priv coin’s private key + * @param wallet_timestamp timestamp when the contract was finalized, must not be too far in the future + * @param merchant_pub the public key of the merchant (used to identify the merchant for refund requests) + * @param refund_deadline date until which the merchant can issue a refund to the customer via the exchange (can be zero if refunds are not allowed); must not be after the @a wire_deadline + * @param[out] coin_sig set to the signature made with purpose #TALER_SIGNATURE_WALLET_COIN_DEPOSIT + */ +void +TALER_EXCHANGE_deposit_permission_sign ( + const struct TALER_Amount *amount, + const struct TALER_Amount *deposit_fee, + const struct GNUNET_HashCode *h_wire, + const struct GNUNET_HashCode *h_contract_terms, + const struct TALER_CoinSpendPrivateKeyP *coin_priv, + struct GNUNET_TIME_Absolute wallet_timestamp, + const struct TALER_MerchantPublicKeyP *merchant_pub, + struct GNUNET_TIME_Absolute refund_deadline, + struct TALER_CoinSpendSignatureP *coin_sig) +{ + struct TALER_DepositRequestPS dr = { + .purpose.size = htonl + (sizeof (dr)), + .purpose.purpose = htonl + (TALER_SIGNATURE_WALLET_COIN_DEPOSIT), + .h_contract_terms = *h_contract_terms, + .h_wire = *h_wire, + .wallet_timestamp = GNUNET_TIME_absolute_hton (wallet_timestamp), + .refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline), + .merchant = *merchant_pub + }; + + GNUNET_assert (GNUNET_OK == + GNUNET_TIME_round_abs (&wallet_timestamp)); + GNUNET_assert (GNUNET_OK == + GNUNET_TIME_round_abs (&refund_deadline)); + GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv->eddsa_priv, + &dr.coin_pub.eddsa_pub); + TALER_amount_hton (&dr.amount_with_fee, + amount); + TALER_amount_hton (&dr.deposit_fee, + deposit_fee); + GNUNET_CRYPTO_eddsa_sign (&coin_priv->eddsa_priv, + &dr, + &coin_sig->eddsa_signature); +} + + +/** * Submit a deposit permission to the exchange and get the exchange's response. * Note that while we return the response verbatim to the caller for * further processing, we do already verify that the response is @@ -658,7 +714,7 @@ TALER_EXCHANGE_deposit (struct TALER_EXCHANGE_Handle *exchange, TALER_SIGNATURE_EXCHANGE_CONFIRM_DEPOSIT); dh->depconf.h_contract_terms = *h_contract_terms; dh->depconf.h_wire = h_wire; - dh->depconf.timestamp = GNUNET_TIME_absolute_hton (timestamp); + /* dh->depconf.exchange_timestamp; -- initialized later from exchange reply! */ dh->depconf.refund_deadline = GNUNET_TIME_absolute_hton (refund_deadline); TALER_amount_hton (&dh->depconf.amount_without_fee, &amount_without_fee); diff --git a/src/lib/exchange_api_deposits_get.c b/src/lib/exchange_api_deposits_get.c index aecd88240..004a24d42 100644 --- a/src/lib/exchange_api_deposits_get.c +++ b/src/lib/exchange_api_deposits_get.c @@ -33,7 +33,7 @@ /** - * @brief A Deposit Wtid Handle + * @brief A Deposit Get Handle */ struct TALER_EXCHANGE_DepositGetHandle { @@ -84,31 +84,19 @@ struct TALER_EXCHANGE_DepositGetHandle * * @param dwh deposit wtid handle * @param json json reply with the signature - * @param[out] exchange_pub set to the exchange's public key + * @param exchange_pub the exchange's public key + * @param exchange_sig the exchange's signature * @return #GNUNET_OK if the signature is valid, #GNUNET_SYSERR if not */ static int verify_deposit_wtid_signature_ok ( const struct TALER_EXCHANGE_DepositGetHandle *dwh, const json_t *json, - struct TALER_ExchangePublicKeyP *exchange_pub) + const struct TALER_ExchangePublicKeyP *exchange_pub, + const struct TALER_ExchangeSignatureP *exchange_sig) { - struct TALER_ExchangeSignatureP exchange_sig; const struct TALER_EXCHANGE_Keys *key_state; - struct GNUNET_JSON_Specification spec[] = { - GNUNET_JSON_spec_fixed_auto ("exchange_sig", &exchange_sig), - GNUNET_JSON_spec_fixed_auto ("exchange_pub", exchange_pub), - GNUNET_JSON_spec_end () - }; - if (GNUNET_OK != - GNUNET_JSON_parse (json, - spec, - NULL, NULL)) - { - GNUNET_break_op (0); - return GNUNET_SYSERR; - } key_state = TALER_EXCHANGE_get_keys (dwh->exchange); if (GNUNET_OK != TALER_EXCHANGE_test_signing_key (key_state, @@ -120,7 +108,7 @@ verify_deposit_wtid_signature_ok ( if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE, &dwh->depconf, - &exchange_sig.eddsa_signature, + &exchange_sig->eddsa_signature, &exchange_pub->eddsa_pub)) { GNUNET_break_op (0); @@ -144,12 +132,6 @@ handle_deposit_wtid_finished (void *cls, const void *response) { struct TALER_EXCHANGE_DepositGetHandle *dwh = cls; - const struct TALER_WireTransferIdentifierRawP *wtid = NULL; - struct GNUNET_TIME_Absolute execution_time = GNUNET_TIME_UNIT_FOREVER_ABS; - const struct TALER_Amount *coin_contribution = NULL; - struct TALER_Amount coin_contribution_s; - struct TALER_ExchangePublicKeyP exchange_pub; - struct TALER_ExchangePublicKeyP *ep = NULL; const json_t *j = response; struct TALER_EXCHANGE_HttpResponse hr = { .reply = j, @@ -164,10 +146,13 @@ handle_deposit_wtid_finished (void *cls, break; case MHD_HTTP_OK: { + struct TALER_EXCHANGE_DepositData dd; struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_fixed_auto ("wtid", &dwh->depconf.wtid), - GNUNET_JSON_spec_absolute_time ("execution_time", &execution_time), - TALER_JSON_spec_amount ("coin_contribution", &coin_contribution_s), + GNUNET_JSON_spec_absolute_time ("execution_time", &dd.execution_time), + TALER_JSON_spec_amount ("coin_contribution", &dd.coin_contribution), + GNUNET_JSON_spec_fixed_auto ("exchange_sig", &dd.exchange_sig), + GNUNET_JSON_spec_fixed_auto ("exchange_pub", &dd.exchange_pub), GNUNET_JSON_spec_end () }; @@ -181,15 +166,15 @@ handle_deposit_wtid_finished (void *cls, hr.ec = TALER_EC_DEPOSITS_INVALID_BODY_BY_EXCHANGE; break; } - wtid = &dwh->depconf.wtid; - dwh->depconf.execution_time = GNUNET_TIME_absolute_hton (execution_time); + dwh->depconf.execution_time = GNUNET_TIME_absolute_hton ( + dd.execution_time); TALER_amount_hton (&dwh->depconf.coin_contribution, - &coin_contribution_s); - coin_contribution = &coin_contribution_s; + &dd.coin_contribution); if (GNUNET_OK != verify_deposit_wtid_signature_ok (dwh, j, - &exchange_pub)) + &dd.exchange_pub, + &dd.exchange_sig)) { GNUNET_break_op (0); hr.http_status = 0; @@ -197,13 +182,19 @@ handle_deposit_wtid_finished (void *cls, } else { - ep = &exchange_pub; + dd.wtid = dwh->depconf.wtid; + dwh->cb (dwh->cb_cls, + &hr, + &dd); + TALER_EXCHANGE_deposits_get_cancel (dwh); + return; } } break; case MHD_HTTP_ACCEPTED: { /* Transaction known, but not executed yet */ + struct GNUNET_TIME_Absolute execution_time; struct GNUNET_JSON_Specification spec[] = { GNUNET_JSON_spec_absolute_time ("execution_time", &execution_time), GNUNET_JSON_spec_end () @@ -219,6 +210,18 @@ handle_deposit_wtid_finished (void *cls, hr.ec = TALER_EC_DEPOSITS_INVALID_BODY_BY_EXCHANGE; break; } + else + { + struct TALER_EXCHANGE_DepositData dd = { + .execution_time = execution_time + }; + + dwh->cb (dwh->cb_cls, + &hr, + &dd); + TALER_EXCHANGE_deposits_get_cancel (dwh); + return; + } } break; case MHD_HTTP_BAD_REQUEST: @@ -259,10 +262,7 @@ handle_deposit_wtid_finished (void *cls, } dwh->cb (dwh->cb_cls, &hr, - ep, - wtid, - execution_time, - coin_contribution); + NULL); TALER_EXCHANGE_deposits_get_cancel (dwh); } diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c index 6fa8979d0..283f77043 100644 --- a/src/lib/exchange_api_handle.c +++ b/src/lib/exchange_api_handle.c @@ -39,7 +39,7 @@ * Which version of the Taler protocol is implemented * by this library? Used to determine compatibility. */ -#define EXCHANGE_PROTOCOL_CURRENT 7 +#define EXCHANGE_PROTOCOL_CURRENT 8 /** * How many versions are we backwards compatible with? diff --git a/src/lib/exchange_api_melt.c b/src/lib/exchange_api_melt.c index f89036e40..0695f997b 100644 --- a/src/lib/exchange_api_melt.c +++ b/src/lib/exchange_api_melt.c @@ -445,11 +445,11 @@ TALER_EXCHANGE_melt (struct TALER_EXCHANGE_Handle *exchange, char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2]; char *end; - end = GNUNET_STRINGS_data_to_string (&melt.coin_pub, - sizeof (struct - TALER_CoinSpendPublicKeyP), - pub_str, - sizeof (pub_str)); + end = GNUNET_STRINGS_data_to_string ( + &melt.coin_pub, + sizeof (struct TALER_CoinSpendPublicKeyP), + pub_str, + sizeof (pub_str)); *end = '\0'; GNUNET_snprintf (arg_str, sizeof (arg_str), diff --git a/src/lib/exchange_api_refund.c b/src/lib/exchange_api_refund.c index c64dcc97a..1af1f14b9 100644 --- a/src/lib/exchange_api_refund.c +++ b/src/lib/exchange_api_refund.c @@ -81,23 +81,23 @@ struct TALER_EXCHANGE_RefundHandle * Verify that the signature on the "200 OK" response * from the exchange is valid. * - * @param rh refund handle + * @param[in,out] rh refund handle (refund fee added) * @param json json reply with the signature * @param[out] exchange_pub set to the exchange's public key * @param[out] exchange_sig set to the exchange's signature * @return #GNUNET_OK if the signature is valid, #GNUNET_SYSERR if not */ static int -verify_refund_signature_ok (const struct TALER_EXCHANGE_RefundHandle *rh, +verify_refund_signature_ok (struct TALER_EXCHANGE_RefundHandle *rh, const json_t *json, struct TALER_ExchangePublicKeyP *exchange_pub, struct TALER_ExchangeSignatureP *exchange_sig) - { const struct TALER_EXCHANGE_Keys *key_state; struct GNUNET_JSON_Specification spec[] = { - GNUNET_JSON_spec_fixed_auto ("sig", exchange_sig), - GNUNET_JSON_spec_fixed_auto ("pub", exchange_pub), + GNUNET_JSON_spec_fixed_auto ("exchange_sig", exchange_sig), + GNUNET_JSON_spec_fixed_auto ("exchange_pub", exchange_pub), + TALER_JSON_spec_amount_nbo ("refund_fee", &rh->depconf.refund_fee), GNUNET_JSON_spec_end () }; @@ -148,12 +148,15 @@ handle_refund_finished (void *cls, struct TALER_ExchangeSignatureP exchange_sig; struct TALER_ExchangePublicKeyP *ep = NULL; struct TALER_ExchangeSignatureP *es = NULL; + struct TALER_Amount ra; + const struct TALER_Amount *rf = NULL; const json_t *j = response; struct TALER_EXCHANGE_HttpResponse hr = { .reply = j, .http_status = (unsigned int) response_code }; + rh->job = NULL; switch (response_code) { @@ -175,6 +178,9 @@ handle_refund_finished (void *cls, { ep = &exchange_pub; es = &exchange_sig; + TALER_amount_ntoh (&ra, + &rh->depconf.refund_fee); + rf = &ra; } break; case MHD_HTTP_BAD_REQUEST: @@ -233,6 +239,7 @@ handle_refund_finished (void *cls, } rh->cb (rh->cb_cls, &hr, + rf, ep, es); TALER_EXCHANGE_refund_cancel (rh); @@ -256,7 +263,6 @@ handle_refund_finished (void *cls, * @param amount the amount to be refunded; must be larger than the refund fee * (as that fee is still being subtracted), and smaller than the amount * (with deposit fee) of the original deposit contribution of this coin - * @param refund_fee fee applicable to this coin for the refund * @param h_contract_terms hash of the contact of the merchant with the customer that is being refunded * @param coin_pub coin’s public key of the coin from the original deposit operation * @param rtransaction_id transaction id for the transaction between merchant and customer (of refunding operation); @@ -272,7 +278,6 @@ handle_refund_finished (void *cls, struct TALER_EXCHANGE_RefundHandle * TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange, const struct TALER_Amount *amount, - const struct TALER_Amount *refund_fee, const struct GNUNET_HashCode *h_contract_terms, const struct TALER_CoinSpendPublicKeyP *coin_pub, uint64_t rtransaction_id, @@ -294,14 +299,11 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange, rr.rtransaction_id = GNUNET_htonll (rtransaction_id); TALER_amount_hton (&rr.refund_amount, amount); - TALER_amount_hton (&rr.refund_fee, - refund_fee); GNUNET_CRYPTO_eddsa_sign (&merchant_priv->eddsa_priv, &rr, &merchant_sig.eddsa_sig); return TALER_EXCHANGE_refund2 (exchange, amount, - refund_fee, h_contract_terms, coin_pub, rtransaction_id, @@ -329,7 +331,6 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange, * @param amount the amount to be refunded; must be larger than the refund fee * (as that fee is still being subtracted), and smaller than the amount * (with deposit fee) of the original deposit contribution of this coin - * @param refund_fee fee applicable to this coin for the refund * @param h_contract_terms hash of the contact of the merchant with the customer that is being refunded * @param coin_pub coin’s public key of the coin from the original deposit operation * @param rtransaction_id transaction id for the transaction between merchant and customer (of refunding operation); @@ -346,7 +347,6 @@ TALER_EXCHANGE_refund (struct TALER_EXCHANGE_Handle *exchange, struct TALER_EXCHANGE_RefundHandle * TALER_EXCHANGE_refund2 (struct TALER_EXCHANGE_Handle *exchange, const struct TALER_Amount *amount, - const struct TALER_Amount *refund_fee, const struct GNUNET_HashCode *h_contract_terms, const struct TALER_CoinSpendPublicKeyP *coin_pub, uint64_t rtransaction_id, @@ -376,12 +376,11 @@ TALER_EXCHANGE_refund2 (struct TALER_EXCHANGE_Handle *exchange, "/coins/%s/refund", pub_str); } - refund_obj = json_pack ("{s:o, s:o," /* amount/fee */ + refund_obj = json_pack ("{s:o," /* amount */ " s:o," /* h_contract_terms */ " s:I," /* rtransaction id */ " s:o, s:o}", /* merchant_pub, merchant_sig */ "refund_amount", TALER_JSON_from_amount (amount), - "refund_fee", TALER_JSON_from_amount (refund_fee), "h_contract_terms", GNUNET_JSON_from_data_auto ( h_contract_terms), "rtransaction_id", (json_int_t) rtransaction_id, @@ -410,8 +409,6 @@ TALER_EXCHANGE_refund2 (struct TALER_EXCHANGE_Handle *exchange, rh->depconf.rtransaction_id = GNUNET_htonll (rtransaction_id); TALER_amount_hton (&rh->depconf.refund_amount, amount); - TALER_amount_hton (&rh->depconf.refund_fee, - refund_fee); eh = TALER_EXCHANGE_curl_easy_get_ (rh->url); if ( (NULL == eh) || diff --git a/src/lib/exchange_api_transfers_get.c b/src/lib/exchange_api_transfers_get.c index 552536958..6b5bba8e8 100644 --- a/src/lib/exchange_api_transfers_get.c +++ b/src/lib/exchange_api_transfers_get.c @@ -85,24 +85,18 @@ check_transfers_get_response_ok ( const json_t *json) { json_t *details_j; - struct GNUNET_HashCode h_wire; - struct GNUNET_TIME_Absolute exec_time; - struct TALER_Amount total_amount; + struct TALER_EXCHANGE_TransferData td; struct TALER_Amount total_expected; - struct TALER_Amount wire_fee; struct TALER_MerchantPublicKeyP merchant_pub; - unsigned int num_details; - struct TALER_ExchangePublicKeyP exchange_pub; - struct TALER_ExchangeSignatureP exchange_sig; struct GNUNET_JSON_Specification spec[] = { - TALER_JSON_spec_amount ("total", &total_amount), - TALER_JSON_spec_amount ("wire_fee", &wire_fee), + TALER_JSON_spec_amount ("total", &td.total_amount), + TALER_JSON_spec_amount ("wire_fee", &td.wire_fee), GNUNET_JSON_spec_fixed_auto ("merchant_pub", &merchant_pub), - GNUNET_JSON_spec_fixed_auto ("h_wire", &h_wire), - GNUNET_JSON_spec_absolute_time ("execution_time", &exec_time), + GNUNET_JSON_spec_fixed_auto ("h_wire", &td.h_wire), + GNUNET_JSON_spec_absolute_time ("execution_time", &td.execution_time), GNUNET_JSON_spec_json ("deposits", &details_j), - GNUNET_JSON_spec_fixed_auto ("exchange_sig", &exchange_sig), - GNUNET_JSON_spec_fixed_auto ("exchange_pub", &exchange_pub), + GNUNET_JSON_spec_fixed_auto ("exchange_sig", &td.exchange_sig), + GNUNET_JSON_spec_fixed_auto ("exchange_pub", &td.exchange_pub), GNUNET_JSON_spec_end () }; struct TALER_EXCHANGE_HttpResponse hr = { @@ -119,22 +113,32 @@ check_transfers_get_response_ok ( return GNUNET_SYSERR; } if (GNUNET_OK != - TALER_amount_get_zero (total_amount.currency, + TALER_amount_get_zero (td.total_amount.currency, &total_expected)) { GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); return GNUNET_SYSERR; } - num_details = json_array_size (details_j); + if (GNUNET_OK != + TALER_EXCHANGE_test_signing_key ( + TALER_EXCHANGE_get_keys (wdh->exchange), + &td.exchange_pub)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + return GNUNET_SYSERR; + } + td.details_length = json_array_size (details_j); { - struct TALER_TrackTransferDetails details[num_details]; - unsigned int i; struct GNUNET_HashContext *hash_context; - struct TALER_WireDepositDetailP dd; - struct TALER_WireDepositDataPS wdp; + struct TALER_TrackTransferDetails *details; + details = GNUNET_new_array (td.details_length, + struct TALER_TrackTransferDetails); + td.details = details; hash_context = GNUNET_CRYPTO_hash_context_start (); - for (i = 0; i<num_details; i++) + for (unsigned int i = 0; i<td.details_length; i++) { struct TALER_TrackTransferDetails *detail = &details[i]; struct json_t *detail_j = json_array_get (details_j, i); @@ -147,25 +151,17 @@ check_transfers_get_response_ok ( GNUNET_JSON_spec_end () }; - if (GNUNET_OK != - GNUNET_JSON_parse (detail_j, - spec_detail, - NULL, NULL)) - { - GNUNET_break_op (0); - GNUNET_CRYPTO_hash_context_abort (hash_context); - GNUNET_JSON_parse_free (spec); - return GNUNET_SYSERR; - } - /* build up big hash for signature checking later */ - dd.h_contract_terms = detail->h_contract_terms; - dd.execution_time = GNUNET_TIME_absolute_hton (exec_time); - dd.coin_pub = detail->coin_pub; - TALER_amount_hton (&dd.deposit_value, - &detail->coin_value); - TALER_amount_hton (&dd.deposit_fee, - &detail->coin_fee); - if ( (0 > + if ( (GNUNET_OK != + GNUNET_JSON_parse (detail_j, + spec_detail, + NULL, NULL)) || + (GNUNET_OK != + TALER_amount_cmp_currency (&total_expected, + &detail->coin_value)) || + (GNUNET_OK != + TALER_amount_cmp_currency (&total_expected, + &detail->coin_fee)) || + (0 > TALER_amount_add (&total_expected, &total_expected, &detail->coin_value)) || @@ -177,71 +173,78 @@ check_transfers_get_response_ok ( GNUNET_break_op (0); GNUNET_CRYPTO_hash_context_abort (hash_context); GNUNET_JSON_parse_free (spec); + GNUNET_free (details); return GNUNET_SYSERR; } - GNUNET_CRYPTO_hash_context_read ( - hash_context, - &dd, - sizeof (struct TALER_WireDepositDetailP)); + /* build up big hash for signature checking later */ + { + struct TALER_WireDepositDetailP dd; + + dd.h_contract_terms = detail->h_contract_terms; + dd.execution_time = GNUNET_TIME_absolute_hton (td.execution_time); + dd.coin_pub = detail->coin_pub; + TALER_amount_hton (&dd.deposit_value, + &detail->coin_value); + TALER_amount_hton (&dd.deposit_fee, + &detail->coin_fee); + GNUNET_CRYPTO_hash_context_read (hash_context, + &dd, + sizeof (dd)); + } } /* Check signature */ - wdp.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE_DEPOSIT); - wdp.purpose.size = htonl (sizeof (struct TALER_WireDepositDataPS)); - TALER_amount_hton (&wdp.total, - &total_amount); - TALER_amount_hton (&wdp.wire_fee, - &wire_fee); - wdp.merchant_pub = merchant_pub; - wdp.h_wire = h_wire; - GNUNET_CRYPTO_hash_context_finish (hash_context, - &wdp.h_details); - if (GNUNET_OK != - TALER_EXCHANGE_test_signing_key (TALER_EXCHANGE_get_keys ( - wdh->exchange), - &exchange_pub)) { - GNUNET_break_op (0); - GNUNET_JSON_parse_free (spec); - return GNUNET_SYSERR; - } - if (GNUNET_OK != - GNUNET_CRYPTO_eddsa_verify ( - TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE_DEPOSIT, - &wdp, - &exchange_sig.eddsa_signature, - &exchange_pub.eddsa_pub)) - { - GNUNET_break_op (0); - GNUNET_JSON_parse_free (spec); - return GNUNET_SYSERR; + struct TALER_WireDepositDataPS wdp = { + .purpose.purpose = htonl ( + TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE_DEPOSIT), + .purpose.size = htonl (sizeof (wdp)), + .merchant_pub = merchant_pub, + .h_wire = td.h_wire + }; + + TALER_amount_hton (&wdp.total, + &td.total_amount); + TALER_amount_hton (&wdp.wire_fee, + &td.wire_fee); + GNUNET_CRYPTO_hash_context_finish (hash_context, + &wdp.h_details); + if (GNUNET_OK != + GNUNET_CRYPTO_eddsa_verify ( + TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE_DEPOSIT, + &wdp, + &td.exchange_sig.eddsa_signature, + &td.exchange_pub.eddsa_pub)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + GNUNET_free (details); + return GNUNET_SYSERR; + } } if (0 > TALER_amount_subtract (&total_expected, &total_expected, - &wire_fee)) + &td.wire_fee)) { GNUNET_break_op (0); GNUNET_JSON_parse_free (spec); + GNUNET_free (details); return GNUNET_SYSERR; } if (0 != TALER_amount_cmp (&total_expected, - &total_amount)) + &td.total_amount)) { GNUNET_break_op (0); GNUNET_JSON_parse_free (spec); + GNUNET_free (details); return GNUNET_SYSERR; } wdh->cb (wdh->cb_cls, &hr, - &exchange_pub, - &h_wire, - exec_time, - &total_amount, - &wire_fee, - num_details, - details); + &td); + GNUNET_free (details); } GNUNET_JSON_parse_free (spec); TALER_EXCHANGE_transfers_get_cancel (wdh); @@ -322,12 +325,7 @@ handle_transfers_get_finished (void *cls, } wdh->cb (wdh->cb_cls, &hr, - NULL, - NULL, - GNUNET_TIME_UNIT_ZERO_ABS, - NULL, - NULL, - 0, NULL); + NULL); TALER_EXCHANGE_transfers_get_cancel (wdh); } diff --git a/src/lib/exchange_api_withdraw2.c b/src/lib/exchange_api_withdraw2.c index f9468927a..25f669143 100644 --- a/src/lib/exchange_api_withdraw2.c +++ b/src/lib/exchange_api_withdraw2.c @@ -429,8 +429,6 @@ TALER_EXCHANGE_withdraw2 ( TALER_amount_hton (&req.amount_with_fee, &wh->requested_amount); - TALER_amount_hton (&req.withdraw_fee, - &dk->fee_withdraw); GNUNET_CRYPTO_hash (pd->coin_ev, pd->coin_ev_size, &req.h_coin_envelope); diff --git a/src/mhd/mhd_parsing.c b/src/mhd/mhd_parsing.c index fca54f3ff..2a086e117 100644 --- a/src/mhd/mhd_parsing.c +++ b/src/mhd/mhd_parsing.c @@ -1,6 +1,6 @@ /* This file is part of TALER - Copyright (C) 2014--2019 Taler Systems SA + Copyright (C) 2014--2020 Taler Systems SA TALER is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software @@ -56,7 +56,7 @@ * (we could not even queue an error message, * close HTTP session with MHD_NO) */ -int +enum GNUNET_GenericReturnValue TALER_MHD_parse_post_json (struct MHD_Connection *connection, void **con_cls, const char *upload_data, @@ -186,12 +186,12 @@ TALER_MHD_parse_request_arg_data (struct MHD_Connection *connection, * #GNUNET_NO if json is malformed, error response was generated * #GNUNET_SYSERR on internal error */ -int +enum GNUNET_GenericReturnValue TALER_MHD_parse_json_data (struct MHD_Connection *connection, const json_t *root, struct GNUNET_JSON_Specification *spec) { - int ret; + enum GNUNET_GenericReturnValue ret; const char *error_json_name; unsigned int error_line; @@ -221,6 +221,58 @@ TALER_MHD_parse_json_data (struct MHD_Connection *connection, /** + * Parse JSON object that we (the server!) generated into components based on + * the given field specification. The difference to + * #TALER_MHD_parse_json_data() is that this function will fail + * with an HTTP failure of 500 (internal server error) in case + * parsing fails, instead of blaming it on the client with a + * 400 (#MHD_HTTP_BAD_REQUEST). + * + * @param connection the connection to send an error response to + * @param root the JSON node to start the navigation at. + * @param spec field specification for the parser + * @return + * #GNUNET_YES if navigation was successful (caller is responsible + * for freeing allocated variable-size data using + * GNUNET_JSON_parse_free() when done) + * #GNUNET_NO if json is malformed, error response was generated + * #GNUNET_SYSERR on internal error + */ +enum GNUNET_GenericReturnValue +TALER_MHD_parse_internal_json_data (struct MHD_Connection *connection, + const json_t *root, + struct GNUNET_JSON_Specification *spec) +{ + enum GNUNET_GenericReturnValue ret; + const char *error_json_name; + unsigned int error_line; + + ret = GNUNET_JSON_parse (root, + spec, + &error_json_name, + &error_line); + if (GNUNET_SYSERR == ret) + { + if (NULL == error_json_name) + error_json_name = "<no field>"; + ret = (MHD_YES == + TALER_MHD_reply_json_pack (connection, + MHD_HTTP_INTERNAL_SERVER_ERROR, + "{s:s, s:I, s:s, s:I}", + "hint", "JSON parse error", + "code", + (json_int_t) + TALER_EC_INTERNAL_INVARIANT_FAILURE, + "field", error_json_name, + "line", (json_int_t) error_line)) + ? GNUNET_NO : GNUNET_SYSERR; + return ret; + } + return GNUNET_YES; +} + + +/** * Parse JSON array into components based on the given field * specification. Generates error response on parse errors. * @@ -235,13 +287,13 @@ TALER_MHD_parse_json_data (struct MHD_Connection *connection, * #GNUNET_NO if json is malformed, error response was generated * #GNUNET_SYSERR on internal error */ -int +enum GNUNET_GenericReturnValue TALER_MHD_parse_json_array (struct MHD_Connection *connection, const json_t *root, struct GNUNET_JSON_Specification *spec, ...) { - int ret; + enum GNUNET_GenericReturnValue ret; const char *error_json_name; unsigned int error_line; va_list ap; diff --git a/src/sq/Makefile.am b/src/sq/Makefile.am new file mode 100644 index 000000000..ee4c5eba7 --- /dev/null +++ b/src/sq/Makefile.am @@ -0,0 +1,40 @@ +# This Makefile.am is in the public domain +AM_CPPFLAGS = -I$(top_srcdir)/src/include $(LIBGCRYPT_CFLAGS) $(SQLITE_CPPFLAGS) + +if USE_COVERAGE + AM_CFLAGS = --coverage -O0 + XLIB = -lgcov +endif + +lib_LTLIBRARIES = \ + libtalersq.la + +libtalersq_la_SOURCES = \ + sq_query_helper.c \ + sq_result_helper.c + +libtalersq_la_LIBADD = \ + $(top_builddir)/src/util/libtalerutil.la \ + -lgnunetutil -ljansson \ + -lsqlite3 $(XLIB) + +libtalersq_la_LDFLAGS = \ + $(SQLITE_LDFLAGS) \ + -version-info 0:0:0 \ + -export-dynamic -no-undefined + +TESTS = \ + test_sq + +check_PROGRAMS= \ + test_sq + +test_sq_SOURCES = \ + test_sq.c +test_sq_LDADD = \ + libtalersq.la \ + $(top_builddir)/src/util/libtalerutil.la \ + -lgnunetsq \ + -lgnunetutil \ + -ljansson \ + -lsqlite3 $(XLIB) diff --git a/src/sq/sq_query_helper.c b/src/sq/sq_query_helper.c new file mode 100644 index 000000000..e9070e147 --- /dev/null +++ b/src/sq/sq_query_helper.c @@ -0,0 +1,288 @@ +/* + This file is part of TALER + Copyright (C) 2020 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file sq/sq_query_helper.c + * @brief helper functions for Taler-specific SQLite3 interactions + * @author Jonathan Buchanan + */ +#include "platform.h" +#include <sqlite3.h> +#include <gnunet/gnunet_util_lib.h> +#include <gnunet/gnunet_sq_lib.h> +#include "taler_sq_lib.h" + + +/** + * Function called to convert input argument into SQL parameters. + * + * @param cls closure + * @param data pointer to input argument, here a `struct TALER_Amount` + * @param data_len number of bytes in @a data (if applicable) + * @param stmt sqlite statement to parameters for + * @param off offset of the argument to bind in @a stmt, numbered from 1, + * so immediately suitable for passing to `sqlite3_bind`-functions. + * @return #GNUNET_SYSERR on error, #GNUNET_OK on success + */ +static int +qconv_amount (void *cls, + const void *data, + size_t data_len, + sqlite3_stmt *stmt, + unsigned int off) +{ + const struct TALER_Amount *amount = data; + + (void) cls; + GNUNET_assert (sizeof (struct TALER_Amount) == data_len); + if (SQLITE_OK != sqlite3_bind_int64 (stmt, + (int) off, + (sqlite3_int64) amount->value)) + return GNUNET_SYSERR; + if (SQLITE_OK != sqlite3_bind_int64 (stmt, + (int) off + 1, + (sqlite3_int64) amount->fraction)) + return GNUNET_SYSERR; + return GNUNET_OK; +} + + +/** + * Generate query parameter for a currency, consisting of the + * components "value", "fraction" in this order. The + * types must be a 64-bit integer and a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_amount (const struct TALER_Amount *x) +{ + struct GNUNET_SQ_QueryParam res = + { &qconv_amount, NULL, x, sizeof (*x), 2 }; + return res; +} + + +/** + * Function called to convert input argument into SQL parameters. + * + * @param cls closure + * @param data pointer to input argument, here a `struct TALER_AmountNBO` + * @param data_len number of bytes in @a data (if applicable) + * @param stmt sqlite statement to parameters for + * @param off offset of the argument to bind in @a stmt, numbered from 1, + * so immediately suitable for passing to `sqlite3_bind`-functions. + * @return #GNUNET_SYSERR on error, #GNUNET_OK on success + */ +static int +qconv_amount_nbo (void *cls, + const void *data, + size_t data_len, + sqlite3_stmt *stmt, + unsigned int off) +{ + const struct TALER_AmountNBO *amount = data; + struct TALER_Amount amount_hbo; + + (void) cls; + TALER_amount_ntoh (&amount_hbo, + amount); + return qconv_amount (cls, + &amount_hbo, + sizeof (struct TALER_Amount), + stmt, + off); +} + + +/** + * Generate query parameter for a currency, consisting of the + * components "value", "fraction" in this order. The + * types must be a 64-bit integer and a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_amount_nbo (const struct TALER_AmountNBO *x) +{ + struct GNUNET_SQ_QueryParam res = + { &qconv_amount_nbo, NULL, x, sizeof (*x), 2 }; + return res; +} + + +/** + * Function called to convert input argument into SQL parameters. + * + * @param cls closure + * @param data pointer to input argument, here a `struct TALER_Amount` + * @param data_len number of bytes in @a data (if applicable) + * @param stmt sqlite statement to parameters for + * @param off offset of the argument to bind in @a stmt, numbered from 1, + * so immediately suitable for passing to `sqlite3_bind`-functions. + * @return #GNUNET_SYSERR on error, #GNUNET_OK on success + */ +static int +qconv_json (void *cls, + const void *data, + size_t data_len, + sqlite3_stmt *stmt, + unsigned int off) +{ + const json_t *json = data; + char *str; + + (void) cls; + (void) data_len; + str = json_dumps (json, JSON_COMPACT); + if (NULL == str) + return GNUNET_SYSERR; + + if (SQLITE_OK != sqlite3_bind_text (stmt, + (int) off, + str, + strlen (str) + 1, + SQLITE_TRANSIENT)) + return GNUNET_SYSERR; + GNUNET_free (str); + return GNUNET_OK; +} + + +/** + * Generate query parameter for a JSON object (stored as a string + * in the DB). Note that @a x must really be a JSON object or array, + * passing just a value (string, integer) is not supported and will + * result in an abort. + * + * @param x pointer to the json object to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_json (const json_t *x) +{ + struct GNUNET_SQ_QueryParam res = + { &qconv_json, NULL, x, sizeof (*x), 1 }; + return res; +} + + +/** + * Function called to convert input argument into SQL parameters. + * + * @param cls closure + * @param data pointer to input argument, here a `struct TALER_Amount` + * @param data_len number of bytes in @a data (if applicable) + * @param stmt sqlite statement to parameters for + * @param off offset of the argument to bind in @a stmt, numbered from 1, + * so immediately suitable for passing to `sqlite3_bind`-functions. + * @return #GNUNET_SYSERR on error, #GNUNET_OK on success + */ +static int +qconv_round_time (void *cls, + const void *data, + size_t data_len, + sqlite3_stmt *stmt, + unsigned int off) +{ + const struct GNUNET_TIME_Absolute *at = data; + struct GNUNET_TIME_Absolute tmp; + + (void) cls; + GNUNET_assert (sizeof (struct GNUNET_TIME_AbsoluteNBO) == data_len); + GNUNET_break (NULL == cls); + tmp = *at; + GNUNET_assert (GNUNET_OK == + GNUNET_TIME_round_abs (&tmp)); + if (SQLITE_OK != sqlite3_bind_int64 (stmt, + (int) off, + (sqlite3_int64) at->abs_value_us)) + return GNUNET_SYSERR; + return GNUNET_OK; +} + + +/** + * Generate query parameter for an absolute time value. + * In contrast to + * #GNUNET_SQ_query_param_absolute_time(), this function + * will abort (!) if the time given is not rounded! + * The database must store a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_absolute_time (const struct GNUNET_TIME_Absolute *x) +{ + struct GNUNET_SQ_QueryParam res = + { &qconv_round_time, NULL, x, sizeof (*x), 1 }; + return res; +} + + +/** + * Function called to convert input argument into SQL parameters. + * + * @param cls closure + * @param data pointer to input argument, here a `struct TALER_Amount` + * @param data_len number of bytes in @a data (if applicable) + * @param stmt sqlite statement to parameters for + * @param off offset of the argument to bind in @a stmt, numbered from 1, + * so immediately suitable for passing to `sqlite3_bind`-functions. + * @return #GNUNET_SYSERR on error, #GNUNET_OK on success + */ +static int +qconv_round_time_abs (void *cls, + const void *data, + size_t data_len, + sqlite3_stmt *stmt, + unsigned int off) +{ + const struct GNUNET_TIME_AbsoluteNBO *at = data; + struct GNUNET_TIME_Absolute tmp; + + (void) cls; + GNUNET_assert (sizeof (struct GNUNET_TIME_AbsoluteNBO) == data_len); + GNUNET_break (NULL == cls); + tmp = GNUNET_TIME_absolute_ntoh (*at); + GNUNET_assert (GNUNET_OK == + GNUNET_TIME_round_abs (&tmp)); + if (SQLITE_OK != sqlite3_bind_int64 (stmt, + (int) off, + (sqlite3_int64) tmp.abs_value_us)) + return GNUNET_SYSERR; + return GNUNET_OK; +} + + +/** + * Generate query parameter for an absolute time value. + * In contrast to + * #GNUNET_SQ_query_param_absolute_time(), this function + * will abort (!) if the time given is not rounded! + * The database must store a 64-bit integer. + * + * @param x pointer to the query parameter to pass + */ +struct GNUNET_SQ_QueryParam +TALER_SQ_query_param_absolute_time_nbo (const struct + GNUNET_TIME_AbsoluteNBO *x) +{ + struct GNUNET_SQ_QueryParam res = + { &qconv_round_time_abs, NULL, x, sizeof (*x), 1 }; + return res; +} + + +/* end of sq/sq_query_helper.c */ diff --git a/src/sq/sq_result_helper.c b/src/sq/sq_result_helper.c new file mode 100644 index 000000000..bc52913b5 --- /dev/null +++ b/src/sq/sq_result_helper.c @@ -0,0 +1,381 @@ +/* + This file is part of TALER + Copyright (C) 2020 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file sq/sq_result_helper.c + * @brief functions to initialize parameter arrays + * @author Jonathan Buchanan + */ +#include "platform.h" +#include <sqlite3.h> +#include <gnunet/gnunet_util_lib.h> +#include <gnunet/gnunet_sq_lib.h> +#include "taler_sq_lib.h" +#include "taler_amount_lib.h" + + +/** + * Extract amount data from a SQLite database + * + * @param cls closure, a `const char *` giving the currency + * @param result where to extract data from + * @param column column to extract data from + * @param[in,out] dst_size where to store size of result, may be NULL + * @param[out] dst where to store the result + * @return + * #GNUNET_YES if all results could be extracted + * #GNUNET_SYSERR if a result was invalid (non-existing field or NULL) + */ +static int +extract_amount (void *cls, + sqlite3_stmt *result, + unsigned int column, + size_t *dst_size, + void *dst) +{ + struct TALER_Amount *amount = dst; + const char *currency = cls; + if ((sizeof (struct TALER_Amount) != *dst_size) || + (SQLITE_INTEGER != sqlite3_column_type (result, + (int) column)) || + (SQLITE_INTEGER != sqlite3_column_type (result, + (int) column + 1))) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + GNUNET_strlcpy (amount->currency, + currency, + TALER_CURRENCY_LEN); + amount->value = (uint64_t) sqlite3_column_int64 (result, + (int) column); + uint64_t frac = (uint64_t) sqlite3_column_int64 (result, + (int) column + 1); + amount->fraction = (uint32_t) frac; + return GNUNET_YES; +} + + +/** + * Currency amount expected. + * + * @param currency the currency to use for @a amount + * @param[out] amount where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_amount (const char *currency, + struct TALER_Amount *amount) +{ + struct GNUNET_SQ_ResultSpec res = { + .conv = &extract_amount, + .cls = (void *) currency, + .dst = (void *) amount, + .dst_size = sizeof (struct TALER_Amount), + .num_params = 2 + }; + + return res; +} + + +/** + * Extract amount data from a SQLite database + * + * @param cls closure, a `const char *` giving the currency + * @param result where to extract data from + * @param column column to extract data from + * @param[in,out] dst_size where to store size of result, may be NULL + * @param[out] dst where to store the result + * @return + * #GNUNET_YES if all results could be extracted + * #GNUNET_SYSERR if a result was invalid (non-existing field or NULL) + */ +static int +extract_amount_nbo (void *cls, + sqlite3_stmt *result, + unsigned int column, + size_t *dst_size, + void *dst) +{ + struct TALER_AmountNBO *amount = dst; + struct TALER_Amount amount_hbo; + size_t amount_hbo_size = sizeof (struct TALER_Amount); + if (GNUNET_YES != extract_amount (cls, + result, + column, + &amount_hbo_size, + &amount_hbo)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + TALER_amount_hton (amount, + &amount_hbo); + return GNUNET_YES; +} + + +/** + * Currency amount expected. + * + * @param currency the currency to use for @a amount + * @param[out] amount where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_amount_nbo (const char *currency, + struct TALER_AmountNBO *amount) +{ + struct GNUNET_SQ_ResultSpec res = { + .conv = &extract_amount_nbo, + .cls = (void *) currency, + .dst = (void *) amount, + .dst_size = sizeof (struct TALER_AmountNBO), + .num_params = 2 + }; + + return res; +} + + +/** + * Extract amount data from a SQLite database + * + * @param cls closure + * @param result where to extract data from + * @param column column to extract data from + * @param[in,out] dst_size where to store size of result, may be NULL + * @param[out] dst where to store the result + * @return + * #GNUNET_YES if all results could be extracted + * #GNUNET_SYSERR if a result was invalid (non-existing field or NULL) + */ +static int +extract_json (void *cls, + sqlite3_stmt *result, + unsigned int column, + size_t *dst_size, + void *dst) +{ + json_t **j_dst = dst; + const char *res; + json_error_t json_error; + size_t slen; + + (void) cls; + (void) dst_size; + if (SQLITE_TEXT != sqlite3_column_type (result, + column)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + res = (const char *) sqlite3_column_text (result, + column); + slen = strlen (res); + *j_dst = json_loadb (res, + slen, + JSON_REJECT_DUPLICATES, + &json_error); + if (NULL == *j_dst) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to parse JSON result for column %d: %s (%s)\n", + column, + json_error.text, + json_error.source); + return GNUNET_SYSERR; + } + return GNUNET_OK; +} + + +/** + * Function called to clean up memory allocated + * by a #GNUNET_SQ_ResultConverter. + * + * @param cls closure + */ +static void +clean_json (void *cls) +{ + json_t **dst = cls; + + (void) cls; + if (NULL != *dst) + { + json_decref (*dst); + *dst = NULL; + } +} + + +/** + * json_t expected. + * + * @param[out] jp where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_json (json_t **jp) +{ + struct GNUNET_SQ_ResultSpec res = { + .conv = &extract_json, + .cleaner = &clean_json, + .dst = (void *) jp, + .cls = (void *) jp, + .num_params = 1 + }; + + return res; +} + + +/** + * Extract amount data from a SQLite database + * + * @param cls closure + * @param result where to extract data from + * @param column column to extract data from + * @param[in,out] dst_size where to store size of result, may be NULL + * @param[out] dst where to store the result + * @return + * #GNUNET_YES if all results could be extracted + * #GNUNET_SYSERR if a result was invalid (non-existing field or NULL) + */ +static int +extract_round_time (void *cls, + sqlite3_stmt *result, + unsigned int column, + size_t *dst_size, + void *dst) +{ + struct GNUNET_TIME_Absolute *udst = dst; + struct GNUNET_TIME_Absolute tmp; + + (void) cls; + if (SQLITE_INTEGER != sqlite3_column_type (result, + (int) column)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + GNUNET_assert (NULL != dst); + if (sizeof (struct GNUNET_TIME_Absolute) != *dst_size) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + tmp.abs_value_us = sqlite3_column_int64 (result, + (int) column); + GNUNET_break (GNUNET_OK == + GNUNET_TIME_round_abs (&tmp)); + *udst = tmp; + return GNUNET_OK; +} + + +/** + * Rounded absolute time expected. + * In contrast to #GNUNET_SQ_query_param_absolute_time_nbo(), + * this function ensures that the result is rounded and can + * be converted to JSON. + * + * @param[out] at where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_absolute_time (struct GNUNET_TIME_Absolute *at) +{ + struct GNUNET_SQ_ResultSpec res = { + .conv = &extract_round_time, + .dst = (void *) at, + .dst_size = sizeof (struct GNUNET_TIME_Absolute), + .num_params = 1 + }; + + return res; +} + + +/** + * Extract amount data from a SQLite database + * + * @param cls closure + * @param result where to extract data from + * @param column column to extract data from + * @param[in,out] dst_size where to store size of result, may be NULL + * @param[out] dst where to store the result + * @return + * #GNUNET_YES if all results could be extracted + * #GNUNET_SYSERR if a result was invalid (non-existing field or NULL) + */ +static int +extract_round_time_nbo (void *cls, + sqlite3_stmt *result, + unsigned int column, + size_t *dst_size, + void *dst) +{ + struct GNUNET_TIME_AbsoluteNBO *udst = dst; + struct GNUNET_TIME_Absolute tmp; + + (void) cls; + if (SQLITE_INTEGER != sqlite3_column_type (result, + (int) column)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + GNUNET_assert (NULL != dst); + if (sizeof (struct GNUNET_TIME_AbsoluteNBO) != *dst_size) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + tmp.abs_value_us = sqlite3_column_int64 (result, + (int) column); + GNUNET_break (GNUNET_OK == + GNUNET_TIME_round_abs (&tmp)); + *udst = GNUNET_TIME_absolute_hton (tmp); + return GNUNET_OK; +} + + +/** + * Rounded absolute time expected. + * In contrast to #GNUNET_SQ_result_spec_absolute_time_nbo(), + * this function ensures that the result is rounded and can + * be converted to JSON. + * + * @param[out] at where to store the result + * @return array entry for the result specification to use + */ +struct GNUNET_SQ_ResultSpec +TALER_SQ_result_spec_absolute_time_nbo (struct GNUNET_TIME_AbsoluteNBO *at) +{ + struct GNUNET_SQ_ResultSpec res = { + .conv = &extract_round_time_nbo, + .dst = (void *) at, + .dst_size = sizeof (struct GNUNET_TIME_AbsoluteNBO), + .num_params = 1 + }; + + return res; +} + + +/* end of sq/sq_result_helper.c */ diff --git a/src/sq/test_sq.c b/src/sq/test_sq.c new file mode 100644 index 000000000..308b65b06 --- /dev/null +++ b/src/sq/test_sq.c @@ -0,0 +1,227 @@ +/* + This file is part of TALER + Copyright (C) 2020 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file sq/test_sq.c + * @brief Tests for SQLite3 convenience API + * @author Jonathan Buchanan + */ +#include "platform.h" +#include "taler_sq_lib.h" + + +/** + * Run actual test queries. + * + * @return 0 on success + */ +static int +run_queries (sqlite3 *db) +{ + struct TALER_Amount hamount; + struct TALER_AmountNBO namount; + json_t *json; + struct GNUNET_TIME_Absolute htime = GNUNET_TIME_absolute_get (); + struct GNUNET_TIME_AbsoluteNBO ntime; + sqlite3_stmt *test_insert; + sqlite3_stmt *test_select; + struct GNUNET_SQ_PrepareStatement ps[] = { + GNUNET_SQ_make_prepare ("INSERT INTO test_sq (" + " hamount_val" + ",hamount_frac" + ",namount_val" + ",namount_frac" + ",json" + ",htime" + ",ntime" + ") VALUES " + "($1, $2, $3, $4, $5, $6, $7)", + &test_insert), + GNUNET_SQ_make_prepare ("SELECT" + " hamount_val" + ",hamount_frac" + ",namount_val" + ",namount_frac" + ",json" + ",htime" + ",ntime" + " FROM test_sq", + &test_select), + GNUNET_SQ_PREPARE_END + }; + int ret = 0; + + GNUNET_assert (GNUNET_OK == + TALER_string_to_amount ("EUR:1.23", + &hamount)); + TALER_amount_hton (&namount, + &hamount); + json = json_object (); + json_object_set_new (json, "foo", json_integer (42)); + GNUNET_assert (NULL != json); + GNUNET_TIME_round_abs (&htime); + ntime = GNUNET_TIME_absolute_hton (htime); + + GNUNET_assert (GNUNET_OK == GNUNET_SQ_prepare (db, + ps)); + + { + struct GNUNET_SQ_QueryParam params_insert[] = { + TALER_SQ_query_param_amount (&hamount), + TALER_SQ_query_param_amount_nbo (&namount), + TALER_SQ_query_param_json (json), + TALER_SQ_query_param_absolute_time (&htime), + TALER_SQ_query_param_absolute_time_nbo (&ntime), + GNUNET_SQ_query_param_end + }; + GNUNET_SQ_reset (db, + test_insert); + GNUNET_assert (GNUNET_OK == GNUNET_SQ_bind (test_insert, + params_insert)); + GNUNET_assert (SQLITE_DONE == sqlite3_step (test_insert)); + sqlite3_finalize (test_insert); + } + + { + struct TALER_Amount result_amount; + struct TALER_AmountNBO nresult_amount; + struct TALER_Amount nresult_amount_converted; + json_t *result_json; + struct GNUNET_TIME_Absolute hresult_time; + struct GNUNET_TIME_AbsoluteNBO nresult_time; + struct GNUNET_SQ_QueryParam params_select[] = { + GNUNET_SQ_query_param_end + }; + struct GNUNET_SQ_ResultSpec results_select[] = { + TALER_SQ_result_spec_amount ("EUR", + &result_amount), + TALER_SQ_result_spec_amount_nbo ("EUR", + &nresult_amount), + TALER_SQ_result_spec_json (&result_json), + TALER_SQ_result_spec_absolute_time (&hresult_time), + TALER_SQ_result_spec_absolute_time_nbo (&nresult_time), + GNUNET_SQ_result_spec_end + }; + + GNUNET_SQ_reset (db, + test_select); + GNUNET_assert (GNUNET_OK == GNUNET_SQ_bind (test_select, + params_select)); + GNUNET_assert (SQLITE_ROW == sqlite3_step (test_select)); + + GNUNET_assert (GNUNET_OK == GNUNET_SQ_extract_result (test_select, + results_select)); + TALER_amount_ntoh (&nresult_amount_converted, + &nresult_amount); + if ((GNUNET_OK != TALER_amount_cmp_currency (&hamount, + &result_amount)) || + (0 != TALER_amount_cmp (&hamount, + &result_amount)) || + (GNUNET_OK != TALER_amount_cmp_currency (&hamount, + &nresult_amount_converted)) || + (0 != TALER_amount_cmp (&hamount, + &nresult_amount_converted)) || + (1 != json_equal (json, + result_json)) || + (htime.abs_value_us != hresult_time.abs_value_us) || + (ntime.abs_value_us__ != nresult_time.abs_value_us__)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Result from database doesn't match input\n"); + ret = 1; + } + GNUNET_SQ_cleanup_result (results_select); + sqlite3_finalize (test_select); + } + json_decref (json); + + return ret; +} + + +int +main (int argc, + const char *const argv[]) +{ + struct GNUNET_SQ_ExecuteStatement es[] = { + GNUNET_SQ_make_execute ("CREATE TEMPORARY TABLE IF NOT EXISTS test_sq (" + " hamount_val INT8 NOT NULL" + ",hamount_frac INT8 NOT NULL" + ",namount_val INT8 NOT NULL" + ",namount_frac INT8 NOT NULL" + ",json VARCHAR NOT NULL" + ",htime INT8 NOT NULL" + ",ntime INT8 NOT NULL" + ")"), + GNUNET_SQ_EXECUTE_STATEMENT_END + }; + sqlite3 *db; + int ret; + + GNUNET_log_setup ("test-pq", + "WARNING", + NULL); + + if (SQLITE_OK != sqlite3_open ("talercheck.db", + &db)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to open SQLite3 database\n"); + return 77; + } + + if (GNUNET_OK != GNUNET_SQ_exec_statements (db, + es)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to create new table\n"); + if ((SQLITE_OK != sqlite3_close (db)) || + (0 != unlink ("talercheck.db"))) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to close db or unlink\n"); + } + return 1; + } + + ret = run_queries (db); + + if (SQLITE_OK != + sqlite3_exec (db, + "DROP TABLE test_sq", + NULL, NULL, NULL)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to drop table\n"); + ret = 1; + } + + if (SQLITE_OK != sqlite3_close (db)) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to close database\n"); + ret = 1; + } + if (0 != unlink ("talercheck.db")) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Failed to unlink test database file\n"); + ret = 1; + } + return ret; +} + + +/* end of sq/test_sq.c */ diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am index d73e89b3c..014faa469 100644 --- a/src/testing/Makefile.am +++ b/src/testing/Makefile.am @@ -61,6 +61,7 @@ libtalertesting_la_SOURCES = \ testing_api_cmd_refund.c \ testing_api_cmd_refresh.c \ testing_api_cmd_revoke.c \ + testing_api_cmd_rewind.c \ testing_api_cmd_serialize_keys.c \ testing_api_cmd_signal.c \ testing_api_cmd_sleep.c \ diff --git a/src/testing/test_auditor_api.c b/src/testing/test_auditor_api.c index 7b6996264..0ff28b29b 100644 --- a/src/testing/test_auditor_api.c +++ b/src/testing/test_auditor_api.c @@ -353,7 +353,6 @@ run (void *cls, TALER_TESTING_cmd_refund ("refund-ok", MHD_HTTP_OK, "EUR:5", - "EUR:0.01", "deposit-refund-1"), /** * Spend 4.99 EUR of the refunded 4.99 EUR coin (1ct gone diff --git a/src/testing/test_exchange_api.c b/src/testing/test_exchange_api.c index 0c3f48379..eb6a2b1bb 100644 --- a/src/testing/test_exchange_api.c +++ b/src/testing/test_exchange_api.c @@ -346,6 +346,8 @@ run (void *cls, NULL, 0, MHD_HTTP_NOT_FOUND), + TALER_TESTING_cmd_sleep ("sleep-before-aggregator", + 1), /* Run transfers. Note that _actual_ aggregation will NOT * happen here, as each deposit operation is run with a * fresh merchant public key, so the aggregator will treat @@ -528,18 +530,15 @@ run (void *cls, TALER_TESTING_cmd_refund ("refund-ok", MHD_HTTP_OK, "EUR:5", - "EUR:0.01", "deposit-refund-1"), TALER_TESTING_cmd_refund ("refund-ok-double", MHD_HTTP_OK, "EUR:5", - "EUR:0.01", "deposit-refund-1"), /* Previous /refund(s) had id == 0. */ TALER_TESTING_cmd_refund_with_id ("refund-conflicting", MHD_HTTP_CONFLICT, "EUR:5", - "EUR:0.01", "deposit-refund-1", 1), /** @@ -573,7 +572,6 @@ run (void *cls, TALER_TESTING_cmd_refund ("refund-fail", MHD_HTTP_GONE, "EUR:4.99", - "EUR:0.01", "deposit-refund-2"), TALER_TESTING_cmd_check_bank_empty ("check-empty-after-refund"), /** @@ -607,7 +605,6 @@ run (void *cls, TALER_TESTING_cmd_refund ("refund-ok-fast", MHD_HTTP_OK, "EUR:5", - "EUR:0.01", "deposit-refund-1b"), /** * Run transfers. This will do the transfer as refund deadline diff --git a/src/testing/test_exchange_api_twisted.c b/src/testing/test_exchange_api_twisted.c index 9aac3d1e3..c99c7410d 100644 --- a/src/testing/test_exchange_api_twisted.c +++ b/src/testing/test_exchange_api_twisted.c @@ -173,12 +173,6 @@ run (void *cls, TALER_TESTING_cmd_refund ("refund-currency-mismatch", MHD_HTTP_BAD_REQUEST, "USD:5", - "USD:0.01", - "deposit-refund-1"), - TALER_TESTING_cmd_refund ("refund-fee-above-amount", - MHD_HTTP_BAD_REQUEST, - "EUR:5", - "EUR:10", "deposit-refund-1"), TALER_TESTING_cmd_flip_upload ("flip-upload", CONFIG_FILE, @@ -186,7 +180,6 @@ run (void *cls, TALER_TESTING_cmd_refund ("refund-bad-sig", MHD_HTTP_FORBIDDEN, "EUR:5", - "EUR:0.01", "deposit-refund-1"), /* This next deposit CMD is only used to provide a @@ -207,17 +200,10 @@ run (void *cls, TALER_TESTING_cmd_refund ("refund-deposit-not-found", MHD_HTTP_NOT_FOUND, "EUR:5", - "EUR:0.01", "deposit-refund-to-fail"), TALER_TESTING_cmd_refund ("refund-insufficient-funds", MHD_HTTP_PRECONDITION_FAILED, "EUR:50", - "EUR:0.01", - "deposit-refund-1"), - TALER_TESTING_cmd_refund ("refund-fee-too-low", - MHD_HTTP_BAD_REQUEST, - "EUR:5", - "EUR:0.000001", "deposit-refund-1"), TALER_TESTING_cmd_end () }; diff --git a/src/testing/test_taler_exchange_aggregator.c b/src/testing/test_taler_exchange_aggregator.c index eaa621cfe..d5c392d3a 100644 --- a/src/testing/test_taler_exchange_aggregator.c +++ b/src/testing/test_taler_exchange_aggregator.c @@ -108,6 +108,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:1", "EUR:0.1"), @@ -126,6 +127,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:1", "EUR:0.1"), @@ -134,6 +136,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:1", "EUR:0.1"), @@ -153,6 +156,7 @@ run (void *cls, &dbc, "bob", "4", + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:1", "EUR:0.1"), @@ -160,6 +164,7 @@ run (void *cls, &dbc, "bob", "5", + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:1", "EUR:0.1"), @@ -167,6 +172,7 @@ run (void *cls, &dbc, "alice", "4", + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:1", "EUR:0.1"), @@ -195,6 +201,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), @@ -204,6 +211,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), @@ -229,6 +237,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10), @@ -239,6 +248,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), @@ -263,6 +273,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.102", "EUR:0.1"), @@ -274,6 +285,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.102", "EUR:0.1"), @@ -281,6 +293,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.102", "EUR:0.1"), @@ -292,6 +305,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.102", "EUR:0.1"), @@ -303,6 +317,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.112", "EUR:0.1"), @@ -319,6 +334,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.109", "EUR:0.1"), @@ -330,6 +346,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.119", "EUR:0.1"), @@ -346,6 +363,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.122", "EUR:0.1"), @@ -362,6 +380,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), @@ -375,6 +394,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), @@ -390,6 +410,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.122", "EUR:0.1"), @@ -406,6 +427,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), @@ -419,6 +441,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5), @@ -434,6 +457,7 @@ run (void *cls, &dbc, "bob", USER42_ACCOUNT, + GNUNET_TIME_absolute_get (), GNUNET_TIME_UNIT_ZERO, "EUR:0.112", "EUR:0.1"), diff --git a/src/testing/testing_api_cmd_auditor_deposit_confirmation.c b/src/testing/testing_api_cmd_auditor_deposit_confirmation.c index 247399a9d..1442380bf 100644 --- a/src/testing/testing_api_cmd_auditor_deposit_confirmation.c +++ b/src/testing/testing_api_cmd_auditor_deposit_confirmation.c @@ -203,6 +203,7 @@ deposit_confirmation_run (void *cls, const struct TALER_TESTING_Command *deposit_cmd; struct GNUNET_HashCode h_wire; struct GNUNET_HashCode h_contract_terms; + const struct GNUNET_TIME_Absolute *exchange_timestamp = NULL; struct GNUNET_TIME_Absolute timestamp; struct GNUNET_TIME_Absolute refund_deadline; struct TALER_Amount amount_without_fee; @@ -238,6 +239,11 @@ deposit_confirmation_run (void *cls, TALER_TESTING_get_trait_exchange_sig (deposit_cmd, dcs->coin_index, &exchange_sig)); + GNUNET_assert (GNUNET_OK == + TALER_TESTING_get_trait_absolute_time (deposit_cmd, + dcs->coin_index, + &exchange_timestamp)); + GNUNET_assert (NULL != exchange_timestamp); keys = TALER_EXCHANGE_get_keys (dcs->is->exchange); GNUNET_assert (NULL != keys); spk = TALER_EXCHANGE_get_signing_key_info (keys, @@ -309,7 +315,7 @@ deposit_confirmation_run (void *cls, dcs->dc = TALER_AUDITOR_deposit_confirmation (dcs->auditor, &h_wire, &h_contract_terms, - timestamp, + *exchange_timestamp, refund_deadline, &amount_without_fee, &coin_pub, diff --git a/src/testing/testing_api_cmd_bank_admin_add_incoming.c b/src/testing/testing_api_cmd_bank_admin_add_incoming.c index 2399825d9..d8b1d7b02 100644 --- a/src/testing/testing_api_cmd_bank_admin_add_incoming.c +++ b/src/testing/testing_api_cmd_bank_admin_add_incoming.c @@ -82,6 +82,11 @@ struct AdminAddIncomingState struct TALER_ReservePrivateKeyP reserve_priv; /** + * Whether we know the private key or not. + */ + bool reserve_priv_known; + + /** * Reserve public key matching @e reserve_priv. */ struct TALER_ReservePublicKeyP reserve_pub; @@ -271,6 +276,7 @@ admin_add_incoming_run (void *cls, struct TALER_TESTING_Interpreter *is) { struct AdminAddIncomingState *fts = cls; + bool have_public = false; (void) cmd; /* Use reserve public key as subject */ @@ -278,6 +284,7 @@ admin_add_incoming_run (void *cls, { const struct TALER_TESTING_Command *ref; const struct TALER_ReservePrivateKeyP *reserve_priv; + const struct TALER_ReservePublicKeyP *reserve_pub; ref = TALER_TESTING_interpreter_lookup_command (is, fts->reserve_reference); @@ -292,11 +299,23 @@ admin_add_incoming_run (void *cls, 0, &reserve_priv)) { - GNUNET_break (0); - TALER_TESTING_interpreter_fail (is); - return; + if (GNUNET_OK != TALER_TESTING_get_trait_reserve_pub (ref, + 0, + &reserve_pub)) + { + GNUNET_break (0); + TALER_TESTING_interpreter_fail (is); + return; + } + have_public = true; + fts->reserve_pub.eddsa_pub = reserve_pub->eddsa_pub; + fts->reserve_priv_known = false; + } + else + { + fts->reserve_priv.eddsa_priv = reserve_priv->eddsa_priv; + fts->reserve_priv_known = true; } - fts->reserve_priv.eddsa_priv = reserve_priv->eddsa_priv; } else { @@ -349,6 +368,7 @@ admin_add_incoming_run (void *cls, TALER_TESTING_interpreter_fail (is); return; } + fts->reserve_priv_known = true; GNUNET_free (keys); GNUNET_free (section); GNUNET_CONFIGURATION_destroy (cfg); @@ -358,10 +378,12 @@ admin_add_incoming_run (void *cls, /* No referenced reserve, no instance to take priv * from, no explicit subject given: create new key! */ GNUNET_CRYPTO_eddsa_key_create (&fts->reserve_priv.eddsa_priv); + fts->reserve_priv_known = true; } } - GNUNET_CRYPTO_eddsa_key_get_public (&fts->reserve_priv.eddsa_priv, - &fts->reserve_pub.eddsa_pub); + if (! have_public) + GNUNET_CRYPTO_eddsa_key_get_public (&fts->reserve_priv.eddsa_priv, + &fts->reserve_pub.eddsa_pub); fts->reserve_history.type = TALER_EXCHANGE_RTT_CREDIT; fts->reserve_history.amount = fts->amount; fts->reserve_history.details.in_details.sender_url @@ -432,30 +454,58 @@ admin_add_incoming_traits (void *cls, unsigned int index) { struct AdminAddIncomingState *fts = cls; - struct TALER_TESTING_Trait traits[] = { - TALER_TESTING_make_trait_bank_row (&fts->serial_id), - TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT, - fts->payto_debit_account), - /* Used as a marker, content does not matter */ - TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT, - "payto://void/the-exchange"), - TALER_TESTING_make_trait_url (TALER_TESTING_UT_EXCHANGE_BANK_ACCOUNT_URL, - fts->exchange_credit_url), - TALER_TESTING_make_trait_amount_obj (0, &fts->amount), - TALER_TESTING_make_trait_absolute_time (0, &fts->timestamp), - TALER_TESTING_make_trait_reserve_priv (0, - &fts->reserve_priv), - TALER_TESTING_make_trait_reserve_pub (0, - &fts->reserve_pub), - TALER_TESTING_make_trait_reserve_history (0, - &fts->reserve_history), - TALER_TESTING_trait_end () - }; - - return TALER_TESTING_get_trait (traits, - ret, - trait, - index); + if (fts->reserve_priv_known) + { + struct TALER_TESTING_Trait traits[] = { + TALER_TESTING_make_trait_bank_row (&fts->serial_id), + TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT, + fts->payto_debit_account), + /* Used as a marker, content does not matter */ + TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT, + "payto://void/the-exchange"), + TALER_TESTING_make_trait_url (TALER_TESTING_UT_EXCHANGE_BANK_ACCOUNT_URL, + fts->exchange_credit_url), + TALER_TESTING_make_trait_amount_obj (0, &fts->amount), + TALER_TESTING_make_trait_absolute_time (0, &fts->timestamp), + TALER_TESTING_make_trait_reserve_priv (0, + &fts->reserve_priv), + TALER_TESTING_make_trait_reserve_pub (0, + &fts->reserve_pub), + TALER_TESTING_make_trait_reserve_history (0, + &fts->reserve_history), + TALER_TESTING_trait_end () + }; + + return TALER_TESTING_get_trait (traits, + ret, + trait, + index); + } + else + { + struct TALER_TESTING_Trait traits[] = { + TALER_TESTING_make_trait_bank_row (&fts->serial_id), + TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT, + fts->payto_debit_account), + /* Used as a marker, content does not matter */ + TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT, + "payto://void/the-exchange"), + TALER_TESTING_make_trait_url (TALER_TESTING_UT_EXCHANGE_BANK_ACCOUNT_URL, + fts->exchange_credit_url), + TALER_TESTING_make_trait_amount_obj (0, &fts->amount), + TALER_TESTING_make_trait_absolute_time (0, &fts->timestamp), + TALER_TESTING_make_trait_reserve_pub (0, + &fts->reserve_pub), + TALER_TESTING_make_trait_reserve_history (0, + &fts->reserve_history), + TALER_TESTING_trait_end () + }; + + return TALER_TESTING_get_trait (traits, + ret, + trait, + index); + } } @@ -548,7 +598,7 @@ TALER_TESTING_cmd_admin_add_incoming (const char *label, * @param payto_debit_account which account sends money * @param auth authentication data * @param ref reference to a command that can offer a reserve - * private key. + * private key or public key. * @return the command. */ struct TALER_TESTING_Command diff --git a/src/testing/testing_api_cmd_batch.c b/src/testing/testing_api_cmd_batch.c index 2d50f8efa..ca23d7fd9 100644 --- a/src/testing/testing_api_cmd_batch.c +++ b/src/testing/testing_api_cmd_batch.c @@ -228,5 +228,27 @@ TALER_TESTING_cmd_batch_get_current (const struct TALER_TESTING_Command *cmd) { struct BatchState *bs = cmd->cls; + GNUNET_assert (cmd->run == &batch_run); return &bs->batch[bs->batch_ip]; } + + +/** + * Set what command the batch should be at. + * + * @param cmd current batch command + * @param new_ip where to move the IP + */ +void +TALER_TESTING_cmd_batch_set_current (const struct TALER_TESTING_Command *cmd, + unsigned int new_ip) +{ + struct BatchState *bs = cmd->cls; + + /* sanity checks */ + GNUNET_assert (cmd->run == &batch_run); + for (unsigned int i = 0; i < new_ip; i++) + GNUNET_assert (NULL != bs->batch[i].label); + /* actual logic */ + bs->batch_ip = new_ip; +} diff --git a/src/testing/testing_api_cmd_deposit.c b/src/testing/testing_api_cmd_deposit.c index 9468e7acb..e7a4c2988 100644 --- a/src/testing/testing_api_cmd_deposit.c +++ b/src/testing/testing_api_cmd_deposit.c @@ -53,6 +53,11 @@ struct DepositState struct TALER_Amount amount; /** + * Deposit fee. + */ + struct TALER_Amount deposit_fee; + + /** * Reference to any command that is able to provide a coin. */ const char *coin_reference; @@ -91,9 +96,9 @@ struct DepositState struct TALER_EXCHANGE_DepositHandle *dh; /** - * Timestamp of the /deposit operation. + * Timestamp of the /deposit operation in the wallet (contract signing time). */ - struct GNUNET_TIME_Absolute timestamp; + struct GNUNET_TIME_Absolute wallet_timestamp; /** * Interpreter state. @@ -127,6 +132,11 @@ struct DepositState int deposit_succeeded; /** + * When did the exchange receive the deposit? + */ + struct GNUNET_TIME_Absolute exchange_timestamp; + + /** * Signing key used by the exchange to sign the * deposit confirmation. */ @@ -198,6 +208,7 @@ do_retry (void *cls) * * @param cls closure. * @param hr HTTP response details + * @param exchange_timestamp when did the exchange receive the deposit permission * @param exchange_sig signature provided by the exchange * (NULL on errors) * @param exchange_pub public key of the exchange, @@ -206,6 +217,7 @@ do_retry (void *cls) static void deposit_cb (void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, + const struct GNUNET_TIME_Absolute exchange_timestamp, const struct TALER_ExchangeSignatureP *exchange_sig, const struct TALER_ExchangePublicKeyP *exchange_pub) { @@ -254,6 +266,7 @@ deposit_cb (void *cls, if (MHD_HTTP_OK == hr->http_status) { ds->deposit_succeeded = GNUNET_YES; + ds->exchange_timestamp = exchange_timestamp; ds->exchange_pub = *exchange_pub; ds->exchange_sig = *exchange_sig; } @@ -305,7 +318,7 @@ deposit_run (void *cls, ds->coin_index = ods->coin_index; ds->wire_details = json_incref (ods->wire_details); ds->contract_terms = json_incref (ods->contract_terms); - ds->timestamp = ods->timestamp; + ds->wallet_timestamp = ods->wallet_timestamp; ds->refund_deadline = ods->refund_deadline; ds->amount = ods->amount; ds->merchant_priv = ods->merchant_priv; @@ -366,6 +379,7 @@ deposit_run (void *cls, TALER_TESTING_interpreter_fail (is); return; } + ds->deposit_fee = denom_pub->fee_deposit; GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv->eddsa_priv, &coin_pub.eddsa_pub); @@ -379,39 +393,27 @@ deposit_run (void *cls, } else { - ds->refund_deadline = ds->timestamp; - wire_deadline = GNUNET_TIME_relative_to_absolute - (GNUNET_TIME_UNIT_ZERO); + ds->refund_deadline = ds->wallet_timestamp; + wire_deadline = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_ZERO); } GNUNET_CRYPTO_eddsa_key_get_public (&ds->merchant_priv.eddsa_priv, &merchant_pub.eddsa_pub); - (void) GNUNET_TIME_round_abs (&wire_deadline); - { - struct TALER_DepositRequestPS dr; - - memset (&dr, 0, sizeof (dr)); - dr.purpose.size = htonl - (sizeof (struct TALER_DepositRequestPS)); - dr.purpose.purpose = htonl - (TALER_SIGNATURE_WALLET_COIN_DEPOSIT); - dr.h_contract_terms = h_contract_terms; + struct GNUNET_HashCode h_wire; + GNUNET_assert (GNUNET_OK == TALER_JSON_merchant_wire_signature_hash (ds->wire_details, - &dr.h_wire)); - dr.timestamp = GNUNET_TIME_absolute_hton (ds->timestamp); - dr.refund_deadline = GNUNET_TIME_absolute_hton - (ds->refund_deadline); - TALER_amount_hton (&dr.amount_with_fee, - &ds->amount); - TALER_amount_hton (&dr.deposit_fee, - &denom_pub->fee_deposit); - dr.merchant = merchant_pub; - dr.coin_pub = coin_pub; - GNUNET_CRYPTO_eddsa_sign (&coin_priv->eddsa_priv, - &dr, - &coin_sig.eddsa_signature); + &h_wire)); + TALER_EXCHANGE_deposit_permission_sign (&ds->amount, + &denom_pub->fee_deposit, + &h_wire, + &h_contract_terms, + coin_priv, + ds->wallet_timestamp, + &merchant_pub, + ds->refund_deadline, + &coin_sig); } ds->dh = TALER_EXCHANGE_deposit (is->exchange, &ds->amount, @@ -421,7 +423,7 @@ deposit_run (void *cls, &coin_pub, denom_pub_sig, &denom_pub->key, - ds->timestamp, + ds->wallet_timestamp, &merchant_pub, ds->refund_deadline, &coin_sig, @@ -532,8 +534,14 @@ deposit_traits (void *cls, ds->contract_terms), TALER_TESTING_make_trait_merchant_priv (0, &ds->merchant_priv), - TALER_TESTING_make_trait_amount_obj (0, - &ds->amount), + TALER_TESTING_make_trait_amount_obj ( + TALER_TESTING_CMD_DEPOSIT_TRAIT_IDX_DEPOSIT_VALUE, + &ds->amount), + TALER_TESTING_make_trait_amount_obj ( + TALER_TESTING_CMD_DEPOSIT_TRAIT_IDX_DEPOSIT_FEE, + &ds->deposit_fee), + TALER_TESTING_make_trait_absolute_time (0, + &ds->exchange_timestamp), TALER_TESTING_trait_end () }; @@ -599,12 +607,12 @@ TALER_TESTING_cmd_deposit (const char *label, label); GNUNET_assert (0); } - ds->timestamp = GNUNET_TIME_absolute_get (); - (void) GNUNET_TIME_round_abs (&ds->timestamp); + ds->wallet_timestamp = GNUNET_TIME_absolute_get (); + (void) GNUNET_TIME_round_abs (&ds->wallet_timestamp); json_object_set_new (ds->contract_terms, "timestamp", - GNUNET_JSON_from_time_abs (ds->timestamp)); + GNUNET_JSON_from_time_abs (ds->wallet_timestamp)); if (0 != refund_deadline.rel_value_us) { ds->refund_deadline = GNUNET_TIME_relative_to_absolute (refund_deadline); @@ -687,12 +695,12 @@ TALER_TESTING_cmd_deposit_with_ref (const char *label, label); GNUNET_assert (0); } - ds->timestamp = GNUNET_TIME_absolute_get (); - (void) GNUNET_TIME_round_abs (&ds->timestamp); + ds->wallet_timestamp = GNUNET_TIME_absolute_get (); + (void) GNUNET_TIME_round_abs (&ds->wallet_timestamp); json_object_set_new (ds->contract_terms, "timestamp", - GNUNET_JSON_from_time_abs (ds->timestamp)); + GNUNET_JSON_from_time_abs (ds->wallet_timestamp)); if (0 != refund_deadline.rel_value_us) { ds->refund_deadline = GNUNET_TIME_relative_to_absolute (refund_deadline); diff --git a/src/testing/testing_api_cmd_deposits_get.c b/src/testing/testing_api_cmd_deposits_get.c index fd02e75bb..d5617ec25 100644 --- a/src/testing/testing_api_cmd_deposits_get.c +++ b/src/testing/testing_api_cmd_deposits_get.c @@ -81,29 +81,17 @@ struct TrackTransactionState * * @param cls closure. * @param hr HTTP response details - * @param exchange_pub public key of the exchange - * @param wtid wire transfer identifier, NULL if exchange did not - * execute the transaction yet. - * @param execution_time actual or planned execution time for the - * wire transfer. - * @param coin_contribution contribution to the total amount of - * the deposited coin (can be NULL). + * @param dd data about the wire transfer associated with the deposit */ static void deposit_wtid_cb (void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, - const struct TALER_ExchangePublicKeyP *exchange_pub, - const struct TALER_WireTransferIdentifierRawP *wtid, - struct GNUNET_TIME_Absolute execution_time, - const struct TALER_Amount *coin_contribution) + const struct TALER_EXCHANGE_DepositData *dd) { struct TrackTransactionState *tts = cls; struct TALER_TESTING_Interpreter *is = tts->is; struct TALER_TESTING_Command *cmd = &is->commands[is->ip]; - (void) coin_contribution; - (void) exchange_pub; - (void) execution_time; tts->tth = NULL; if (tts->expected_response_code != hr->http_status) { @@ -123,7 +111,7 @@ deposit_wtid_cb (void *cls, switch (hr->http_status) { case MHD_HTTP_OK: - tts->wtid = *wtid; + tts->wtid = dd->wtid; if (NULL != tts->bank_transfer_reference) { const struct TALER_TESTING_Command *bank_transfer_cmd; @@ -151,7 +139,7 @@ deposit_wtid_cb (void *cls, } /* Compare that expected and gotten subjects match. */ - if (0 != GNUNET_memcmp (wtid, + if (0 != GNUNET_memcmp (&dd->wtid, wtid_want)) { GNUNET_break (0); @@ -159,6 +147,8 @@ deposit_wtid_cb (void *cls, return; } } + + break; case MHD_HTTP_ACCEPTED: /* allowed, nothing to check here */ diff --git a/src/testing/testing_api_cmd_insert_deposit.c b/src/testing/testing_api_cmd_insert_deposit.c index 356528009..cff2884aa 100644 --- a/src/testing/testing_api_cmd_insert_deposit.c +++ b/src/testing/testing_api_cmd_insert_deposit.c @@ -58,6 +58,11 @@ struct InsertDepositState struct GNUNET_TIME_Relative wire_deadline; /** + * When did the exchange receive the deposit? + */ + struct GNUNET_TIME_Absolute exchange_timestamp; + + /** * Amount to deposit, inclusive of deposit fee. */ const char *amount_with_fee; @@ -210,6 +215,7 @@ insert_deposit_run (void *cls, (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != ids->dbc->plugin->insert_deposit (ids->dbc->plugin->cls, ids->dbc->session, + ids->exchange_timestamp, &deposit)) || (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS != ids->dbc->plugin->commit (ids->dbc->plugin->cls, @@ -275,6 +281,7 @@ insert_deposit_traits (void *cls, * @param dbc collects database plugin and session handles. * @param merchant_name Human-readable name of the merchant. * @param merchant_account merchant's account name (NOT a payto:// URI) + * @param exchange_timestamp when did the exchange receive the deposit * @param wire_deadline point in time where the aggregator should have * wired money to the merchant. * @param amount_with_fee amount to deposit (inclusive of deposit fee) @@ -282,21 +289,24 @@ insert_deposit_traits (void *cls, * @return the command. */ struct TALER_TESTING_Command -TALER_TESTING_cmd_insert_deposit (const char *label, - const struct - TALER_TESTING_DatabaseConnection *dbc, - const char *merchant_name, - const char *merchant_account, - struct GNUNET_TIME_Relative wire_deadline, - const char *amount_with_fee, - const char *deposit_fee) +TALER_TESTING_cmd_insert_deposit ( + const char *label, + const struct TALER_TESTING_DatabaseConnection *dbc, + const char *merchant_name, + const char *merchant_account, + struct GNUNET_TIME_Absolute exchange_timestamp, + struct GNUNET_TIME_Relative wire_deadline, + const char *amount_with_fee, + const char *deposit_fee) { struct InsertDepositState *ids; + GNUNET_TIME_round_abs (&exchange_timestamp); ids = GNUNET_new (struct InsertDepositState); ids->dbc = dbc; ids->merchant_name = merchant_name; ids->merchant_account = merchant_account; + ids->exchange_timestamp = exchange_timestamp; ids->wire_deadline = wire_deadline; ids->amount_with_fee = amount_with_fee; ids->deposit_fee = deposit_fee; diff --git a/src/testing/testing_api_cmd_refund.c b/src/testing/testing_api_cmd_refund.c index 47f5a0609..e662ace2e 100644 --- a/src/testing/testing_api_cmd_refund.c +++ b/src/testing/testing_api_cmd_refund.c @@ -44,11 +44,6 @@ struct RefundState const char *refund_amount; /** - * Expected refund fee. - */ - const char *refund_fee; - - /** * Reference to any command that can provide a coin to refund. */ const char *coin_reference; @@ -81,6 +76,7 @@ struct RefundState * * @param cls closure * @param hr HTTP response details + * @param refund_fee the refund fee the exchange charged * @param exchange_pub public key the exchange * used for signing @a obj. * @param exchange_sig actual signature confirming the refund @@ -88,6 +84,7 @@ struct RefundState static void refund_cb (void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, + const struct TALER_Amount *refund_fee, const struct TALER_ExchangePublicKeyP *exchange_pub, const struct TALER_ExchangeSignatureP *exchange_sig) { @@ -95,6 +92,7 @@ refund_cb (void *cls, struct RefundState *rs = cls; struct TALER_TESTING_Command *refund_cmd; + (void) refund_fee; refund_cmd = &rs->is->commands[rs->is->ip]; rs->rh = NULL; if (rs->expected_response_code != hr->http_status) @@ -133,7 +131,6 @@ refund_run (void *cls, struct TALER_CoinSpendPublicKeyP coin; const json_t *contract_terms; struct GNUNET_HashCode h_contract_terms; - struct TALER_Amount refund_fee; struct TALER_Amount refund_amount; const struct TALER_MerchantPrivateKeyP *merchant_priv; const struct TALER_TESTING_Command *coin_cmd; @@ -153,19 +150,6 @@ refund_run (void *cls, TALER_TESTING_interpreter_fail (is); return; } - if (GNUNET_OK != - TALER_string_to_amount (rs->refund_fee, - &refund_fee)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to parse amount `%s' at %u/%s\n", - rs->refund_fee, - is->ip, - cmd->label); - TALER_TESTING_interpreter_fail (is); - return; - } - coin_cmd = TALER_TESTING_interpreter_lookup_command (is, rs->coin_reference); if (NULL == coin_cmd) @@ -211,7 +195,6 @@ refund_run (void *cls, } rs->rh = TALER_EXCHANGE_refund (rs->exchange, &refund_amount, - &refund_fee, &h_contract_terms, &coin, rs->refund_transaction_id, @@ -254,7 +237,6 @@ refund_cleanup (void *cls, * @param label command label. * @param expected_response_code expected HTTP status code. * @param refund_amount the amount to ask a refund for. - * @param refund_fee expected refund fee. * @param coin_reference reference to a command that can * provide a coin to be refunded. * @@ -264,7 +246,6 @@ struct TALER_TESTING_Command TALER_TESTING_cmd_refund (const char *label, unsigned int expected_response_code, const char *refund_amount, - const char *refund_fee, const char *coin_reference) { struct RefundState *rs; @@ -273,7 +254,6 @@ TALER_TESTING_cmd_refund (const char *label, rs->expected_response_code = expected_response_code; rs->refund_amount = refund_amount; - rs->refund_fee = refund_fee; rs->coin_reference = coin_reference; { struct TALER_TESTING_Command cmd = { @@ -295,7 +275,6 @@ TALER_TESTING_cmd_refund (const char *label, * @param label command label. * @param expected_response_code expected HTTP status code. * @param refund_amount the amount to ask a refund for. - * @param refund_fee expected refund fee. * @param coin_reference reference to a command that can * provide a coin to be refunded. * @param refund_transaction_id transaction id to use @@ -308,7 +287,6 @@ TALER_TESTING_cmd_refund_with_id (const char *label, unsigned int expected_response_code, const char *refund_amount, - const char *refund_fee, const char *coin_reference, uint64_t refund_transaction_id) { @@ -317,7 +295,6 @@ TALER_TESTING_cmd_refund_with_id rs = GNUNET_new (struct RefundState); rs->expected_response_code = expected_response_code; rs->refund_amount = refund_amount; - rs->refund_fee = refund_fee; rs->coin_reference = coin_reference; rs->refund_transaction_id = refund_transaction_id; { diff --git a/src/testing/testing_api_cmd_rewind.c b/src/testing/testing_api_cmd_rewind.c new file mode 100644 index 000000000..cde966d7f --- /dev/null +++ b/src/testing/testing_api_cmd_rewind.c @@ -0,0 +1,222 @@ +/* + This file is part of TALER + Copyright (C) 2014-2020 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 3, or + (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with TALER; see the file COPYING. If not, see + <http://www.gnu.org/licenses/> +*/ +/** + * @file testing/testing_api_cmd_rewind.c + * @brief command to rewind the instruction pointer. + * @author Marcello Stanisci + * @author Christian Grothoff + */ +#include "platform.h" +#include <taler/taler_exchange_service.h> +#include <taler/taler_testing_lib.h> +#include "taler_testing_lib.h" + + +/** + * State for a "rewind" CMD. + */ +struct RewindIpState +{ + /** + * Instruction pointer to set into the interpreter. + */ + const char *target_label; + + /** + * How many times this set should take place. However, this value lives at + * the calling process, and this CMD is only in charge of checking and + * decremeting it. + */ + unsigned int counter; +}; + + +/** + * Only defined to respect the API. + */ +static void +rewind_ip_cleanup (void *cls, + const struct TALER_TESTING_Command *cmd) +{ + (void) cls; + (void) cmd; +} + + +/** + * Seek for the @a target command in @a batch (and rewind to it + * if successful). + * + * @param is the interpreter state (for failures) + * @param cmd batch to search for @a target + * @param target command to search for + * @return #GNUNET_OK on success, #GNUNET_NO if target was not found, + * #GNUNET_SYSERR if target is in the future and we failed + */ +static int +seek_batch (struct TALER_TESTING_Interpreter *is, + const struct TALER_TESTING_Command *cmd, + const struct TALER_TESTING_Command *target) +{ + unsigned int new_ip; +#define BATCH_INDEX 1 + struct TALER_TESTING_Command *batch; + struct TALER_TESTING_Command *current; + struct TALER_TESTING_Command *icmd; + const struct TALER_TESTING_Command *match; + + current = TALER_TESTING_cmd_batch_get_current (cmd); + GNUNET_assert (GNUNET_OK == + TALER_TESTING_get_trait_cmd (cmd, + BATCH_INDEX, + &batch)); + match = NULL; + for (new_ip = 0; + NULL != (icmd = &batch[new_ip]); + new_ip++) + { + if (current == target) + current = NULL; + if (icmd == target) + { + match = icmd; + break; + } + if (TALER_TESTING_cmd_is_batch (icmd)) + { + int ret = seek_batch (is, + icmd, + target); + if (GNUNET_SYSERR == ret) + return GNUNET_SYSERR; /* failure! */ + if (GNUNET_OK == ret) + { + match = icmd; + break; + } + } + } + if (NULL == current) + { + /* refuse to jump forward */ + GNUNET_break (0); + TALER_TESTING_interpreter_fail (is); + return GNUNET_SYSERR; + } + if (NULL == match) + return GNUNET_NO; /* not found */ + TALER_TESTING_cmd_batch_set_current (cmd, + new_ip); + return GNUNET_OK; +} + + +/** + * Run the "rewind" CMD. + * + * @param cls closure. + * @param cmd command being executed now. + * @param is the interpreter state. + */ +static void +rewind_ip_run (void *cls, + const struct TALER_TESTING_Command *cmd, + struct TALER_TESTING_Interpreter *is) +{ + struct RewindIpState *ris = cls; + const struct TALER_TESTING_Command *target; + unsigned int new_ip; + + (void) cmd; + if (0 == ris->counter) + { + TALER_TESTING_interpreter_next (is); + return; + } + target + = TALER_TESTING_interpreter_lookup_command (is, + ris->target_label); + if (NULL == target) + { + GNUNET_break (0); + TALER_TESTING_interpreter_fail (is); + return; + } + ris->counter--; + for (new_ip = 0; + NULL != is->commands[new_ip].label; + new_ip++) + { + const struct TALER_TESTING_Command *cmd = &is->commands[new_ip]; + + if (cmd == target) + break; + if (TALER_TESTING_cmd_is_batch (cmd)) + { + int ret = seek_batch (is, + cmd, + target); + if (GNUNET_SYSERR == ret) + return; /* failure! */ + if (GNUNET_OK == ret) + break; + } + } + if (new_ip > is->ip) + { + /* refuse to jump forward */ + GNUNET_break (0); + TALER_TESTING_interpreter_fail (is); + return; + } + is->ip = new_ip - 1; /* -1 because the next function will advance by one */ + TALER_TESTING_interpreter_next (is); +} + + +/** + * Make the instruction pointer point to @a new_ip + * only if @a counter is greater than zero. + * + * @param label command label + * @param target_label label of the new instruction pointer's destination after the jump; + * must be before the current instruction + * @param counter counts how many times the rewinding is to happen. + */ +struct TALER_TESTING_Command +TALER_TESTING_cmd_rewind_ip (const char *label, + const char *target_label, + unsigned int counter) +{ + struct RewindIpState *ris; + + ris = GNUNET_new (struct RewindIpState); + ris->target_label = target_label; + ris->counter = counter; + { + struct TALER_TESTING_Command cmd = { + .cls = ris, + .label = label, + .run = &rewind_ip_run, + .cleanup = &rewind_ip_cleanup + }; + + return cmd; + } +} diff --git a/src/testing/testing_api_cmd_stat.c b/src/testing/testing_api_cmd_stat.c index cf6d0b484..9461a22cf 100644 --- a/src/testing/testing_api_cmd_stat.c +++ b/src/testing/testing_api_cmd_stat.c @@ -40,7 +40,6 @@ stat_cleanup (void *cls, (void) cls; (void) cmd; /* nothing to clean. */ - return; } diff --git a/src/testing/testing_api_cmd_transfer_get.c b/src/testing/testing_api_cmd_transfer_get.c index 699313e56..3ca319cb5 100644 --- a/src/testing/testing_api_cmd_transfer_get.c +++ b/src/testing/testing_api_cmd_transfer_get.c @@ -121,37 +121,18 @@ track_transfer_cleanup (void *cls, * * @param cls closure. * @param hr HTTP response details - * @param exchange_pub public key the exchange used for signing - * the response. - * @param h_wire hash of the wire transfer address the transfer - * went to, or NULL on error. - * @param execution_time time when the exchange claims to have - * performed the wire transfer. - * @param total_amount total amount of the wire transfer, or NULL - * if the exchange could not provide any @a wtid (set only - * if @a http_status is "200 OK"). - * @param wire_fee wire fee that was charged by the exchange. - * @param details_length length of the @a details array. - * @param details array with details about the combined - * transactions. + * @param ta transfer data returned by the exchange */ static void track_transfer_cb (void *cls, const struct TALER_EXCHANGE_HttpResponse *hr, - const struct TALER_ExchangePublicKeyP *exchange_pub, - const struct GNUNET_HashCode *h_wire, - struct GNUNET_TIME_Absolute execution_time, - const struct TALER_Amount *total_amount, - const struct TALER_Amount *wire_fee, - unsigned int details_length, - const struct TALER_TrackTransferDetails *details) + const struct TALER_EXCHANGE_TransferData *ta) { struct TrackTransferState *tts = cls; struct TALER_TESTING_Interpreter *is = tts->is; struct TALER_TESTING_Command *cmd = &is->commands[is->ip]; struct TALER_Amount expected_amount; - (void) exchange_pub; tts->tth = NULL; if (tts->expected_response_code != hr->http_status) { @@ -193,14 +174,14 @@ track_transfer_cb (void *cls, TALER_TESTING_interpreter_fail (is); return; } - if (0 != TALER_amount_cmp (total_amount, + if (0 != TALER_amount_cmp (&ta->total_amount, &expected_amount)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Total amount mismatch to command %s - " "%s vs %s\n", cmd->label, - TALER_amount_to_string (total_amount), + TALER_amount_to_string (&ta->total_amount), TALER_amount_to_string (&expected_amount)); json_dumpf (hr->reply, stderr, @@ -219,7 +200,7 @@ track_transfer_cb (void *cls, return; } - if (0 != TALER_amount_cmp (wire_fee, + if (0 != TALER_amount_cmp (&ta->wire_fee, &expected_amount)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, @@ -266,7 +247,7 @@ track_transfer_cb (void *cls, TALER_JSON_merchant_wire_signature_hash (wire_details, &h_wire_details)); if (0 != GNUNET_memcmp (&h_wire_details, - h_wire)) + &ta->h_wire)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Wire hash missmath to command %s\n", @@ -301,7 +282,7 @@ track_transfer_cb (void *cls, TALER_TESTING_interpreter_fail (is); return; } - if (0 != TALER_amount_cmp (total_amount, + if (0 != TALER_amount_cmp (&ta->total_amount, total_amount_from_reference)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, diff --git a/src/testing/testing_api_loop.c b/src/testing/testing_api_loop.c index 992dcbfda..fceff4234 100644 --- a/src/testing/testing_api_loop.c +++ b/src/testing/testing_api_loop.c @@ -69,6 +69,7 @@ TALER_TESTING_interpreter_lookup_command (struct TALER_TESTING_Interpreter *is, #define BATCH_INDEX 1 struct TALER_TESTING_Command *batch; struct TALER_TESTING_Command *current; + struct TALER_TESTING_Command *icmd; const struct TALER_TESTING_Command *match; current = TALER_TESTING_cmd_batch_get_current (cmd); @@ -79,15 +80,15 @@ TALER_TESTING_interpreter_lookup_command (struct TALER_TESTING_Interpreter *is, /* We must do the loop forward, but we can find the last match */ match = NULL; for (unsigned int j = 0; - NULL != (cmd = &batch[j])->label; + NULL != (icmd = &batch[j])->label; j++) { - if (current == cmd) + if (current == icmd) break; /* do not go past current command */ - if ( (NULL != cmd->label) && - (0 == strcmp (cmd->label, + if ( (NULL != icmd->label) && + (0 == strcmp (icmd->label, label)) ) - match = cmd; + match = icmd; } if (NULL != match) return match; diff --git a/src/testing/testing_api_trait_json.c b/src/testing/testing_api_trait_json.c index cbddad53e..e12f1e9a1 100644 --- a/src/testing/testing_api_trait_json.c +++ b/src/testing/testing_api_trait_json.c @@ -30,6 +30,7 @@ #define TALER_TESTING_TRAIT_WIRE_DETAILS "wire-details" #define TALER_TESTING_TRAIT_EXCHANGE_KEYS "exchange-keys" +#define TALER_TESTING_TRAIT_JSON "json" /** * Obtain serialized exchange keys from @a cmd. @@ -120,4 +121,45 @@ TALER_TESTING_make_trait_wire_details } +/** + * Obtain json from @a cmd. + * + * @param cmd command to extract the json from. + * @param index index number associate with the json on offer. + * @param[out] json where to write the json. + * @return #GNUNET_OK on success. + */ +int +TALER_TESTING_get_trait_json (const struct TALER_TESTING_Command *cmd, + unsigned int index, + const json_t **json) +{ + return cmd->traits (cmd->cls, + (const void **) json, + TALER_TESTING_TRAIT_JSON, + index); +} + + +/** + * Offer json in a trait. + * + * @param index index number associate with the json + * on offer. + * @param json json to offer. + * @return the trait. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_json (unsigned int index, + const json_t *json) +{ + struct TALER_TESTING_Trait ret = { + .index = index, + .trait_name = TALER_TESTING_TRAIT_JSON, + .ptr = (const json_t *) json + }; + return ret; +} + + /* end of testing_api_trait_json.c */ diff --git a/src/testing/testing_api_trait_number.c b/src/testing/testing_api_trait_number.c index 50ce6d8c7..ed25593ef 100644 --- a/src/testing/testing_api_trait_number.c +++ b/src/testing/testing_api_trait_number.c @@ -28,7 +28,9 @@ #include "taler_testing_lib.h" #define TALER_TESTING_TRAIT_UINT "uint" +#define TALER_TESTING_TRAIT_UINT32 "uint-32" #define TALER_TESTING_TRAIT_UINT64 "uint-64" +#define TALER_TESTING_TRAIT_INT64 "int-64" #define TALER_TESTING_TRAIT_BANK_ROW "bank-transaction-row" @@ -73,6 +75,45 @@ TALER_TESTING_make_trait_uint (unsigned int index, /** + * Obtain a "number" value from @a cmd, 32-bit version. + * + * @param cmd command to extract the number from. + * @param index the number's index number. + * @param[out] n set to the number coming from @a cmd. + * @return #GNUNET_OK on success. + */ +int +TALER_TESTING_get_trait_uint32 (const struct TALER_TESTING_Command *cmd, + unsigned int index, + const uint32_t **n) +{ + return cmd->traits (cmd->cls, + (const void **) n, + TALER_TESTING_TRAIT_UINT32, + index); +} + + +/** + * Offer number trait, 32-bit version. + * + * @param index the number's index number. + * @param n number to offer. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_uint32 (unsigned int index, + const uint32_t *n) +{ + struct TALER_TESTING_Trait ret = { + .index = index, + .trait_name = TALER_TESTING_TRAIT_UINT32, + .ptr = (const void *) n + }; + return ret; +} + + +/** * Obtain a "number" value from @a cmd, 64-bit version. * * @param cmd command to extract the number from. @@ -112,6 +153,45 @@ TALER_TESTING_make_trait_uint64 (unsigned int index, /** + * Obtain a "number" value from @a cmd, 64-bit signed version. + * + * @param cmd command to extract the number from. + * @param index the number's index number. + * @param[out] n set to the number coming from @a cmd. + * @return #GNUNET_OK on success. + */ +int +TALER_TESTING_get_trait_int64 (const struct TALER_TESTING_Command *cmd, + unsigned int index, + const int64_t **n) +{ + return cmd->traits (cmd->cls, + (const void **) n, + TALER_TESTING_TRAIT_INT64, + index); +} + + +/** + * Offer number trait, 64-bit signed version. + * + * @param index the number's index number. + * @param n number to offer. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_int64 (unsigned int index, + const int64_t *n) +{ + struct TALER_TESTING_Trait ret = { + .index = index, + .trait_name = TALER_TESTING_TRAIT_INT64, + .ptr = (const void *) n + }; + return ret; +} + + +/** * Obtain a bank transaction row value from @a cmd. * * @param cmd command to extract the number from. diff --git a/src/testing/testing_api_trait_time.c b/src/testing/testing_api_trait_time.c index c77489bfa..207246bed 100644 --- a/src/testing/testing_api_trait_time.c +++ b/src/testing/testing_api_trait_time.c @@ -29,6 +29,7 @@ #include "taler_testing_lib.h" #define TALER_TESTING_TRAIT_TIME_ABS "time-abs" +#define TALER_TESTING_TRAIT_TIME_REL "time-rel" /** * Obtain a absolute time from @a cmd. @@ -73,4 +74,47 @@ TALER_TESTING_make_trait_absolute_time } +/** + * Obtain a relative time from @a cmd. + * + * @param cmd command to extract trait from + * @param index which time to pick if + * @a cmd has multiple on offer. + * @param[out] time set to the wanted WTID. + * @return #GNUNET_OK on success + */ +int +TALER_TESTING_get_trait_relative_time ( + const struct TALER_TESTING_Command *cmd, + unsigned int index, + const struct GNUNET_TIME_Relative **time) +{ + return cmd->traits (cmd->cls, + (const void **) time, + TALER_TESTING_TRAIT_TIME_REL, + index); +} + + +/** + * Offer a relative time. + * + * @param index associate the object with this index + * @param time which object should be returned + * @return the trait. + */ +struct TALER_TESTING_Trait +TALER_TESTING_make_trait_relative_time ( + unsigned int index, + const struct GNUNET_TIME_Relative *time) +{ + struct TALER_TESTING_Trait ret = { + .index = index, + .trait_name = TALER_TESTING_TRAIT_TIME_REL, + .ptr = (const void *) time + }; + return ret; +} + + /* end of testing_api_trait_time.c */ diff --git a/src/util/Makefile.am b/src/util/Makefile.am index 4e22f0a08..5ff3b898f 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -42,6 +42,7 @@ libtalerutil_la_SOURCES = \ payto.c \ url.c \ util.c \ + yna.c \ os_installation.c libtalerutil_la_LIBADD = \ diff --git a/src/util/yna.c b/src/util/yna.c new file mode 100644 index 000000000..fa7cf9348 --- /dev/null +++ b/src/util/yna.c @@ -0,0 +1,88 @@ +/* + This file is part of TALER + Copyright (C) 2020 Taler Systems SA + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file yna.c + * @brief Utility functions for yes/no/all filters + * @author Jonathan Buchanan + */ +#include "platform.h" +#include "taler_util.h" + + +/** + * Convert query argument to @a yna value. + * + * @param connection connection to take query argument from + * @param arg argument to try for + * @param default_val value to assign if the argument is not present + * @param[out] value to set + * @return true on success, false if the parameter was malformed + */ +bool +TALER_arg_to_yna (struct MHD_Connection *connection, + const char *arg, + enum TALER_EXCHANGE_YesNoAll default_val, + enum TALER_EXCHANGE_YesNoAll *yna) +{ + const char *str; + + str = MHD_lookup_connection_value (connection, + MHD_GET_ARGUMENT_KIND, + arg); + if (NULL == str) + { + *yna = default_val; + return true; + } + if (0 == strcasecmp (str, "yes")) + { + *yna = TALER_EXCHANGE_YNA_YES; + return true; + } + if (0 == strcasecmp (str, "no")) + { + *yna = TALER_EXCHANGE_YNA_NO; + return true; + } + if (0 == strcasecmp (str, "all")) + { + *yna = TALER_EXCHANGE_YNA_ALL; + return true; + } + return false; +} + + +/** + * Convert YNA value to a string. + * + * @param yna value to convert + * @return string representation ("yes"/"no"/"all"). + */ +const char * +TALER_yna_to_string (enum TALER_EXCHANGE_YesNoAll yna) +{ + switch (yna) + { + case TALER_EXCHANGE_YNA_YES: + return "yes"; + case TALER_EXCHANGE_YNA_NO: + return "no"; + case TALER_EXCHANGE_YNA_ALL: + return "all"; + } + GNUNET_assert (0); +} |