@reclaimprotocol/attestor-core 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/README.md +39 -0
  2. package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
  3. package/lib/avs/abis/avsDirectoryABI.js +344 -0
  4. package/lib/avs/abis/delegationABI.d.ts +126 -0
  5. package/lib/avs/abis/delegationABI.js +5 -0
  6. package/lib/avs/abis/registryABI.d.ts +136 -0
  7. package/lib/avs/abis/registryABI.js +729 -0
  8. package/lib/avs/client/create-claim-on-avs.d.ts +10 -0
  9. package/lib/avs/client/create-claim-on-avs.js +147 -0
  10. package/lib/avs/config.d.ts +7 -0
  11. package/lib/avs/config.js +24 -0
  12. package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
  13. package/lib/avs/contracts/ReclaimServiceManager.js +3 -0
  14. package/lib/avs/contracts/common.d.ts +21 -0
  15. package/lib/avs/contracts/common.js +3 -0
  16. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
  17. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1174 -0
  18. package/lib/avs/contracts/factories/index.d.ts +1 -0
  19. package/lib/avs/contracts/factories/index.js +9 -0
  20. package/lib/avs/contracts/index.d.ts +3 -0
  21. package/lib/avs/contracts/index.js +30 -0
  22. package/lib/avs/tests/test.operator.d.ts +11 -0
  23. package/lib/avs/tests/test.operator.js +313 -0
  24. package/lib/avs/tests/utils.d.ts +2 -0
  25. package/lib/avs/tests/utils.js +50 -0
  26. package/lib/avs/types/index.d.ts +55 -0
  27. package/lib/avs/types/index.js +3 -0
  28. package/lib/avs/utils/contracts.d.ts +21 -0
  29. package/lib/avs/utils/contracts.js +38 -0
  30. package/lib/avs/utils/register.d.ts +27 -0
  31. package/lib/avs/utils/register.js +76 -0
  32. package/lib/avs/utils/tasks.d.ts +22 -0
  33. package/lib/avs/utils/tasks.js +45 -0
  34. package/lib/client/create-claim.d.ts +5 -0
  35. package/lib/client/create-claim.js +357 -0
  36. package/lib/client/index.d.ts +3 -0
  37. package/lib/client/index.js +20 -0
  38. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  39. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +60 -0
  40. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +25 -0
  41. package/lib/client/tunnels/make-rpc-tls-tunnel.js +135 -0
  42. package/lib/client/utils/attestor-pool.d.ts +6 -0
  43. package/lib/client/utils/attestor-pool.js +28 -0
  44. package/lib/client/utils/client-socket.d.ts +9 -0
  45. package/lib/client/utils/client-socket.js +77 -0
  46. package/lib/client/utils/message-handler.d.ts +4 -0
  47. package/lib/client/utils/message-handler.js +93 -0
  48. package/lib/config/index.d.ts +23 -0
  49. package/lib/config/index.js +35 -0
  50. package/lib/index.d.ts +9 -0
  51. package/lib/index.js +39 -0
  52. package/lib/proto/api.d.ts +414 -0
  53. package/lib/proto/api.js +2756 -0
  54. package/lib/providers/http/index.d.ts +3 -0
  55. package/lib/providers/http/index.js +472 -0
  56. package/lib/providers/http/utils.d.ts +44 -0
  57. package/lib/providers/http/utils.js +302 -0
  58. package/lib/providers/index.d.ts +4 -0
  59. package/lib/providers/index.js +11 -0
  60. package/lib/scripts/check-avs-registration.d.ts +1 -0
  61. package/lib/scripts/check-avs-registration.js +28 -0
  62. package/lib/scripts/generate-provider-types.d.ts +5 -0
  63. package/lib/scripts/generate-provider-types.js +82 -0
  64. package/lib/scripts/generate-receipt.d.ts +9 -0
  65. package/lib/scripts/generate-receipt.js +93 -0
  66. package/lib/scripts/register-avs-operator.d.ts +1 -0
  67. package/lib/scripts/register-avs-operator.js +6 -0
  68. package/lib/scripts/start-server.d.ts +1 -0
  69. package/lib/scripts/start-server.js +6 -0
  70. package/lib/scripts/verify-root-ca.d.ts +1 -0
  71. package/lib/scripts/verify-root-ca.js +51 -0
  72. package/lib/server/create-server.d.ts +7 -0
  73. package/lib/server/create-server.js +85 -0
  74. package/lib/server/handlers/claimTunnel.d.ts +2 -0
  75. package/lib/server/handlers/claimTunnel.js +55 -0
  76. package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
  77. package/lib/server/handlers/completeClaimOnChain.js +28 -0
  78. package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
  79. package/lib/server/handlers/createClaimOnChain.js +31 -0
  80. package/lib/server/handlers/createTunnel.d.ts +2 -0
  81. package/lib/server/handlers/createTunnel.js +65 -0
  82. package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
  83. package/lib/server/handlers/disconnectTunnel.js +10 -0
  84. package/lib/server/handlers/index.d.ts +4 -0
  85. package/lib/server/handlers/index.js +18 -0
  86. package/lib/server/handlers/init.d.ts +2 -0
  87. package/lib/server/handlers/init.js +21 -0
  88. package/lib/server/index.d.ts +4 -0
  89. package/lib/server/index.js +21 -0
  90. package/lib/server/socket.d.ts +11 -0
  91. package/lib/server/socket.js +95 -0
  92. package/lib/server/tunnels/make-tcp-tunnel.d.ts +20 -0
  93. package/lib/server/tunnels/make-tcp-tunnel.js +182 -0
  94. package/lib/server/utils/apm.d.ts +11 -0
  95. package/lib/server/utils/apm.js +39 -0
  96. package/lib/server/utils/assert-valid-claim-request.d.ts +29 -0
  97. package/lib/server/utils/assert-valid-claim-request.js +189 -0
  98. package/lib/server/utils/config-env.d.ts +1 -0
  99. package/lib/server/utils/config-env.js +7 -0
  100. package/lib/server/utils/generics.d.ts +22 -0
  101. package/lib/server/utils/generics.js +59 -0
  102. package/lib/server/utils/iso.d.ts +1 -0
  103. package/lib/server/utils/iso.js +260 -0
  104. package/lib/server/utils/keep-alive.d.ts +7 -0
  105. package/lib/server/utils/keep-alive.js +42 -0
  106. package/lib/server/utils/process-handshake.d.ts +13 -0
  107. package/lib/server/utils/process-handshake.js +179 -0
  108. package/lib/server/utils/verify-server-certificates.d.ts +7 -0
  109. package/lib/server/utils/verify-server-certificates.js +102 -0
  110. package/lib/tests/describe-with-server.d.ts +21 -0
  111. package/lib/tests/describe-with-server.js +67 -0
  112. package/lib/tests/mock-provider-server.d.ts +13 -0
  113. package/lib/tests/mock-provider-server.js +65 -0
  114. package/lib/tests/mocks.d.ts +4 -0
  115. package/lib/tests/mocks.js +23 -0
  116. package/lib/tests/test.claim-creation.d.ts +1 -0
  117. package/lib/tests/test.claim-creation.js +187 -0
  118. package/lib/tests/test.http-parser.d.ts +1 -0
  119. package/lib/tests/test.http-parser.js +118 -0
  120. package/lib/tests/test.http-provider-utils.d.ts +1 -0
  121. package/lib/tests/test.http-provider-utils.js +1932 -0
  122. package/lib/tests/test.http-provider.d.ts +1 -0
  123. package/lib/tests/test.http-provider.js +43 -0
  124. package/lib/tests/test.rpc-communication.d.ts +1 -0
  125. package/lib/tests/test.rpc-communication.js +64 -0
  126. package/lib/tests/test.rpc-tunnel.d.ts +1 -0
  127. package/lib/tests/test.rpc-tunnel.js +168 -0
  128. package/lib/tests/test.signatures.d.ts +1 -0
  129. package/lib/tests/test.signatures.js +24 -0
  130. package/lib/tests/test.tcp-tunnel.d.ts +1 -0
  131. package/lib/tests/test.tcp-tunnel.js +64 -0
  132. package/lib/tests/test.zk.d.ts +1 -0
  133. package/lib/tests/test.zk.js +169 -0
  134. package/lib/tests/utils.d.ts +12 -0
  135. package/lib/tests/utils.js +49 -0
  136. package/lib/types/claims.d.ts +64 -0
  137. package/lib/types/claims.js +3 -0
  138. package/lib/types/client.d.ts +136 -0
  139. package/lib/types/client.js +3 -0
  140. package/lib/types/general.d.ts +39 -0
  141. package/lib/types/general.js +3 -0
  142. package/lib/types/handlers.d.ts +10 -0
  143. package/lib/types/handlers.js +3 -0
  144. package/lib/types/index.d.ts +9 -0
  145. package/lib/types/index.js +26 -0
  146. package/lib/types/providers.d.ts +135 -0
  147. package/lib/types/providers.gen.d.ts +414 -0
  148. package/lib/types/providers.gen.js +14 -0
  149. package/lib/types/providers.js +3 -0
  150. package/lib/types/rpc.d.ts +35 -0
  151. package/lib/types/rpc.js +3 -0
  152. package/lib/types/signatures.d.ts +28 -0
  153. package/lib/types/signatures.js +3 -0
  154. package/lib/types/tunnel.d.ts +18 -0
  155. package/lib/types/tunnel.js +3 -0
  156. package/lib/types/zk.d.ts +16 -0
  157. package/lib/types/zk.js +3 -0
  158. package/lib/utils/benchmark.d.ts +1 -0
  159. package/lib/utils/benchmark.js +70 -0
  160. package/lib/utils/claims.d.ts +33 -0
  161. package/lib/utils/claims.js +112 -0
  162. package/lib/utils/env.d.ts +3 -0
  163. package/lib/utils/env.js +20 -0
  164. package/lib/utils/error.d.ts +27 -0
  165. package/lib/utils/error.js +43 -0
  166. package/lib/utils/generics.d.ts +112 -0
  167. package/lib/utils/generics.js +348 -0
  168. package/lib/utils/http-parser.d.ts +55 -0
  169. package/lib/utils/http-parser.js +249 -0
  170. package/lib/utils/index.d.ts +10 -0
  171. package/lib/utils/index.js +27 -0
  172. package/lib/utils/logger.d.ts +13 -0
  173. package/lib/utils/logger.js +100 -0
  174. package/lib/utils/prepare-packets.d.ts +16 -0
  175. package/lib/utils/prepare-packets.js +61 -0
  176. package/lib/utils/redactions.d.ts +41 -0
  177. package/lib/utils/redactions.js +111 -0
  178. package/lib/utils/retries.d.ts +12 -0
  179. package/lib/utils/retries.js +28 -0
  180. package/lib/utils/signatures/eth.d.ts +2 -0
  181. package/lib/utils/signatures/eth.js +33 -0
  182. package/lib/utils/signatures/index.d.ts +5 -0
  183. package/lib/utils/signatures/index.js +11 -0
  184. package/lib/utils/socket-base.d.ts +21 -0
  185. package/lib/utils/socket-base.js +89 -0
  186. package/lib/utils/tls.d.ts +2 -0
  187. package/lib/utils/tls.js +32 -0
  188. package/lib/utils/validation.d.ts +2 -0
  189. package/lib/utils/validation.js +46 -0
  190. package/lib/utils/ws.d.ts +12 -0
  191. package/lib/utils/ws.js +21 -0
  192. package/lib/utils/zk.d.ts +50 -0
  193. package/lib/utils/zk.js +282 -0
  194. package/lib/window-rpc/index.d.ts +3 -0
  195. package/lib/window-rpc/index.js +20 -0
  196. package/lib/window-rpc/setup-window-rpc.d.ts +5 -0
  197. package/lib/window-rpc/setup-window-rpc.js +239 -0
  198. package/lib/window-rpc/types.d.ts +184 -0
  199. package/lib/window-rpc/types.js +3 -0
  200. package/lib/window-rpc/utils.d.ts +13 -0
  201. package/lib/window-rpc/utils.js +76 -0
  202. package/lib/window-rpc/window-rpc-zk.d.ts +11 -0
  203. package/lib/window-rpc/window-rpc-zk.js +72 -0
  204. package/package.json +117 -0
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupWindowRpc = setupWindowRpc;
4
+ const tls_1 = require("@reclaimprotocol/tls");
5
+ const create_claim_on_avs_1 = require("src/avs/client/create-claim-on-avs");
6
+ const client_1 = require("src/client");
7
+ const utils_1 = require("src/providers/http/utils");
8
+ const utils_2 = require("src/utils");
9
+ const benchmark_1 = require("src/utils/benchmark");
10
+ const utils_3 = require("src/window-rpc/utils");
11
+ const window_rpc_zk_1 = require("src/window-rpc/window-rpc-zk");
12
+ class WindowRPCEvent extends Event {
13
+ constructor(data) {
14
+ super('message');
15
+ this.data = data;
16
+ }
17
+ }
18
+ const VALID_MODULES = [
19
+ 'attestor-core',
20
+ 'witness-sdk'
21
+ ];
22
+ let logger = (0, utils_2.makeLogger)(true);
23
+ /**
24
+ * Sets up the current window to listen for RPC requests
25
+ * from React Native or other windows
26
+ */
27
+ function setupWindowRpc() {
28
+ window.addEventListener('message', handleMessage, false);
29
+ const windowMsgs = new EventTarget();
30
+ const defaultUrl = (0, utils_3.getWsApiUrlFromLocation)();
31
+ logger.info({ defaultUrl }, 'window RPC setup');
32
+ async function handleMessage(event) {
33
+ let id = '';
34
+ let channel = '';
35
+ try {
36
+ if (!event.data) {
37
+ return;
38
+ }
39
+ const req = (typeof event.data === 'string'
40
+ ? JSON.parse(event.data)
41
+ : event.data);
42
+ // ignore any messages not for us
43
+ if (!VALID_MODULES.includes(req.module)) {
44
+ return;
45
+ }
46
+ id = req.id;
47
+ channel = req.channel || '';
48
+ windowMsgs.dispatchEvent(new WindowRPCEvent(req));
49
+ // ignore response messages
50
+ if (('isResponse' in req && req.isResponse)) {
51
+ return;
52
+ }
53
+ if (!req.id) {
54
+ logger.warn({ req }, 'Window RPC request missing ID');
55
+ return;
56
+ }
57
+ logger.info({ req, origin: event.origin }, 'processing RPC request');
58
+ switch (req.type) {
59
+ case 'createClaim':
60
+ const claimTunnelRes = await (0, client_1.createClaimOnAttestor)({
61
+ ...req.request,
62
+ context: req.request.context
63
+ ? JSON.parse(req.request.context)
64
+ : undefined,
65
+ zkOperators: getZkOperators(req.request.zkOperatorMode, req.request.zkEngine),
66
+ client: { url: defaultUrl },
67
+ logger,
68
+ onStep(step) {
69
+ sendMessage({
70
+ type: 'createClaimStep',
71
+ step: {
72
+ name: req.module.includes('witness')
73
+ // backwards compatibility
74
+ ? 'witness-progress'
75
+ : 'attestor-progress',
76
+ step,
77
+ },
78
+ module: req.module,
79
+ id: req.id,
80
+ });
81
+ },
82
+ updateProviderParams: req.request.updateProviderParams
83
+ ? updateProviderParams
84
+ : undefined
85
+ });
86
+ const response = (0, utils_3.mapToCreateClaimResponse)(claimTunnelRes);
87
+ respond({
88
+ type: 'createClaimDone',
89
+ response,
90
+ });
91
+ break;
92
+ case 'createClaimOnAvs':
93
+ const avsRes = await (0, create_claim_on_avs_1.createClaimOnAvs)({
94
+ ...req.request,
95
+ payer: req.request.payer === 'attestor'
96
+ ? { attestor: defaultUrl }
97
+ : undefined,
98
+ context: req.request.context
99
+ ? JSON.parse(req.request.context)
100
+ : undefined,
101
+ zkOperators: getZkOperators(req.request.zkOperatorMode, req.request.zkEngine),
102
+ logger,
103
+ onStep(step) {
104
+ sendMessage({
105
+ type: 'createClaimOnAvsStep',
106
+ step,
107
+ module: req.module,
108
+ id: req.id,
109
+ });
110
+ },
111
+ });
112
+ respond({
113
+ type: 'createClaimOnAvsDone',
114
+ response: avsRes,
115
+ });
116
+ break;
117
+ case 'extractHtmlElement':
118
+ respond({
119
+ type: 'extractHtmlElementDone',
120
+ response: (0, utils_1.extractHTMLElement)(req.request.html, req.request.xpathExpression, req.request.contentsOnly),
121
+ });
122
+ break;
123
+ case 'extractJSONValueIndex':
124
+ respond({
125
+ type: 'extractJSONValueIndexDone',
126
+ response: (0, utils_1.extractJSONValueIndex)(req.request.json, req.request.jsonPath),
127
+ });
128
+ break;
129
+ case 'getCurrentMemoryUsage':
130
+ respond({
131
+ type: 'getCurrentMemoryUsageDone',
132
+ response: await (0, utils_3.getCurrentMemoryUsage)(),
133
+ });
134
+ break;
135
+ case 'setLogLevel':
136
+ logger = (0, utils_2.makeLogger)(true, req.request.logLevel, req.request.sendLogsToApp
137
+ ? (level, message) => (sendMessage({
138
+ type: 'log',
139
+ level,
140
+ message,
141
+ module: req.module,
142
+ id: req.id,
143
+ }))
144
+ : undefined);
145
+ respond({
146
+ type: 'setLogLevelDone',
147
+ response: undefined
148
+ });
149
+ break;
150
+ case 'benchmarkZK':
151
+ respond({
152
+ type: 'benchmarkZKDone',
153
+ response: await (0, benchmark_1.Benchmark)(),
154
+ });
155
+ break;
156
+ default:
157
+ break;
158
+ }
159
+ }
160
+ catch (err) {
161
+ logger.error({ msg: err.message, err, data: event.data }, 'error in RPC');
162
+ respond({
163
+ type: 'error',
164
+ data: {
165
+ message: err.message,
166
+ stack: err.stack,
167
+ }
168
+ });
169
+ }
170
+ function getZkOperators(zkOperatorMode = 'default', zkEngine = 'snarkJS') {
171
+ // use default snarkJS ops
172
+ if (zkOperatorMode === 'default') {
173
+ return;
174
+ }
175
+ // the native app/window calling implements
176
+ // a ZK operator & wants to use it
177
+ const operators = {};
178
+ for (const alg of window_rpc_zk_1.ALL_ENC_ALGORITHMS) {
179
+ operators[alg] = (0, window_rpc_zk_1.makeWindowRpcZkOperator)(alg, makeCommunicationBridge(), zkEngine);
180
+ }
181
+ return operators;
182
+ }
183
+ function makeCommunicationBridge() {
184
+ return {
185
+ send: sendMessage,
186
+ onMessage(cb) {
187
+ windowMsgs.addEventListener('message', handle);
188
+ return () => {
189
+ windowMsgs.removeEventListener('message', handle);
190
+ };
191
+ function handle(msg) {
192
+ cb(msg.data);
193
+ }
194
+ },
195
+ };
196
+ }
197
+ function respond(data) {
198
+ const res = {
199
+ ...data,
200
+ id,
201
+ module: 'attestor-core',
202
+ isResponse: true
203
+ };
204
+ return sendMessage(res);
205
+ }
206
+ function sendMessage(data) {
207
+ var _a;
208
+ const str = JSON.stringify(data);
209
+ if (channel) {
210
+ (_a = window[channel]) === null || _a === void 0 ? void 0 : _a.postMessage(str);
211
+ }
212
+ else {
213
+ event.source.postMessage(str);
214
+ }
215
+ }
216
+ async function updateProviderParams(transcript, tlsVersion) {
217
+ const { req, res } = (0, utils_1.generateRequstAndResponseFromTranscript)(transcript, tlsVersion);
218
+ const bridge = makeCommunicationBridge();
219
+ const id = (0, utils_3.generateRpcRequestId)();
220
+ const waitForRes = (0, window_rpc_zk_1.waitForResponse)('updateProviderParams', id, bridge);
221
+ bridge.send({
222
+ type: 'updateProviderParams',
223
+ id,
224
+ request: {
225
+ request: {
226
+ ...req,
227
+ body: req.body
228
+ ? (0, tls_1.uint8ArrayToStr)(req.body)
229
+ : undefined
230
+ },
231
+ response: { ...res, body: (0, tls_1.uint8ArrayToStr)(res.body) },
232
+ },
233
+ module: 'attestor-core'
234
+ });
235
+ return await waitForRes;
236
+ }
237
+ }
238
+ }
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtd2luZG93LXJwYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aW5kb3ctcnBjL3NldHVwLXdpbmRvdy1ycGMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0QkEsd0NBaVJDO0FBN1NELDhDQUFzRDtBQUN0RCw0RUFBcUU7QUFDckUsdUNBQWtEO0FBQ2xELG9EQUE2SDtBQUU3SCxxQ0FBc0M7QUFDdEMsbURBQStDO0FBRS9DLGdEQUFxSTtBQUNySSxnRUFBMkc7QUFFM0csTUFBTSxjQUFlLFNBQVEsS0FBSztJQUNqQyxZQUE0QixJQUEwQjtRQUNyRCxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFEVyxTQUFJLEdBQUosSUFBSSxDQUFzQjtJQUV0RCxDQUFDO0NBQ0Q7QUFFRCxNQUFNLGFBQWEsR0FBRztJQUNyQixlQUFlO0lBQ2YsYUFBYTtDQUNiLENBQUE7QUFFRCxJQUFJLE1BQU0sR0FBRyxJQUFBLGtCQUFVLEVBQUMsSUFBSSxDQUFDLENBQUE7QUFFN0I7OztHQUdHO0FBQ0gsU0FBZ0IsY0FBYztJQUM3QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN4RCxNQUFNLFVBQVUsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO0lBRXBDLE1BQU0sVUFBVSxHQUFHLElBQUEsK0JBQXVCLEdBQUUsQ0FBQTtJQUU1QyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUUvQyxLQUFLLFVBQVUsYUFBYSxDQUFDLEtBQXdCO1FBQ3BELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQTtRQUNYLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQTtRQUNoQixJQUFJLENBQUM7WUFDSixJQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixPQUFNO1lBQ1AsQ0FBQztZQUVELE1BQU0sR0FBRyxH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
@@ -0,0 +1,184 @@
1
+ import type { EncryptionAlgorithm, ZKOperator } from '@reclaimprotocol/circom-symmetric-crypto';
2
+ import type { TaskCompletedEventObject } from 'src/avs/contracts/ReclaimServiceManager';
3
+ import type { CreateClaimOnAvsOpts, CreateClaimOnAvsStep } from 'src/avs/types';
4
+ import type { extractHTMLElement, extractJSONValueIndex } from 'src/providers/http/utils';
5
+ import type { AttestorData, CompleteClaimData, CreateClaimOnAttestorOpts, LogLevel, ProofGenerationStep, ProviderName, ProviderParams, ProviderSecretParams, ZKEngine } from 'src/types';
6
+ import { HttpRequest, HttpResponse } from 'src/utils';
7
+ type IdentifiedMessage = {
8
+ module: 'attestor-core';
9
+ /**
10
+ * Optionally, name of the channel to respond to
11
+ * Useful for specifying 'flutter_webview'
12
+ * channel
13
+ */
14
+ channel?: string;
15
+ id: string;
16
+ };
17
+ type CreateClaimRPCBaseOpts = {
18
+ /**
19
+ * Specify the mode for the ZK operator,
20
+ * 'default' -> will use the default ZK operator included in the SDK
21
+ * (presently that's SnarkJS supported by FFs running on WASM)
22
+ * 'rpc' -> if you've access to a native ZK operator, you can use this mode
23
+ * For eg. on React Native
24
+ */
25
+ zkOperatorMode?: 'default' | 'rpc';
26
+ context?: string;
27
+ zkEngine?: ZKEngine;
28
+ updateProviderParams?: boolean;
29
+ };
30
+ export type RPCCreateClaimOptions<N extends ProviderName = any> = Omit<CreateClaimOnAttestorOpts<N>, 'zkOperators' | 'context'> & CreateClaimRPCBaseOpts;
31
+ export type RPCCreateClaimOnAvsOptions<N extends ProviderName = any> = Omit<CreateClaimOnAvsOpts<N>, 'zkOperators' | 'context' | 'payer'> & {
32
+ payer?: 'attestor';
33
+ } & CreateClaimRPCBaseOpts;
34
+ type ExtractHTMLElementOptions = {
35
+ html: string;
36
+ xpathExpression: string;
37
+ contentsOnly: boolean;
38
+ };
39
+ type ExtractJSONValueIndexOptions = {
40
+ json: string;
41
+ jsonPath: string;
42
+ };
43
+ type ZKProveOpts = {
44
+ algorithm: EncryptionAlgorithm;
45
+ input: {
46
+ /** Base64 encoded attestor */
47
+ witnessB64: string;
48
+ };
49
+ };
50
+ type UpdateProviderParamsOpts = {
51
+ request: Omit<HttpRequest, 'body'> & {
52
+ body: string | undefined;
53
+ };
54
+ response: Omit<HttpResponse, 'body'> & {
55
+ body: string | undefined;
56
+ };
57
+ };
58
+ type ZKVerifyOpts = {
59
+ algorithm: EncryptionAlgorithm;
60
+ publicSignals: number[];
61
+ proof: {
62
+ [key: string]: string;
63
+ } | string;
64
+ };
65
+ type LogLevelOptions = {
66
+ logLevel: LogLevel;
67
+ /**
68
+ * If true, log messages will be sent back to the app
69
+ * via postMessage
70
+ */
71
+ sendLogsToApp: boolean;
72
+ };
73
+ type AVSCreateResult = {
74
+ object: TaskCompletedEventObject;
75
+ txHash: string;
76
+ };
77
+ /**
78
+ * Legacy V1 create claim response
79
+ */
80
+ export type CreateClaimResponse = {
81
+ identifier: string;
82
+ claimData: CompleteClaimData;
83
+ signatures: string[];
84
+ /**
85
+ * @deprecated no longer valid
86
+ */
87
+ witnesses: AttestorData[];
88
+ };
89
+ /**
90
+ * Fns the app calls on the attestor.
91
+ * These are things done inside the attestor
92
+ */
93
+ export type WindowRPCClient = {
94
+ /**
95
+ * Create a claim on the attestor where the RPC SDK is hosted.
96
+ */
97
+ createClaim(options: RPCCreateClaimOptions): Promise<CreateClaimResponse>;
98
+ /**
99
+ * Create a claim on the AVS
100
+ */
101
+ createClaimOnAvs(opts: RPCCreateClaimOnAvsOptions): Promise<AVSCreateResult>;
102
+ /**
103
+ * Extract an HTML element from a string of HTML
104
+ */
105
+ extractHtmlElement(options: ExtractHTMLElementOptions): Promise<ReturnType<typeof extractHTMLElement>>;
106
+ extractJSONValueIndex(options: ExtractJSONValueIndexOptions): Promise<ReturnType<typeof extractJSONValueIndex>>;
107
+ getCurrentMemoryUsage(): Promise<{
108
+ available: boolean;
109
+ content: string;
110
+ }>;
111
+ /**
112
+ * Set the log level for the attestor,
113
+ * optionally set "sendLogsToApp" to true to send logs
114
+ * back to the app
115
+ */
116
+ setLogLevel(options: LogLevelOptions): Promise<void>;
117
+ benchmarkZK(): Promise<string>;
118
+ };
119
+ /**
120
+ * Fns the attestor calls on the app
121
+ */
122
+ export type WindowRPCAppClient = {
123
+ zkProve(opts: ZKProveOpts): ReturnType<ZKOperator['groth16Prove']>;
124
+ zkVerify(opts: ZKVerifyOpts): ReturnType<ZKOperator['groth16Verify']>;
125
+ updateProviderParams(opts: UpdateProviderParamsOpts): Promise<{
126
+ params: Partial<ProviderParams<'http'>>;
127
+ secretParams: Partial<ProviderSecretParams<'http'>>;
128
+ }>;
129
+ };
130
+ type AnyRPCClient = {
131
+ [_: string]: (opts: any) => any;
132
+ };
133
+ export type WindowRPCRequest<T extends AnyRPCClient, K extends keyof T> = {
134
+ type: K;
135
+ request: Parameters<T[K]>[0];
136
+ };
137
+ export type WindowRPCResponse<T extends AnyRPCClient, K extends (keyof T) & string> = {
138
+ type: `${K}Done`;
139
+ response: Awaited<ReturnType<T[K]>>;
140
+ };
141
+ export type WindowRPCErrorResponse = {
142
+ type: 'error';
143
+ data: {
144
+ message: string;
145
+ stack: string;
146
+ };
147
+ };
148
+ type AsResponse<T> = T & {
149
+ isResponse: true;
150
+ };
151
+ /**
152
+ * Data sent to the attestor from the window/application
153
+ */
154
+ export type WindowRPCIncomingMsg = (WindowRPCRequest<WindowRPCClient, 'createClaim'> | WindowRPCRequest<WindowRPCClient, 'createClaimOnAvs'> | WindowRPCRequest<WindowRPCClient, 'extractHtmlElement'> | WindowRPCRequest<WindowRPCClient, 'extractJSONValueIndex'> | WindowRPCRequest<WindowRPCClient, 'getCurrentMemoryUsage'> | WindowRPCRequest<WindowRPCClient, 'setLogLevel'> | WindowRPCRequest<WindowRPCClient, 'benchmarkZK'> | AsResponse<WindowRPCResponse<WindowRPCAppClient, 'zkProve'>> | AsResponse<WindowRPCResponse<WindowRPCAppClient, 'zkVerify'>> | AsResponse<WindowRPCResponse<WindowRPCAppClient, 'updateProviderParams'>> | AsResponse<WindowRPCErrorResponse>) & IdentifiedMessage;
155
+ /**
156
+ * Data sent back from the attestor to
157
+ * the window/application containing the attestor
158
+ */
159
+ export type WindowRPCOutgoingMsg = (AsResponse<WindowRPCResponse<WindowRPCClient, 'createClaim'>> | AsResponse<WindowRPCResponse<WindowRPCClient, 'createClaimOnAvs'>> | AsResponse<WindowRPCResponse<WindowRPCClient, 'extractHtmlElement'>> | AsResponse<WindowRPCResponse<WindowRPCClient, 'extractJSONValueIndex'>> | AsResponse<WindowRPCResponse<WindowRPCClient, 'getCurrentMemoryUsage'>> | AsResponse<WindowRPCResponse<WindowRPCClient, 'setLogLevel'>> | AsResponse<WindowRPCResponse<WindowRPCClient, 'benchmarkZK'>> | WindowRPCRequest<WindowRPCAppClient, 'zkProve'> | WindowRPCRequest<WindowRPCAppClient, 'zkVerify'> | WindowRPCRequest<WindowRPCAppClient, 'updateProviderParams'> | ({
160
+ type: 'createClaimStep';
161
+ step: {
162
+ name: 'attestor-progress' | 'witness-progress';
163
+ step: ProofGenerationStep;
164
+ };
165
+ }) | ({
166
+ type: 'createClaimOnAvsStep';
167
+ step: CreateClaimOnAvsStep;
168
+ }) | ({
169
+ type: 'log';
170
+ level: LogLevelOptions['logLevel'];
171
+ message: object;
172
+ }) | AsResponse<WindowRPCErrorResponse>) & IdentifiedMessage;
173
+ export type CommunicationBridge = {
174
+ send(msg: WindowRPCOutgoingMsg): void;
175
+ onMessage(cb: (msg: WindowRPCIncomingMsg) => void): (() => void);
176
+ };
177
+ declare global {
178
+ interface Performance {
179
+ measureUserAgentSpecificMemory(): {
180
+ bytes: number;
181
+ };
182
+ }
183
+ }
184
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2luZG93LXJwYy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,13 @@
1
+ import { ClaimTunnelResponse } from 'src/proto/api';
2
+ import { CreateClaimResponse } from 'src/window-rpc/types';
3
+ export declare function getCurrentMemoryUsage(): Promise<{
4
+ available: boolean;
5
+ content: string;
6
+ }>;
7
+ export declare function generateRpcRequestId(): string;
8
+ /**
9
+ * The window RPC will be served from the same origin as the API server.
10
+ * so we can get the API server's origin from the location.
11
+ */
12
+ export declare function getWsApiUrlFromLocation(): string;
13
+ export declare function mapToCreateClaimResponse(res: ClaimTunnelResponse): CreateClaimResponse;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCurrentMemoryUsage = getCurrentMemoryUsage;
4
+ exports.generateRpcRequestId = generateRpcRequestId;
5
+ exports.getWsApiUrlFromLocation = getWsApiUrlFromLocation;
6
+ exports.mapToCreateClaimResponse = mapToCreateClaimResponse;
7
+ const ethers_1 = require("ethers");
8
+ const config_1 = require("src/config");
9
+ const utils_1 = require("src/utils");
10
+ // track memory usage
11
+ async function getCurrentMemoryUsage() {
12
+ if (!window.crossOriginIsolated) {
13
+ return {
14
+ available: false,
15
+ content: 'N/A (page not cross-origin-isolated)'
16
+ };
17
+ }
18
+ else if (!performance.measureUserAgentSpecificMemory) {
19
+ return {
20
+ available: false,
21
+ content: 'N/A (performance.measureUserAgentSpecificMemory() is not available)',
22
+ };
23
+ }
24
+ else {
25
+ try {
26
+ const result = await performance.measureUserAgentSpecificMemory();
27
+ const totalmb = Math.round(result.bytes / 1024 / 1024);
28
+ return {
29
+ available: true,
30
+ content: `${totalmb}mb`,
31
+ };
32
+ }
33
+ catch (error) {
34
+ if (error instanceof DOMException && error.name === 'SecurityError') {
35
+ return {
36
+ available: false,
37
+ content: `N/A (${error.message})`,
38
+ };
39
+ }
40
+ throw error;
41
+ }
42
+ }
43
+ }
44
+ function generateRpcRequestId() {
45
+ return Math.random().toString(36).slice(2);
46
+ }
47
+ /**
48
+ * The window RPC will be served from the same origin as the API server.
49
+ * so we can get the API server's origin from the location.
50
+ */
51
+ function getWsApiUrlFromLocation() {
52
+ const { host, protocol } = location;
53
+ const wsProtocol = protocol === 'https:' ? 'wss:' : 'ws:';
54
+ return `${wsProtocol}//${host}${config_1.WS_PATHNAME}`;
55
+ }
56
+ function mapToCreateClaimResponse(res) {
57
+ if (!res.claim) {
58
+ throw utils_1.AttestorError.fromProto(res.error);
59
+ }
60
+ return {
61
+ identifier: (0, utils_1.getIdentifierFromClaimInfo)(res.claim),
62
+ claimData: res.claim,
63
+ witnesses: [
64
+ {
65
+ id: res.signatures.attestorAddress,
66
+ url: getWsApiUrlFromLocation()
67
+ }
68
+ ],
69
+ signatures: [
70
+ ethers_1.ethers.utils
71
+ .hexlify(res.signatures.claimSignature)
72
+ .toLowerCase()
73
+ ]
74
+ };
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2luZG93LXJwYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU9BLHNEQStCQztBQUVELG9EQUVDO0FBTUQsMERBSUM7QUFFRCw0REFzQkM7QUE1RUQsbUNBQStCO0FBQy9CLHVDQUF3QztBQUV4QyxxQ0FBcUU7QUFHckUscUJBQXFCO0FBQ2QsS0FBSyxVQUFVLHFCQUFxQjtJQUMxQyxJQUFHLENBQUMsTUFBTSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEMsT0FBTztZQUNOLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE9BQU8sRUFBRSxzQ0FBc0M7U0FDL0MsQ0FBQTtJQUNGLENBQUM7U0FBTSxJQUFHLENBQUMsV0FBVyxDQUFDLDhCQUE4QixFQUFFLENBQUM7UUFDdkQsT0FBTztZQUNOLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE9BQU8sRUFBRSxxRUFBcUU7U0FDOUUsQ0FBQTtJQUNGLENBQUM7U0FBTSxDQUFDO1FBQ1AsSUFBSSxDQUFDO1lBQ0osTUFBTSxNQUFNLEdBQUcsTUFBTSxXQUFXLENBQUMsOEJBQThCLEVBQUUsQ0FBQTtZQUNqRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFBO1lBRXRELE9BQU87Z0JBQ04sU0FBUyxFQUFFLElBQUk7Z0JBQ2YsT0FBTyxFQUFFLEdBQUcsT0FBTyxJQUFJO2FBQ3ZCLENBQUE7UUFDRixDQUFDO1FBQUMsT0FBTSxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUcsS0FBSyxZQUFZLFlBQVksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRSxDQUFDO2dCQUNwRSxPQUFPO29CQUNOLFNBQVMsRUFBRSxLQUFLO29CQUNoQixPQUFPLEVBQUUsUUFBUSxLQUFLLENBQUMsT0FBTyxHQUFHO2lCQUNqQyxDQUFBO1lBQ0YsQ0FBQztZQUVELE1BQU0sS0FBSyxDQUFBO1FBQ1osQ0FBQztJQUNGLENBQUM7QUFDRixDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CO0lBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDM0MsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHVCQUF1QjtJQUN0QyxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLFFBQVEsQ0FBQTtJQUNuQyxNQUFNLFVBQVUsR0FBRyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUN6RCxPQUFPLEdBQUcsVUFBVSxLQUFLLElBQUksR0FBRyxvQkFBVyxFQUFFLENBQUE7QUFDOUMsQ0FBQztBQUVELFNBQWdCLHdCQUF3QixDQUN2QyxHQUF3QjtJQUV4QixJQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxxQkFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELE9BQU87UUFDTixVQUFVLEVBQUUsSUFBQSxrQ0FBMEIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQ2pELFNBQVMsRUFBRSxHQUFHLENBQUMsS0FBSztRQUNwQixTQUFTLEVBQUU7WUFDVjtnQkFDQyxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVcsQ0FBQyxlQUFlO2dCQUNuQyxHQUFHLEVBQUUsdUJBQXVCLEVBQUU7YUFDOUI7U0FDRDtRQUNELFVBQVUsRUFBRTtZQUNYLGVBQU0sQ0FBQyxLQUFLO2lCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVyxDQUFDLGNBQWMsQ0FBQztpQkFDdkMsV0FBVyxFQUFFO1NBQ2Y7S0FDRCxDQUFBO0FBQ0YsQ0FBQyJ9
@@ -0,0 +1,11 @@
1
+ import { EncryptionAlgorithm, ZKOperator } from '@reclaimprotocol/circom-symmetric-crypto';
2
+ import { ZKEngine } from 'src/types';
3
+ import { CommunicationBridge, WindowRPCAppClient } from 'src/window-rpc/types';
4
+ export declare const ALL_ENC_ALGORITHMS: EncryptionAlgorithm[];
5
+ /**
6
+ * The goal of this RPC operator is if the attestor client
7
+ * is running in a WebView, it can call the native
8
+ * application to perform the ZK operations
9
+ */
10
+ export declare function makeWindowRpcZkOperator(algorithm: EncryptionAlgorithm, bridge: CommunicationBridge, zkEngine?: ZKEngine): ZKOperator;
11
+ export declare function waitForResponse<T extends keyof WindowRPCAppClient>(type: T, requestId: string, bridge: CommunicationBridge): Promise<Awaited<ReturnType<WindowRPCAppClient[T]>>>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ALL_ENC_ALGORITHMS = void 0;
4
+ exports.makeWindowRpcZkOperator = makeWindowRpcZkOperator;
5
+ exports.waitForResponse = waitForResponse;
6
+ const utils_1 = require("ethers/lib/utils");
7
+ const utils_2 = require("src/utils");
8
+ const utils_3 = require("src/window-rpc/utils");
9
+ exports.ALL_ENC_ALGORITHMS = [
10
+ 'aes-256-ctr',
11
+ 'aes-128-ctr',
12
+ 'chacha20',
13
+ ];
14
+ /**
15
+ * The goal of this RPC operator is if the attestor client
16
+ * is running in a WebView, it can call the native
17
+ * application to perform the ZK operations
18
+ */
19
+ function makeWindowRpcZkOperator(algorithm, bridge, zkEngine = 'snarkJS') {
20
+ return {
21
+ async generateWitness(input) {
22
+ const operator = await (0, utils_2.makeDefaultZkOperator)(algorithm, zkEngine, utils_2.logger);
23
+ return operator.generateWitness(input);
24
+ },
25
+ groth16Prove(input) {
26
+ const id = (0, utils_3.generateRpcRequestId)();
27
+ const waitForRes = waitForResponse('zkProve', id, bridge);
28
+ bridge.send({
29
+ type: 'zkProve',
30
+ id,
31
+ request: {
32
+ algorithm,
33
+ input: { witnessB64: utils_1.base64.encode(input) },
34
+ },
35
+ module: 'attestor-core'
36
+ });
37
+ return waitForRes;
38
+ },
39
+ groth16Verify(publicSignals, proof) {
40
+ const id = (0, utils_3.generateRpcRequestId)();
41
+ const waitForRes = waitForResponse('zkVerify', id, bridge);
42
+ bridge.send({
43
+ type: 'zkVerify',
44
+ id,
45
+ request: {
46
+ algorithm,
47
+ publicSignals,
48
+ proof,
49
+ },
50
+ module: 'attestor-core'
51
+ });
52
+ return waitForRes;
53
+ },
54
+ };
55
+ }
56
+ function waitForResponse(type, requestId, bridge) {
57
+ const returnType = `${type}Done`;
58
+ return new Promise((resolve, reject) => {
59
+ const cancel = bridge.onMessage(msg => {
60
+ if (msg.id === requestId) {
61
+ if (msg.type === 'error') {
62
+ reject(new Error(msg.data.message));
63
+ }
64
+ else if (msg.type === returnType) {
65
+ resolve(msg.response);
66
+ }
67
+ cancel();
68
+ }
69
+ });
70
+ });
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LXJwYy16ay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93aW5kb3ctcnBjL3dpbmRvdy1ycGMtemsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JBLDBEQThDQztBQUVELDBDQW9CQztBQXJGRCw0Q0FBeUM7QUFFekMscUNBQXlEO0FBRXpELGdEQUEyRDtBQUU5QyxRQUFBLGtCQUFrQixHQUEwQjtJQUN4RCxhQUFhO0lBQ2IsYUFBYTtJQUNiLFVBQVU7Q0FDVixDQUFBO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHVCQUF1QixDQUN0QyxTQUE4QixFQUM5QixNQUEyQixFQUMzQixXQUFxQixTQUFTO0lBRTlCLE9BQU87UUFDTixLQUFLLENBQUMsZUFBZSxDQUFDLEtBQUs7WUFDMUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDZCQUFxQixFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBTSxDQUFDLENBQUE7WUFDekUsT0FBTyxRQUFRLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFDRCxZQUFZLENBQUMsS0FBSztZQUNqQixNQUFNLEVBQUUsR0FBRyxJQUFBLDRCQUFvQixHQUFFLENBQUE7WUFDakMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFFekQsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDWCxJQUFJLEVBQUUsU0FBUztnQkFDZixFQUFFO2dCQUNGLE9BQU8sRUFBRTtvQkFDUixTQUFTO29CQUNULEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxjQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2lCQUMzQztnQkFDRCxNQUFNLEVBQUUsZUFBZTthQUN2QixDQUFDLENBQUE7WUFFRixPQUFPLFVBQVUsQ0FBQTtRQUNsQixDQUFDO1FBQ0QsYUFBYSxDQUFDLGFBQWEsRUFBRSxLQUFLO1lBQ2pDLE1BQU0sRUFBRSxHQUFHLElBQUEsNEJBQW9CLEdBQUUsQ0FBQTtZQUNqQyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUUxRCxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxVQUFVO2dCQUNoQixFQUFFO2dCQUNGLE9BQU8sRUFBRTtvQkFDUixTQUFTO29CQUNULGFBQWE7b0JBQ2IsS0FBSztpQkFDTDtnQkFDRCxNQUFNLEVBQUUsZUFBZTthQUN2QixDQUFDLENBQUE7WUFFRixPQUFPLFVBQVUsQ0FBQTtRQUNsQixDQUFDO0tBQ0QsQ0FBQTtBQUdGLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQzlCLElBQU8sRUFDUCxTQUFpQixFQUNqQixNQUEyQjtJQUczQixNQUFNLFVBQVUsR0FBRyxHQUFHLElBQUksTUFBZSxDQUFBO0lBQ3pDLE9BQU8sSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDekMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyQyxJQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3pCLElBQUcsR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDekIsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtnQkFDcEMsQ0FBQztxQkFBTSxJQUFHLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ25DLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBYSxDQUFDLENBQUE7Z0JBQzNCLENBQUM7Z0JBRUQsTUFBTSxFQUFFLENBQUE7WUFDVCxDQUFDO1FBQ0YsQ0FBQyxDQUFDLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNILENBQUMifQ==