@zkpassport/sdk 0.8.6 → 0.8.8

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.
package/dist/esm/index.js CHANGED
@@ -111,163 +111,283 @@ var ZKPassportVerifier_default = {
111
111
  type: "function",
112
112
  name: "enforceSanctionsRoot",
113
113
  inputs: [
114
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
115
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
114
+ {
115
+ name: "params",
116
+ type: "tuple",
117
+ internalType: "struct ProofVerificationParams",
118
+ components: [
119
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
120
+ { name: "proof", type: "bytes", internalType: "bytes" },
121
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
122
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
123
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
124
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
125
+ { name: "domain", type: "string", internalType: "string" },
126
+ { name: "scope", type: "string", internalType: "string" },
127
+ { name: "devMode", type: "bool", internalType: "bool" }
128
+ ]
129
+ }
116
130
  ],
117
131
  outputs: [],
118
132
  stateMutability: "view"
119
133
  },
120
134
  {
121
135
  type: "function",
122
- name: "getAgeProofInputs",
136
+ name: "getBoundData",
123
137
  inputs: [
124
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
125
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
138
+ {
139
+ name: "params",
140
+ type: "tuple",
141
+ internalType: "struct ProofVerificationParams",
142
+ components: [
143
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
144
+ { name: "proof", type: "bytes", internalType: "bytes" },
145
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
146
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
147
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
148
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
149
+ { name: "domain", type: "string", internalType: "string" },
150
+ { name: "scope", type: "string", internalType: "string" },
151
+ { name: "devMode", type: "bool", internalType: "bool" }
152
+ ]
153
+ }
126
154
  ],
127
155
  outputs: [
128
- { name: "currentDate", type: "uint256", internalType: "uint256" },
129
- { name: "minAge", type: "uint8", internalType: "uint8" },
130
- { name: "maxAge", type: "uint8", internalType: "uint8" }
156
+ {
157
+ name: "boundData",
158
+ type: "tuple",
159
+ internalType: "struct BoundData",
160
+ components: [
161
+ { name: "senderAddress", type: "address", internalType: "address" },
162
+ { name: "chainId", type: "uint256", internalType: "uint256" },
163
+ { name: "customData", type: "string", internalType: "string" }
164
+ ]
165
+ }
131
166
  ],
132
167
  stateMutability: "pure"
133
168
  },
134
169
  {
135
170
  type: "function",
136
- name: "getBindProofInputs",
171
+ name: "getDisclosedData",
137
172
  inputs: [
138
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
139
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
173
+ {
174
+ name: "params",
175
+ type: "tuple",
176
+ internalType: "struct ProofVerificationParams",
177
+ components: [
178
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
179
+ { name: "proof", type: "bytes", internalType: "bytes" },
180
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
181
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
182
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
183
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
184
+ { name: "domain", type: "string", internalType: "string" },
185
+ { name: "scope", type: "string", internalType: "string" },
186
+ { name: "devMode", type: "bool", internalType: "bool" }
187
+ ]
188
+ },
189
+ { name: "isIDCard", type: "bool", internalType: "bool" }
140
190
  ],
141
- outputs: [{ name: "data", type: "bytes", internalType: "bytes" }],
142
- stateMutability: "pure"
143
- },
144
- {
145
- type: "function",
146
- name: "getBoundData",
147
- inputs: [{ name: "data", type: "bytes", internalType: "bytes" }],
148
191
  outputs: [
149
- { name: "senderAddress", type: "address", internalType: "address" },
150
- { name: "chainId", type: "uint256", internalType: "uint256" },
151
- { name: "customData", type: "string", internalType: "string" }
192
+ {
193
+ name: "disclosedData",
194
+ type: "tuple",
195
+ internalType: "struct DisclosedData",
196
+ components: [
197
+ { name: "name", type: "string", internalType: "string" },
198
+ { name: "issuingCountry", type: "string", internalType: "string" },
199
+ { name: "nationality", type: "string", internalType: "string" },
200
+ { name: "gender", type: "string", internalType: "string" },
201
+ { name: "birthDate", type: "string", internalType: "string" },
202
+ { name: "expiryDate", type: "string", internalType: "string" },
203
+ { name: "documentNumber", type: "string", internalType: "string" },
204
+ { name: "documentType", type: "string", internalType: "string" }
205
+ ]
206
+ }
152
207
  ],
153
208
  stateMutability: "pure"
154
209
  },
155
210
  {
156
211
  type: "function",
157
- name: "getCountryProofInputs",
212
+ name: "isAgeAbove",
158
213
  inputs: [
159
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
160
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
161
- { name: "proofType", type: "uint8", internalType: "enum ProofType" }
214
+ { name: "minAge", type: "uint8", internalType: "uint8" },
215
+ {
216
+ name: "params",
217
+ type: "tuple",
218
+ internalType: "struct ProofVerificationParams",
219
+ components: [
220
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
221
+ { name: "proof", type: "bytes", internalType: "bytes" },
222
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
223
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
224
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
225
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
226
+ { name: "domain", type: "string", internalType: "string" },
227
+ { name: "scope", type: "string", internalType: "string" },
228
+ { name: "devMode", type: "bool", internalType: "bool" }
229
+ ]
230
+ }
162
231
  ],
163
- outputs: [{ name: "countryList", type: "string[]", internalType: "string[]" }],
164
- stateMutability: "pure"
232
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
233
+ stateMutability: "view"
165
234
  },
166
235
  {
167
236
  type: "function",
168
- name: "getDateProofInputs",
237
+ name: "isAgeAboveOrEqual",
169
238
  inputs: [
170
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
171
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
172
- { name: "proofType", type: "uint8", internalType: "enum ProofType" }
173
- ],
174
- outputs: [
175
- { name: "currentDate", type: "uint256", internalType: "uint256" },
176
- { name: "minDate", type: "uint256", internalType: "uint256" },
177
- { name: "maxDate", type: "uint256", internalType: "uint256" }
239
+ { name: "minAge", type: "uint8", internalType: "uint8" },
240
+ {
241
+ name: "params",
242
+ type: "tuple",
243
+ internalType: "struct ProofVerificationParams",
244
+ components: [
245
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
246
+ { name: "proof", type: "bytes", internalType: "bytes" },
247
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
248
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
249
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
250
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
251
+ { name: "domain", type: "string", internalType: "string" },
252
+ { name: "scope", type: "string", internalType: "string" },
253
+ { name: "devMode", type: "bool", internalType: "bool" }
254
+ ]
255
+ }
178
256
  ],
179
- stateMutability: "pure"
257
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
258
+ stateMutability: "view"
180
259
  },
181
260
  {
182
261
  type: "function",
183
- name: "getDiscloseProofInputs",
262
+ name: "isAgeBelow",
184
263
  inputs: [
185
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
186
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
187
- ],
188
- outputs: [
189
- { name: "discloseMask", type: "bytes", internalType: "bytes" },
190
- { name: "discloseBytes", type: "bytes", internalType: "bytes" }
264
+ { name: "maxAge", type: "uint8", internalType: "uint8" },
265
+ {
266
+ name: "params",
267
+ type: "tuple",
268
+ internalType: "struct ProofVerificationParams",
269
+ components: [
270
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
271
+ { name: "proof", type: "bytes", internalType: "bytes" },
272
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
273
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
274
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
275
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
276
+ { name: "domain", type: "string", internalType: "string" },
277
+ { name: "scope", type: "string", internalType: "string" },
278
+ { name: "devMode", type: "bool", internalType: "bool" }
279
+ ]
280
+ }
191
281
  ],
192
- stateMutability: "pure"
282
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
283
+ stateMutability: "view"
193
284
  },
194
285
  {
195
286
  type: "function",
196
- name: "getDisclosedData",
287
+ name: "isAgeBelowOrEqual",
197
288
  inputs: [
198
- { name: "discloseBytes", type: "bytes", internalType: "bytes" },
199
- { name: "isIDCard", type: "bool", internalType: "bool" }
200
- ],
201
- outputs: [
202
- { name: "name", type: "string", internalType: "string" },
203
- { name: "issuingCountry", type: "string", internalType: "string" },
204
- { name: "nationality", type: "string", internalType: "string" },
205
- { name: "gender", type: "string", internalType: "string" },
206
- { name: "birthDate", type: "string", internalType: "string" },
207
- { name: "expiryDate", type: "string", internalType: "string" },
208
- { name: "documentNumber", type: "string", internalType: "string" },
209
- { name: "documentType", type: "string", internalType: "string" }
289
+ { name: "maxAge", type: "uint8", internalType: "uint8" },
290
+ {
291
+ name: "params",
292
+ type: "tuple",
293
+ internalType: "struct ProofVerificationParams",
294
+ components: [
295
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
296
+ { name: "proof", type: "bytes", internalType: "bytes" },
297
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
298
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
299
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
300
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
301
+ { name: "domain", type: "string", internalType: "string" },
302
+ { name: "scope", type: "string", internalType: "string" },
303
+ { name: "devMode", type: "bool", internalType: "bool" }
304
+ ]
305
+ }
210
306
  ],
211
- stateMutability: "pure"
307
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
308
+ stateMutability: "view"
212
309
  },
213
310
  {
214
311
  type: "function",
215
- name: "getSanctionsProofInputs",
312
+ name: "isAgeBetween",
216
313
  inputs: [
217
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
218
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
219
- ],
220
- outputs: [
221
- { name: "sanctionsTreesCommitment", type: "bytes32", internalType: "bytes32" }
314
+ { name: "minAge", type: "uint8", internalType: "uint8" },
315
+ { name: "maxAge", type: "uint8", internalType: "uint8" },
316
+ {
317
+ name: "params",
318
+ type: "tuple",
319
+ internalType: "struct ProofVerificationParams",
320
+ components: [
321
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
322
+ { name: "proof", type: "bytes", internalType: "bytes" },
323
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
324
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
325
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
326
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
327
+ { name: "domain", type: "string", internalType: "string" },
328
+ { name: "scope", type: "string", internalType: "string" },
329
+ { name: "devMode", type: "bool", internalType: "bool" }
330
+ ]
331
+ }
222
332
  ],
223
- stateMutability: "pure"
224
- },
225
- {
226
- type: "function",
227
- name: "paused",
228
- inputs: [],
229
333
  outputs: [{ name: "", type: "bool", internalType: "bool" }],
230
334
  stateMutability: "view"
231
335
  },
232
336
  {
233
337
  type: "function",
234
- name: "removeVerifiers",
235
- inputs: [{ name: "vkeyHashes", type: "bytes32[]", internalType: "bytes32[]" }],
236
- outputs: [],
237
- stateMutability: "nonpayable"
238
- },
239
- {
240
- type: "function",
241
- name: "rootRegistry",
242
- inputs: [],
243
- outputs: [{ name: "", type: "address", internalType: "contract IRootRegistry" }],
338
+ name: "isAgeEqual",
339
+ inputs: [
340
+ { name: "age", type: "uint8", internalType: "uint8" },
341
+ {
342
+ name: "params",
343
+ type: "tuple",
344
+ internalType: "struct ProofVerificationParams",
345
+ components: [
346
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
347
+ { name: "proof", type: "bytes", internalType: "bytes" },
348
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
349
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
350
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
351
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
352
+ { name: "domain", type: "string", internalType: "string" },
353
+ { name: "scope", type: "string", internalType: "string" },
354
+ { name: "devMode", type: "bool", internalType: "bool" }
355
+ ]
356
+ }
357
+ ],
358
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
244
359
  stateMutability: "view"
245
360
  },
246
361
  {
247
362
  type: "function",
248
- name: "setPaused",
249
- inputs: [{ name: "_paused", type: "bool", internalType: "bool" }],
250
- outputs: [],
251
- stateMutability: "nonpayable"
252
- },
253
- {
254
- type: "function",
255
- name: "transferAdmin",
256
- inputs: [{ name: "newAdmin", type: "address", internalType: "address" }],
257
- outputs: [],
258
- stateMutability: "nonpayable"
259
- },
260
- {
261
- type: "function",
262
- name: "updateRootRegistry",
263
- inputs: [{ name: "_rootRegistry", type: "address", internalType: "address" }],
264
- outputs: [],
265
- stateMutability: "nonpayable"
363
+ name: "isBirthdateAfter",
364
+ inputs: [
365
+ { name: "minDate", type: "uint256", internalType: "uint256" },
366
+ {
367
+ name: "params",
368
+ type: "tuple",
369
+ internalType: "struct ProofVerificationParams",
370
+ components: [
371
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
372
+ { name: "proof", type: "bytes", internalType: "bytes" },
373
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
374
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
375
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
376
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
377
+ { name: "domain", type: "string", internalType: "string" },
378
+ { name: "scope", type: "string", internalType: "string" },
379
+ { name: "devMode", type: "bool", internalType: "bool" }
380
+ ]
381
+ }
382
+ ],
383
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
384
+ stateMutability: "view"
266
385
  },
267
386
  {
268
387
  type: "function",
269
- name: "verifyProof",
388
+ name: "isBirthdateAfterOrEqual",
270
389
  inputs: [
390
+ { name: "minDate", type: "uint256", internalType: "uint256" },
271
391
  {
272
392
  name: "params",
273
393
  type: "tuple",
@@ -285,389 +405,1495 @@ var ZKPassportVerifier_default = {
285
405
  ]
286
406
  }
287
407
  ],
288
- outputs: [
289
- { name: "", type: "bool", internalType: "bool" },
290
- { name: "", type: "bytes32", internalType: "bytes32" }
291
- ],
408
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
292
409
  stateMutability: "view"
293
410
  },
294
411
  {
295
412
  type: "function",
296
- name: "verifyScopes",
413
+ name: "isBirthdateBefore",
297
414
  inputs: [
298
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
299
- { name: "domain", type: "string", internalType: "string" },
300
- { name: "scope", type: "string", internalType: "string" }
415
+ { name: "maxDate", type: "uint256", internalType: "uint256" },
416
+ {
417
+ name: "params",
418
+ type: "tuple",
419
+ internalType: "struct ProofVerificationParams",
420
+ components: [
421
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
422
+ { name: "proof", type: "bytes", internalType: "bytes" },
423
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
424
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
425
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
426
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
427
+ { name: "domain", type: "string", internalType: "string" },
428
+ { name: "scope", type: "string", internalType: "string" },
429
+ { name: "devMode", type: "bool", internalType: "bool" }
430
+ ]
431
+ }
301
432
  ],
302
433
  outputs: [{ name: "", type: "bool", internalType: "bool" }],
303
- stateMutability: "pure"
434
+ stateMutability: "view"
304
435
  },
305
436
  {
306
437
  type: "function",
307
- name: "vkeyHashToVerifier",
308
- inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
309
- outputs: [{ name: "", type: "address", internalType: "address" }],
438
+ name: "isBirthdateBeforeOrEqual",
439
+ inputs: [
440
+ { name: "maxDate", type: "uint256", internalType: "uint256" },
441
+ {
442
+ name: "params",
443
+ type: "tuple",
444
+ internalType: "struct ProofVerificationParams",
445
+ components: [
446
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
447
+ { name: "proof", type: "bytes", internalType: "bytes" },
448
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
449
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
450
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
451
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
452
+ { name: "domain", type: "string", internalType: "string" },
453
+ { name: "scope", type: "string", internalType: "string" },
454
+ { name: "devMode", type: "bool", internalType: "bool" }
455
+ ]
456
+ }
457
+ ],
458
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
310
459
  stateMutability: "view"
311
460
  },
312
461
  {
313
- type: "event",
314
- name: "AdminUpdated",
462
+ type: "function",
463
+ name: "isBirthdateBetween",
315
464
  inputs: [
316
- { name: "oldAdmin", type: "address", indexed: true, internalType: "address" },
317
- { name: "newAdmin", type: "address", indexed: true, internalType: "address" }
465
+ { name: "minDate", type: "uint256", internalType: "uint256" },
466
+ { name: "maxDate", type: "uint256", internalType: "uint256" },
467
+ {
468
+ name: "params",
469
+ type: "tuple",
470
+ internalType: "struct ProofVerificationParams",
471
+ components: [
472
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
473
+ { name: "proof", type: "bytes", internalType: "bytes" },
474
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
475
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
476
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
477
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
478
+ { name: "domain", type: "string", internalType: "string" },
479
+ { name: "scope", type: "string", internalType: "string" },
480
+ { name: "devMode", type: "bool", internalType: "bool" }
481
+ ]
482
+ }
318
483
  ],
319
- anonymous: false
484
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
485
+ stateMutability: "view"
320
486
  },
321
487
  {
322
- type: "event",
323
- name: "CertificateRegistryRootAdded",
488
+ type: "function",
489
+ name: "isBirthdateEqual",
324
490
  inputs: [
491
+ { name: "date", type: "uint256", internalType: "uint256" },
325
492
  {
326
- name: "certificateRegistryRoot",
327
- type: "bytes32",
328
- indexed: true,
329
- internalType: "bytes32"
493
+ name: "params",
494
+ type: "tuple",
495
+ internalType: "struct ProofVerificationParams",
496
+ components: [
497
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
498
+ { name: "proof", type: "bytes", internalType: "bytes" },
499
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
500
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
501
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
502
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
503
+ { name: "domain", type: "string", internalType: "string" },
504
+ { name: "scope", type: "string", internalType: "string" },
505
+ { name: "devMode", type: "bool", internalType: "bool" }
506
+ ]
330
507
  }
331
508
  ],
332
- anonymous: false
509
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
510
+ stateMutability: "view"
333
511
  },
334
512
  {
335
- type: "event",
336
- name: "CertificateRegistryRootRemoved",
513
+ type: "function",
514
+ name: "isExpiryDateAfter",
337
515
  inputs: [
516
+ { name: "minDate", type: "uint256", internalType: "uint256" },
338
517
  {
339
- name: "certificateRegistryRoot",
340
- type: "bytes32",
341
- indexed: true,
342
- internalType: "bytes32"
518
+ name: "params",
519
+ type: "tuple",
520
+ internalType: "struct ProofVerificationParams",
521
+ components: [
522
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
523
+ { name: "proof", type: "bytes", internalType: "bytes" },
524
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
525
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
526
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
527
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
528
+ { name: "domain", type: "string", internalType: "string" },
529
+ { name: "scope", type: "string", internalType: "string" },
530
+ { name: "devMode", type: "bool", internalType: "bool" }
531
+ ]
343
532
  }
344
533
  ],
345
- anonymous: false
534
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
535
+ stateMutability: "view"
346
536
  },
347
537
  {
348
- type: "event",
349
- name: "PausedStatusChanged",
350
- inputs: [{ name: "paused", type: "bool", indexed: false, internalType: "bool" }],
351
- anonymous: false
538
+ type: "function",
539
+ name: "isExpiryDateAfterOrEqual",
540
+ inputs: [
541
+ { name: "minDate", type: "uint256", internalType: "uint256" },
542
+ {
543
+ name: "params",
544
+ type: "tuple",
545
+ internalType: "struct ProofVerificationParams",
546
+ components: [
547
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
548
+ { name: "proof", type: "bytes", internalType: "bytes" },
549
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
550
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
551
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
552
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
553
+ { name: "domain", type: "string", internalType: "string" },
554
+ { name: "scope", type: "string", internalType: "string" },
555
+ { name: "devMode", type: "bool", internalType: "bool" }
556
+ ]
557
+ }
558
+ ],
559
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
560
+ stateMutability: "view"
352
561
  },
353
562
  {
354
- type: "event",
355
- name: "SanctionsTreesRootUpdates",
563
+ type: "function",
564
+ name: "isExpiryDateBefore",
356
565
  inputs: [
566
+ { name: "maxDate", type: "uint256", internalType: "uint256" },
357
567
  {
358
- name: "_sanctionsTreesRoot",
359
- type: "bytes32",
360
- indexed: true,
361
- internalType: "bytes32"
568
+ name: "params",
569
+ type: "tuple",
570
+ internalType: "struct ProofVerificationParams",
571
+ components: [
572
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
573
+ { name: "proof", type: "bytes", internalType: "bytes" },
574
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
575
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
576
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
577
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
578
+ { name: "domain", type: "string", internalType: "string" },
579
+ { name: "scope", type: "string", internalType: "string" },
580
+ { name: "devMode", type: "bool", internalType: "bool" }
581
+ ]
362
582
  }
363
583
  ],
364
- anonymous: false
584
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
585
+ stateMutability: "view"
365
586
  },
366
587
  {
367
- type: "event",
368
- name: "VerifierAdded",
588
+ type: "function",
589
+ name: "isExpiryDateBeforeOrEqual",
369
590
  inputs: [
370
- { name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" },
371
- { name: "verifier", type: "address", indexed: true, internalType: "address" }
591
+ { name: "maxDate", type: "uint256", internalType: "uint256" },
592
+ {
593
+ name: "params",
594
+ type: "tuple",
595
+ internalType: "struct ProofVerificationParams",
596
+ components: [
597
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
598
+ { name: "proof", type: "bytes", internalType: "bytes" },
599
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
600
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
601
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
602
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
603
+ { name: "domain", type: "string", internalType: "string" },
604
+ { name: "scope", type: "string", internalType: "string" },
605
+ { name: "devMode", type: "bool", internalType: "bool" }
606
+ ]
607
+ }
372
608
  ],
373
- anonymous: false
609
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
610
+ stateMutability: "view"
374
611
  },
375
612
  {
376
- type: "event",
377
- name: "VerifierRemoved",
613
+ type: "function",
614
+ name: "isExpiryDateBetween",
378
615
  inputs: [
379
- { name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" }
616
+ { name: "minDate", type: "uint256", internalType: "uint256" },
617
+ { name: "maxDate", type: "uint256", internalType: "uint256" },
618
+ {
619
+ name: "params",
620
+ type: "tuple",
621
+ internalType: "struct ProofVerificationParams",
622
+ components: [
623
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
624
+ { name: "proof", type: "bytes", internalType: "bytes" },
625
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
626
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
627
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
628
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
629
+ { name: "domain", type: "string", internalType: "string" },
630
+ { name: "scope", type: "string", internalType: "string" },
631
+ { name: "devMode", type: "bool", internalType: "bool" }
632
+ ]
633
+ }
380
634
  ],
381
- anonymous: false
635
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
636
+ stateMutability: "view"
382
637
  },
383
638
  {
384
- type: "event",
385
- name: "ZKPassportVerifierDeployed",
639
+ type: "function",
640
+ name: "isExpiryDateEqual",
386
641
  inputs: [
387
- { name: "admin", type: "address", indexed: true, internalType: "address" },
388
- { name: "timestamp", type: "uint256", indexed: false, internalType: "uint256" }
389
- ],
390
- anonymous: false
391
- }
392
- ],
393
- bytecode: {
394
- object: "0x608060405234801561000f575f5ffd5b5060405161305038038061305083398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b612f20806101305f395ff3fe608060405234801561000f575f5ffd5b5060043610610148575f3560e01c806375829def116100bf578063b96b161c11610079578063b96b161c14610320578063d7bf616a14610333578063ddf3eec91461035d578063ec1374cd1461037e578063f851a440146103ac578063fbd24457146103be575f5ffd5b806375829def146102625780638163f23114610275578063847755e3146102b55780638d6937b8146102c8578063a6df2c01146102db578063b2b37a4c146102ee575f5ffd5b80632d4f11e9116101105780632d4f11e9146101e657806341a0e2c2146101f95780634601173c1461020f5780635c975abb1461022f578063652ba33d146102525780636c40d5d61461025a575f5ffd5b806303d37eae1461014c5780630af18ba61461017c578063126f75591461019e57806316c38b3c146101be57806318677f2a146101d3575b5f5ffd5b61015f61015a36600461269d565b6103d1565b60405161017398979695949392919061271d565b60405180910390f35b61018f61018a3660046127ca565b61093c565b60405161017393929190612808565b6101b16101ac366004612877565b610c29565b60405161017391906128fb565b6101d16101cc36600461295e565b610e68565b005b6101d16101e1366004612980565b610ee8565b6101d16101f43660046129a6565b610f95565b610201600181565b604051908152602001610173565b61022261021d3660046129a6565b610fb4565b6040516101739190612a10565b5f5461024290600160a01b900460ff1681565b6040519015158152602001610173565b610201600381565b610201600281565b6101d1610270366004612980565b611378565b61029d610283366004612a22565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610173565b6102426102c3366004612a39565b611446565b6101d16102d6366004612ad5565b61160e565b6101d16102e9366004612b07565b6116ce565b6103016102fc3660046129a6565b6117f1565b6040805193845260ff9283166020850152911690820152606001610173565b60025461029d906001600160a01b031681565b610346610341366004612b3b565b611979565b604080519215158352602083019190915201610173565b61037061036b3660046129a6565b611d6c565b604051610173929190612b72565b61039161038c366004612877565b611f26565b60408051938452602084019290925290820152606001610173565b5f5461029d906001600160a01b031681565b6102016103cc3660046129a6565b6120d1565b6060806060806060806060808861068b578a60058b6103f1826027612baa565b926103fe93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c9050610446826003612baa565b9261045393929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250603691508c905061049b826003612baa565b926104a893929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250604091508c90506104f0826001612baa565b926104fd93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250603991508c9050610545826006612baa565b9261055293929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250604191508c905061059a826006612baa565b926105a793929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250602c91508c90506105ef826009612baa565b926105fc93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d91506106429050826002612baa565b9261064f93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092935061092f92505050565b8a603c8b61069a82601e612baa565b926106a793929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c90506106ef826003612baa565b926106fc93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250602d91508c9050610744826003612baa565b9261075193929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250602591508c9050610799826001612baa565b926107a693929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250601e91508c90506107ee826006612baa565b926107fb93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250602691508c9050610843826006612baa565b9261085093929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250600591508c9050610898826009612baa565b926108a593929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d91506108eb9050826002612baa565b926108f893929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293505050505b9397509397509397509397565b5f806060815b6101f4811015610c2157600160f81b86868381811061096357610963612bf8565b9050013560f81c60f81b6001600160f81b03191603610a20575f868661098a846001612baa565b90610996856003612baa565b926109a393929190612bbd565b6109ac91612c0c565b60f01c905086866109be846003612baa565b9061ffff84166109cf866003612baa565b6109d99190612baa565b926109e693929190612bbd565b6109ef91612c44565b60601c94506109ff816002612c84565b610a0a906001612c84565b610a189061ffff1683612baa565b915050610942565b600160f91b868683818110610a3757610a37612bf8565b9050013560f81c60f81b6001600160f81b03191603610b43575f8686610a5e846001612baa565b90610a6a856003612baa565b92610a7793929190612bbd565b610a8091612c0c565b60f01c90506020811115610adb5760405162461bcd60e51b815260206004820152601860248201527f436861696e206964206c656e67746820746f6f206c6f6e67000000000000000060448201526064015b60405180910390fd5b610ae6816008612c9e565b610af290610100612cbb565b61ffff168787610b03856003612baa565b9061ffff8516610b14876003612baa565b610b1e9190612baa565b92610b2b93929190612bbd565b610b3491612cd5565b901c93506109ff816002612c84565b600360f81b868683818110610b5a57610b5a612bf8565b9050013560f81c60f81b6001600160f81b03191603610c21575f8686610b81846001612baa565b90610b8d856003612baa565b92610b9a93929190612bbd565b610ba391612c0c565b60f01c90508686610bb5846003612baa565b9061ffff8416610bc6866003612baa565b610bd09190612baa565b92610bdd93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295506109ff925083915060029050612c84565b509250925092565b60605f80805b85811015610e0f57610259878783818110610c4c57610c4c612bf8565b90506020020135148015610ca25750846009811115610c6d57610c6d612be4565b60f81b6001600160f81b031916898985818110610c8c57610c8c612bf8565b9050013560f81c60f81b6001600160f81b031916145b15610de1576040805160c8808252611920820190925290816020015b6060815260200190600190039081610cbe5790505093505f5b60c8811015610ddb578989610ced836003612cf2565b610cf79087612baa565b610d02906001612baa565b818110610d1157610d11612bf8565b909101356001600160f81b031916159050610ddb578989610d33836003612cf2565b610d3d9087612baa565b610d48906001612baa565b90610d54846003612cf2565b610d5e9088612baa565b610d69906003612baa565b610d74906001612baa565b92610d8193929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505087518892508491508110610dc857610dc8612bf8565b6020908102919091010152600101610cd7565b50600191505b868682818110610df357610df3612bf8565b9050602002013583610e059190612baa565b9250600101610c2f565b5080610e5d5760405162461bcd60e51b815260206004820152601e60248201527f436f756e7472792070726f6f6620696e70757473206e6f7420666f756e6400006044820152606401610ad2565b505095945050505050565b5f546001600160a01b03163314610e915760405162461bcd60e51b8152600401610ad290612d09565b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c590610edd90831515815260200190565b60405180910390a150565b5f546001600160a01b03163314610f115760405162461bcd60e51b8152600401610ad290612d09565b6001600160a01b038116610f735760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b6064820152608401610ad2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f610fa2858585856120d1565b9050610fad816121f8565b5050505050565b60605f80805b84811015611320576101f5868683818110610fd757610fd7612bf8565b90506020020135036112f257600160fb1b888885818110610ffa57610ffa612bf8565b9050013560f81c60f81b6001600160f81b0319161461102b5760405162461bcd60e51b8152600401610ad290612d40565b5f5b6101f48110156111b157600160f81b89898361104a886001612baa565b6110549190612baa565b81811061106357611063612bf8565b9050013560f81c60f81b6001600160f81b03191603611109575f89898361108b886001612baa565b6110959190612baa565b6110a0906001612baa565b90846110ad896001612baa565b6110b79190612baa565b6110c2906003612baa565b926110cf93929190612bbd565b6110d891612c0c565b60f01c90506110e8816002612c84565b6110f3906001612c84565b6111019061ffff1683612baa565b91505061102d565b600160f91b89898361111c886001612baa565b6111269190612baa565b81811061113557611135612bf8565b9050013560f81c60f81b6001600160f81b0319160361115d575f89898361108b886001612baa565b600360f81b898983611170886001612baa565b61117a9190612baa565b81811061118957611189612bf8565b9050013560f81c60f81b6001600160f81b031916036111b1575f89898361108b886001612baa565b5f811180156111c257506101f48111155b6112045760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c8c2e8c240d8cadccee8d606b1b6044820152606401610ad2565b805b6101f481101561128e5789898261121e886001612baa565b6112289190612baa565b81811061123757611237612bf8565b909101356001600160f81b0319161590506112865760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070616464696e6760881b6044820152606401610ad2565b600101611206565b50888861129c866001612baa565b906112a9876101f5612baa565b926112b693929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092975060019550505050505b85858281811061130457611304612bf8565b90506020020135836113169190612baa565b9250600101610fba565b508061136e5760405162461bcd60e51b815260206004820181905260248201527f42696e6420646174612070726f6f6620696e70757473206e6f7420666f756e646044820152606401610ad2565b5050949350505050565b5f546001600160a01b031633146113a15760405162461bcd60e51b8152600401610ad290612d09565b6001600160a01b0381166113f75760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610ad2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f61148686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506122b992505050565b611500576008600287876040516020016114a1929190612d6c565b60408051601f19818403018152908290526114bb91612d7b565b602060405180830381855afa1580156114d6573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906114f99190612d91565b901c611502565b5f5b90505f61154385858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506122b992505050565b6115bd5760086002868660405160200161155e929190612d6c565b60408051601f198184030181529082905261157891612d7b565b602060405180830381855afa158015611593573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906115b69190612d91565b901c6115bf565b5f5b905081898960038181106115d5576115d5612bf8565b90506020020135148015611601575080898960048181106115f8576115f8612bf8565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146116375760405162461bcd60e51b8152600401610ad290612d09565b5f5b818110156116c95760015f84848481811061165657611656612bf8565b602090810292909201358352508101919091526040015f2080546001600160a01b031916905582828281811061168e5761168e612bf8565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611639565b505050565b5f546001600160a01b031633146116f75760405162461bcd60e51b8152600401610ad290612d09565b5f5b83811015610fad5782828281811061171357611713612bf8565b90506020020160208101906117289190612980565b60015f87878581811061173d5761173d612bf8565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061178657611786612bf8565b905060200201602081019061179b9190612980565b6001600160a01b03168585838181106117b6576117b6612bf8565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016116f9565b5f80808080805b8681101561191f57600b88888381811061181457611814612bf8565b90506020020135036118f157600160f81b8a8a8581811061183757611837612bf8565b9050013560f81c60f81b6001600160f81b031916146118685760405162461bcd60e51b8152600401610ad290612d40565b60c08a8a611877866001612baa565b90611883876009612baa565b9261189093929190612bbd565b61189991612cd5565b901c955089896118aa856009612baa565b8181106118b9576118b9612bf8565b919091013560f81c95508a9050896118d285600a612baa565b8181106118e1576118e1612bf8565b919091013560f81c945060019250505b87878281811061190357611903612bf8565b90506020020135836119159190612baa565b92506001016117f8565b508061196d5760405162461bcd60e51b815260206004820152601a60248201527f4167652070726f6f6620696e70757473206e6f7420666f756e640000000000006044820152606401610ad2565b50509450945094915050565b5f80548190600160a01b900460ff16156119ca5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610ad2565b5f6119d584356122be565b9050611a036119e76040860186612da8565b5f8181106119f7576119f7612bf8565b9050602002013561231d565b611a30611a136040860186612da8565b6001818110611a2457611a24612bf8565b905060200201356123e5565b611a7a611a406040860186612da8565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08601356124a3565b611ac65760405162461bcd60e51b815260206004820181905260248201527f50726f6f662065787069726564206f72206461746520697320696e76616c69646044820152606401610ad2565b611af0611ad66040860186612da8565b611ae360c0880188612ded565b6102c360e08a018a612ded565b611b2d5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073636f70657360901b6044820152606401610ad2565b611be8611b3d6040860186612da8565b6005906001611b4f60408a018a612da8565b611b5a929150612e2f565b92611b6793929190612e42565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611ba5925050506060870187612ded565b611bb26080890189612da8565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506124d692505050565b6001611bf76040860186612da8565b6001611c066040890189612da8565b611c11929150612e2f565b818110611c2057611c20612bf8565b90506020020135141580611c415750611c416101208501610100860161295e565b611c9e5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b6064820152608401610ad2565b6001600160a01b03811663ea50d0e4611cba6020870187612ded565b611cc76040890189612da8565b6040518563ffffffff1660e01b8152600401611ce69493929190612e6d565b602060405180830381865afa158015611d01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d259190612ecf565b611d326040860186612da8565b6001611d416040890189612da8565b611d4c929150612e2f565b818110611d5b57611d5b612bf8565b905060200201359250925050915091565b6060805f80805b85811015611ecd5760b5878783818110611d8f57611d8f612bf8565b9050602002013503611e9f575f898985818110611dae57611dae612bf8565b9050013560f81c60f81b6001600160f81b03191614611ddf5760405162461bcd60e51b8152600401610ad290612d40565b8888611dec856001612baa565b90611df886605b612baa565b92611e0593929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508b92508a9150611e4b905085605b612baa565b90611e578660b5612baa565b92611e6493929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929650600194505050505b868682818110611eb157611eb1612bf8565b9050602002013583611ec39190612baa565b9250600101611d73565b5080611f1b5760405162461bcd60e51b815260206004820152601f60248201527f446973636c6f73652070726f6f6620696e70757473206e6f7420666f756e64006044820152606401610ad2565b505094509492505050565b5f80808080805b87811015612076576019898983818110611f4957611f49612bf8565b90506020020135148015611f9f5750866009811115611f6a57611f6a612be4565b60f81b6001600160f81b0319168b8b85818110611f8957611f89612bf8565b9050013560f81c60f81b6001600160f81b031916145b156120485760c08b8b611fb3866001612baa565b90611fbf876009612baa565b92611fcc93929190612bbd565b611fd591612cd5565b901c955060c08b8b611fe8866009612baa565b90611ff4876011612baa565b9261200193929190612bbd565b61200a91612cd5565b901c945060c08b8b61201d866011612baa565b90612029876019612baa565b9261203693929190612bbd565b61203f91612cd5565b901c9350600191505b88888281811061205a5761205a612bf8565b905060200201358361206c9190612baa565b9250600101611f2d565b50806120c45760405162461bcd60e51b815260206004820152601b60248201527f446174652070726f6f6620696e70757473206e6f7420666f756e6400000000006044820152606401610ad2565b5050955095509592505050565b5f8080805b848110156121aa5760218686838181106120f2576120f2612bf8565b905060200201350361217c57600960f81b88888581811061211557612115612bf8565b9050013560f81c60f81b6001600160f81b031916146121465760405162461bcd60e51b8152600401610ad290612d40565b8787612153856001612baa565b9061215f866021612baa565b9261216c93929190612bbd565b61217591612cd5565b9350600191505b85858281811061218e5761218e612bf8565b90506020020135836121a09190612baa565b92506001016120d6565b508061136e5760405162461bcd60e51b815260206004820181905260248201527f53616e6374696f6e732070726f6f6620696e70757473206e6f7420666f756e646044820152606401610ad2565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612246573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226a9190612ecf565b6122b65760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f74006044820152606401610ad2565b50565b511590565b5f818152600160205260408120546001600160a01b0316806123175760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b6044820152606401610ad2565b92915050565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561236b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061238f9190612ecf565b6122b65760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b6064820152608401610ad2565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612433573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124579190612ecf565b6122b65760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f740000006044820152606401610ad2565b5f5f836002815181106124b8576124b8612bf8565b60200260200101515f1c90506124ce818461261f565b949350505050565b5f805b8251811015612617575f60086002878786908887815181106124fd576124fd612bf8565b6020026020010151886125109190612baa565b9261251d93929190612bbd565b60405160200161252e929190612d6c565b60408051601f198184030181529082905261254891612d7b565b602060405180830381855afa158015612563573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906125869190612d91565b901c905086828151811061259c5761259c612bf8565b602002602001015181146125e75760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b6044820152606401610ad2565b8382815181106125f9576125f9612bf8565b60200260200101518361260c9190612baa565b9250506001016124d9565b505050505050565b5f8061262b8385612baa565b905083421015801561263c57508381115b80156124ce575042109392505050565b5f5f83601f84011261265c575f5ffd5b5081356001600160401b03811115612672575f5ffd5b602083019150836020828501011115612689575f5ffd5b9250929050565b80151581146122b6575f5ffd5b5f5f5f604084860312156126af575f5ffd5b83356001600160401b038111156126c4575f5ffd5b6126d08682870161264c565b90945092505060208401356126e481612690565b809150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b61010081525f61273161010083018b6126ef565b8281036020840152612743818b6126ef565b90508281036040840152612757818a6126ef565b9050828103606084015261276b81896126ef565b9050828103608084015261277f81886126ef565b905082810360a084015261279381876126ef565b905082810360c08401526127a781866126ef565b905082810360e08401526127bb81856126ef565b9b9a5050505050505050505050565b5f5f602083850312156127db575f5ffd5b82356001600160401b038111156127f0575f5ffd5b6127fc8582860161264c565b90969095509350505050565b60018060a01b0384168152826020820152606060408201525f61282e60608301846126ef565b95945050505050565b5f5f83601f840112612847575f5ffd5b5081356001600160401b0381111561285d575f5ffd5b6020830191508360208260051b8501011115612689575f5ffd5b5f5f5f5f5f6060868803121561288b575f5ffd5b85356001600160401b038111156128a0575f5ffd5b6128ac8882890161264c565b90965094505060208601356001600160401b038111156128ca575f5ffd5b6128d688828901612837565b9094509250506040860135600a81106128ed575f5ffd5b809150509295509295909350565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561295257603f1987860301845261293d8583516126ef565b94506020938401939190910190600101612921565b50929695505050505050565b5f6020828403121561296e575f5ffd5b813561297981612690565b9392505050565b5f60208284031215612990575f5ffd5b81356001600160a01b0381168114612979575f5ffd5b5f5f5f5f604085870312156129b9575f5ffd5b84356001600160401b038111156129ce575f5ffd5b6129da8782880161264c565b90955093505060208501356001600160401b038111156129f8575f5ffd5b612a0487828801612837565b95989497509550505050565b602081525f61297960208301846126ef565b5f60208284031215612a32575f5ffd5b5035919050565b5f5f5f5f5f5f60608789031215612a4e575f5ffd5b86356001600160401b03811115612a63575f5ffd5b612a6f89828a01612837565b90975095505060208701356001600160401b03811115612a8d575f5ffd5b612a9989828a0161264c565b90955093505060408701356001600160401b03811115612ab7575f5ffd5b612ac389828a0161264c565b979a9699509497509295939492505050565b5f5f60208385031215612ae6575f5ffd5b82356001600160401b03811115612afb575f5ffd5b6127fc85828601612837565b5f5f5f5f60408587031215612b1a575f5ffd5b84356001600160401b03811115612b2f575f5ffd5b6129da87828801612837565b5f60208284031215612b4b575f5ffd5b81356001600160401b03811115612b60575f5ffd5b82016101208185031215612979575f5ffd5b604081525f612b8460408301856126ef565b828103602084015261282e81856126ef565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561231757612317612b96565b5f5f85851115612bcb575f5ffd5b83861115612bd7575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b80356001600160f01b03198116906002841015612c3d576001600160f01b0319600285900360031b81901b82161691505b5092915050565b80356bffffffffffffffffffffffff198116906014841015612c3d576bffffffffffffffffffffffff1960149490940360031b84901b1690921692915050565b61ffff818116838216019081111561231757612317612b96565b61ffff8181168382160290811690818114612c3d57612c3d612b96565b61ffff828116828216039081111561231757612317612b96565b80356020831015612317575f19602084900360031b1b1692915050565b808202811582820484141761231757612317612b96565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215612da1575f5ffd5b5051919050565b5f5f8335601e19843603018112612dbd575f5ffd5b8301803591506001600160401b03821115612dd6575f5ffd5b6020019150600581901b3603821315612689575f5ffd5b5f5f8335601e19843603018112612e02575f5ffd5b8301803591506001600160401b03821115612e1b575f5ffd5b602001915036819003821315612689575f5ffd5b8181038181111561231757612317612b96565b5f5f85851115612e50575f5ffd5b83861115612e5c575f5ffd5b5050600583901b0193919092039150565b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b03841115612eb6575f5ffd5b8360051b80866080840137016080019695505050505050565b5f60208284031215612edf575f5ffd5b81516129798161269056fea26469706673582212206da3bb8a925a3bdc0b97056c2a9a66044cffc01d8da6c0309b9e2c1b16cfc61464736f6c634300081d0033",
395
- sourceMap: "984:20091:29:-:0;;;4375:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4424:27:29;;4416:76;;;;-1:-1:-1;;;4416:76:29;;511:2:33;4416:76:29;;;493:21:33;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:33;;;633:34;684:19;;4416:76:29;;;;;;;;4498:5;:18;;4506:10;-1:-1:-1;;;;;;4498:18:29;;;;;;;;4522:12;:43;;;;;-1:-1:-1;;;;;4522:43:29;;;;;4576:50;;4610:15;860:25:33;;4576:50:29;;848:2:33;833:18;4576:50:29;;;;;;;4375:256;984:20091;;14:290:33;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:33;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:33:o;714:177::-;984:20091:29;;;;;;",
396
- linkReferences: {}
397
- },
398
- deployedBytecode: {
399
- object: "0x608060405234801561000f575f5ffd5b5060043610610148575f3560e01c806375829def116100bf578063b96b161c11610079578063b96b161c14610320578063d7bf616a14610333578063ddf3eec91461035d578063ec1374cd1461037e578063f851a440146103ac578063fbd24457146103be575f5ffd5b806375829def146102625780638163f23114610275578063847755e3146102b55780638d6937b8146102c8578063a6df2c01146102db578063b2b37a4c146102ee575f5ffd5b80632d4f11e9116101105780632d4f11e9146101e657806341a0e2c2146101f95780634601173c1461020f5780635c975abb1461022f578063652ba33d146102525780636c40d5d61461025a575f5ffd5b806303d37eae1461014c5780630af18ba61461017c578063126f75591461019e57806316c38b3c146101be57806318677f2a146101d3575b5f5ffd5b61015f61015a36600461269d565b6103d1565b60405161017398979695949392919061271d565b60405180910390f35b61018f61018a3660046127ca565b61093c565b60405161017393929190612808565b6101b16101ac366004612877565b610c29565b60405161017391906128fb565b6101d16101cc36600461295e565b610e68565b005b6101d16101e1366004612980565b610ee8565b6101d16101f43660046129a6565b610f95565b610201600181565b604051908152602001610173565b61022261021d3660046129a6565b610fb4565b6040516101739190612a10565b5f5461024290600160a01b900460ff1681565b6040519015158152602001610173565b610201600381565b610201600281565b6101d1610270366004612980565b611378565b61029d610283366004612a22565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610173565b6102426102c3366004612a39565b611446565b6101d16102d6366004612ad5565b61160e565b6101d16102e9366004612b07565b6116ce565b6103016102fc3660046129a6565b6117f1565b6040805193845260ff9283166020850152911690820152606001610173565b60025461029d906001600160a01b031681565b610346610341366004612b3b565b611979565b604080519215158352602083019190915201610173565b61037061036b3660046129a6565b611d6c565b604051610173929190612b72565b61039161038c366004612877565b611f26565b60408051938452602084019290925290820152606001610173565b5f5461029d906001600160a01b031681565b6102016103cc3660046129a6565b6120d1565b6060806060806060806060808861068b578a60058b6103f1826027612baa565b926103fe93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c9050610446826003612baa565b9261045393929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250603691508c905061049b826003612baa565b926104a893929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250604091508c90506104f0826001612baa565b926104fd93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250603991508c9050610545826006612baa565b9261055293929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250604191508c905061059a826006612baa565b926105a793929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250602c91508c90506105ef826009612baa565b926105fc93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d91506106429050826002612baa565b9261064f93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092935061092f92505050565b8a603c8b61069a82601e612baa565b926106a793929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929a508d9250600291508c90506106ef826003612baa565b926106fc93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509299508d9250602d91508c9050610744826003612baa565b9261075193929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509298508d9250602591508c9050610799826001612baa565b926107a693929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508d9250601e91508c90506107ee826006612baa565b926107fb93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509296508d9250602691508c9050610843826006612baa565b9261085093929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295508d9250600591508c9050610898826009612baa565b926108a593929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509395508e9392508d91506108eb9050826002612baa565b926108f893929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509293505050505b9397509397509397509397565b5f806060815b6101f4811015610c2157600160f81b86868381811061096357610963612bf8565b9050013560f81c60f81b6001600160f81b03191603610a20575f868661098a846001612baa565b90610996856003612baa565b926109a393929190612bbd565b6109ac91612c0c565b60f01c905086866109be846003612baa565b9061ffff84166109cf866003612baa565b6109d99190612baa565b926109e693929190612bbd565b6109ef91612c44565b60601c94506109ff816002612c84565b610a0a906001612c84565b610a189061ffff1683612baa565b915050610942565b600160f91b868683818110610a3757610a37612bf8565b9050013560f81c60f81b6001600160f81b03191603610b43575f8686610a5e846001612baa565b90610a6a856003612baa565b92610a7793929190612bbd565b610a8091612c0c565b60f01c90506020811115610adb5760405162461bcd60e51b815260206004820152601860248201527f436861696e206964206c656e67746820746f6f206c6f6e67000000000000000060448201526064015b60405180910390fd5b610ae6816008612c9e565b610af290610100612cbb565b61ffff168787610b03856003612baa565b9061ffff8516610b14876003612baa565b610b1e9190612baa565b92610b2b93929190612bbd565b610b3491612cd5565b901c93506109ff816002612c84565b600360f81b868683818110610b5a57610b5a612bf8565b9050013560f81c60f81b6001600160f81b03191603610c21575f8686610b81846001612baa565b90610b8d856003612baa565b92610b9a93929190612bbd565b610ba391612c0c565b60f01c90508686610bb5846003612baa565b9061ffff8416610bc6866003612baa565b610bd09190612baa565b92610bdd93929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509295506109ff925083915060029050612c84565b509250925092565b60605f80805b85811015610e0f57610259878783818110610c4c57610c4c612bf8565b90506020020135148015610ca25750846009811115610c6d57610c6d612be4565b60f81b6001600160f81b031916898985818110610c8c57610c8c612bf8565b9050013560f81c60f81b6001600160f81b031916145b15610de1576040805160c8808252611920820190925290816020015b6060815260200190600190039081610cbe5790505093505f5b60c8811015610ddb578989610ced836003612cf2565b610cf79087612baa565b610d02906001612baa565b818110610d1157610d11612bf8565b909101356001600160f81b031916159050610ddb578989610d33836003612cf2565b610d3d9087612baa565b610d48906001612baa565b90610d54846003612cf2565b610d5e9088612baa565b610d69906003612baa565b610d74906001612baa565b92610d8193929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505087518892508491508110610dc857610dc8612bf8565b6020908102919091010152600101610cd7565b50600191505b868682818110610df357610df3612bf8565b9050602002013583610e059190612baa565b9250600101610c2f565b5080610e5d5760405162461bcd60e51b815260206004820152601e60248201527f436f756e7472792070726f6f6620696e70757473206e6f7420666f756e6400006044820152606401610ad2565b505095945050505050565b5f546001600160a01b03163314610e915760405162461bcd60e51b8152600401610ad290612d09565b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c590610edd90831515815260200190565b60405180910390a150565b5f546001600160a01b03163314610f115760405162461bcd60e51b8152600401610ad290612d09565b6001600160a01b038116610f735760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b6064820152608401610ad2565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f610fa2858585856120d1565b9050610fad816121f8565b5050505050565b60605f80805b84811015611320576101f5868683818110610fd757610fd7612bf8565b90506020020135036112f257600160fb1b888885818110610ffa57610ffa612bf8565b9050013560f81c60f81b6001600160f81b0319161461102b5760405162461bcd60e51b8152600401610ad290612d40565b5f5b6101f48110156111b157600160f81b89898361104a886001612baa565b6110549190612baa565b81811061106357611063612bf8565b9050013560f81c60f81b6001600160f81b03191603611109575f89898361108b886001612baa565b6110959190612baa565b6110a0906001612baa565b90846110ad896001612baa565b6110b79190612baa565b6110c2906003612baa565b926110cf93929190612bbd565b6110d891612c0c565b60f01c90506110e8816002612c84565b6110f3906001612c84565b6111019061ffff1683612baa565b91505061102d565b600160f91b89898361111c886001612baa565b6111269190612baa565b81811061113557611135612bf8565b9050013560f81c60f81b6001600160f81b0319160361115d575f89898361108b886001612baa565b600360f81b898983611170886001612baa565b61117a9190612baa565b81811061118957611189612bf8565b9050013560f81c60f81b6001600160f81b031916036111b1575f89898361108b886001612baa565b5f811180156111c257506101f48111155b6112045760405162461bcd60e51b8152602060048201526013602482015272092dcecc2d8d2c840c8c2e8c240d8cadccee8d606b1b6044820152606401610ad2565b805b6101f481101561128e5789898261121e886001612baa565b6112289190612baa565b81811061123757611237612bf8565b909101356001600160f81b0319161590506112865760405162461bcd60e51b815260206004820152600f60248201526e496e76616c69642070616464696e6760881b6044820152606401610ad2565b600101611206565b50888861129c866001612baa565b906112a9876101f5612baa565b926112b693929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525092975060019550505050505b85858281811061130457611304612bf8565b90506020020135836113169190612baa565b9250600101610fba565b508061136e5760405162461bcd60e51b815260206004820181905260248201527f42696e6420646174612070726f6f6620696e70757473206e6f7420666f756e646044820152606401610ad2565b5050949350505050565b5f546001600160a01b031633146113a15760405162461bcd60e51b8152600401610ad290612d09565b6001600160a01b0381166113f75760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610ad2565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f61148686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506122b992505050565b611500576008600287876040516020016114a1929190612d6c565b60408051601f19818403018152908290526114bb91612d7b565b602060405180830381855afa1580156114d6573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906114f99190612d91565b901c611502565b5f5b90505f61154385858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506122b992505050565b6115bd5760086002868660405160200161155e929190612d6c565b60408051601f198184030181529082905261157891612d7b565b602060405180830381855afa158015611593573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906115b69190612d91565b901c6115bf565b5f5b905081898960038181106115d5576115d5612bf8565b90506020020135148015611601575080898960048181106115f8576115f8612bf8565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146116375760405162461bcd60e51b8152600401610ad290612d09565b5f5b818110156116c95760015f84848481811061165657611656612bf8565b602090810292909201358352508101919091526040015f2080546001600160a01b031916905582828281811061168e5761168e612bf8565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611639565b505050565b5f546001600160a01b031633146116f75760405162461bcd60e51b8152600401610ad290612d09565b5f5b83811015610fad5782828281811061171357611713612bf8565b90506020020160208101906117289190612980565b60015f87878581811061173d5761173d612bf8565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061178657611786612bf8565b905060200201602081019061179b9190612980565b6001600160a01b03168585838181106117b6576117b6612bf8565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016116f9565b5f80808080805b8681101561191f57600b88888381811061181457611814612bf8565b90506020020135036118f157600160f81b8a8a8581811061183757611837612bf8565b9050013560f81c60f81b6001600160f81b031916146118685760405162461bcd60e51b8152600401610ad290612d40565b60c08a8a611877866001612baa565b90611883876009612baa565b9261189093929190612bbd565b61189991612cd5565b901c955089896118aa856009612baa565b8181106118b9576118b9612bf8565b919091013560f81c95508a9050896118d285600a612baa565b8181106118e1576118e1612bf8565b919091013560f81c945060019250505b87878281811061190357611903612bf8565b90506020020135836119159190612baa565b92506001016117f8565b508061196d5760405162461bcd60e51b815260206004820152601a60248201527f4167652070726f6f6620696e70757473206e6f7420666f756e640000000000006044820152606401610ad2565b50509450945094915050565b5f80548190600160a01b900460ff16156119ca5760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610ad2565b5f6119d584356122be565b9050611a036119e76040860186612da8565b5f8181106119f7576119f7612bf8565b9050602002013561231d565b611a30611a136040860186612da8565b6001818110611a2457611a24612bf8565b905060200201356123e5565b611a7a611a406040860186612da8565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08601356124a3565b611ac65760405162461bcd60e51b815260206004820181905260248201527f50726f6f662065787069726564206f72206461746520697320696e76616c69646044820152606401610ad2565b611af0611ad66040860186612da8565b611ae360c0880188612ded565b6102c360e08a018a612ded565b611b2d5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c69642073636f70657360901b6044820152606401610ad2565b611be8611b3d6040860186612da8565b6005906001611b4f60408a018a612da8565b611b5a929150612e2f565b92611b6793929190612e42565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611ba5925050506060870187612ded565b611bb26080890189612da8565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506124d692505050565b6001611bf76040860186612da8565b6001611c066040890189612da8565b611c11929150612e2f565b818110611c2057611c20612bf8565b90506020020135141580611c415750611c416101208501610100860161295e565b611c9e5760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b6064820152608401610ad2565b6001600160a01b03811663ea50d0e4611cba6020870187612ded565b611cc76040890189612da8565b6040518563ffffffff1660e01b8152600401611ce69493929190612e6d565b602060405180830381865afa158015611d01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d259190612ecf565b611d326040860186612da8565b6001611d416040890189612da8565b611d4c929150612e2f565b818110611d5b57611d5b612bf8565b905060200201359250925050915091565b6060805f80805b85811015611ecd5760b5878783818110611d8f57611d8f612bf8565b9050602002013503611e9f575f898985818110611dae57611dae612bf8565b9050013560f81c60f81b6001600160f81b03191614611ddf5760405162461bcd60e51b8152600401610ad290612d40565b8888611dec856001612baa565b90611df886605b612baa565b92611e0593929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152509297508b92508a9150611e4b905085605b612baa565b90611e578660b5612baa565b92611e6493929190612bbd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250929650600194505050505b868682818110611eb157611eb1612bf8565b9050602002013583611ec39190612baa565b9250600101611d73565b5080611f1b5760405162461bcd60e51b815260206004820152601f60248201527f446973636c6f73652070726f6f6620696e70757473206e6f7420666f756e64006044820152606401610ad2565b505094509492505050565b5f80808080805b87811015612076576019898983818110611f4957611f49612bf8565b90506020020135148015611f9f5750866009811115611f6a57611f6a612be4565b60f81b6001600160f81b0319168b8b85818110611f8957611f89612bf8565b9050013560f81c60f81b6001600160f81b031916145b156120485760c08b8b611fb3866001612baa565b90611fbf876009612baa565b92611fcc93929190612bbd565b611fd591612cd5565b901c955060c08b8b611fe8866009612baa565b90611ff4876011612baa565b9261200193929190612bbd565b61200a91612cd5565b901c945060c08b8b61201d866011612baa565b90612029876019612baa565b9261203693929190612bbd565b61203f91612cd5565b901c9350600191505b88888281811061205a5761205a612bf8565b905060200201358361206c9190612baa565b9250600101611f2d565b50806120c45760405162461bcd60e51b815260206004820152601b60248201527f446174652070726f6f6620696e70757473206e6f7420666f756e6400000000006044820152606401610ad2565b5050955095509592505050565b5f8080805b848110156121aa5760218686838181106120f2576120f2612bf8565b905060200201350361217c57600960f81b88888581811061211557612115612bf8565b9050013560f81c60f81b6001600160f81b031916146121465760405162461bcd60e51b8152600401610ad290612d40565b8787612153856001612baa565b9061215f866021612baa565b9261216c93929190612bbd565b61217591612cd5565b9350600191505b85858281811061218e5761218e612bf8565b90506020020135836121a09190612baa565b92506001016120d6565b508061136e5760405162461bcd60e51b815260206004820181905260248201527f53616e6374696f6e732070726f6f6620696e70757473206e6f7420666f756e646044820152606401610ad2565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612246573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226a9190612ecf565b6122b65760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f74006044820152606401610ad2565b50565b511590565b5f818152600160205260408120546001600160a01b0316806123175760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b6044820152606401610ad2565b92915050565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561236b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061238f9190612ecf565b6122b65760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b6064820152608401610ad2565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612433573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124579190612ecf565b6122b65760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f740000006044820152606401610ad2565b5f5f836002815181106124b8576124b8612bf8565b60200260200101515f1c90506124ce818461261f565b949350505050565b5f805b8251811015612617575f60086002878786908887815181106124fd576124fd612bf8565b6020026020010151886125109190612baa565b9261251d93929190612bbd565b60405160200161252e929190612d6c565b60408051601f198184030181529082905261254891612d7b565b602060405180830381855afa158015612563573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906125869190612d91565b901c905086828151811061259c5761259c612bf8565b602002602001015181146125e75760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b6044820152606401610ad2565b8382815181106125f9576125f9612bf8565b60200260200101518361260c9190612baa565b9250506001016124d9565b505050505050565b5f8061262b8385612baa565b905083421015801561263c57508381115b80156124ce575042109392505050565b5f5f83601f84011261265c575f5ffd5b5081356001600160401b03811115612672575f5ffd5b602083019150836020828501011115612689575f5ffd5b9250929050565b80151581146122b6575f5ffd5b5f5f5f604084860312156126af575f5ffd5b83356001600160401b038111156126c4575f5ffd5b6126d08682870161264c565b90945092505060208401356126e481612690565b809150509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b61010081525f61273161010083018b6126ef565b8281036020840152612743818b6126ef565b90508281036040840152612757818a6126ef565b9050828103606084015261276b81896126ef565b9050828103608084015261277f81886126ef565b905082810360a084015261279381876126ef565b905082810360c08401526127a781866126ef565b905082810360e08401526127bb81856126ef565b9b9a5050505050505050505050565b5f5f602083850312156127db575f5ffd5b82356001600160401b038111156127f0575f5ffd5b6127fc8582860161264c565b90969095509350505050565b60018060a01b0384168152826020820152606060408201525f61282e60608301846126ef565b95945050505050565b5f5f83601f840112612847575f5ffd5b5081356001600160401b0381111561285d575f5ffd5b6020830191508360208260051b8501011115612689575f5ffd5b5f5f5f5f5f6060868803121561288b575f5ffd5b85356001600160401b038111156128a0575f5ffd5b6128ac8882890161264c565b90965094505060208601356001600160401b038111156128ca575f5ffd5b6128d688828901612837565b9094509250506040860135600a81106128ed575f5ffd5b809150509295509295909350565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b8281101561295257603f1987860301845261293d8583516126ef565b94506020938401939190910190600101612921565b50929695505050505050565b5f6020828403121561296e575f5ffd5b813561297981612690565b9392505050565b5f60208284031215612990575f5ffd5b81356001600160a01b0381168114612979575f5ffd5b5f5f5f5f604085870312156129b9575f5ffd5b84356001600160401b038111156129ce575f5ffd5b6129da8782880161264c565b90955093505060208501356001600160401b038111156129f8575f5ffd5b612a0487828801612837565b95989497509550505050565b602081525f61297960208301846126ef565b5f60208284031215612a32575f5ffd5b5035919050565b5f5f5f5f5f5f60608789031215612a4e575f5ffd5b86356001600160401b03811115612a63575f5ffd5b612a6f89828a01612837565b90975095505060208701356001600160401b03811115612a8d575f5ffd5b612a9989828a0161264c565b90955093505060408701356001600160401b03811115612ab7575f5ffd5b612ac389828a0161264c565b979a9699509497509295939492505050565b5f5f60208385031215612ae6575f5ffd5b82356001600160401b03811115612afb575f5ffd5b6127fc85828601612837565b5f5f5f5f60408587031215612b1a575f5ffd5b84356001600160401b03811115612b2f575f5ffd5b6129da87828801612837565b5f60208284031215612b4b575f5ffd5b81356001600160401b03811115612b60575f5ffd5b82016101208185031215612979575f5ffd5b604081525f612b8460408301856126ef565b828103602084015261282e81856126ef565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561231757612317612b96565b5f5f85851115612bcb575f5ffd5b83861115612bd7575f5ffd5b5050820193919092039150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b80356001600160f01b03198116906002841015612c3d576001600160f01b0319600285900360031b81901b82161691505b5092915050565b80356bffffffffffffffffffffffff198116906014841015612c3d576bffffffffffffffffffffffff1960149490940360031b84901b1690921692915050565b61ffff818116838216019081111561231757612317612b96565b61ffff8181168382160290811690818114612c3d57612c3d612b96565b61ffff828116828216039081111561231757612317612b96565b80356020831015612317575f19602084900360031b1b1692915050565b808202811582820484141761231757612317612b96565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b5f60208284031215612da1575f5ffd5b5051919050565b5f5f8335601e19843603018112612dbd575f5ffd5b8301803591506001600160401b03821115612dd6575f5ffd5b6020019150600581901b3603821315612689575f5ffd5b5f5f8335601e19843603018112612e02575f5ffd5b8301803591506001600160401b03821115612e1b575f5ffd5b602001915036819003821315612689575f5ffd5b8181038181111561231757612317612b96565b5f5f85851115612e50575f5ffd5b83861115612e5c575f5ffd5b5050600583901b0193919092039150565b60408152836040820152838560608301375f60608583018101829052601f19601f8701168301838103820160208501529081018490526001600160fb1b03841115612eb6575f5ffd5b8360051b80866080840137016080019695505050505050565b5f60208284031215612edf575f5ffd5b81516129798161269056fea26469706673582212206da3bb8a925a3bdc0b97056c2a9a66044cffc01d8da6c0309b9e2c1b16cfc61464736f6c634300081d0033",
400
- sourceMap: "984:20091:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6190:2299;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;15965:1328;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;11466:1059::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5054:118::-;;;;;;:::i;:::-;;:::i;:::-;;5705:206;;;;;;:::i;:::-;;:::i;15684:277::-;;;;;;:::i;:::-;;:::i;3350:69::-;;3416:1;3350:69;;;;;6997:25:33;;;6985:2;6970:18;3350:69:29;6851:177:33;12529:2438:29;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3588:18::-;;;;;-1:-1:-1;;;3588:18:29;;;;;;;;;7421:14:33;;7414:22;7396:41;;7384:2;7369:18;3588::29;7256:187:33;3492:67:29;;3556:1;3492:67;;3423:65;;3485:1;3423:65;;4821:229;;;;;;:::i;:::-;;:::i;3611:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3611:53:29;;;;;;-1:-1:-1;;;;;7797:32:33;;;7779:51;;7767:2;7752:18;3611:53:29;7633:203:33;17297:659:29;;;;;;:::i;:::-;;:::i;5470:231::-;;;;;;:::i;:::-;;:::i;5176:290::-;;;;;;:::i;:::-;;:::i;10447:1015::-;;;;;;:::i;:::-;;:::i;:::-;;;;10300:25:33;;;10373:4;10361:17;;;10356:2;10341:18;;10334:45;10415:17;;10395:18;;;10388:45;10288:2;10273:18;10447:1015:29;10106:333:33;3738:33:29;;;;;-1:-1:-1;;;;;3738:33:29;;;19702:1371;;;;;;:::i;:::-;;:::i;:::-;;;;11277:14:33;;11270:22;11252:41;;11324:2;11309:18;;11302:34;;;;11225:18;19702:1371:29;11084:258:33;8493:851:29;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;9348:1095::-;;;;;;:::i;:::-;;:::i;:::-;;;;11933:25:33;;;11989:2;11974:18;;11967:34;;;;12017:18;;;12010:34;11921:2;11906:18;9348:1095:29;11731:319:33;3564:20:29;;;;;-1:-1:-1;;;;;3564:20:29;;;14971:709;;;;;;:::i;:::-;;:::i;6190:2299::-;6313:18;6339:28;6375:25;6408:20;6436:23;6467:24;6499:28;6535:26;6581:8;6576:1909;;6613:13;2141:1;6613:13;6651:28;2141:1;6677:2;6651:28;:::i;:::-;6613:67;;;;;;;:::i;:::-;6599:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6599:82:29;;-1:-1:-1;6722:13:29;;-1:-1:-1;1132:1:29;;-1:-1:-1;6722:13:29;;-1:-1:-1;6763:30:29;1132:1;6792;6763:30;:::i;:::-;6722:72;;;;;;;:::i;:::-;6689:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6689:113:29;;-1:-1:-1;6840:13:29;;-1:-1:-1;1489:2:29;;-1:-1:-1;6840:13:29;;-1:-1:-1;6885:34:29;1489:2;6918:1;6885:34;:::i;:::-;6840:80;;;;;;;:::i;:::-;6810:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6810:118:29;;-1:-1:-1;6952:13:29;;-1:-1:-1;1616:2:29;;-1:-1:-1;6952:13:29;;-1:-1:-1;6992:29:29;1616:2;7020:1;6992:29;:::i;:::-;6952:70;;;;;;;:::i;:::-;6936:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6936:87:29;;-1:-1:-1;7059:13:29;;-1:-1:-1;1838:2:29;;-1:-1:-1;7059:13:29;;-1:-1:-1;7102:32:29;1838:2;7133:1;7102:32;:::i;:::-;7059:76;;;;;;;:::i;:::-;7031:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7031:112:29;;-1:-1:-1;7180:13:29;;-1:-1:-1;1715:2:29;;-1:-1:-1;7180:13:29;;-1:-1:-1;7225:34:29;1715:2;7258:1;7225:34;:::i;:::-;7180:80;;;;;;;:::i;:::-;7151:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7151:117:29;;-1:-1:-1;7309:13:29;;-1:-1:-1;1944:2:29;;-1:-1:-1;7309:13:29;;-1:-1:-1;7358:38:29;1944:2;7395:1;7358:38;:::i;:::-;7309:88;;;;;;;:::i;:::-;7276:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7276:129:29;;-1:-1:-1;7444:13:29;;7276:129;-1:-1:-1;7444:13:29;;-1:-1:-1;7491:36:29;;-1:-1:-1;7276:129:29;7526:1;7491:36;:::i;:::-;7444:84;;;;;;;:::i;:::-;7413:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7413:123:29;;-1:-1:-1;6576:1909:29;;-1:-1:-1;;;6576:1909:29;;7571:13;3262:2;7571:13;7608:27;3262:2;7633;7608:27;:::i;:::-;7571:65;;;;;;;:::i;:::-;7557:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7557:80:29;;-1:-1:-1;7678:13:29;;-1:-1:-1;2328:1:29;;-1:-1:-1;7678:13:29;;-1:-1:-1;7718:29:29;2328:1;7746;7718:29;:::i;:::-;7678:70;;;;;;;:::i;:::-;7645:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7645:111:29;;-1:-1:-1;7794:13:29;;-1:-1:-1;2617:2:29;;-1:-1:-1;7794:13:29;;-1:-1:-1;7838:33:29;2617:2;7870:1;7838:33;:::i;:::-;7794:78;;;;;;;:::i;:::-;7764:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7764:116:29;;-1:-1:-1;7904:13:29;;-1:-1:-1;2743:2:29;;-1:-1:-1;7904:13:29;;-1:-1:-1;7943:28:29;2743:2;7970:1;7943:28;:::i;:::-;7904:68;;;;;;;:::i;:::-;7888:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7888:85:29;;-1:-1:-1;8009:13:29;;-1:-1:-1;2963:2:29;;-1:-1:-1;8009:13:29;;-1:-1:-1;8051:31:29;2963:2;8081:1;8051:31;:::i;:::-;8009:74;;;;;;;:::i;:::-;7981:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7981:110:29;;-1:-1:-1;8128:13:29;;-1:-1:-1;2841:2:29;;-1:-1:-1;8128:13:29;;-1:-1:-1;8172:33:29;2841:2;8204:1;8172:33;:::i;:::-;8128:78;;;;;;;:::i;:::-;8099:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8099:115:29;;-1:-1:-1;8255:13:29;;-1:-1:-1;3068:1:29;;-1:-1:-1;8255:13:29;;-1:-1:-1;8303:37:29;3068:1;8339;8303:37;:::i;:::-;8255:86;;;;;;;:::i;:::-;8222:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8222:127:29;;-1:-1:-1;8388:13:29;;8222:127;-1:-1:-1;8388:13:29;;-1:-1:-1;8434:35:29;;-1:-1:-1;8222:127:29;8468:1;8434:35;:::i;:::-;8388:82;;;;;;;:::i;:::-;8357:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8357:121:29;;-1:-1:-1;;;;6576:1909:29;6190:2299;;;;;;;;;;;:::o;15965:1328::-;16037:21;;16077:24;16037:21;16133:1156;16149:3;16140:6;:12;16133:1156;;;-1:-1:-1;;;16166:4:29;;16171:6;16166:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16166:63:29;;;16162:1121;;16241:20;16278:4;;16283:10;:6;16292:1;16283:10;:::i;:::-;16278:27;16294:10;:6;16303:1;16294:10;:::i;:::-;16278:27;;;;;;;:::i;:::-;16271:35;;;:::i;:::-;16264:43;;;-1:-1:-1;16349:4:29;;16354:10;:6;16363:1;16354:10;:::i;:::-;16349:43;16365:26;;;:10;:6;16374:1;16365:10;:::i;:::-;:26;;;;:::i;:::-;16349:43;;;;;;;:::i;:::-;16341:52;;;:::i;:::-;16333:61;;;-1:-1:-1;16414:17:29;16418:13;16414:1;:17;:::i;:::-;:21;;16434:1;16414:21;:::i;:::-;16404:31;;;;;;:::i;:::-;;;16231:213;16133:1156;;16162:1121;-1:-1:-1;;;16454:4:29;;16459:6;16454:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16454:59:29;;;16450:833;;16525:20;16562:4;;16567:10;:6;16576:1;16567:10;:::i;:::-;16562:27;16578:10;:6;16587:1;16578:10;:::i;:::-;16562:27;;;;;;;:::i;:::-;16555:35;;;:::i;:::-;16548:43;;;-1:-1:-1;16626:2:29;16609:19;;;16601:56;;;;-1:-1:-1;;;16601:56:29;;13986:2:33;16601:56:29;;;13968:21:33;14025:2;14005:18;;;13998:30;14064:26;14044:18;;;14037:54;14108:18;;16601:56:29;;;;;;;;;16891:17;:13;16907:1;16891:17;:::i;:::-;16884:25;;:3;:25;:::i;:::-;16827:83;;16835:4;;16840:10;:6;16849:1;16840:10;:::i;:::-;16835:43;16851:26;;;:10;:6;16860:1;16851:10;:::i;:::-;:26;;;;:::i;:::-;16835:43;;;;;;;:::i;:::-;16827:52;;;:::i;:::-;:83;;;-1:-1:-1;16940:17:29;16944:13;16940:1;:17;:::i;16450:833::-;-1:-1:-1;;;16980:4:29;;16985:6;16980:12;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;16980:62:29;;;16976:307;;17054:23;17094:4;;17099:10;:6;17108:1;17099:10;:::i;:::-;17094:27;17110:10;:6;17119:1;17110:10;:::i;:::-;17094:27;;;;;;;:::i;:::-;17087:35;;;:::i;:::-;17080:43;;;-1:-1:-1;17153:4:29;;17158:10;:6;17167:1;17158:10;:::i;:::-;17153:46;17169:29;;;:10;:6;17178:1;17169:10;:::i;:::-;:29;;;;:::i;:::-;17153:46;;;;;;;:::i;:::-;17133:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17133:67:29;;-1:-1:-1;17220:20:29;;-1:-1:-1;17224:16:29;;-1:-1:-1;17220:1:29;;-1:-1:-1;17220:20:29;:::i;16976:307::-;16103:1190;15965:1328;;;;;:::o;11466:1059::-;11628:27;11663:14;;;11711:756;11731:31;;;11711:756;;;525:3:20;11919:20:29;;11940:1;11919:23;;;;;;;:::i;:::-;;;;;;;:61;:124;;;;;12032:9;12026:16;;;;;;;;:::i;:::-;12019:24;;-1:-1:-1;;;;;11992:51:29;;:15;;12008:6;11992:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;11992:51:29;;;11919:124;11906:514;;;12076:17;;;12089:3;12076:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12062:31:29;-1:-1:-1;12108:9:29;12103:287;12127:3;12123:1;:7;12103:287;;;12153:15;;12178:5;:1;12182;12178:5;:::i;:::-;12169:14;;:6;:14;:::i;:::-;:18;;12186:1;12169:18;:::i;:::-;12153:35;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;12153:35:29;12149:136;;-1:-1:-1;12267:5:29;12149:136;12320:15;;12345:5;:1;12349;12345:5;:::i;:::-;12336:14;;:6;:14;:::i;:::-;:18;;12353:1;12336:18;:::i;:::-;12320:58;12364:5;:1;12368;12364:5;:::i;:::-;12355:14;;:6;:14;:::i;:::-;:18;;12372:1;12355:18;:::i;:::-;:22;;12376:1;12355:22;:::i;:::-;12320:58;;;;;;;:::i;:::-;12296:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12296:14:29;;:11;;-1:-1:-1;12308:1:29;;-1:-1:-1;12296:14:29;;;;;;:::i;:::-;;;;;;;;;;:83;12132:3;;12103:287;;;;12407:4;12399:12;;11906:514;12437:20;;12458:1;12437:23;;;;;;;:::i;:::-;;;;;;;12427:33;;;;;:::i;:::-;;-1:-1:-1;11764:3:29;;11711:756;;;;12480:5;12472:48;;;;-1:-1:-1;;;12472:48:29;;15304:2:33;12472:48:29;;;15286:21:33;15343:2;15323:18;;;15316:30;15382:32;15362:18;;;15355:60;15432:18;;12472:48:29;15102:354:33;12472:48:29;11657:868;;11466:1059;;;;;;;:::o;5054:118::-;4684:5;;-1:-1:-1;;;;;4684:5:29;4670:10;:19;4662:58;;;;-1:-1:-1;;;4662:58:29;;;;;;;:::i;:::-;5112:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;5112:16:29::1;-1:-1:-1::0;;;;5112:16:29;;::::1;;::::0;;5139:28:::1;::::0;::::1;::::0;::::1;::::0;5121:7;7421:14:33;7414:22;7396:41;;7384:2;7369:18;;7256:187;5139:28:29::1;;;;;;;;5054:118:::0;:::o;5705:206::-;4684:5;;-1:-1:-1;;;;;4684:5:29;4670:10;:19;4662:58;;;;-1:-1:-1;;;4662:58:29;;;;;;;:::i;:::-;-1:-1:-1;;;;;5789:27:29;::::1;5781:76;;;::::0;-1:-1:-1;;;5781:76:29;;16018:2:33;5781:76:29::1;::::0;::::1;16000:21:33::0;16057:2;16037:18;;;16030:30;16096:34;16076:18;;;16069:62;-1:-1:-1;;;16147:18:33;;;16140:34;16191:19;;5781:76:29::1;15816:400:33::0;5781:76:29::1;5863:12;:43:::0;;-1:-1:-1;;;;;;5863:43:29::1;-1:-1:-1::0;;;;;5863:43:29;;;::::1;::::0;;;::::1;::::0;;5705:206::o;15684:277::-;15817:26;15846:62;15870:15;;15887:20;;15846:23;:62::i;:::-;15817:91;;15914:42;15937:18;15914:22;:42::i;:::-;15811:150;15684:277;;;;:::o;12529:2438::-;12663:17;12688:14;;;12736:2171;12756:31;;;12736:2171;;;599:3:20;12913:20:29;;12934:1;12913:23;;;;;;;:::i;:::-;;;;;;;:49;12909:1951;;-1:-1:-1;;;12982:15:29;;12998:6;12982:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;12982:56:29;;;12974:87;;;;-1:-1:-1;;;12974:87:29;;;;;;;:::i;:::-;13347:18;13379:1130;13399:3;13386:10;:16;13379:1130;;;-1:-1:-1;;;13433:15:29;;13462:10;13449;:6;13502:32;13449:10;:::i;:::-;:23;;;;:::i;:::-;13433:40;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;13433:103:29;;;13416:1083;;13563:20;13615:15;;13644:10;13631;:6;13640:1;13631:10;:::i;:::-;:23;;;;:::i;:::-;:27;;13657:1;13631:27;:::i;:::-;13615:72;13672:10;13659;:6;13668:1;13659:10;:::i;:::-;:23;;;;:::i;:::-;:27;;13685:1;13659:27;:::i;:::-;13615:72;;;;;;;:::i;:::-;13608:80;;;:::i;:::-;13586:116;;;-1:-1:-1;13730:17:29;13586:116;13730:1;:17;:::i;:::-;:21;;13750:1;13730:21;:::i;:::-;13716:35;;;;;;:::i;:::-;;;13549:215;13379:1130;;13416:1083;-1:-1:-1;;;13787:15:29;;13816:10;13803;:6;13812:1;13803:10;:::i;:::-;:23;;;;:::i;:::-;13787:40;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;13787:87:29;;;13770:729;;13901:20;13953:15;;13982:10;13969;:6;13978:1;13969:10;:::i;13770:729::-;-1:-1:-1;;;14125:15:29;;14154:10;14141;:6;14150:1;14141:10;:::i;:::-;:23;;;;:::i;:::-;14125:40;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14125:102:29;;;14108:391;;14254:23;14309:15;;14338:10;14325;:6;14334:1;14325:10;:::i;14108:391::-;14539:1;14526:10;:14;:35;;;;;14558:3;14544:10;:17;;14526:35;14518:67;;;;-1:-1:-1;;;14518:67:29;;16770:2:33;14518:67:29;;;16752:21:33;16809:2;16789:18;;;16782:30;-1:-1:-1;;;16828:18:33;;;16821:49;16887:18;;14518:67:29;16568:343:33;14518:67:29;14659:10;14642:130;14675:3;14671:1;:7;14642:130;;;14705:15;;14734:1;14721:10;:6;14730:1;14721:10;:::i;:::-;:14;;;;:::i;:::-;14705:31;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;14705:31:29;:36;;-1:-1:-1;14697:64:29;;;;-1:-1:-1;;;14697:64:29;;17118:2:33;14697:64:29;;;17100:21:33;17157:2;17137:18;;;17130:30;-1:-1:-1;;;17176:18:33;;;17169:45;17231:18;;14697:64:29;16916:339:33;14697:64:29;14680:3;;14642:130;;;-1:-1:-1;14789:15:29;;14805:10;:6;14814:1;14805:10;:::i;:::-;14789:40;14816:12;:6;14825:3;14816:12;:::i;:::-;14789:40;;;;;;;:::i;:::-;14782:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14782:47:29;;-1:-1:-1;14847:4:29;;-1:-1:-1;;;;;12909:1951:29;14877:20;;14898:1;14877:23;;;;;;;:::i;:::-;;;;;;;14867:33;;;;;:::i;:::-;;-1:-1:-1;12789:3:29;;12736:2171;;;;14920:5;14912:50;;;;-1:-1:-1;;;14912:50:29;;17462:2:33;14912:50:29;;;17444:21:33;;;17481:18;;;17474:30;17540:34;17520:18;;;17513:62;17592:18;;14912:50:29;17260:356:33;14912:50:29;12682:2285;;12529:2438;;;;;;:::o;4821:229::-;4684:5;;-1:-1:-1;;;;;4684:5:29;4670:10;:19;4662:58;;;;-1:-1:-1;;;4662:58:29;;;;;;;:::i;:::-;-1:-1:-1;;;;;4895:22:29;::::1;4887:63;;;::::0;-1:-1:-1;;;4887:63:29;;17823:2:33;4887:63:29::1;::::0;::::1;17805:21:33::0;17862:2;17842:18;;;17835:30;17901;17881:18;;;17874:58;17949:18;;4887:63:29::1;17621:352:33::0;4887:63:29::1;4956:16;4975:5:::0;;-1:-1:-1;;;;;4986:16:29;;::::1;-1:-1:-1::0;;;;;;4986:16:29;::::1;::::0;::::1;::::0;;5013:32:::1;::::0;4975:5;;;::::1;::::0;;;5013:32:::1;::::0;4956:16;5013:32:::1;4881:169;4821:229:::0;:::o;17297:659::-;17436:4;17550:17;17570:27;17590:6;;17570:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17570:19:29;;-1:-1:-1;;;17570:27:29:i;:::-;:92;;17661:1;17625:32;17649:6;;17632:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;17632:24:29;;;;;;;;;;17625:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;17570:92;;;17614:1;17570:92;17550:112;;17762:20;17785:26;17805:5;;17785:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17785:19:29;;-1:-1:-1;;;17785:26:29:i;:::-;:90;;17874:1;17839:31;17863:5;;17846:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;17846:23:29;;;;;;;;;;17839:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;17785:90;;;17828:1;17785:90;17762:113;;17907:9;17888:12;;17901:1;17888:15;;;;;;;:::i;:::-;;;;;;;:28;:63;;;;;17939:12;17920;;17933:1;17920:15;;;;;;;:::i;:::-;;;;;;;:31;17888:63;17881:70;17297:659;-1:-1:-1;;;;;;;;;17297:659:29:o;5470:231::-;4684:5;;-1:-1:-1;;;;;4684:5:29;4670:10;:19;4662:58;;;;-1:-1:-1;;;4662:58:29;;;;;;;:::i;:::-;5556:9:::1;5551:146;5571:21:::0;;::::1;5551:146;;;5614:18;:33;5633:10;;5644:1;5633:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;5614:33:::0;;-1:-1:-1;5614:33:29;::::1;::::0;;;;;;-1:-1:-1;5614:33:29;5607:40;;-1:-1:-1;;;;;;5607:40:29::1;::::0;;5676:10;;5687:1;5676:13;;::::1;;;;;:::i;:::-;;;;;;;5660:30;;;;;;;;;;5594:3;;5551:146;;;;5470:231:::0;;:::o;5176:290::-;4684:5;;-1:-1:-1;;;;;4684:5:29;4670:10;:19;4662:58;;;;-1:-1:-1;;;4662:58:29;;;;;;;:::i;:::-;5301:9:::1;5296:166;5316:21:::0;;::::1;5296:166;;;5388:9;;5398:1;5388:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;5352:18;:33;5371:10;;5382:1;5371:13;;;;;;;:::i;:::-;;;;;;;5352:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;5352:48:29::1;;;;;-1:-1:-1::0;;;;;5352:48:29::1;;;;;;5442:9;;5452:1;5442:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;5413:42:29::1;5427:10;;5438:1;5427:13;;;;;;;:::i;:::-;;;;;;;5413:42;;;;;;;;;;5339:3;;5296:166;;10447:1015:::0;10580:19;;;;;;10683:725;10703:31;;;10683:725;;;265:2:20;10853:20:29;;10874:1;10853:23;;;;;;;:::i;:::-;;;;;;;:56;10849:512;;-1:-1:-1;;;10929:15:29;;10945:6;10929:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;10929:55:29;;;10921:86;;;;-1:-1:-1;;;10921:86:29;;;;;;;:::i;:::-;11220:3;11176:15;;11192:10;:6;11201:1;11192:10;:::i;:::-;11176:38;11203:10;:6;11212:1;11203:10;:::i;:::-;11176:38;;;;;;;:::i;:::-;11168:47;;;:::i;:::-;11160:63;;;-1:-1:-1;11248:15:29;;11264:10;:6;11273:1;11264:10;:::i;:::-;11248:27;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;11301:15:29;;-1:-1:-1;11301:15:29;11317:11;:6;11326:2;11317:11;:::i;:::-;11301:28;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;11348:4:29;;-1:-1:-1;;10849:512:29;11378:20;;11399:1;11378:23;;;;;;;:::i;:::-;;;;;;;11368:33;;;;;:::i;:::-;;-1:-1:-1;10736:3:29;;10683:725;;;;11421:5;11413:44;;;;-1:-1:-1;;;11413:44:29;;18953:2:33;11413:44:29;;;18935:21:33;18992:2;18972:18;;;18965:30;19031:28;19011:18;;;19004:56;19077:18;;11413:44:29;18751:350:33;11413:44:29;10629:833;;10447:1015;;;;;;;;:::o;19702:1371::-;19809:4;4776:6;;19809:4;;-1:-1:-1;;;4776:6:29;;;;4775:7;4767:38;;;;-1:-1:-1;;;4767:38:29;;19308:2:33;4767:38:29;;;19290:21:33;19347:2;19327:18;;;19320:30;-1:-1:-1;;;19366:18:33;;;19359:48;19424:18;;4767:38:29;19106:342:33;4767:38:29;19830:16:::1;19849:29;19862:15:::0;::::1;19849:12;:29::i;:::-;19830:48:::0;-1:-1:-1;19927:48:29::1;19952:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;19972:1;19952:22;;;;;;;:::i;:::-;;;;;;;19927:24;:48::i;:::-;20020:44;20041:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;20061:1;20041:22;;;;;;;:::i;:::-;;;;;;;20020:20;:44::i;:::-;20122:62;20132:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;20122:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;20153:30:29::1;::::0;::::1;;20122:9;:62::i;:::-;20107:125;;;::::0;-1:-1:-1;;;20107:125:29;;20205:2:33;20107:125:29::1;::::0;::::1;20187:21:33::0;;;20224:18;;;20217:30;20283:34;20263:18;;;20256:62;20335:18;;20107:125:29::1;20003:356:33::0;20107:125:29::1;20282:62;20295:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;20316:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;20331:12;;::::0;::::1;:6:::0;:12:::1;:::i;20282:62::-;20274:89;;;::::0;-1:-1:-1;;;20274:89:29;;21093:2:33;20274:89:29::1;::::0;::::1;21075:21:33::0;21132:2;21112:18;;;21105:30;-1:-1:-1;;;21151:18:33;;;21144:44;21205:18;;20274:89:29::1;20891:338:33::0;20274:89:29::1;20431:210;20517:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;20537:1;::::0;20568::::1;20539:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;20539:30:29::1;:::i;:::-;20517:53;;;;;;;:::i;:::-;20431:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;20578:22:29::1;::::0;-1:-1:-1;;;20578:22:29::1;::::0;::::1;::::0;::::1;:::i;:::-;20608:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;20431:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;20431:21:29::1;::::0;-1:-1:-1;;;20431:210:29:i:1;:::-;20843:1;20772:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;20821:1;20792:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;20792:30:29::1;:::i;:::-;20772:51;;;;;;;:::i;:::-;;;;;;;:74;;:92;;;-1:-1:-1::0;20850:14:29::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;20757:163;;;::::0;-1:-1:-1;;;20757:163:29;;23005:2:33;20757:163:29::1;::::0;::::1;22987:21:33::0;23044:2;23024:18;;;23017:30;23083:34;23063:18;;;23056:62;-1:-1:-1;;;23134:18:33;;;23127:38;23182:19;;20757:163:29::1;22803:404:33::0;20757:163:29::1;-1:-1:-1::0;;;;;20942:26:29;::::1;;20969:12;;::::0;::::1;:6:::0;:12:::1;:::i;:::-;20983:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;20942:61;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21011:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;21060:1;21031:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;21031:30:29::1;:::i;:::-;21011:51;;;;;;;:::i;:::-;;;;;;;20927:141;;;;;19702:1371:::0;;;:::o;8493:851::-;8631:25;;8692:14;;;8740:545;8760:31;;;8740:545;;;388:3:20;8914:20:29;;8935:1;8914:23;;;;;;;:::i;:::-;;;;;;;:59;8910:328;;9033:18;8993:15;;9009:6;8993:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;8993:60:29;;;8985:91;;;;-1:-1:-1;;;8985:91:29;;;;;;;:::i;:::-;9101:15;;9117:10;:6;9126:1;9117:10;:::i;:::-;9101:39;9128:11;:6;9137:2;9128:11;:::i;:::-;9101:39;;;;;;;:::i;:::-;9086:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9086:54:29;;-1:-1:-1;9166:15:29;;-1:-1:-1;9166:15:29;;-1:-1:-1;9182:11:29;;-1:-1:-1;9182:6:29;9191:2;9182:11;:::i;:::-;9166:41;9194:12;:6;9203:3;9194:12;:::i;:::-;9166:41;;;;;;;:::i;:::-;9150:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9150:57:29;;-1:-1:-1;9225:4:29;;-1:-1:-1;;;;8910:328:29;9255:20;;9276:1;9255:23;;;;;;;:::i;:::-;;;;;;;9245:33;;;;;:::i;:::-;;-1:-1:-1;8793:3:29;;8740:545;;;;9298:5;9290:49;;;;-1:-1:-1;;;9290:49:29;;24440:2:33;9290:49:29;;;24422:21:33;24479:2;24459:18;;;24452:30;24518:33;24498:18;;;24491:61;24569:18;;9290:49:29;24238:355:33;9290:49:29;8686:658;;8493:851;;;;;;;:::o;9348:1095::-;9507:19;;;;;;9616:772;9636:31;;;9616:772;;;348:2:20;9794:20:29;;9815:1;9794:23;;;;;;;:::i;:::-;;;;;;;:59;:122;;;;;9905:9;9899:16;;;;;;;;:::i;:::-;9892:24;;-1:-1:-1;;;;;9865:51:29;;:15;;9881:6;9865:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;9865:51:29;;;9794:122;9781:560;;;10138:3;10094:15;;10110:10;:6;10119:1;10110:10;:::i;:::-;10094:38;10121:10;:6;10130:1;10121:10;:::i;:::-;10094:38;;;;;;;:::i;:::-;10086:47;;;:::i;:::-;10078:63;;;-1:-1:-1;10222:3:29;10177:15;;10193:10;:6;10202:1;10193:10;:::i;:::-;10177:39;10204:11;:6;10213:2;10204:11;:::i;:::-;10177:39;;;;;;;:::i;:::-;10169:48;;;:::i;:::-;10161:64;;;-1:-1:-1;10307:3:29;10261:15;;10277:11;:6;10286:2;10277:11;:::i;:::-;10261:40;10289:11;:6;10298:2;10289:11;:::i;:::-;10261:40;;;;;;;:::i;:::-;10253:49;;;:::i;:::-;10245:65;;;-1:-1:-1;10328:4:29;;-1:-1:-1;9781:560:29;10358:20;;10379:1;10358:23;;;;;;;:::i;:::-;;;;;;;10348:33;;;;;:::i;:::-;;-1:-1:-1;9669:3:29;;9616:772;;;;10401:5;10393:45;;;;-1:-1:-1;;;10393:45:29;;24800:2:33;10393:45:29;;;24782:21:33;24839:2;24819:18;;;24812:30;24878:29;24858:18;;;24851:57;24925:18;;10393:45:29;24598:351:33;10393:45:29;9562:881;;9348:1095;;;;;;;;;:::o;14971:709::-;15110:32;;;;15198:422;15218:31;;;15198:422;;;635:2:20;15268:20:29;;15289:1;15268:23;;;;;;;:::i;:::-;;;;;;;:54;15264:309;;-1:-1:-1;;;15353:15:29;;15369:6;15353:23;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;15353:61:29;;;15334:122;;;;-1:-1:-1;;;15334:122:29;;;;;;;:::i;:::-;15502:15;;15518:10;:6;15527:1;15518:10;:::i;:::-;15502:39;15529:11;:6;15538:2;15529:11;:::i;:::-;15502:39;;;;;;;:::i;:::-;15494:48;;;:::i;:::-;15467:75;;15560:4;15552:12;;15264:309;15590:20;;15611:1;15590:23;;;;;;;:::i;:::-;;;;;;;15580:33;;;;;:::i;:::-;;-1:-1:-1;15251:3:29;;15198:422;;;;15633:5;15625:50;;;;-1:-1:-1;;;15625:50:29;;25156:2:33;15625:50:29;;;25138:21:33;;;25175:18;;;25168:30;25234:34;25214:18;;;25207:62;25286:18;;15625:50:29;24954:356:33;19205:204:29;19295:12;;:62;;-1:-1:-1;;;19295:62:29;;3556:1;19295:62;;;25489:25:33;25530:18;;;25523:34;;;-1:-1:-1;;;;;19295:12:29;;;;:24;;25462:18:33;;19295:62:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19280:124;;;;-1:-1:-1;;;19280:124:29;;25770:2:33;19280:124:29;;;25752:21:33;25809:2;25789:18;;;25782:30;25848:33;25828:18;;;25821:61;25899:18;;19280:124:29;25568:355:33;19280:124:29;19205:204;:::o;262:101:28:-;338:15;:20;;262:101::o;18575:210:29:-;18638:7;18672:28;;;:18;:28;;;;;;-1:-1:-1;;;;;18672:28:29;;18706:53;;;;-1:-1:-1;;;18706:53:29;;26130:2:33;18706:53:29;;;26112:21:33;26169:2;26149:18;;;26142:30;-1:-1:-1;;;26188:18:33;;;26181:48;26246:18;;18706:53:29;25928:342:33;18706:53:29;18772:8;18575:210;-1:-1:-1;;18575:210:29:o;18789:214::-;18883:12;;:66;;-1:-1:-1;;;18883:66:29;;:12;:66;;;25489:25:33;25530:18;;;25523:34;;;-1:-1:-1;;;;;18883:12:29;;;;:24;;25462:18:33;;18883:66:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18868:130;;;;-1:-1:-1;;;18868:130:29;;26477:2:33;18868:130:29;;;26459:21:33;26516:2;26496:18;;;26489:30;26555:34;26535:18;;;26528:62;-1:-1:-1;;;26606:18:33;;;26599:31;26647:19;;18868:130:29;26275:397:33;19007:194:29;19093:12;;;:58;;-1:-1:-1;;;19093:58:29;;;;;25489:25:33;;;;25530:18;;;25523:34;;;-1:-1:-1;;;;;19093:12:29;;:24;;25462:18:33;;19093:58:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19078:118;;;;-1:-1:-1;;;19078:118:29;;26879:2:33;19078:118:29;;;26861:21:33;26918:2;26898:18;;;26891:30;26957:31;26937:18;;;26930:59;27006:18;;19078:118:29;26677:353:33;5915:271:29;6033:4;6045:28;6084:12;6097:1;6084:15;;;;;;;;:::i;:::-;;;;;;;6076:24;;6045:55;;6113:68;6135:20;6157:23;6113:21;:68::i;:::-;6106:75;5915:271;-1:-1:-1;;;;5915:271:29:o;17960:611::-;18133:14;;18157:410;18181:20;:27;18177:1;:31;18157:410;;;18303:28;18436:1;18334:98;18367:15;;18383:6;18367:56;18399:20;18420:1;18399:23;;;;;;;;:::i;:::-;;;;;;;18390:6;:32;;;;:::i;:::-;18367:56;;;;;;;:::i;:::-;18350:74;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;18350:74:29;;;;;;;;;;18334:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:103;;18303:134;;18477:16;18494:1;18477:19;;;;;;;;:::i;:::-;;;;;;;18453:20;:43;18445:74;;;;-1:-1:-1;;;18445:74:29;;27519:2:33;18445:74:29;;;27501:21:33;27558:2;27538:18;;;27531:30;-1:-1:-1;;;27577:18:33;;;27570:48;27635:18;;18445:74:29;27317:342:33;18445:74:29;18537:20;18558:1;18537:23;;;;;;;;:::i;:::-;;;;;;;18527:33;;;;;:::i;:::-;;-1:-1:-1;;18210:3:29;;18157:410;;;;18127:444;17960:611;;;;:::o;392:337:21:-;500:4;;546:35;558:23;546:9;:35;:::i;:::-;512:69;;619:9;600:15;:28;;:73;;;;;664:9;638:23;:35;600:73;:124;;;;-1:-1:-1;709:15:21;-1:-1:-1;683:41:21;392:337;-1:-1:-1;;;392:337:21:o;14:347:33:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:33;;-1:-1:-1;;;;;202:30:33;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:118::-;452:5;445:13;438:21;431:5;428:32;418:60;;474:1;471;464:12;489:538;565:6;573;581;634:2;622:9;613:7;609:23;605:32;602:52;;;650:1;647;640:12;602:52;690:9;677:23;-1:-1:-1;;;;;715:6:33;712:30;709:50;;;755:1;752;745:12;709:50;794:58;844:7;835:6;824:9;820:22;794:58;:::i;:::-;871:8;;-1:-1:-1;768:84:33;-1:-1:-1;;956:2:33;941:18;;928:32;969:28;928:32;969:28;:::i;:::-;1016:5;1006:15;;;489:538;;;;;:::o;1032:289::-;1074:3;1112:5;1106:12;1139:6;1134:3;1127:19;1195:6;1188:4;1181:5;1177:16;1170:4;1165:3;1161:14;1155:47;1247:1;1240:4;1231:6;1226:3;1222:16;1218:27;1211:38;1310:4;1303:2;1299:7;1294:2;1286:6;1282:15;1278:29;1273:3;1269:39;1265:50;1258:57;;;1032:289;;;;:::o;1326:1367::-;1811:3;1800:9;1793:22;1774:4;1838:46;1879:3;1868:9;1864:19;1856:6;1838:46;:::i;:::-;1932:9;1924:6;1920:22;1915:2;1904:9;1900:18;1893:50;1966:33;1992:6;1984;1966:33;:::i;:::-;1952:47;;2047:9;2039:6;2035:22;2030:2;2019:9;2015:18;2008:50;2081:33;2107:6;2099;2081:33;:::i;:::-;2067:47;;2162:9;2154:6;2150:22;2145:2;2134:9;2130:18;2123:50;2196:33;2222:6;2214;2196:33;:::i;:::-;2182:47;;2278:9;2270:6;2266:22;2260:3;2249:9;2245:19;2238:51;2312:33;2338:6;2330;2312:33;:::i;:::-;2298:47;;2394:9;2386:6;2382:22;2376:3;2365:9;2361:19;2354:51;2428:33;2454:6;2446;2428:33;:::i;:::-;2414:47;;2510:9;2502:6;2498:22;2492:3;2481:9;2477:19;2470:51;2544:33;2570:6;2562;2544:33;:::i;:::-;2530:47;;2626:9;2618:6;2614:22;2608:3;2597:9;2593:19;2586:51;2654:33;2680:6;2672;2654:33;:::i;:::-;2646:41;1326:1367;-1:-1:-1;;;;;;;;;;;1326:1367:33:o;2698:409::-;2768:6;2776;2829:2;2817:9;2808:7;2804:23;2800:32;2797:52;;;2845:1;2842;2835:12;2797:52;2885:9;2872:23;-1:-1:-1;;;;;2910:6:33;2907:30;2904:50;;;2950:1;2947;2940:12;2904:50;2989:58;3039:7;3030:6;3019:9;3015:22;2989:58;:::i;:::-;3066:8;;2963:84;;-1:-1:-1;2698:409:33;-1:-1:-1;;;;2698:409:33:o;3112:388::-;3346:1;3342;3337:3;3333:11;3329:19;3321:6;3317:32;3306:9;3299:51;3386:6;3381:2;3370:9;3366:18;3359:34;3429:2;3424;3413:9;3409:18;3402:30;3280:4;3449:45;3490:2;3479:9;3475:18;3467:6;3449:45;:::i;:::-;3441:53;3112:388;-1:-1:-1;;;;;3112:388:33:o;3505:367::-;3568:8;3578:6;3632:3;3625:4;3617:6;3613:17;3609:27;3599:55;;3650:1;3647;3640:12;3599:55;-1:-1:-1;3673:20:33;;-1:-1:-1;;;;;3705:30:33;;3702:50;;;3748:1;3745;3738:12;3702:50;3785:4;3777:6;3773:17;3761:29;;3845:3;3838:4;3828:6;3825:1;3821:14;3813:6;3809:27;3805:38;3802:47;3799:67;;;3862:1;3859;3852:12;3877:900;4007:6;4015;4023;4031;4039;4092:2;4080:9;4071:7;4067:23;4063:32;4060:52;;;4108:1;4105;4098:12;4060:52;4148:9;4135:23;-1:-1:-1;;;;;4173:6:33;4170:30;4167:50;;;4213:1;4210;4203:12;4167:50;4252:58;4302:7;4293:6;4282:9;4278:22;4252:58;:::i;:::-;4329:8;;-1:-1:-1;4226:84:33;-1:-1:-1;;4417:2:33;4402:18;;4389:32;-1:-1:-1;;;;;4433:32:33;;4430:52;;;4478:1;4475;4468:12;4430:52;4517:72;4581:7;4570:8;4559:9;4555:24;4517:72;:::i;:::-;4608:8;;-1:-1:-1;4491:98:33;-1:-1:-1;;4693:2:33;4678:18;;4665:32;4726:2;4716:13;;4706:41;;4743:1;4740;4733:12;4706:41;4766:5;4756:15;;;3877:900;;;;;;;;:::o;4782:782::-;4944:4;4992:2;4981:9;4977:18;5022:2;5011:9;5004:21;5045:6;5080;5074:13;5111:6;5103;5096:22;5149:2;5138:9;5134:18;5127:25;;5211:2;5201:6;5198:1;5194:14;5183:9;5179:30;5175:39;5161:53;;5249:2;5241:6;5237:15;5270:1;5280:255;5294:6;5291:1;5288:13;5280:255;;;5387:2;5383:7;5371:9;5363:6;5359:22;5355:36;5350:3;5343:49;5415:40;5448:6;5439;5433:13;5415:40;:::i;:::-;5405:50;-1:-1:-1;5490:2:33;5513:12;;;;5478:15;;;;;5316:1;5309:9;5280:255;;;-1:-1:-1;5552:6:33;;4782:782;-1:-1:-1;;;;;;4782:782:33:o;5569:241::-;5625:6;5678:2;5666:9;5657:7;5653:23;5649:32;5646:52;;;5694:1;5691;5684:12;5646:52;5733:9;5720:23;5752:28;5774:5;5752:28;:::i;:::-;5799:5;5569:241;-1:-1:-1;;;5569:241:33:o;5815:286::-;5874:6;5927:2;5915:9;5906:7;5902:23;5898:32;5895:52;;;5943:1;5940;5933:12;5895:52;5969:23;;-1:-1:-1;;;;;6021:31:33;;6011:42;;6001:70;;6067:1;6064;6057:12;6106:740;6212:6;6220;6228;6236;6289:2;6277:9;6268:7;6264:23;6260:32;6257:52;;;6305:1;6302;6295:12;6257:52;6345:9;6332:23;-1:-1:-1;;;;;6370:6:33;6367:30;6364:50;;;6410:1;6407;6400:12;6364:50;6449:58;6499:7;6490:6;6479:9;6475:22;6449:58;:::i;:::-;6526:8;;-1:-1:-1;6423:84:33;-1:-1:-1;;6614:2:33;6599:18;;6586:32;-1:-1:-1;;;;;6630:32:33;;6627:52;;;6675:1;6672;6665:12;6627:52;6714:72;6778:7;6767:8;6756:9;6752:24;6714:72;:::i;:::-;6106:740;;;;-1:-1:-1;6805:8:33;-1:-1:-1;;;;6106:740:33:o;7033:218::-;7180:2;7169:9;7162:21;7143:4;7200:45;7241:2;7230:9;7226:18;7218:6;7200:45;:::i;7448:180::-;7507:6;7560:2;7548:9;7539:7;7535:23;7531:32;7528:52;;;7576:1;7573;7566:12;7528:52;-1:-1:-1;7599:23:33;;7448:180;-1:-1:-1;7448:180:33:o;7841:1045::-;7969:6;7977;7985;7993;8001;8009;8062:2;8050:9;8041:7;8037:23;8033:32;8030:52;;;8078:1;8075;8068:12;8030:52;8118:9;8105:23;-1:-1:-1;;;;;8143:6:33;8140:30;8137:50;;;8183:1;8180;8173:12;8137:50;8222:70;8284:7;8275:6;8264:9;8260:22;8222:70;:::i;:::-;8311:8;;-1:-1:-1;8196:96:33;-1:-1:-1;;8399:2:33;8384:18;;8371:32;-1:-1:-1;;;;;8415:32:33;;8412:52;;;8460:1;8457;8450:12;8412:52;8499:60;8551:7;8540:8;8529:9;8525:24;8499:60;:::i;:::-;8578:8;;-1:-1:-1;8473:86:33;-1:-1:-1;;8666:2:33;8651:18;;8638:32;-1:-1:-1;;;;;8682:32:33;;8679:52;;;8727:1;8724;8717:12;8679:52;8766:60;8818:7;8807:8;8796:9;8792:24;8766:60;:::i;:::-;7841:1045;;;;-1:-1:-1;7841:1045:33;;-1:-1:-1;7841:1045:33;;8845:8;;7841:1045;-1:-1:-1;;;7841:1045:33:o;8891:437::-;8977:6;8985;9038:2;9026:9;9017:7;9013:23;9009:32;9006:52;;;9054:1;9051;9044:12;9006:52;9094:9;9081:23;-1:-1:-1;;;;;9119:6:33;9116:30;9113:50;;;9159:1;9156;9149:12;9113:50;9198:70;9260:7;9251:6;9240:9;9236:22;9198:70;:::i;9333:768::-;9455:6;9463;9471;9479;9532:2;9520:9;9511:7;9507:23;9503:32;9500:52;;;9548:1;9545;9538:12;9500:52;9588:9;9575:23;-1:-1:-1;;;;;9613:6:33;9610:30;9607:50;;;9653:1;9650;9643:12;9607:50;9692:70;9754:7;9745:6;9734:9;9730:22;9692:70;:::i;10675:404::-;10778:6;10831:2;10819:9;10810:7;10806:23;10802:32;10799:52;;;10847:1;10844;10837:12;10799:52;10887:9;10874:23;-1:-1:-1;;;;;10912:6:33;10909:30;10906:50;;;10952:1;10949;10942:12;10906:50;10975:22;;11031:3;11013:16;;;11009:26;11006:46;;;11048:1;11045;11038:12;11347:379;11540:2;11529:9;11522:21;11503:4;11566:45;11607:2;11596:9;11592:18;11584:6;11566:45;:::i;:::-;11659:9;11651:6;11647:22;11642:2;11631:9;11627:18;11620:50;11687:33;11713:6;11705;11687:33;:::i;12055:127::-;12116:10;12111:3;12107:20;12104:1;12097:31;12147:4;12144:1;12137:15;12171:4;12168:1;12161:15;12187:125;12252:9;;;12273:10;;;12270:36;;;12286:18;;:::i;12317:331::-;12422:9;12433;12475:8;12463:10;12460:24;12457:44;;;12497:1;12494;12487:12;12457:44;12526:6;12516:8;12513:20;12510:40;;;12546:1;12543;12536:12;12510:40;-1:-1:-1;;12572:23:33;;;12617:25;;;;;-1:-1:-1;12317:331:33:o;12653:127::-;12714:10;12709:3;12705:20;12702:1;12695:31;12745:4;12742:1;12735:15;12769:4;12766:1;12759:15;12785:127;12846:10;12841:3;12837:20;12834:1;12827:31;12877:4;12874:1;12867:15;12901:4;12898:1;12891:15;12917:323;13037:19;;-1:-1:-1;;;;;;13074:24:33;;;13118:1;13110:10;;13107:127;;;-1:-1:-1;;;;;;13179:1:33;13175:11;;;13172:1;13168:19;13164:41;;;13156:50;;13152:72;;-1:-1:-1;13107:127:33;;12917:323;;;;:::o;13245:374::-;13366:19;;-1:-1:-1;;13403:40:33;;;13463:2;13455:11;;13452:161;;;-1:-1:-1;;13525:2:33;13521:12;;;;13518:1;13514:20;13510:58;;;13502:67;13498:105;;;;13245:374;-1:-1:-1;;13245:374:33:o;13624:155::-;13715:6;13692:14;;;13708;;;13688:35;;13735:15;;13732:41;;;13753:18;;:::i;14137:232::-;14244:6;14221:14;;;14237;;;14217:35;14272:24;;;;14315;;;14305:58;;14343:18;;:::i;14374:158::-;14467:6;14460:14;;;14444;;;14440:35;;14487:16;;14484:42;;;14506:18;;:::i;14537:255::-;14657:19;;14696:2;14688:11;;14685:101;;;-1:-1:-1;;14757:2:33;14753:12;;;14750:1;14746:20;14742:33;14731:45;14537:255;;;;:::o;14929:168::-;15002:9;;;15033;;15050:15;;;15044:22;;15030:37;15020:71;;15071:18;;:::i;15461:350::-;15663:2;15645:21;;;15702:2;15682:18;;;15675:30;15741:28;15736:2;15721:18;;15714:56;15802:2;15787:18;;15461:350::o;16221:342::-;16423:2;16405:21;;;16462:2;16442:18;;;16435:30;-1:-1:-1;;;16496:2:33;16481:18;;16474:48;16554:2;16539:18;;16221:342::o;17978:273::-;18163:6;18155;18150:3;18137:33;18119:3;18189:16;;18214:13;;;18189:16;17978:273;-1:-1:-1;17978:273:33:o;18256:301::-;18385:3;18423:6;18417:13;18469:6;18462:4;18454:6;18450:17;18445:3;18439:37;18531:1;18495:16;;18520:13;;;-1:-1:-1;18495:16:33;18256:301;-1:-1:-1;18256:301:33:o;18562:184::-;18632:6;18685:2;18673:9;18664:7;18660:23;18656:32;18653:52;;;18701:1;18698;18691:12;18653:52;-1:-1:-1;18724:16:33;;18562:184;-1:-1:-1;18562:184:33:o;19453:545::-;19546:4;19552:6;19612:11;19599:25;19706:2;19702:7;19691:8;19675:14;19671:29;19667:43;19647:18;19643:68;19633:96;;19725:1;19722;19715:12;19633:96;19752:33;;19804:20;;;-1:-1:-1;;;;;;19836:30:33;;19833:50;;;19879:1;19876;19869:12;19833:50;19912:4;19900:17;;-1:-1:-1;19963:1:33;19959:14;;;19943;19939:35;19929:46;;19926:66;;;19988:1;19985;19978:12;20364:522;20442:4;20448:6;20508:11;20495:25;20602:2;20598:7;20587:8;20571:14;20567:29;20563:43;20543:18;20539:68;20529:96;;20621:1;20618;20611:12;20529:96;20648:33;;20700:20;;;-1:-1:-1;;;;;;20732:30:33;;20729:50;;;20775:1;20772;20765:12;20729:50;20808:4;20796:17;;-1:-1:-1;20839:14:33;20835:27;;;20825:38;;20822:58;;;20876:1;20873;20866:12;21234:128;21301:9;;;21322:11;;;21319:37;;;21336:18;;:::i;21367:355::-;21488:9;21499;21541:8;21529:10;21526:24;21523:44;;;21563:1;21560;21553:12;21523:44;21592:6;21582:8;21579:20;21576:40;;;21612:1;21609;21602:12;21576:40;-1:-1:-1;;21654:1:33;21650:18;;;21638:31;;21691:25;;;;;-1:-1:-1;21367:355:33:o;23212:771::-;23457:2;23446:9;23439:21;23496:6;23491:2;23480:9;23476:18;23469:34;23553:6;23545;23540:2;23529:9;23525:18;23512:48;23609:1;23604:2;23580:22;;;23576:31;;23569:42;;;-1:-1:-1;;23670:2:33;23649:15;;23645:29;23630:45;;23717:18;;;23713:27;;23706:4;23691:20;;23684:57;23757:11;;;23750:27;;;-1:-1:-1;;;;;23789:31:33;;23786:51;;;23833:1;23830;23823:12;23786:51;23867:6;23864:1;23860:14;23918:6;23910;23904:3;23900:2;23896:12;23883:42;23950:15;23942:35;;;;-1:-1:-1;;;;;;23212:771:33:o;23988:245::-;24055:6;24108:2;24096:9;24087:7;24083:23;24079:32;24076:52;;;24124:1;24121;24114:12;24076:52;24156:9;24150:16;24175:28;24197:5;24175:28;:::i",
401
- linkReferences: {}
402
- },
403
- methodIdentifiers: {
404
- "CERTIFICATE_REGISTRY_ID()": "41a0e2c2",
405
- "CIRCUIT_REGISTRY_ID()": "6c40d5d6",
406
- "SANCTIONS_REGISTRY_ID()": "652ba33d",
407
- "addVerifiers(bytes32[],address[])": "a6df2c01",
408
- "admin()": "f851a440",
409
- "enforceSanctionsRoot(bytes,uint256[])": "2d4f11e9",
410
- "getAgeProofInputs(bytes,uint256[])": "b2b37a4c",
411
- "getBindProofInputs(bytes,uint256[])": "4601173c",
412
- "getBoundData(bytes)": "0af18ba6",
413
- "getCountryProofInputs(bytes,uint256[],uint8)": "126f7559",
414
- "getDateProofInputs(bytes,uint256[],uint8)": "ec1374cd",
415
- "getDiscloseProofInputs(bytes,uint256[])": "ddf3eec9",
416
- "getDisclosedData(bytes,bool)": "03d37eae",
417
- "getSanctionsProofInputs(bytes,uint256[])": "fbd24457",
418
- "paused()": "5c975abb",
419
- "removeVerifiers(bytes32[])": "8d6937b8",
420
- "rootRegistry()": "b96b161c",
421
- "setPaused(bool)": "16c38b3c",
422
- "transferAdmin(address)": "75829def",
423
- "updateRootRegistry(address)": "18677f2a",
424
- "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d7bf616a",
425
- "verifyScopes(bytes32[],string,string)": "847755e3",
426
- "vkeyHashToVerifier(bytes32)": "8163f231"
427
- },
428
- rawMetadata: '{"compiler":{"version":"0.8.29+commit.ab55807c"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_sanctionsTreesRoot","type":"bytes32"}],"name":"SanctionsTreesRootUpdates","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"verifier","type":"address"}],"name":"VerifierAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"}],"name":"VerifierRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ZKPassportVerifierDeployed","type":"event"},{"inputs":[],"name":"CERTIFICATE_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CIRCUIT_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SANCTIONS_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"},{"internalType":"address[]","name":"verifiers","type":"address[]"}],"name":"addVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"name":"enforceSanctionsRoot","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"name":"getAgeProofInputs","outputs":[{"internalType":"uint256","name":"currentDate","type":"uint256"},{"internalType":"uint8","name":"minAge","type":"uint8"},{"internalType":"uint8","name":"maxAge","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"name":"getBindProofInputs","outputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"getBoundData","outputs":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"string","name":"customData","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"enum ProofType","name":"proofType","type":"uint8"}],"name":"getCountryProofInputs","outputs":[{"internalType":"string[]","name":"countryList","type":"string[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"enum ProofType","name":"proofType","type":"uint8"}],"name":"getDateProofInputs","outputs":[{"internalType":"uint256","name":"currentDate","type":"uint256"},{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"name":"getDiscloseProofInputs","outputs":[{"internalType":"bytes","name":"discloseMask","type":"bytes"},{"internalType":"bytes","name":"discloseBytes","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"discloseBytes","type":"bytes"},{"internalType":"bool","name":"isIDCard","type":"bool"}],"name":"getDisclosedData","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"name":"getSanctionsProofInputs","outputs":[{"internalType":"bytes32","name":"sanctionsTreesCommitment","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"name":"removeVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootRegistry","outputs":[{"internalType":"contract IRootRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"name":"updateRootRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"}],"name":"verifyScopes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"vkeyHashToVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor"},"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"},"returns":{"_0":"isValid True if the proof is valid, false otherwise","_1":"uniqueIdentifier The unique identifier associated to the identity document that generated the proof"}}},"version":1},"userdoc":{"kind":"user","methods":{"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Verifies a proof from ZKPassport"}},"version":1}},"settings":{"compilationTarget":{"src/ZKPassportVerifier.sol":"ZKPassportVerifier"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":forge-std/=lib/forge-std/src/"]},"sources":{"src/ArrayUtils.sol":{"keccak256":"0x8decadfca50750cbdcb00be06030305478292f0042affa868e733d85a3fc9882","license":"Apache-2.0","urls":["bzz-raw://87c9fef005d1894a5fd5dcb1dd46d9a8643ce7496f6aaed7e000fe7a518cf0d1","dweb:/ipfs/QmdCn9qvZXQDpBWcDXumLagWg5dEV5yE1DCMiE1PidqCBe"]},"src/Constants.sol":{"keccak256":"0x2e71da3d5f2fde93f12d5f37d5e91ddeb18fb55409cdc24080ce9726bac64a37","license":"Apache-2.0","urls":["bzz-raw://7a8e4219aff4170b7e9ed4cbb8b6c729926cc43579373e10a138f679fccdcca7","dweb:/ipfs/Qmb4n5phYnw9EUtRG76V6vBC2rVC5aXNSgLKvTej7gk3Qi"]},"src/DateUtils.sol":{"keccak256":"0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77","license":"Apache-2.0","urls":["bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833","dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"]},"src/IRootRegistry.sol":{"keccak256":"0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516","license":"MIT","urls":["bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d","dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"]},"src/OuterCount4.sol":{"keccak256":"0x9f343e672cd22bb67bda44f4ed5ce7318769dfd65270f52eadf70c12a2377aab","license":"Apache-2.0","urls":["bzz-raw://69a1177da0c5a7148676bef2a5e5c58840a66b2e142d2a0d331dca01dd0109ad","dweb:/ipfs/QmQ6iVmrCNEG6XE3ejP4dgBiw3XhMaGm1hW61z4rj7zsiF"]},"src/StringUtils.sol":{"keccak256":"0x518791675043f4c927aa2d02b543b8be56b77b9c0c9aab46dd8dcea45ee7e8d5","license":"Apache-2.0","urls":["bzz-raw://851a2758819d8cf3d3628fa6b43f3ae84c0f0a684c3a08dd3a640c0a4075268d","dweb:/ipfs/QmRZn415Bgyv6rcCfiZhfDNt6uDCgxCTMi48nU2KmDZBTb"]},"src/ZKPassportVerifier.sol":{"keccak256":"0xe30f6521fa584090908f70f89a8c597983d62dbec440b8fe744db02c759f80d8","license":"Apache-2.0","urls":["bzz-raw://236ef32dcef9f8eadb98948cba074e65567a8de0f0ac88183447486a09729f57","dweb:/ipfs/Qmezw3ZJak5dniGQAkhWGRRAJHvJUAkb72u2Qe4Ab7G49h"]}},"version":1}',
429
- metadata: {
430
- compiler: { version: "0.8.29+commit.ab55807c" },
431
- language: "Solidity",
432
- output: {
433
- abi: [
434
- {
435
- inputs: [{ internalType: "address", name: "_rootRegistry", type: "address" }],
436
- stateMutability: "nonpayable",
437
- type: "constructor"
438
- },
642
+ { name: "date", type: "uint256", internalType: "uint256" },
439
643
  {
440
- inputs: [
441
- { internalType: "address", name: "oldAdmin", type: "address", indexed: true },
442
- { internalType: "address", name: "newAdmin", type: "address", indexed: true }
443
- ],
444
- type: "event",
644
+ name: "params",
645
+ type: "tuple",
646
+ internalType: "struct ProofVerificationParams",
647
+ components: [
648
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
649
+ { name: "proof", type: "bytes", internalType: "bytes" },
650
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
651
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
652
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
653
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
654
+ { name: "domain", type: "string", internalType: "string" },
655
+ { name: "scope", type: "string", internalType: "string" },
656
+ { name: "devMode", type: "bool", internalType: "bool" }
657
+ ]
658
+ }
659
+ ],
660
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
661
+ stateMutability: "view"
662
+ },
663
+ {
664
+ type: "function",
665
+ name: "isIssuingCountryIn",
666
+ inputs: [
667
+ { name: "countryList", type: "string[]", internalType: "string[]" },
668
+ {
669
+ name: "params",
670
+ type: "tuple",
671
+ internalType: "struct ProofVerificationParams",
672
+ components: [
673
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
674
+ { name: "proof", type: "bytes", internalType: "bytes" },
675
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
676
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
677
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
678
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
679
+ { name: "domain", type: "string", internalType: "string" },
680
+ { name: "scope", type: "string", internalType: "string" },
681
+ { name: "devMode", type: "bool", internalType: "bool" }
682
+ ]
683
+ }
684
+ ],
685
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
686
+ stateMutability: "pure"
687
+ },
688
+ {
689
+ type: "function",
690
+ name: "isIssuingCountryOut",
691
+ inputs: [
692
+ { name: "countryList", type: "string[]", internalType: "string[]" },
693
+ {
694
+ name: "params",
695
+ type: "tuple",
696
+ internalType: "struct ProofVerificationParams",
697
+ components: [
698
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
699
+ { name: "proof", type: "bytes", internalType: "bytes" },
700
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
701
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
702
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
703
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
704
+ { name: "domain", type: "string", internalType: "string" },
705
+ { name: "scope", type: "string", internalType: "string" },
706
+ { name: "devMode", type: "bool", internalType: "bool" }
707
+ ]
708
+ }
709
+ ],
710
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
711
+ stateMutability: "pure"
712
+ },
713
+ {
714
+ type: "function",
715
+ name: "isNationalityIn",
716
+ inputs: [
717
+ { name: "countryList", type: "string[]", internalType: "string[]" },
718
+ {
719
+ name: "params",
720
+ type: "tuple",
721
+ internalType: "struct ProofVerificationParams",
722
+ components: [
723
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
724
+ { name: "proof", type: "bytes", internalType: "bytes" },
725
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
726
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
727
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
728
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
729
+ { name: "domain", type: "string", internalType: "string" },
730
+ { name: "scope", type: "string", internalType: "string" },
731
+ { name: "devMode", type: "bool", internalType: "bool" }
732
+ ]
733
+ }
734
+ ],
735
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
736
+ stateMutability: "pure"
737
+ },
738
+ {
739
+ type: "function",
740
+ name: "isNationalityOut",
741
+ inputs: [
742
+ { name: "countryList", type: "string[]", internalType: "string[]" },
743
+ {
744
+ name: "params",
745
+ type: "tuple",
746
+ internalType: "struct ProofVerificationParams",
747
+ components: [
748
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
749
+ { name: "proof", type: "bytes", internalType: "bytes" },
750
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
751
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
752
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
753
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
754
+ { name: "domain", type: "string", internalType: "string" },
755
+ { name: "scope", type: "string", internalType: "string" },
756
+ { name: "devMode", type: "bool", internalType: "bool" }
757
+ ]
758
+ }
759
+ ],
760
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
761
+ stateMutability: "pure"
762
+ },
763
+ {
764
+ type: "function",
765
+ name: "paused",
766
+ inputs: [],
767
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
768
+ stateMutability: "view"
769
+ },
770
+ {
771
+ type: "function",
772
+ name: "removeVerifiers",
773
+ inputs: [{ name: "vkeyHashes", type: "bytes32[]", internalType: "bytes32[]" }],
774
+ outputs: [],
775
+ stateMutability: "nonpayable"
776
+ },
777
+ {
778
+ type: "function",
779
+ name: "rootRegistry",
780
+ inputs: [],
781
+ outputs: [{ name: "", type: "address", internalType: "contract IRootRegistry" }],
782
+ stateMutability: "view"
783
+ },
784
+ {
785
+ type: "function",
786
+ name: "setPaused",
787
+ inputs: [{ name: "_paused", type: "bool", internalType: "bool" }],
788
+ outputs: [],
789
+ stateMutability: "nonpayable"
790
+ },
791
+ {
792
+ type: "function",
793
+ name: "transferAdmin",
794
+ inputs: [{ name: "newAdmin", type: "address", internalType: "address" }],
795
+ outputs: [],
796
+ stateMutability: "nonpayable"
797
+ },
798
+ {
799
+ type: "function",
800
+ name: "updateRootRegistry",
801
+ inputs: [{ name: "_rootRegistry", type: "address", internalType: "address" }],
802
+ outputs: [],
803
+ stateMutability: "nonpayable"
804
+ },
805
+ {
806
+ type: "function",
807
+ name: "verifyProof",
808
+ inputs: [
809
+ {
810
+ name: "params",
811
+ type: "tuple",
812
+ internalType: "struct ProofVerificationParams",
813
+ components: [
814
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
815
+ { name: "proof", type: "bytes", internalType: "bytes" },
816
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
817
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
818
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
819
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
820
+ { name: "domain", type: "string", internalType: "string" },
821
+ { name: "scope", type: "string", internalType: "string" },
822
+ { name: "devMode", type: "bool", internalType: "bool" }
823
+ ]
824
+ }
825
+ ],
826
+ outputs: [
827
+ { name: "isValid", type: "bool", internalType: "bool" },
828
+ { name: "uniqueIdentifier", type: "bytes32", internalType: "bytes32" }
829
+ ],
830
+ stateMutability: "view"
831
+ },
832
+ {
833
+ type: "function",
834
+ name: "verifyScopes",
835
+ inputs: [
836
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
837
+ { name: "domain", type: "string", internalType: "string" },
838
+ { name: "scope", type: "string", internalType: "string" }
839
+ ],
840
+ outputs: [{ name: "", type: "bool", internalType: "bool" }],
841
+ stateMutability: "pure"
842
+ },
843
+ {
844
+ type: "function",
845
+ name: "vkeyHashToVerifier",
846
+ inputs: [{ name: "", type: "bytes32", internalType: "bytes32" }],
847
+ outputs: [{ name: "", type: "address", internalType: "address" }],
848
+ stateMutability: "view"
849
+ },
850
+ {
851
+ type: "event",
852
+ name: "AdminUpdated",
853
+ inputs: [
854
+ { name: "oldAdmin", type: "address", indexed: true, internalType: "address" },
855
+ { name: "newAdmin", type: "address", indexed: true, internalType: "address" }
856
+ ],
857
+ anonymous: false
858
+ },
859
+ {
860
+ type: "event",
861
+ name: "CertificateRegistryRootAdded",
862
+ inputs: [
863
+ {
864
+ name: "certificateRegistryRoot",
865
+ type: "bytes32",
866
+ indexed: true,
867
+ internalType: "bytes32"
868
+ }
869
+ ],
870
+ anonymous: false
871
+ },
872
+ {
873
+ type: "event",
874
+ name: "CertificateRegistryRootRemoved",
875
+ inputs: [
876
+ {
877
+ name: "certificateRegistryRoot",
878
+ type: "bytes32",
879
+ indexed: true,
880
+ internalType: "bytes32"
881
+ }
882
+ ],
883
+ anonymous: false
884
+ },
885
+ {
886
+ type: "event",
887
+ name: "PausedStatusChanged",
888
+ inputs: [{ name: "paused", type: "bool", indexed: false, internalType: "bool" }],
889
+ anonymous: false
890
+ },
891
+ {
892
+ type: "event",
893
+ name: "SanctionsTreesRootUpdates",
894
+ inputs: [
895
+ {
896
+ name: "_sanctionsTreesRoot",
897
+ type: "bytes32",
898
+ indexed: true,
899
+ internalType: "bytes32"
900
+ }
901
+ ],
902
+ anonymous: false
903
+ },
904
+ {
905
+ type: "event",
906
+ name: "VerifierAdded",
907
+ inputs: [
908
+ { name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" },
909
+ { name: "verifier", type: "address", indexed: true, internalType: "address" }
910
+ ],
911
+ anonymous: false
912
+ },
913
+ {
914
+ type: "event",
915
+ name: "VerifierRemoved",
916
+ inputs: [
917
+ { name: "vkeyHash", type: "bytes32", indexed: true, internalType: "bytes32" }
918
+ ],
919
+ anonymous: false
920
+ },
921
+ {
922
+ type: "event",
923
+ name: "ZKPassportVerifierDeployed",
924
+ inputs: [
925
+ { name: "admin", type: "address", indexed: true, internalType: "address" },
926
+ { name: "timestamp", type: "uint256", indexed: false, internalType: "uint256" }
927
+ ],
928
+ anonymous: false
929
+ }
930
+ ],
931
+ bytecode: {
932
+ object: "0x608060405234801561000f575f5ffd5b506040516137fc3803806137fc83398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b6136cc806101305f395ff3fe608060405234801561000f575f5ffd5b5060043610610234575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e35414610520578063e718bc3214610533578063ec46f77414610546578063f851a44014610559578063f87e19b11461056b575f5ffd5b8063c4560786146104aa578063cfd9464a146104bd578063d3f6ffff146104d0578063d7bf616a146104e3578063deb7c0591461050d575f5ffd5b8063a88f1cef116100fa578063a88f1cef1461044b578063aa1346ea1461045e578063b96b161c14610471578063bf73c26c14610484578063c0940ebd14610497575f5ffd5b80638163f231146103bf578063847755e3146103ff5780638d6937b814610412578063921076c714610425578063a6df2c0114610438575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610376578063653cfd811461037e5780636c40d5d614610391578063704876d61461039957806375829def146103ac575f5ffd5b80634c1274281461030a57806354dbe4d11461031d57806359545f45146103305780635c975abb1461035057806362067c8214610363575f5ffd5b80631e26a9dc116102075780631e26a9dc1461029b57806337889655146102bb5780633a86bd3d146102ce57806341a0e2c2146102e157806346bd0a16146102f7575f5ffd5b806304951b86146102385780630b90581b1461026057806316c38b3c1461027357806318677f2a14610288575b5f5ffd5b61024b610246366004612744565b61057e565b60405190151581526020015b60405180910390f35b61024b61026e366004612744565b6105a0565b610286610281366004612794565b6105ae565b005b6102866102963660046127c3565b610637565b6102ae6102a93660046127de565b6106e4565b604051610257919061285a565b61024b6102c9366004612960565b610847565b61024b6102dc366004612a4b565b61085c565b6102e9600181565b604051908152602001610257565b61024b610305366004612b53565b610869565b61024b610318366004612744565b610881565b61024b61032b366004612960565b61088e565b61034361033e366004612b9e565b6109df565b6040516102579190612bcf565b5f5461024b90600160a01b900460ff1681565b61024b610371366004612c05565b610b25565b6102e9600381565b61028661038c366004612b9e565b610d96565b6102e9600281565b61024b6103a7366004612744565b610e38565b6102866103ba3660046127c3565b610e45565b6103e76103cd366004612c4c565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610257565b61024b61040d366004612ce7565b610f13565b610286610420366004612d83565b6110db565b61024b610433366004612744565b61119b565b610286610446366004612dc1565b6111b4565b61024b610459366004612744565b6112de565b61024b61046c366004612960565b6112f7565b6002546103e7906001600160a01b031681565b61024b610492366004612960565b611448565b61024b6104a5366004612960565b6114af565b61024b6104b8366004612b53565b6114bb565b61024b6104cb366004612744565b6114c9565b61024b6104de366004612744565b6114d7565b6104f66104f1366004612b9e565b6114f0565b604080519215158352602083019190915201610257565b61024b61051b366004612744565b611997565b61024b61052e366004612a4b565b6119a4565b61024b610541366004612744565b6119b1565b61024b610554366004612a4b565b6119be565b5f546103e7906001600160a01b031681565b61024b610579366004612a4b565b6119cb565b5f61059761058f8462015180612e3f565b6002846119d8565b90505b92915050565b5f6105978384600285611c33565b5f546001600160a01b031633146105e05760405162461bcd60e51b81526004016105d790612e52565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061062c90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146106605760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b0381166106c25760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105d7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61072c60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec96107546060870187612e89565b6107616080890189612ecb565b6040518563ffffffff1660e01b81526004016107809493929190612f68565b5f60405180830381865af415801561079a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107c19190810190612fdd565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae906107fe9084908790600401613036565b5f60405180830381865af4158015610818573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261083f9190810190613059565b949350505050565b5f6105976108568460016131ea565b8361088e565b5f61059783600784611f71565b5f6108778484600385611c33565b90505b9392505050565b5f610597836003846119d8565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6108b96060880188612e89565b6108c660808a018a612ecb565b6040518563ffffffff1660e01b81526004016108e59493929190612f68565b606060405180830381865af4158015610900573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109249190613203565b925092509250610938838660a0013561209b565b6109545760405162461bcd60e51b81526004016105d790613244565b60ff8116156109cd576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610a226060860186612e89565b610a2f6080880188612ecb565b6040518563ffffffff1660e01b8152600401610a4e9493929190612f68565b5f60405180830381865af4158015610a68573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a8f91908101906132b5565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610ac99084906004016132e6565b5f60405180830381865af4158015610ae3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b0a91908101906132f8565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610b506060880188612e89565b610b5d60808a018a612ecb565b6040518563ffffffff1660e01b8152600401610b7c9493929190612f68565b606060405180830381865af4158015610b97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbb9190613203565b925092509250610bcf838660a0013561209b565b610beb5760405162461bcd60e51b81526004016105d790613244565b8560ff168760ff161115610c575760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105d7565b8160ff165f03610ce45760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8060ff165f03610d715760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8160ff168760ff16148015610d8b57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610dbe6060850185612e89565b610dcb6080870187612ecb565b6040518563ffffffff1660e01b8152600401610dea9493929190612f68565b602060405180830381865af4158015610e05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e299190613343565b9050610e34816120c8565b5050565b5f610597836002846119d8565b5f546001600160a01b03163314610e6e5760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b038116610ec45760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105d7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f610f5386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b610fcd57600860028787604051602001610f6e92919061335a565b60408051601f1981840301815290829052610f8891613369565b602060405180830381855afa158015610fa3573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fc69190613343565b901c610fcf565b5f5b90505f61101085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b61108a5760086002868660405160200161102b92919061335a565b60408051601f198184030181529082905261104591613369565b602060405180830381855afa158015611060573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110839190613343565b901c61108c565b5f5b905081898960038181106110a2576110a261337f565b905060200201351480156110ce575080898960048181106110c5576110c561337f565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146111045760405162461bcd60e51b81526004016105d790612e52565b5f5b818110156111965760015f8484848181106111235761112361337f565b602090810292909201358352508101919091526040015f2080546001600160a01b031916905582828281811061115b5761115b61337f565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611106565b505050565b5f6105976111ac6201518085613393565b60028461218e565b5f546001600160a01b031633146111dd5760405162461bcd60e51b81526004016105d790612e52565b5f5b838110156112d7578282828181106111f9576111f961337f565b905060200201602081019061120e91906127c3565b60015f8787858181106112235761122361337f565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061126c5761126c61337f565b905060200201602081019061128191906127c3565b6001600160a01b031685858381811061129c5761129c61337f565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016111df565b5050505050565b5f6105976112ef6201518085613393565b60038461218e565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6113226060880188612e89565b61132f60808a018a612ecb565b6040518563ffffffff1660e01b815260040161134e9493929190612f68565b606060405180830381865af4158015611369573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138d9190613203565b9250925092506113a1838660a0013561209b565b6113bd5760405162461bcd60e51b81526004016105d790613244565b60ff821615611436576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b60ff8681169116149250505092915050565b5f5f8360ff161161149b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105d7565b6105976114a96001856133a6565b836112f7565b5f610597838484610b25565b5f6108778484600285611c33565b5f6105978384600385611c33565b5f6105976114e88462015180612e3f565b6003846119d8565b5f80548190600160a01b900460ff16156115415760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105d7565b5f61154c8435612392565b905061157a61155e6040860186612ecb565b5f81811061156e5761156e61337f565b905060200201356123eb565b6115a761158a6040860186612ecb565b600181811061159b5761159b61337f565b905060200201356124b3565b6115f16115b76040860186612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a0860135612571565b6116595760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105d7565b6116836116696040860186612ecb565b61167660c0880188612e89565b61040d60e08a018a612e89565b6116cf5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105d7565b61178a6116df6040860186612ecb565b60059060016116f160408a018a612ecb565b6116fc929150613393565b92611709939291906133bf565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611747925050506060870187612e89565b6117546080890189612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061259c92505050565b60016117996040860186612ecb565b60016117a86040890189612ecb565b6117b3929150613393565b8181106117c2576117c261337f565b905060200201351415806117e357506117e361012085016101008601612794565b6118405760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105d7565b600661184f6040860186612ecb565b61185a929150613393565b6118676080860186612ecb565b9050146118c45760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105d7565b6001600160a01b03811663ea50d0e46118e06020870187612e89565b6118ed6040890189612ecb565b6040518563ffffffff1660e01b815260040161190c9493929190612f68565b602060405180830381865afa158015611927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194b91906133ea565b92505f600161195d6040870187612ecb565b611968929150613393565b90506119776040860186612ecb565b828181106119875761198761337f565b9050602002013592505050915091565b5f6105978360028461218e565b5f61059783600584611f71565b5f6105978360038461218e565b5f61059783600684611f71565b5f61059783600484611f71565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611a036060880188612e89565b611a1060808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611a31959493929190613419565b606060405180830381865af4158015611a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a70919061346e565b925092509250611a84838660a0013561209b565b611aa05760405162461bcd60e51b81526004016105d790613244565b6002866009811115611ab457611ab4613405565b1480611ad157506003866009811115611acf57611acf613405565b145b611aed5760405162461bcd60e51b81526004016105d790613499565b6002866009811115611b0157611b01613405565b03611ba3578015611b895760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105d7565b611b976383aa7e8083613393565b8714935050505061087a565b8015611c275760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105d7565b508514915061087a9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c5e6060880188612e89565b611c6b60808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611c8c959493929190613419565b606060405180830381865af4158015611ca7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ccb919061346e565b925092509250611cdf838660a0013561209b565b611cfb5760405162461bcd60e51b81526004016105d790613244565b86881115611d635760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105d7565b6002866009811115611d7757611d77613405565b1480611d9457506003866009811115611d9257611d92613405565b145b611db05760405162461bcd60e51b81526004016105d790613499565b6002866009811115611dc457611dc4613405565b03611eaa57815f03611e595760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105d7565b805f03611e785760405162461bcd60e51b81526004016105d7906134c5565b611e866383aa7e8083613393565b88148015611ea05750611e9d6383aa7e8082613393565b87145b935050505061083f565b815f03611f3b5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105d7565b805f03611f5a5760405162461bcd60e51b81526004016105d79061353d565b8188148015611ea057509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca0611f9b6060870187612e89565b611fa86080890189612ecb565b8a6040518663ffffffff1660e01b8152600401611fc9959493929190613419565b5f60405180830381865af4158015611fe3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261200a91908101906135b6565b9150915080865114612020575f9250505061087a565b5f5b8181101561208e5761207787828151811061203f5761203f61337f565b60200260200101518483815181106120595761205961337f565b60200260200101518051602091820120825192909101919091201490565b612086575f935050505061087a565b600101612022565b5060019695505050505050565b5f806120a78385612e3f565b90508342101580156120b857508381115b801561083f575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612116573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213a91906133ea565b6121865760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105d7565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926121b96060880188612e89565b6121c660808a018a612ecb565b8b6040518663ffffffff1660e01b81526004016121e7959493929190613419565b606060405180830381865af4158015612202573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612226919061346e565b92509250925061223a838660a0013561209b565b6122565760405162461bcd60e51b81526004016105d790613244565b81156122d45760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105d7565b60028660098111156122e8576122e8613405565b14806123055750600386600981111561230357612303613405565b145b6123215760405162461bcd60e51b81526004016105d790613499565b600286600981111561233557612335613405565b0361236757805f036123595760405162461bcd60e51b81526004016105d7906134c5565b611b976383aa7e8082613393565b805f036123865760405162461bcd60e51b81526004016105d79061353d565b8614925061087a915050565b5f818152600160205260408120546001600160a01b03168061059a5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105d7565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245d91906133ea565b6121865760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105d7565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612501573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061252591906133ea565b6121865760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105d7565b5f5f836002815181106125865761258661337f565b60200260200101515f1c905061083f818461209b565b5f805b82518110156126dd575f60086002878786908887815181106125c3576125c361337f565b6020026020010151886125d69190612e3f565b926125e39392919061366f565b6040516020016125f492919061335a565b60408051601f198184030181529082905261260e91613369565b602060405180830381855afa158015612629573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061264c9190613343565b901c90508682815181106126625761266261337f565b602002602001015181146126ad5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105d7565b8382815181106126bf576126bf61337f565b6020026020010151836126d29190612e3f565b92505060010161259f565b508083146112d75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105d7565b5f610120828403121561273e575f5ffd5b50919050565b5f5f60408385031215612755575f5ffd5b8235915060208301356001600160401b03811115612771575f5ffd5b61277d8582860161272d565b9150509250929050565b8015158114612186575f5ffd5b5f602082840312156127a4575f5ffd5b813561087a81612787565b6001600160a01b0381168114612186575f5ffd5b5f602082840312156127d3575f5ffd5b813561087a816127af565b5f5f604083850312156127ef575f5ffd5b82356001600160401b03811115612804575f5ffd5b6128108582860161272d565b925050602083013561282181612787565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f8251610100602084015261287761012084018261282c565b90506020840151601f19848303016040850152612894828261282c565b9150506040840151601f198483030160608501526128b2828261282c565b9150506060840151601f198483030160808501526128d0828261282c565b9150506080840151601f198483030160a08501526128ee828261282c565b91505060a0840151601f198483030160c085015261290c828261282c565b91505060c0840151601f198483030160e085015261292a828261282c565b91505060e0840151601f1984830301610100850152612949828261282c565b95945050505050565b60ff81168114612186575f5ffd5b5f5f60408385031215612971575f5ffd5b823561297c81612952565b915060208301356001600160401b03811115612771575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156129cd576129cd612996565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fb576129fb612996565b604052919050565b5f6001600160401b03821115612a1b57612a1b612996565b5060051b60200190565b5f6001600160401b03821115612a3d57612a3d612996565b50601f01601f191660200190565b5f5f60408385031215612a5c575f5ffd5b82356001600160401b03811115612a71575f5ffd5b8301601f81018513612a81575f5ffd5b8035612a94612a8f82612a03565b6129d3565b8082825260208201915060208360051b850101925087831115612ab5575f5ffd5b602084015b83811015612b355780356001600160401b03811115612ad7575f5ffd5b8501603f81018a13612ae7575f5ffd5b6020810135612af8612a8f82612a25565b8181526040838301018c1015612b0c575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612aba565b50945050505060208301356001600160401b03811115612771575f5ffd5b5f5f5f60608486031215612b65575f5ffd5b833592506020840135915060408401356001600160401b03811115612b88575f5ffd5b612b948682870161272d565b9150509250925092565b5f60208284031215612bae575f5ffd5b81356001600160401b03811115612bc3575f5ffd5b61083f8482850161272d565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261083f608084018261282c565b5f5f5f60608486031215612c17575f5ffd5b8335612c2281612952565b92506020840135612c3281612952565b915060408401356001600160401b03811115612b88575f5ffd5b5f60208284031215612c5c575f5ffd5b5035919050565b5f5f83601f840112612c73575f5ffd5b5081356001600160401b03811115612c89575f5ffd5b6020830191508360208260051b8501011115612ca3575f5ffd5b9250929050565b5f5f83601f840112612cba575f5ffd5b5081356001600160401b03811115612cd0575f5ffd5b602083019150836020828501011115612ca3575f5ffd5b5f5f5f5f5f5f60608789031215612cfc575f5ffd5b86356001600160401b03811115612d11575f5ffd5b612d1d89828a01612c63565b90975095505060208701356001600160401b03811115612d3b575f5ffd5b612d4789828a01612caa565b90955093505060408701356001600160401b03811115612d65575f5ffd5b612d7189828a01612caa565b979a9699509497509295939492505050565b5f5f60208385031215612d94575f5ffd5b82356001600160401b03811115612da9575f5ffd5b612db585828601612c63565b90969095509350505050565b5f5f5f5f60408587031215612dd4575f5ffd5b84356001600160401b03811115612de9575f5ffd5b612df587828801612c63565b90955093505060208501356001600160401b03811115612e13575f5ffd5b612e1f87828801612c63565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059a5761059a612e2b565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112612e9e575f5ffd5b8301803591506001600160401b03821115612eb7575f5ffd5b602001915036819003821315612ca3575f5ffd5b5f5f8335601e19843603018112612ee0575f5ffd5b8301803591506001600160401b03821115612ef9575f5ffd5b6020019150600581901b3603821315612ca3575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115612f4f575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f612f7b604083018688612f10565b8281036020840152610d8b818587612f38565b5f82601f830112612f9d575f5ffd5b8151602083015f612fb0612a8f84612a25565b9050828152858383011115612fc3575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215612fee575f5ffd5b82516001600160401b03811115613003575f5ffd5b61300f85828601612f8e565b92505060208301516001600160401b0381111561302a575f5ffd5b61277d85828601612f8e565b604081525f613048604083018561282c565b905082151560208301529392505050565b5f60208284031215613069575f5ffd5b81516001600160401b0381111561307e575f5ffd5b82016101008185031215613090575f5ffd5b6130986129aa565b81516001600160401b038111156130ad575f5ffd5b6130b986828501612f8e565b82525060208201516001600160401b038111156130d4575f5ffd5b6130e086828501612f8e565b60208301525060408201516001600160401b038111156130fe575f5ffd5b61310a86828501612f8e565b60408301525060608201516001600160401b03811115613128575f5ffd5b61313486828501612f8e565b60608301525060808201516001600160401b03811115613152575f5ffd5b61315e86828501612f8e565b60808301525060a08201516001600160401b0381111561317c575f5ffd5b61318886828501612f8e565b60a08301525060c08201516001600160401b038111156131a6575f5ffd5b6131b286828501612f8e565b60c08301525060e08201516001600160401b038111156131d0575f5ffd5b6131dc86828501612f8e565b60e083015250949350505050565b60ff818116838216019081111561059a5761059a612e2b565b5f5f5f60608486031215613215575f5ffd5b8351602085015190935061322881612952565b604085015190925061323981612952565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f602082840312156132c5575f5ffd5b81516001600160401b038111156132da575f5ffd5b61083f84828501612f8e565b602081525f610597602083018461282c565b5f5f5f6060848603121561330a575f5ffd5b8351613315816127af565b6020850151604086015191945092506001600160401b03811115613337575f5ffd5b612b9486828701612f8e565b5f60208284031215613353575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561059a5761059a612e2b565b60ff828116828216039081111561059a5761059a612e2b565b5f5f858511156133cd575f5ffd5b838611156133d9575f5ffd5b5050600583901b0193919092039150565b5f602082840312156133fa575f5ffd5b815161087a81612787565b634e487b7160e01b5f52602160045260245ffd5b606081525f61342c606083018789612f10565b828103602084015261343f818688612f38565b915050600a831061345e57634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613480575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f604083850312156135c7575f5ffd5b82516001600160401b038111156135dc575f5ffd5b8301601f810185136135ec575f5ffd5b80516135fa612a8f82612a03565b8082825260208201915060208360051b85010192508783111561361b575f5ffd5b602084015b8381101561365b5780516001600160401b0381111561363d575f5ffd5b61364c8a602083890101612f8e565b84525060209283019201613620565b506020969096015195979596505050505050565b5f5f8585111561367d575f5ffd5b83861115613689575f5ffd5b505082019391909203915056fea26469706673582212201ad0934c58c94945ad619ae11884148cc3af0f513c363543f6833c83eb4947ff64736f6c634300081d0033",
933
+ sourceMap: "620:27253:26:-:0;;;1762:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1811:27:26;;1803:76;;;;-1:-1:-1;;;1803:76:26;;511:2:33;1803:76:26;;;493:21:33;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:33;;;633:34;684:19;;1803:76:26;;;;;;;;1885:5;:18;;1893:10;-1:-1:-1;;;;;;1885:18:26;;;;;;;;1909:12;:43;;;;;-1:-1:-1;;;;;1909:43:26;;;;;1963:50;;1997:15;860:25:33;;1963:50:26;;848:2:33;833:18;1963:50:26;;;;;;;1762:256;620:27253;;14:290:33;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:33;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:33:o;714:177::-;620:27253:26;;;;;;",
934
+ linkReferences: {
935
+ "src/InputsExtractor.sol": {
936
+ InputsExtractor: [
937
+ { start: 2143, length: 20 },
938
+ { start: 2307, length: 20 },
939
+ { start: 2500, length: 20 },
940
+ { start: 2861, length: 20 },
941
+ { start: 3025, length: 20 },
942
+ { start: 3163, length: 20 },
943
+ { start: 3785, length: 20 },
944
+ { start: 5165, length: 20 },
945
+ { start: 6926, length: 20 },
946
+ { start: 7529, length: 20 },
947
+ { start: 8358, length: 20 },
948
+ { start: 8900, length: 20 }
949
+ ]
950
+ }
951
+ }
952
+ },
953
+ deployedBytecode: {
954
+ object: "0x608060405234801561000f575f5ffd5b5060043610610234575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e35414610520578063e718bc3214610533578063ec46f77414610546578063f851a44014610559578063f87e19b11461056b575f5ffd5b8063c4560786146104aa578063cfd9464a146104bd578063d3f6ffff146104d0578063d7bf616a146104e3578063deb7c0591461050d575f5ffd5b8063a88f1cef116100fa578063a88f1cef1461044b578063aa1346ea1461045e578063b96b161c14610471578063bf73c26c14610484578063c0940ebd14610497575f5ffd5b80638163f231146103bf578063847755e3146103ff5780638d6937b814610412578063921076c714610425578063a6df2c0114610438575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610376578063653cfd811461037e5780636c40d5d614610391578063704876d61461039957806375829def146103ac575f5ffd5b80634c1274281461030a57806354dbe4d11461031d57806359545f45146103305780635c975abb1461035057806362067c8214610363575f5ffd5b80631e26a9dc116102075780631e26a9dc1461029b57806337889655146102bb5780633a86bd3d146102ce57806341a0e2c2146102e157806346bd0a16146102f7575f5ffd5b806304951b86146102385780630b90581b1461026057806316c38b3c1461027357806318677f2a14610288575b5f5ffd5b61024b610246366004612744565b61057e565b60405190151581526020015b60405180910390f35b61024b61026e366004612744565b6105a0565b610286610281366004612794565b6105ae565b005b6102866102963660046127c3565b610637565b6102ae6102a93660046127de565b6106e4565b604051610257919061285a565b61024b6102c9366004612960565b610847565b61024b6102dc366004612a4b565b61085c565b6102e9600181565b604051908152602001610257565b61024b610305366004612b53565b610869565b61024b610318366004612744565b610881565b61024b61032b366004612960565b61088e565b61034361033e366004612b9e565b6109df565b6040516102579190612bcf565b5f5461024b90600160a01b900460ff1681565b61024b610371366004612c05565b610b25565b6102e9600381565b61028661038c366004612b9e565b610d96565b6102e9600281565b61024b6103a7366004612744565b610e38565b6102866103ba3660046127c3565b610e45565b6103e76103cd366004612c4c565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610257565b61024b61040d366004612ce7565b610f13565b610286610420366004612d83565b6110db565b61024b610433366004612744565b61119b565b610286610446366004612dc1565b6111b4565b61024b610459366004612744565b6112de565b61024b61046c366004612960565b6112f7565b6002546103e7906001600160a01b031681565b61024b610492366004612960565b611448565b61024b6104a5366004612960565b6114af565b61024b6104b8366004612b53565b6114bb565b61024b6104cb366004612744565b6114c9565b61024b6104de366004612744565b6114d7565b6104f66104f1366004612b9e565b6114f0565b604080519215158352602083019190915201610257565b61024b61051b366004612744565b611997565b61024b61052e366004612a4b565b6119a4565b61024b610541366004612744565b6119b1565b61024b610554366004612a4b565b6119be565b5f546103e7906001600160a01b031681565b61024b610579366004612a4b565b6119cb565b5f61059761058f8462015180612e3f565b6002846119d8565b90505b92915050565b5f6105978384600285611c33565b5f546001600160a01b031633146105e05760405162461bcd60e51b81526004016105d790612e52565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061062c90831515815260200190565b60405180910390a150565b5f546001600160a01b031633146106605760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b0381166106c25760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105d7565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61072c60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec96107546060870187612e89565b6107616080890189612ecb565b6040518563ffffffff1660e01b81526004016107809493929190612f68565b5f60405180830381865af415801561079a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107c19190810190612fdd565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae906107fe9084908790600401613036565b5f60405180830381865af4158015610818573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261083f9190810190613059565b949350505050565b5f6105976108568460016131ea565b8361088e565b5f61059783600784611f71565b5f6108778484600385611c33565b90505b9392505050565b5f610597836003846119d8565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6108b96060880188612e89565b6108c660808a018a612ecb565b6040518563ffffffff1660e01b81526004016108e59493929190612f68565b606060405180830381865af4158015610900573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109249190613203565b925092509250610938838660a0013561209b565b6109545760405162461bcd60e51b81526004016105d790613244565b60ff8116156109cd576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610a226060860186612e89565b610a2f6080880188612ecb565b6040518563ffffffff1660e01b8152600401610a4e9493929190612f68565b5f60405180830381865af4158015610a68573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a8f91908101906132b5565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610ac99084906004016132e6565b5f60405180830381865af4158015610ae3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b0a91908101906132f8565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610b506060880188612e89565b610b5d60808a018a612ecb565b6040518563ffffffff1660e01b8152600401610b7c9493929190612f68565b606060405180830381865af4158015610b97573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbb9190613203565b925092509250610bcf838660a0013561209b565b610beb5760405162461bcd60e51b81526004016105d790613244565b8560ff168760ff161115610c575760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105d7565b8160ff165f03610ce45760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8060ff165f03610d715760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105d7565b8160ff168760ff16148015610d8b57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610dbe6060850185612e89565b610dcb6080870187612ecb565b6040518563ffffffff1660e01b8152600401610dea9493929190612f68565b602060405180830381865af4158015610e05573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e299190613343565b9050610e34816120c8565b5050565b5f610597836002846119d8565b5f546001600160a01b03163314610e6e5760405162461bcd60e51b81526004016105d790612e52565b6001600160a01b038116610ec45760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105d7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f610f5386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b610fcd57600860028787604051602001610f6e92919061335a565b60408051601f1981840301815290829052610f8891613369565b602060405180830381855afa158015610fa3573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fc69190613343565b901c610fcf565b5f5b90505f61101085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061218992505050565b61108a5760086002868660405160200161102b92919061335a565b60408051601f198184030181529082905261104591613369565b602060405180830381855afa158015611060573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906110839190613343565b901c61108c565b5f5b905081898960038181106110a2576110a261337f565b905060200201351480156110ce575080898960048181106110c5576110c561337f565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146111045760405162461bcd60e51b81526004016105d790612e52565b5f5b818110156111965760015f8484848181106111235761112361337f565b602090810292909201358352508101919091526040015f2080546001600160a01b031916905582828281811061115b5761115b61337f565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611106565b505050565b5f6105976111ac6201518085613393565b60028461218e565b5f546001600160a01b031633146111dd5760405162461bcd60e51b81526004016105d790612e52565b5f5b838110156112d7578282828181106111f9576111f961337f565b905060200201602081019061120e91906127c3565b60015f8787858181106112235761122361337f565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061126c5761126c61337f565b905060200201602081019061128191906127c3565b6001600160a01b031685858381811061129c5761129c61337f565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016111df565b5050505050565b5f6105976112ef6201518085613393565b60038461218e565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c6113226060880188612e89565b61132f60808a018a612ecb565b6040518563ffffffff1660e01b815260040161134e9493929190612f68565b606060405180830381865af4158015611369573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138d9190613203565b9250925092506113a1838660a0013561209b565b6113bd5760405162461bcd60e51b81526004016105d790613244565b60ff821615611436576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105d7565b60ff8681169116149250505092915050565b5f5f8360ff161161149b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105d7565b6105976114a96001856133a6565b836112f7565b5f610597838484610b25565b5f6108778484600285611c33565b5f6105978384600385611c33565b5f6105976114e88462015180612e3f565b6003846119d8565b5f80548190600160a01b900460ff16156115415760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105d7565b5f61154c8435612392565b905061157a61155e6040860186612ecb565b5f81811061156e5761156e61337f565b905060200201356123eb565b6115a761158a6040860186612ecb565b600181811061159b5761159b61337f565b905060200201356124b3565b6115f16115b76040860186612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a0860135612571565b6116595760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105d7565b6116836116696040860186612ecb565b61167660c0880188612e89565b61040d60e08a018a612e89565b6116cf5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105d7565b61178a6116df6040860186612ecb565b60059060016116f160408a018a612ecb565b6116fc929150613393565b92611709939291906133bf565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250611747925050506060870187612e89565b6117546080890189612ecb565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061259c92505050565b60016117996040860186612ecb565b60016117a86040890189612ecb565b6117b3929150613393565b8181106117c2576117c261337f565b905060200201351415806117e357506117e361012085016101008601612794565b6118405760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105d7565b600661184f6040860186612ecb565b61185a929150613393565b6118676080860186612ecb565b9050146118c45760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105d7565b6001600160a01b03811663ea50d0e46118e06020870187612e89565b6118ed6040890189612ecb565b6040518563ffffffff1660e01b815260040161190c9493929190612f68565b602060405180830381865afa158015611927573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194b91906133ea565b92505f600161195d6040870187612ecb565b611968929150613393565b90506119776040860186612ecb565b828181106119875761198761337f565b9050602002013592505050915091565b5f6105978360028461218e565b5f61059783600584611f71565b5f6105978360038461218e565b5f61059783600684611f71565b5f61059783600484611f71565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611a036060880188612e89565b611a1060808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611a31959493929190613419565b606060405180830381865af4158015611a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a70919061346e565b925092509250611a84838660a0013561209b565b611aa05760405162461bcd60e51b81526004016105d790613244565b6002866009811115611ab457611ab4613405565b1480611ad157506003866009811115611acf57611acf613405565b145b611aed5760405162461bcd60e51b81526004016105d790613499565b6002866009811115611b0157611b01613405565b03611ba3578015611b895760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105d7565b611b976383aa7e8083613393565b8714935050505061087a565b8015611c275760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105d7565b508514915061087a9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c5e6060880188612e89565b611c6b60808a018a612ecb565b8b6040518663ffffffff1660e01b8152600401611c8c959493929190613419565b606060405180830381865af4158015611ca7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ccb919061346e565b925092509250611cdf838660a0013561209b565b611cfb5760405162461bcd60e51b81526004016105d790613244565b86881115611d635760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105d7565b6002866009811115611d7757611d77613405565b1480611d9457506003866009811115611d9257611d92613405565b145b611db05760405162461bcd60e51b81526004016105d790613499565b6002866009811115611dc457611dc4613405565b03611eaa57815f03611e595760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105d7565b805f03611e785760405162461bcd60e51b81526004016105d7906134c5565b611e866383aa7e8083613393565b88148015611ea05750611e9d6383aa7e8082613393565b87145b935050505061083f565b815f03611f3b5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105d7565b805f03611f5a5760405162461bcd60e51b81526004016105d79061353d565b8188148015611ea057509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca0611f9b6060870187612e89565b611fa86080890189612ecb565b8a6040518663ffffffff1660e01b8152600401611fc9959493929190613419565b5f60405180830381865af4158015611fe3573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261200a91908101906135b6565b9150915080865114612020575f9250505061087a565b5f5b8181101561208e5761207787828151811061203f5761203f61337f565b60200260200101518483815181106120595761205961337f565b60200260200101518051602091820120825192909101919091201490565b612086575f935050505061087a565b600101612022565b5060019695505050505050565b5f806120a78385612e3f565b90508342101580156120b857508381115b801561083f575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612116573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061213a91906133ea565b6121865760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105d7565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926121b96060880188612e89565b6121c660808a018a612ecb565b8b6040518663ffffffff1660e01b81526004016121e7959493929190613419565b606060405180830381865af4158015612202573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612226919061346e565b92509250925061223a838660a0013561209b565b6122565760405162461bcd60e51b81526004016105d790613244565b81156122d45760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105d7565b60028660098111156122e8576122e8613405565b14806123055750600386600981111561230357612303613405565b145b6123215760405162461bcd60e51b81526004016105d790613499565b600286600981111561233557612335613405565b0361236757805f036123595760405162461bcd60e51b81526004016105d7906134c5565b611b976383aa7e8082613393565b805f036123865760405162461bcd60e51b81526004016105d79061353d565b8614925061087a915050565b5f818152600160205260408120546001600160a01b03168061059a5760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105d7565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612439573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245d91906133ea565b6121865760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105d7565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612501573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061252591906133ea565b6121865760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105d7565b5f5f836002815181106125865761258661337f565b60200260200101515f1c905061083f818461209b565b5f805b82518110156126dd575f60086002878786908887815181106125c3576125c361337f565b6020026020010151886125d69190612e3f565b926125e39392919061366f565b6040516020016125f492919061335a565b60408051601f198184030181529082905261260e91613369565b602060405180830381855afa158015612629573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061264c9190613343565b901c90508682815181106126625761266261337f565b602002602001015181146126ad5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105d7565b8382815181106126bf576126bf61337f565b6020026020010151836126d29190612e3f565b92505060010161259f565b508083146112d75760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105d7565b5f610120828403121561273e575f5ffd5b50919050565b5f5f60408385031215612755575f5ffd5b8235915060208301356001600160401b03811115612771575f5ffd5b61277d8582860161272d565b9150509250929050565b8015158114612186575f5ffd5b5f602082840312156127a4575f5ffd5b813561087a81612787565b6001600160a01b0381168114612186575f5ffd5b5f602082840312156127d3575f5ffd5b813561087a816127af565b5f5f604083850312156127ef575f5ffd5b82356001600160401b03811115612804575f5ffd5b6128108582860161272d565b925050602083013561282181612787565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f8251610100602084015261287761012084018261282c565b90506020840151601f19848303016040850152612894828261282c565b9150506040840151601f198483030160608501526128b2828261282c565b9150506060840151601f198483030160808501526128d0828261282c565b9150506080840151601f198483030160a08501526128ee828261282c565b91505060a0840151601f198483030160c085015261290c828261282c565b91505060c0840151601f198483030160e085015261292a828261282c565b91505060e0840151601f1984830301610100850152612949828261282c565b95945050505050565b60ff81168114612186575f5ffd5b5f5f60408385031215612971575f5ffd5b823561297c81612952565b915060208301356001600160401b03811115612771575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156129cd576129cd612996565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fb576129fb612996565b604052919050565b5f6001600160401b03821115612a1b57612a1b612996565b5060051b60200190565b5f6001600160401b03821115612a3d57612a3d612996565b50601f01601f191660200190565b5f5f60408385031215612a5c575f5ffd5b82356001600160401b03811115612a71575f5ffd5b8301601f81018513612a81575f5ffd5b8035612a94612a8f82612a03565b6129d3565b8082825260208201915060208360051b850101925087831115612ab5575f5ffd5b602084015b83811015612b355780356001600160401b03811115612ad7575f5ffd5b8501603f81018a13612ae7575f5ffd5b6020810135612af8612a8f82612a25565b8181526040838301018c1015612b0c575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612aba565b50945050505060208301356001600160401b03811115612771575f5ffd5b5f5f5f60608486031215612b65575f5ffd5b833592506020840135915060408401356001600160401b03811115612b88575f5ffd5b612b948682870161272d565b9150509250925092565b5f60208284031215612bae575f5ffd5b81356001600160401b03811115612bc3575f5ffd5b61083f8482850161272d565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261083f608084018261282c565b5f5f5f60608486031215612c17575f5ffd5b8335612c2281612952565b92506020840135612c3281612952565b915060408401356001600160401b03811115612b88575f5ffd5b5f60208284031215612c5c575f5ffd5b5035919050565b5f5f83601f840112612c73575f5ffd5b5081356001600160401b03811115612c89575f5ffd5b6020830191508360208260051b8501011115612ca3575f5ffd5b9250929050565b5f5f83601f840112612cba575f5ffd5b5081356001600160401b03811115612cd0575f5ffd5b602083019150836020828501011115612ca3575f5ffd5b5f5f5f5f5f5f60608789031215612cfc575f5ffd5b86356001600160401b03811115612d11575f5ffd5b612d1d89828a01612c63565b90975095505060208701356001600160401b03811115612d3b575f5ffd5b612d4789828a01612caa565b90955093505060408701356001600160401b03811115612d65575f5ffd5b612d7189828a01612caa565b979a9699509497509295939492505050565b5f5f60208385031215612d94575f5ffd5b82356001600160401b03811115612da9575f5ffd5b612db585828601612c63565b90969095509350505050565b5f5f5f5f60408587031215612dd4575f5ffd5b84356001600160401b03811115612de9575f5ffd5b612df587828801612c63565b90955093505060208501356001600160401b03811115612e13575f5ffd5b612e1f87828801612c63565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561059a5761059a612e2b565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112612e9e575f5ffd5b8301803591506001600160401b03821115612eb7575f5ffd5b602001915036819003821315612ca3575f5ffd5b5f5f8335601e19843603018112612ee0575f5ffd5b8301803591506001600160401b03821115612ef9575f5ffd5b6020019150600581901b3603821315612ca3575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115612f4f575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f612f7b604083018688612f10565b8281036020840152610d8b818587612f38565b5f82601f830112612f9d575f5ffd5b8151602083015f612fb0612a8f84612a25565b9050828152858383011115612fc3575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215612fee575f5ffd5b82516001600160401b03811115613003575f5ffd5b61300f85828601612f8e565b92505060208301516001600160401b0381111561302a575f5ffd5b61277d85828601612f8e565b604081525f613048604083018561282c565b905082151560208301529392505050565b5f60208284031215613069575f5ffd5b81516001600160401b0381111561307e575f5ffd5b82016101008185031215613090575f5ffd5b6130986129aa565b81516001600160401b038111156130ad575f5ffd5b6130b986828501612f8e565b82525060208201516001600160401b038111156130d4575f5ffd5b6130e086828501612f8e565b60208301525060408201516001600160401b038111156130fe575f5ffd5b61310a86828501612f8e565b60408301525060608201516001600160401b03811115613128575f5ffd5b61313486828501612f8e565b60608301525060808201516001600160401b03811115613152575f5ffd5b61315e86828501612f8e565b60808301525060a08201516001600160401b0381111561317c575f5ffd5b61318886828501612f8e565b60a08301525060c08201516001600160401b038111156131a6575f5ffd5b6131b286828501612f8e565b60c08301525060e08201516001600160401b038111156131d0575f5ffd5b6131dc86828501612f8e565b60e083015250949350505050565b60ff818116838216019081111561059a5761059a612e2b565b5f5f5f60608486031215613215575f5ffd5b8351602085015190935061322881612952565b604085015190925061323981612952565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f602082840312156132c5575f5ffd5b81516001600160401b038111156132da575f5ffd5b61083f84828501612f8e565b602081525f610597602083018461282c565b5f5f5f6060848603121561330a575f5ffd5b8351613315816127af565b6020850151604086015191945092506001600160401b03811115613337575f5ffd5b612b9486828701612f8e565b5f60208284031215613353575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561059a5761059a612e2b565b60ff828116828216039081111561059a5761059a612e2b565b5f5f858511156133cd575f5ffd5b838611156133d9575f5ffd5b5050600583901b0193919092039150565b5f602082840312156133fa575f5ffd5b815161087a81612787565b634e487b7160e01b5f52602160045260245ffd5b606081525f61342c606083018789612f10565b828103602084015261343f818688612f38565b915050600a831061345e57634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613480575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f604083850312156135c7575f5ffd5b82516001600160401b038111156135dc575f5ffd5b8301601f810185136135ec575f5ffd5b80516135fa612a8f82612a03565b8082825260208201915060208360051b85010192508783111561361b575f5ffd5b602084015b8381101561365b5780516001600160401b0381111561363d575f5ffd5b61364c8a602083890101612f8e565b84525060209283019201613620565b506020969096015195979596505050505050565b5f5f8585111561367d575f5ffd5b83861115613689575f5ffd5b505082019391909203915056fea26469706673582212201ad0934c58c94945ad619ae11884148cc3af0f513c363543f6833c83eb4947ff64736f6c634300081d0033",
955
+ sourceMap: "620:27253:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12931:206;;;;;;:::i;:::-;;:::i;:::-;;;864:14:33;;857:22;839:41;;827:2;812:18;12931:206:26;;;;;;;;14970:192;;;;;;:::i;:::-;;:::i;2441:118::-;;;;;;:::i;:::-;;:::i;:::-;;3092:206;;;;;;:::i;:::-;;:::i;3833:369::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5263:169::-;;;;;;:::i;:::-;;:::i;20967:230::-;;;;;;:::i;:::-;;:::i;652:69::-;;718:1;652:69;;;;;7807:25:33;;;7795:2;7780:18;652:69:26;7661:177:33;16515:227:26;;;;;;:::i;:::-;;:::i;15468:207::-;;;;;;:::i;:::-;;:::i;4480:541::-;;;;;;:::i;:::-;;:::i;21363:347::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;890:18::-;;;;;-1:-1:-1;;;890:18:26;;;;;;5757:766;;;;;;:::i;:::-;;:::i;794:67::-;;858:1;794:67;;21861:271;;;;;;:::i;:::-;;:::i;725:65::-;;787:1;725:65;;12463:204;;;;;;:::i;:::-;;:::i;2208:229::-;;;;;;:::i;:::-;;:::i;998:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;998:53:26;;;;;;-1:-1:-1;;;;;10373:32:33;;;10355:51;;10343:2;10328:18;998:53:26;10209:203:33;22471:706:26;;;;;;:::i;:::-;;:::i;2857:231::-;;;;;;:::i;:::-;;:::i;14490:210::-;;;;;;:::i;:::-;;:::i;2563:290::-;;;;;;:::i;:::-;;:::i;17533:211::-;;;;;;:::i;:::-;;:::i;6801:541::-;;;;;;:::i;:::-;;:::i;1125:33::-;;;;;-1:-1:-1;;;;;1125:33:26;;;7584:228;;;;;;:::i;:::-;;:::i;8060:159::-;;;;;;:::i;:::-;;:::i;13490:224::-;;;;;;:::i;:::-;;:::i;18020:195::-;;;;;;:::i;:::-;;:::i;15945:209::-;;;;;;:::i;:::-;;:::i;25096:2775::-;;;;;;:::i;:::-;;:::i;:::-;;;;13833:14:33;;13826:22;13808:41;;13880:2;13865:18;;13858:34;;;;13781:18;25096:2775:26;13640:258:33;14017:206:26;;;;;;:::i;:::-;;:::i;20334:223::-;;;;;;:::i;:::-;;:::i;17051:209::-;;;;;;:::i;:::-;;:::i;19703:229::-;;;;;;:::i;:::-;;:::i;866:20::-;;;;;-1:-1:-1;;;;;866:20:26;;;19149:222;;;;;;:::i;:::-;;:::i;12931:206::-;13048:4;13067:65;13086:16;:7;13096:6;13086:16;:::i;:::-;13104:19;13125:6;13067:18;:65::i;:::-;13060:72;;12931:206;;;;;:::o;14970:192::-;15084:4;15103:54;15117:4;15123;15129:19;15150:6;15103:13;:54::i;2441:118::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;;;;;;;;;2499:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2499:16:26::1;-1:-1:-1::0;;;;2499:16:26;;::::1;;::::0;;2526:28:::1;::::0;::::1;::::0;::::1;::::0;2508:7;864:14:33;857:22;839:41;;827:2;812:18;;699:187;2526:28:26::1;;;;;;;;2441:118:::0;:::o;3092:206::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;3176:27:26;::::1;3168:76;;;::::0;-1:-1:-1;;;3168:76:26;;14722:2:33;3168:76:26::1;::::0;::::1;14704:21:33::0;14761:2;14741:18;;;14734:30;14800:34;14780:18;;;14773:62;-1:-1:-1;;;14851:18:33;;;14844:34;14895:19;;3168:76:26::1;14520:400:33::0;3168:76:26::1;3250:12;:43:::0;;-1:-1:-1;;;;;;3250:43:26::1;-1:-1:-1::0;;;;;3250:43:26;;;::::1;::::0;;;::::1;::::0;;3092:206::o;3833:369::-;3952:34;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3952:34:26;3997:26;4027:15;:38;4066:22;;;;:6;:22;:::i;:::-;4090:27;;;;:6;:27;:::i;:::-;4027:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4027:91:26;;;;;;;;;;;;:::i;:::-;4140:57;;-1:-1:-1;;;4140:57:26;;3994:124;;-1:-1:-1;4140:15:26;;-1:-1:-1;4140:32:26;;:57;;3994:124;;4188:8;;4140:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4140:57:26;;;;;;;;;;;;:::i;:::-;4124:73;3833:369;-1:-1:-1;;;;3833:369:26:o;5263:169::-;5371:4;5390:37;5408:10;:6;5417:1;5408:10;:::i;:::-;5420:6;5390:17;:37::i;20967:230::-;21099:4;21118:74;21135:11;21148:35;21185:6;21118:16;:74::i;16515:227::-;16656:4;16675:62;16689:7;16698;16707:21;16730:6;16675:13;:62::i;:::-;16668:69;;16515:227;;;;;;:::o;15468:207::-;15593:4;15612:58;15631:7;15640:21;15663:6;15612:18;:58::i;4480:541::-;4595:4;;;;4653:15;:33;4687:22;;;;:6;:22;:::i;:::-;4711:27;;;;:6;:27;:::i;:::-;4653:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4607:132;;;;;;4753:66;4775:11;4788:6;:30;;;4753:21;:66::i;:::-;4745:154;;;;-1:-1:-1;;;4745:154:26;;;;;;;:::i;:::-;4913:8;;;;4905:85;;;;;-1:-1:-1;;;4905:85:26;;21776:2:33;4905:85:26;;;21758:21:33;21795:18;;;21788:30;;;;21854:34;21834:18;;;21827:62;21925:34;21905:18;;;21898:62;21977:19;;4905:85:26;21574:428:33;4905:85:26;-1:-1:-1;5003:13:26;;;;;;;;-1:-1:-1;;4480:541:26;;;;:::o;21363:347::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21489:17:26;21509:15;:34;21544:22;;;;:6;:22;:::i;:::-;21568:27;;;;:6;:27;:::i;:::-;21509:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21509:87:26;;;;;;;;;;;;:::i;:::-;21671:34;;-1:-1:-1;;;21671:34:26;;21489:107;;-1:-1:-1;21671:15:26;;:28;;:34;;21489:107;;21671:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21671:34:26;;;;;;;;;;;;:::i;:::-;21647:20;;;21602:103;21628:17;;;21602:103;-1:-1:-1;;;;;21602:103:26;;;-1:-1:-1;21603:9:26;21363:347;-1:-1:-1;21363:347:26:o;5757:766::-;5885:4;;;;5943:15;:33;5977:22;;;;:6;:22;:::i;:::-;6001:27;;;;:6;:27;:::i;:::-;5943:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5897:132;;;;;;6043:66;6065:11;6078:6;:30;;;6043:21;:66::i;:::-;6035:154;;;;-1:-1:-1;;;6035:154:26;;;;;;;:::i;:::-;6213:6;6203:16;;:6;:16;;;;6195:74;;;;-1:-1:-1;;;6195:74:26;;23362:2:33;6195:74:26;;;23344:21:33;23401:2;23381:18;;;23374:30;23440:34;23420:18;;;23413:62;-1:-1:-1;;;23491:18:33;;;23484:43;23544:19;;6195:74:26;23160:409:33;6195:74:26;6283:3;:8;;6290:1;6283:8;6275:97;;;;-1:-1:-1;;;6275:97:26;;23776:2:33;6275:97:26;;;23758:21:33;23815:2;23795:18;;;23788:30;23854:34;23834:18;;;23827:62;23925:34;23905:18;;;23898:62;-1:-1:-1;;;23976:19:33;;;23969:43;24029:19;;6275:97:26;23574:480:33;6275:97:26;6386:3;:8;;6393:1;6386:8;6378:97;;;;-1:-1:-1;;;6378:97:26;;24261:2:33;6378:97:26;;;24243:21:33;24300:2;24280:18;;;24273:30;24339:34;24319:18;;;24312:62;24410:34;24390:18;;;24383:62;-1:-1:-1;;;24461:19:33;;;24454:43;24514:19;;6378:97:26;24059:480:33;6378:97:26;6498:3;6488:13;;:6;:13;;;:30;;;;;6515:3;6505:13;;:6;:13;;;6488:30;6481:37;5757:766;-1:-1:-1;;;;;;;5757:766:26:o;21861:271::-;21958:26;21987:15;:39;22027:22;;;;:6;:22;:::i;:::-;22051:27;;;;:6;:27;:::i;:::-;21987:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21958:121;;22085:42;22108:18;22085:22;:42::i;:::-;21952:180;21861:271;:::o;12463:204::-;12587:4;12606:56;12625:7;12634:19;12655:6;12606:18;:56::i;2208:229::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;2282:22:26;::::1;2274:63;;;::::0;-1:-1:-1;;;2274:63:26;;24935:2:33;2274:63:26::1;::::0;::::1;24917:21:33::0;24974:2;24954:18;;;24947:30;25013;24993:18;;;24986:58;25061:18;;2274:63:26::1;24733:352:33::0;2274:63:26::1;2343:16;2362:5:::0;;-1:-1:-1;;;;;2373:16:26;;::::1;-1:-1:-1::0;;;;;;2373:16:26;::::1;::::0;::::1;::::0;;2400:32:::1;::::0;2362:5;;;::::1;::::0;;;2400:32:::1;::::0;2343:16;2400:32:::1;2268:169;2208:229:::0;:::o;22471:706::-;22610:4;22724:17;22744:27;22764:6;;22744:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22744:19:26;;-1:-1:-1;;;22744:27:26:i;:::-;:92;;22835:1;22799:32;22823:6;;22806:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;22806:24:26;;;;;;;;;;22799:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;22744:92;;;22788:1;22744:92;22724:112;;22936:20;22959:26;22979:5;;22959:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22959:19:26;;-1:-1:-1;;;22959:26:26:i;:::-;:90;;23048:1;23013:31;23037:5;;23020:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23020:23:26;;;;;;;;;;23013:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;22959:90;;;23002:1;22959:90;22936:113;;23103:9;23062:12;;1073:1:19;23062:37:26;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;23160:12;23116;;1112:1:19;23116:40:26;;;;;;;:::i;:::-;;;;;;;:56;23062:110;23055:117;22471:706;-1:-1:-1;;;;;;;;;22471:706:26:o;2857:231::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;2943:9:::1;2938:146;2958:21:::0;;::::1;2938:146;;;3001:18;:33;3020:10;;3031:1;3020:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;3001:33:::0;;-1:-1:-1;3001:33:26;::::1;::::0;;;;;;-1:-1:-1;3001:33:26;2994:40;;-1:-1:-1;;;;;;2994:40:26::1;::::0;;3063:10;;3074:1;3063:13;;::::1;;;;;:::i;:::-;;;;;;;3047:30;;;;;;;;;;2981:3;;2938:146;;;;2857:231:::0;;:::o;14490:210::-;14610:4;14629:66;14649:16;14659:6;14649:7;:16;:::i;:::-;14667:19;14688:6;14629:19;:66::i;2563:290::-;2071:5;;-1:-1:-1;;;;;2071:5:26;2057:10;:19;2049:58;;;;-1:-1:-1;;;2049:58:26;;;;;;;:::i;:::-;2688:9:::1;2683:166;2703:21:::0;;::::1;2683:166;;;2775:9;;2785:1;2775:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2739:18;:33;2758:10;;2769:1;2758:13;;;;;;;:::i;:::-;;;;;;;2739:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;2739:48:26::1;;;;;-1:-1:-1::0;;;;;2739:48:26::1;;;;;;2829:9;;2839:1;2829:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2800:42:26::1;2814:10;;2825:1;2814:13;;;;;;;:::i;:::-;;;;;;;2800:42;;;;;;;;;;2726:3;;2683:166;;;;2563:290:::0;;;;:::o;17533:211::-;17652:4;17671:68;17691:16;17701:6;17691:7;:16;:::i;:::-;17709:21;17732:6;17671:19;:68::i;6801:541::-;6916:4;;;;6974:15;:33;7008:22;;;;:6;:22;:::i;:::-;7032:27;;;;:6;:27;:::i;:::-;6974:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6928:132;;;;;;7074:66;7096:11;7109:6;:30;;;7074:21;:66::i;:::-;7066:154;;;;-1:-1:-1;;;7066:154:26;;;;;;;:::i;:::-;7234:8;;;;7226:85;;;;;-1:-1:-1;;;7226:85:26;;26141:2:33;7226:85:26;;;26123:21:33;26160:18;;;26153:30;;;;26219:34;26199:18;;;26192:62;26290:34;26270:18;;;26263:62;26342:19;;7226:85:26;25939:428:33;7226:85:26;7324:13;;;;;;;;-1:-1:-1;;;6801:541:26;;;;:::o;7584:228::-;7692:4;7721:1;7712:6;:10;;;7704:53;;;;-1:-1:-1;;;7704:53:26;;26574:2:33;7704:53:26;;;26556:21:33;26613:2;26593:18;;;26586:30;26652:32;26632:18;;;26625:60;26702:18;;7704:53:26;26372:354:33;7704:53:26;7770:37;7788:10;7797:1;7788:6;:10;:::i;:::-;7800:6;7770:17;:37::i;8060:159::-;8165:4;8184:30;8197:3;8202;8207:6;8184:12;:30::i;13490:224::-;13630:4;13649:60;13663:7;13672;13681:19;13702:6;13649:13;:60::i;18020:195::-;18135:4;18154:56;18168:4;18174;18180:21;18203:6;18154:13;:56::i;15945:209::-;16063:4;16082:67;16101:16;:7;16111:6;16101:16;:::i;:::-;16119:21;16142:6;16082:18;:67::i;25096:2775::-;25203:12;2163:6;;25203:12;;-1:-1:-1;;;2163:6:26;;;;2162:7;2154:38;;;;-1:-1:-1;;;2154:38:26;;27089:2:33;2154:38:26;;;27071:21:33;27128:2;27108:18;;;27101:30;-1:-1:-1;;;27147:18:33;;;27140:48;27205:18;;2154:38:26;26887:342:33;2154:38:26;25326:16:::1;25345:29;25358:15:::0;::::1;25345:12;:29::i;:::-;25326:48:::0;-1:-1:-1;25423:90:26::1;25448:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;942:1:19;25448:64:26;;;;;;;:::i;:::-;;;;;;;25423:24;:90::i;:::-;25558:82;25579:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;994:1:19;25579:60:26;;;;;;;:::i;:::-;;;;;;;25558:20;:82::i;:::-;25698:62;25708:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;25698:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;25729:30:26::1;::::0;::::1;;25698:9;:62::i;:::-;25683:144;;;::::0;-1:-1:-1;;;25683:144:26;;27986:2:33;25683:144:26::1;::::0;::::1;27968:21:33::0;28025:2;28005:18;;;27998:30;28064:34;28044:18;;;28037:62;-1:-1:-1;;;28115:18:33;;;28108:49;28174:19;;25683:144:26::1;27784:415:33::0;25683:144:26::1;26171:62;26184:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;26205:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;26220:12;;::::0;::::1;:6:::0;:12:::1;:::i;26171:62::-;26163:98;;;::::0;-1:-1:-1;;;26163:98:26;;28933:2:33;26163:98:26::1;::::0;::::1;28915:21:33::0;28972:2;28952:18;;;28945:30;29011:25;28991:18;;;28984:53;29054:18;;26163:98:26::1;28731:347:33::0;26163:98:26::1;26329:244;26415:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;1160:1:19;::::0;26500::26::1;26471:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;26471:30:26::1;:::i;:::-;26415:87;;;;;;;:::i;:::-;26329:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26510:22:26::1;::::0;-1:-1:-1;;;26510:22:26::1;::::0;::::1;::::0;::::1;:::i;:::-;26540:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;26329:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26329:21:26::1;::::0;-1:-1:-1;;;26329:244:26:i:1;:::-;26962:1;26891:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;26940:1;26911:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;26911:30:26::1;:::i;:::-;26891:51;;;;;;;:::i;:::-;;;;;;;:74;;:92;;;-1:-1:-1::0;26969:14:26::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;26876:163;;;::::0;-1:-1:-1;;;26876:163:26;;29645:2:33;26876:163:26::1;::::0;::::1;29627:21:33::0;29684:2;29664:18;;;29657:30;29723:34;29703:18;;;29696:62;-1:-1:-1;;;29774:18:33;;;29767:38;29822:19;;26876:163:26::1;29443:404:33::0;26876:163:26::1;1299:1:19;27257:19:26;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:86;::::0;;-1:-1:-1;27257:86:26::1;:::i;:::-;27219:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;:34;;:124;27211:174;;;::::0;-1:-1:-1;;;27211:174:26;;30054:2:33;27211:174:26::1;::::0;::::1;30036:21:33::0;30093:2;30073:18;;;30066:30;30132:34;30112:18;;;30105:62;-1:-1:-1;;;30183:18:33;;;30176:35;30228:19;;27211:174:26::1;29852:401:33::0;27211:174:26::1;-1:-1:-1::0;;;;;27504:26:26;::::1;;27531:12;;::::0;::::1;:6:::0;:12:::1;:::i;:::-;27545:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27504:61;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27494:71:::0;-1:-1:-1;27628:29:26::1;27689:1;27660:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;27660:30:26::1;:::i;:::-;27628:62:::0;-1:-1:-1;27715:19:26::1;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27735:21;27715:42;;;;;;;:::i;:::-;;;;;;;27696:61;;27832:34;;25096:2775:::0;;;:::o;14017:206::-;14142:4;14161:57;14181:7;14190:19;14211:6;14161:19;:57::i;20334:223::-;20463:4;20482:70;20499:11;20512:31;20545:6;20482:16;:70::i;17051:209::-;17177:4;17196:59;17216:7;17225:21;17248:6;17196:19;:59::i;19703:229::-;19834:4;19853:74;19870:11;19883:35;19920:6;19853:16;:74::i;19149:222::-;19277:4;19296:70;19313:11;19326:31;19359:6;19296:16;:70::i;8223:1133::-;8368:4;;;;8430:15;:34;8465:22;;;;:6;:22;:::i;:::-;8489:27;;;;:6;:27;:::i;:::-;8518:9;8430:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8380:148;;;;;;8542:66;8564:11;8577:6;:30;;;8542:21;:66::i;:::-;8534:154;;;;-1:-1:-1;;;8534:154:26;;;;;;;:::i;:::-;8715:19;8702:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;8751:21:26;8738:9;:34;;;;;;;;:::i;:::-;;8702:70;8694:101;;;;-1:-1:-1;;;8694:101:26;;;;;;;:::i;:::-;8818:19;8805:9;:32;;;;;;;;:::i;:::-;;8801:551;;8855:8;;8847:91;;;;-1:-1:-1;;;8847:91:26;;32856:2:33;8847:91:26;;;32838:21:33;32895:2;32875:18;;;32868:30;32934:34;32914:18;;;32907:62;33005:34;32985:18;;;32978:62;-1:-1:-1;;;33056:19:33;;;33049:37;33103:19;;8847:91:26;32654:474:33;8847:91:26;9168:35;144:10:19;9168:3:26;:35;:::i;:::-;9157:7;:46;9150:53;;;;;;;8801:551;9232:8;;9224:92;;;;-1:-1:-1;;;9224:92:26;;33335:2:33;9224:92:26;;;33317:21:33;33374:2;33354:18;;;33347:30;33413:34;33393:18;;;33386:62;33484:34;33464:18;;;33457:62;-1:-1:-1;;;33535:19:33;;;33528:38;33583:19;;9224:92:26;33133:475:33;9224:92:26;-1:-1:-1;9331:14:26;;;-1:-1:-1;9324:21:26;;-1:-1:-1;9324:21:26;9360:1549;9521:4;;;;9583:15;:34;9618:22;;;;:6;:22;:::i;:::-;9642:27;;;;:6;:27;:::i;:::-;9671:9;9583:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9533:148;;;;;;9695:66;9717:11;9730:6;:30;;;9695:21;:66::i;:::-;9687:154;;;;-1:-1:-1;;;9687:154:26;;;;;;;:::i;:::-;9866:7;9855;:18;;9847:78;;;;-1:-1:-1;;;9847:78:26;;33815:2:33;9847:78:26;;;33797:21:33;33854:2;33834:18;;;33827:30;33893:34;33873:18;;;33866:62;-1:-1:-1;;;33944:18:33;;;33937:45;33999:19;;9847:78:26;33613:411:33;9847:78:26;9952:19;9939:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;9988:21:26;9975:9;:34;;;;;;;;:::i;:::-;;9939:70;9931:101;;;;-1:-1:-1;;;9931:101:26;;;;;;;:::i;:::-;10055:19;10042:9;:32;;;;;;;;:::i;:::-;;10038:867;;10092:3;10099:1;10092:8;10084:103;;;;-1:-1:-1;;;10084:103:26;;34231:2:33;10084:103:26;;;34213:21:33;34270:2;34250:18;;;34243:30;34309:34;34289:18;;;34282:62;34380:34;34360:18;;;34353:62;-1:-1:-1;;;34431:19:33;;;34424:49;34490:19;;10084:103:26;34029:486:33;10084:103:26;10203:3;10210:1;10203:8;10195:103;;;;-1:-1:-1;;;10195:103:26;;;;;;;:::i;:::-;10529:35;144:10:19;10529:3:26;:35;:::i;:::-;10518:7;:46;:96;;;;-1:-1:-1;10579:35:26;144:10:19;10579:3:26;:35;:::i;:::-;10568:7;:46;10518:96;10511:103;;;;;;;10038:867;10643:3;10650:1;10643:8;10635:104;;;;-1:-1:-1;;;10635:104:26;;35213:2:33;10635:104:26;;;35195:21:33;35252:2;35232:18;;;35225:30;35291:34;35271:18;;;35264:62;35362:34;35342:18;;;35335:62;-1:-1:-1;;;35413:19:33;;;35406:50;35473:19;;10635:104:26;35011:487:33;10635:104:26;10755:3;10762:1;10755:8;10747:104;;;;-1:-1:-1;;;10747:104:26;;;;;;;:::i;:::-;10877:3;10866:7;:14;:32;;;;-1:-1:-1;10884:14:26;;;;9360:1549;-1:-1:-1;;;;;;9360:1549:26:o;18219:606::-;18374:4;;;18455:15;:37;18493:22;;;;:6;:22;:::i;:::-;18517:27;;;;:6;:27;:::i;:::-;18546:9;18455:101;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18455:101:26;;;;;;;;;;;;:::i;:::-;18386:170;;;;18588:22;18566:11;:18;:44;18562:77;;18627:5;18620:12;;;;;;18562:77;18649:9;18644:160;18668:22;18664:1;:26;18644:160;;;18710:55;18729:11;18741:1;18729:14;;;;;;;;:::i;:::-;;;;;;;18745:16;18762:1;18745:19;;;;;;;;:::i;:::-;;;;;;;234::24;;;;;;;211;;;;;;;;;;:42;;119:139;18710:55:26;18705:93;;18784:5;18777:12;;;;;;;18705:93;18692:3;;18644:160;;;-1:-1:-1;18816:4:26;;18219:606;-1:-1:-1;;;;;;18219:606:26:o;392:337:20:-;500:4;;546:35;558:23;546:9;:35;:::i;:::-;512:69;;619:9;600:15;:28;;:73;;;;;664:9;638:23;:35;600:73;:124;;;;-1:-1:-1;709:15:20;-1:-1:-1;683:41:20;392:337;-1:-1:-1;;;392:337:20:o;24599:204:26:-;24689:12;;:62;;-1:-1:-1;;;24689:62:26;;858:1;24689:62;;;37347:25:33;37388:18;;;37381:34;;;-1:-1:-1;;;;;24689:12:26;;;;:24;;37320:18:33;;24689:62:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24674:124;;;;-1:-1:-1;;;24674:124:26;;37628:2:33;24674:124:26;;;37610:21:33;37667:2;37647:18;;;37640:30;37706:33;37686:18;;;37679:61;37757:18;;24674:124:26;37426:355:33;24674:124:26;24599:204;:::o;262:101:24:-;338:15;:20;;262:101::o;10913:1250:26:-;11059:4;;;;11121:15;:34;11156:22;;;;:6;:22;:::i;:::-;11180:27;;;;:6;:27;:::i;:::-;11209:9;11121:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11071:148;;;;;;11233:66;11255:11;11268:6;:30;;;11233:21;:66::i;:::-;11225:154;;;;-1:-1:-1;;;11225:154:26;;;;;;;:::i;:::-;11393:8;;11385:86;;;;-1:-1:-1;;;11385:86:26;;37988:2:33;11385:86:26;;;37970:21:33;38027:2;38007:18;;;38000:30;38066:34;38046:18;;;38039:62;38137:34;38117:18;;;38110:62;-1:-1:-1;;;38188:19:33;;;38181:32;38230:19;;11385:86:26;37786:469:33;11385:86:26;11498:19;11485:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;11534:21:26;11521:9;:34;;;;;;;;:::i;:::-;;11485:70;11477:101;;;;-1:-1:-1;;;11477:101:26;;;;;;;:::i;:::-;11601:19;11588:9;:32;;;;;;;;:::i;:::-;;11584:575;;11638:3;11645:1;11638:8;11630:103;;;;-1:-1:-1;;;11630:103:26;;;;;;;:::i;:::-;11963:35;144:10:19;11963:3:26;:35;:::i;11584:575::-;12027:3;12034:1;12027:8;12019:104;;;;-1:-1:-1;;;12019:104:26;;;;;;;:::i;:::-;12138:14;;;-1:-1:-1;12131:21:26;;-1:-1:-1;;12131:21:26;23969:210;24032:7;24066:28;;;:18;:28;;;;;;-1:-1:-1;;;;;24066:28:26;;24100:53;;;;-1:-1:-1;;;24100:53:26;;38462:2:33;24100:53:26;;;38444:21:33;38501:2;38481:18;;;38474:30;-1:-1:-1;;;38520:18:33;;;38513:48;38578:18;;24100:53:26;38260:342:33;24183:214:26;24277:12;;:66;;-1:-1:-1;;;24277:66:26;;:12;:66;;;37347:25:33;37388:18;;;37381:34;;;-1:-1:-1;;;;;24277:12:26;;;;:24;;37320:18:33;;24277:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24262:130;;;;-1:-1:-1;;;24262:130:26;;38809:2:33;24262:130:26;;;38791:21:33;38848:2;38828:18;;;38821:30;38887:34;38867:18;;;38860:62;-1:-1:-1;;;38938:18:33;;;38931:31;38979:19;;24262:130:26;38607:397:33;24401:194:26;24487:12;;;:58;;-1:-1:-1;;;24487:58:26;;;;;37347:25:33;;;;37388:18;;;37381:34;;;-1:-1:-1;;;;;24487:12:26;;:24;;37320:18:33;;24487:58:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24472:118;;;;-1:-1:-1;;;24472:118:26;;39211:2:33;24472:118:26;;;39193:21:33;39250:2;39230:18;;;39223:30;39289:31;39269:18;;;39262:59;39338:18;;24472:118:26;39009:353:33;3302:300:26;3420:4;3432:28;3471:12;1037:1:19;3471:44:26;;;;;;;;:::i;:::-;;;;;;;3463:53;;3432:84;;3529:68;3551:20;3573:23;3529:21;:68::i;23181:784::-;23354:14;;23378:410;23402:20;:27;23398:1;:31;23378:410;;;23524:28;23657:1;23555:98;23588:15;;23604:6;23588:56;23620:20;23641:1;23620:23;;;;;;;;:::i;:::-;;;;;;;23611:6;:32;;;;:::i;:::-;23588:56;;;;;;;:::i;:::-;23571:74;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23571:74:26;;;;;;;;;;23555:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:103;;23524:134;;23698:16;23715:1;23698:19;;;;;;;;:::i;:::-;;;;;;;23674:20;:43;23666:74;;;;-1:-1:-1;;;23666:74:26;;40187:2:33;23666:74:26;;;40169:21:33;40226:2;40206:18;;;40199:30;-1:-1:-1;;;40245:18:33;;;40238:48;40303:18;;23666:74:26;39985:342:33;23666:74:26;23758:20;23779:1;23758:23;;;;;;;;:::i;:::-;;;;;;;23748:33;;;;;:::i;:::-;;-1:-1:-1;;23431:3:26;;23378:410;;;-1:-1:-1;23892:32:26;;;23884:76;;;;-1:-1:-1;;;23884:76:26;;40534:2:33;23884:76:26;;;40516:21:33;40573:2;40553:18;;;40546:30;40612:33;40592:18;;;40585:61;40663:18;;23884:76:26;40332:355:33;14:172;90:5;135:3;126:6;121:3;117:16;113:26;110:46;;;152:1;149;142:12;110:46;-1:-1:-1;174:6:33;14:172;-1:-1:-1;14:172:33:o;191:503::-;303:6;311;364:2;352:9;343:7;339:23;335:32;332:52;;;380:1;377;370:12;332:52;425:23;;;-1:-1:-1;523:2:33;508:18;;495:32;-1:-1:-1;;;;;539:30:33;;536:50;;;582:1;579;572:12;536:50;605:83;680:7;671:6;660:9;656:22;605:83;:::i;:::-;595:93;;;191:503;;;;;:::o;891:118::-;977:5;970:13;963:21;956:5;953:32;943:60;;999:1;996;989:12;1014:241;1070:6;1123:2;1111:9;1102:7;1098:23;1094:32;1091:52;;;1139:1;1136;1129:12;1091:52;1178:9;1165:23;1197:28;1219:5;1197:28;:::i;1260:131::-;-1:-1:-1;;;;;1335:31:33;;1325:42;;1315:70;;1381:1;1378;1371:12;1396:247;1455:6;1508:2;1496:9;1487:7;1483:23;1479:32;1476:52;;;1524:1;1521;1514:12;1476:52;1563:9;1550:23;1582:31;1607:5;1582:31;:::i;1648:518::-;1757:6;1765;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;1874:9;1861:23;-1:-1:-1;;;;;1899:6:33;1896:30;1893:50;;;1939:1;1936;1929:12;1893:50;1962:83;2037:7;2028:6;2017:9;2013:22;1962:83;:::i;:::-;1952:93;;;2095:2;2084:9;2080:18;2067:32;2108:28;2130:5;2108:28;:::i;:::-;2155:5;2145:15;;;1648:518;;;;;:::o;2171:289::-;2213:3;2251:5;2245:12;2278:6;2273:3;2266:19;2334:6;2327:4;2320:5;2316:16;2309:4;2304:3;2300:14;2294:47;2386:1;2379:4;2370:6;2365:3;2361:16;2357:27;2350:38;2449:4;2442:2;2438:7;2433:2;2425:6;2421:15;2417:29;2412:3;2408:39;2404:50;2397:57;;;2171:289;;;;:::o;2465:1698::-;2658:2;2647:9;2640:21;2621:4;2696:6;2690:13;2739:6;2734:2;2723:9;2719:18;2712:34;2769:52;2816:3;2805:9;2801:19;2787:12;2769:52;:::i;:::-;2755:66;;2870:2;2862:6;2858:15;2852:22;2942:2;2938:7;2926:9;2918:6;2914:22;2910:36;2905:2;2894:9;2890:18;2883:64;2970:41;3004:6;2988:14;2970:41;:::i;:::-;2956:55;;;3060:2;3052:6;3048:15;3042:22;3132:2;3128:7;3116:9;3108:6;3104:22;3100:36;3095:2;3084:9;3080:18;3073:64;3160:41;3194:6;3178:14;3160:41;:::i;:::-;3146:55;;;3250:2;3242:6;3238:15;3232:22;3323:2;3319:7;3307:9;3299:6;3295:22;3291:36;3285:3;3274:9;3270:19;3263:65;3351:41;3385:6;3369:14;3351:41;:::i;:::-;3337:55;;;3441:3;3433:6;3429:16;3423:23;3515:2;3511:7;3499:9;3491:6;3487:22;3483:36;3477:3;3466:9;3462:19;3455:65;3543:41;3577:6;3561:14;3543:41;:::i;:::-;3529:55;;;3633:3;3625:6;3621:16;3615:23;3707:2;3703:7;3691:9;3683:6;3679:22;3675:36;3669:3;3658:9;3654:19;3647:65;3735:41;3769:6;3753:14;3735:41;:::i;:::-;3721:55;;;3825:3;3817:6;3813:16;3807:23;3899:2;3895:7;3883:9;3875:6;3871:22;3867:36;3861:3;3850:9;3846:19;3839:65;3927:41;3961:6;3945:14;3927:41;:::i;:::-;3913:55;;;4017:3;4009:6;4005:16;3999:23;4094:2;4090:7;4078:9;4070:6;4066:22;4062:36;4053:6;4042:9;4038:22;4031:68;4116:41;4150:6;4134:14;4116:41;:::i;:::-;4108:49;2465:1698;-1:-1:-1;;;;;2465:1698:33:o;4168:114::-;4252:4;4245:5;4241:16;4234:5;4231:27;4221:55;;4272:1;4269;4262:12;4287:520;4397:6;4405;4458:2;4446:9;4437:7;4433:23;4429:32;4426:52;;;4474:1;4471;4464:12;4426:52;4513:9;4500:23;4532:29;4555:5;4532:29;:::i;:::-;4580:5;-1:-1:-1;4636:2:33;4621:18;;4608:32;-1:-1:-1;;;;;4652:30:33;;4649:50;;;4695:1;4692;4685:12;4812:127;4873:10;4868:3;4864:20;4861:1;4854:31;4904:4;4901:1;4894:15;4928:4;4925:1;4918:15;4944:255;5016:2;5010:9;5058:6;5046:19;;-1:-1:-1;;;;;5080:34:33;;5116:22;;;5077:62;5074:88;;;5142:18;;:::i;:::-;5178:2;5171:22;4944:255;:::o;5204:275::-;5275:2;5269:9;5340:2;5321:13;;-1:-1:-1;;5317:27:33;5305:40;;-1:-1:-1;;;;;5360:34:33;;5396:22;;;5357:62;5354:88;;;5422:18;;:::i;:::-;5458:2;5451:22;5204:275;;-1:-1:-1;5204:275:33:o;5484:182::-;5543:4;-1:-1:-1;;;;;5568:6:33;5565:30;5562:56;;;5598:18;;:::i;:::-;-1:-1:-1;5643:1:33;5639:14;5655:4;5635:25;;5484:182::o;5671:187::-;5720:4;-1:-1:-1;;;;;5745:6:33;5742:30;5739:56;;;5775:18;;:::i;:::-;-1:-1:-1;5841:2:33;5820:15;-1:-1:-1;;5816:29:33;5847:4;5812:40;;5671:187::o;5863:1793::-;6010:6;6018;6071:2;6059:9;6050:7;6046:23;6042:32;6039:52;;;6087:1;6084;6077:12;6039:52;6127:9;6114:23;-1:-1:-1;;;;;6152:6:33;6149:30;6146:50;;;6192:1;6189;6182:12;6146:50;6215:22;;6268:4;6260:13;;6256:27;-1:-1:-1;6246:55:33;;6297:1;6294;6287:12;6246:55;6337:2;6324:16;6360:63;6376:46;6415:6;6376:46;:::i;:::-;6360:63;:::i;:::-;6445:3;6469:6;6464:3;6457:19;6501:4;6496:3;6492:14;6485:21;;6558:4;6548:6;6545:1;6541:14;6537:2;6533:23;6529:34;6515:48;;6586:7;6578:6;6575:19;6572:39;;;6607:1;6604;6597:12;6572:39;6639:4;6635:2;6631:13;6653:749;6669:6;6664:3;6661:15;6653:749;;;6757:3;6744:17;-1:-1:-1;;;;;6780:11:33;6777:35;6774:55;;;6825:1;6822;6815:12;6774:55;6852:20;;6907:2;6899:11;;6895:25;-1:-1:-1;6885:53:33;;6934:1;6931;6924:12;6885:53;6988:4;6984:2;6980:13;6967:27;7022:55;7038:38;7067:8;7038:38;:::i;7022:55::-;7090:25;;;7134:39;7142:17;;;7134:39;7131:52;-1:-1:-1;7128:72:33;;;7196:1;7193;7186:12;7128:72;7259:8;7254:2;7250;7246:11;7239:4;7230:7;7226:18;7213:55;7323:1;7316:4;7305:8;7296:7;7292:22;7288:33;7281:44;7350:7;7345:3;7338:20;;;;7387:4;7382:3;7378:14;7371:21;;6695:4;6690:3;6686:14;6679:21;;6653:749;;;-1:-1:-1;7421:5:33;-1:-1:-1;;;;7479:4:33;7464:20;;7451:34;-1:-1:-1;;;;;7497:32:33;;7494:52;;;7542:1;7539;7532:12;7843:623;7964:6;7972;7980;8033:2;8021:9;8012:7;8008:23;8004:32;8001:52;;;8049:1;8046;8039:12;8001:52;8094:23;;;-1:-1:-1;8214:2:33;8199:18;;8186:32;;-1:-1:-1;8295:2:33;8280:18;;8267:32;-1:-1:-1;;;;;8311:30:33;;8308:50;;;8354:1;8351;8344:12;8308:50;8377:83;8452:7;8443:6;8432:9;8428:22;8377:83;:::i;:::-;8367:93;;;7843:623;;;;;:::o;8471:389::-;8574:6;8627:2;8615:9;8606:7;8602:23;8598:32;8595:52;;;8643:1;8640;8633:12;8595:52;8683:9;8670:23;-1:-1:-1;;;;;8708:6:33;8705:30;8702:50;;;8748:1;8745;8738:12;8702:50;8771:83;8846:7;8837:6;8826:9;8822:22;8771:83;:::i;8865:492::-;9050:2;9039:9;9032:21;9125:1;9121;9116:3;9112:11;9108:19;9099:6;9093:13;9089:39;9084:2;9073:9;9069:18;9062:67;9183:2;9175:6;9171:15;9165:22;9160:2;9149:9;9145:18;9138:50;9013:4;9235:2;9227:6;9223:15;9217:22;9277:4;9270;9259:9;9255:20;9248:34;9299:52;9346:3;9335:9;9331:19;9317:12;9299:52;:::i;9362:657::-;9479:6;9487;9495;9548:2;9536:9;9527:7;9523:23;9519:32;9516:52;;;9564:1;9561;9554:12;9516:52;9603:9;9590:23;9622:29;9645:5;9622:29;:::i;:::-;9670:5;-1:-1:-1;9727:2:33;9712:18;;9699:32;9740:31;9699:32;9740:31;:::i;:::-;9790:7;-1:-1:-1;9848:2:33;9833:18;;9820:32;-1:-1:-1;;;;;9864:30:33;;9861:50;;;9907:1;9904;9897:12;10024:180;10083:6;10136:2;10124:9;10115:7;10111:23;10107:32;10104:52;;;10152:1;10149;10142:12;10104:52;-1:-1:-1;10175:23:33;;10024:180;-1:-1:-1;10024:180:33:o;10417:367::-;10480:8;10490:6;10544:3;10537:4;10529:6;10525:17;10521:27;10511:55;;10562:1;10559;10552:12;10511:55;-1:-1:-1;10585:20:33;;-1:-1:-1;;;;;10617:30:33;;10614:50;;;10660:1;10657;10650:12;10614:50;10697:4;10689:6;10685:17;10673:29;;10757:3;10750:4;10740:6;10737:1;10733:14;10725:6;10721:27;10717:38;10714:47;10711:67;;;10774:1;10771;10764:12;10711:67;10417:367;;;;;:::o;10789:348::-;10841:8;10851:6;10905:3;10898:4;10890:6;10886:17;10882:27;10872:55;;10923:1;10920;10913:12;10872:55;-1:-1:-1;10946:20:33;;-1:-1:-1;;;;;10978:30:33;;10975:50;;;11021:1;11018;11011:12;10975:50;11058:4;11050:6;11046:17;11034:29;;11110:3;11103:4;11094:6;11086;11082:19;11078:30;11075:39;11072:59;;;11127:1;11124;11117:12;11142:1047;11270:6;11278;11286;11294;11302;11310;11363:2;11351:9;11342:7;11338:23;11334:32;11331:52;;;11379:1;11376;11369:12;11331:52;11419:9;11406:23;-1:-1:-1;;;;;11444:6:33;11441:30;11438:50;;;11484:1;11481;11474:12;11438:50;11523:70;11585:7;11576:6;11565:9;11561:22;11523:70;:::i;:::-;11612:8;;-1:-1:-1;11497:96:33;-1:-1:-1;;11700:2:33;11685:18;;11672:32;-1:-1:-1;;;;;11716:32:33;;11713:52;;;11761:1;11758;11751:12;11713:52;11800:61;11853:7;11842:8;11831:9;11827:24;11800:61;:::i;:::-;11880:8;;-1:-1:-1;11774:87:33;-1:-1:-1;;11968:2:33;11953:18;;11940:32;-1:-1:-1;;;;;11984:32:33;;11981:52;;;12029:1;12026;12019:12;11981:52;12068:61;12121:7;12110:8;12099:9;12095:24;12068:61;:::i;:::-;11142:1047;;;;-1:-1:-1;11142:1047:33;;-1:-1:-1;11142:1047:33;;12148:8;;11142:1047;-1:-1:-1;;;11142:1047:33:o;12194:437::-;12280:6;12288;12341:2;12329:9;12320:7;12316:23;12312:32;12309:52;;;12357:1;12354;12347:12;12309:52;12397:9;12384:23;-1:-1:-1;;;;;12422:6:33;12419:30;12416:50;;;12462:1;12459;12452:12;12416:50;12501:70;12563:7;12554:6;12543:9;12539:22;12501:70;:::i;:::-;12590:8;;12475:96;;-1:-1:-1;12194:437:33;-1:-1:-1;;;;12194:437:33:o;12636:768::-;12758:6;12766;12774;12782;12835:2;12823:9;12814:7;12810:23;12806:32;12803:52;;;12851:1;12848;12841:12;12803:52;12891:9;12878:23;-1:-1:-1;;;;;12916:6:33;12913:30;12910:50;;;12956:1;12953;12946:12;12910:50;12995:70;13057:7;13048:6;13037:9;13033:22;12995:70;:::i;:::-;13084:8;;-1:-1:-1;12969:96:33;-1:-1:-1;;13172:2:33;13157:18;;13144:32;-1:-1:-1;;;;;13188:32:33;;13185:52;;;13233:1;13230;13223:12;13185:52;13272:72;13336:7;13325:8;13314:9;13310:24;13272:72;:::i;:::-;12636:768;;;;-1:-1:-1;13363:8:33;-1:-1:-1;;;;12636:768:33:o;13903:127::-;13964:10;13959:3;13955:20;13952:1;13945:31;13995:4;13992:1;13985:15;14019:4;14016:1;14009:15;14035:125;14100:9;;;14121:10;;;14118:36;;;14134:18;;:::i;14165:350::-;14367:2;14349:21;;;14406:2;14386:18;;;14379:30;14445:28;14440:2;14425:18;;14418:56;14506:2;14491:18;;14165:350::o;14925:521::-;15002:4;15008:6;15068:11;15055:25;15162:2;15158:7;15147:8;15131:14;15127:29;15123:43;15103:18;15099:68;15089:96;;15181:1;15178;15171:12;15089:96;15208:33;;15260:20;;;-1:-1:-1;;;;;;15292:30:33;;15289:50;;;15335:1;15332;15325:12;15289:50;15368:4;15356:17;;-1:-1:-1;15399:14:33;15395:27;;;15385:38;;15382:58;;;15436:1;15433;15426:12;15451:545;15544:4;15550:6;15610:11;15597:25;15704:2;15700:7;15689:8;15673:14;15669:29;15665:43;15645:18;15641:68;15631:96;;15723:1;15720;15713:12;15631:96;15750:33;;15802:20;;;-1:-1:-1;;;;;;15834:30:33;;15831:50;;;15877:1;15874;15867:12;15831:50;15910:4;15898:17;;-1:-1:-1;15961:1:33;15957:14;;;15941;15937:35;15927:46;;15924:66;;;15986:1;15983;15976:12;16001:266;16089:6;16084:3;16077:19;16141:6;16134:5;16127:4;16122:3;16118:14;16105:43;-1:-1:-1;16193:1:33;16168:16;;;16186:4;16164:27;;;16157:38;;;;16249:2;16228:15;;;-1:-1:-1;;16224:29:33;16215:39;;;16211:50;;16001:266::o;16272:311::-;16360:19;;;16342:3;-1:-1:-1;;;;;16391:31:33;;16388:51;;;16435:1;16432;16425:12;16388:51;16471:6;16468:1;16464:14;16523:8;16516:5;16509:4;16504:3;16500:14;16487:45;16552:18;;;;16572:4;16548:29;;16272:311;-1:-1:-1;;;16272:311:33:o;16588:483::-;16841:2;16830:9;16823:21;16804:4;16867:61;16924:2;16913:9;16909:18;16901:6;16893;16867:61;:::i;:::-;16976:9;16968:6;16964:22;16959:2;16948:9;16944:18;16937:50;17004:61;17058:6;17050;17042;17004:61;:::i;17076:514::-;17129:5;17182:3;17175:4;17167:6;17163:17;17159:27;17149:55;;17200:1;17197;17190:12;17149:55;17233:6;17227:13;17272:4;17264:6;17260:17;17301:1;17322:53;17338:36;17367:6;17338:36;:::i;17322:53::-;17311:64;;17400:6;17391:7;17384:23;17440:3;17431:6;17426:3;17422:16;17419:25;17416:45;;;17457:1;17454;17447:12;17416:45;17501:6;17496:3;17489:4;17480:7;17476:18;17470:38;17557:1;17528:20;;;17550:4;17524:31;17517:42;;;;-1:-1:-1;17532:7:33;17076:514;-1:-1:-1;;;17076:514:33:o;17595:553::-;17692:6;17700;17753:2;17741:9;17732:7;17728:23;17724:32;17721:52;;;17769:1;17766;17759:12;17721:52;17802:9;17796:16;-1:-1:-1;;;;;17827:6:33;17824:30;17821:50;;;17867:1;17864;17857:12;17821:50;17890:60;17942:7;17933:6;17922:9;17918:22;17890:60;:::i;:::-;17880:70;;;17996:2;17985:9;17981:18;17975:25;-1:-1:-1;;;;;18015:8:33;18012:32;18009:52;;;18057:1;18054;18047:12;18009:52;18080:62;18134:7;18123:8;18112:9;18108:24;18080:62;:::i;18153:307::-;18330:2;18319:9;18312:21;18293:4;18350:45;18391:2;18380:9;18376:18;18368:6;18350:45;:::i;:::-;18342:53;;18445:6;18438:14;18431:22;18426:2;18415:9;18411:18;18404:50;18153:307;;;;;:::o;18465:1972::-;18567:6;18620:2;18608:9;18599:7;18595:23;18591:32;18588:52;;;18636:1;18633;18626:12;18588:52;18669:9;18663:16;-1:-1:-1;;;;;18694:6:33;18691:30;18688:50;;;18734:1;18731;18724:12;18688:50;18757:22;;18813:6;18795:16;;;18791:29;18788:49;;;18833:1;18830;18823:12;18788:49;18859:22;;:::i;:::-;18912:2;18906:9;-1:-1:-1;;;;;18930:8:33;18927:32;18924:52;;;18972:1;18969;18962:12;18924:52;18999:55;19046:7;19035:8;19031:2;19027:17;18999:55;:::i;:::-;18992:5;18985:70;;19094:2;19090;19086:11;19080:18;-1:-1:-1;;;;;19113:8:33;19110:32;19107:52;;;19155:1;19152;19145:12;19107:52;19191:55;19238:7;19227:8;19223:2;19219:17;19191:55;:::i;:::-;19186:2;19179:5;19175:14;19168:79;;19286:2;19282;19278:11;19272:18;-1:-1:-1;;;;;19305:8:33;19302:32;19299:52;;;19347:1;19344;19337:12;19299:52;19383:55;19430:7;19419:8;19415:2;19411:17;19383:55;:::i;:::-;19378:2;19371:5;19367:14;19360:79;;19478:2;19474;19470:11;19464:18;-1:-1:-1;;;;;19497:8:33;19494:32;19491:52;;;19539:1;19536;19529:12;19491:52;19575:55;19622:7;19611:8;19607:2;19603:17;19575:55;:::i;:::-;19570:2;19563:5;19559:14;19552:79;;19670:3;19666:2;19662:12;19656:19;-1:-1:-1;;;;;19690:8:33;19687:32;19684:52;;;19732:1;19729;19722:12;19684:52;19769:55;19816:7;19805:8;19801:2;19797:17;19769:55;:::i;:::-;19763:3;19756:5;19752:15;19745:80;;19864:3;19860:2;19856:12;19850:19;-1:-1:-1;;;;;19884:8:33;19881:32;19878:52;;;19926:1;19923;19916:12;19878:52;19963:55;20010:7;19999:8;19995:2;19991:17;19963:55;:::i;:::-;19957:3;19950:5;19946:15;19939:80;;20058:3;20054:2;20050:12;20044:19;-1:-1:-1;;;;;20078:8:33;20075:32;20072:52;;;20120:1;20117;20110:12;20072:52;20157:55;20204:7;20193:8;20189:2;20185:17;20157:55;:::i;:::-;20151:3;20144:5;20140:15;20133:80;;20252:3;20248:2;20244:12;20238:19;-1:-1:-1;;;;;20272:8:33;20269:32;20266:52;;;20314:1;20311;20304:12;20266:52;20351:55;20398:7;20387:8;20383:2;20379:17;20351:55;:::i;:::-;20345:3;20334:15;;20327:80;-1:-1:-1;20338:5:33;18465:1972;-1:-1:-1;;;;18465:1972:33:o;20442:148::-;20530:4;20509:12;;;20523;;;20505:31;;20548:13;;20545:39;;;20564:18;;:::i;20595:490::-;20679:6;20687;20695;20748:2;20736:9;20727:7;20723:23;20719:32;20716:52;;;20764:1;20761;20754:12;20716:52;20809:16;;20894:2;20879:18;;20873:25;20809:16;;-1:-1:-1;20907:31:33;20873:25;20907:31;:::i;:::-;21009:2;20994:18;;20988:25;20957:7;;-1:-1:-1;21022:31:33;20988:25;21022:31;:::i;:::-;21072:7;21062:17;;;20595:490;;;;;:::o;21090:479::-;21292:2;21274:21;;;21331:2;21311:18;;;21304:30;21370:34;21365:2;21350:18;;21343:62;21441:34;21436:2;21421:18;;21414:62;-1:-1:-1;;;21507:3:33;21492:19;;21485:42;21559:3;21544:19;;21090:479::o;22007:335::-;22086:6;22139:2;22127:9;22118:7;22114:23;22110:32;22107:52;;;22155:1;22152;22145:12;22107:52;22188:9;22182:16;-1:-1:-1;;;;;22213:6:33;22210:30;22207:50;;;22253:1;22250;22243:12;22207:50;22276:60;22328:7;22319:6;22308:9;22304:22;22276:60;:::i;22347:226::-;22502:2;22491:9;22484:21;22465:4;22522:45;22563:2;22552:9;22548:18;22540:6;22522:45;:::i;22578:577::-;22676:6;22684;22692;22745:2;22733:9;22724:7;22720:23;22716:32;22713:52;;;22761:1;22758;22751:12;22713:52;22793:9;22787:16;22812:31;22837:5;22812:31;:::i;:::-;22933:2;22918:18;;22912:25;23007:2;22992:18;;22986:25;22862:5;;-1:-1:-1;22912:25:33;-1:-1:-1;;;;;;23023:30:33;;23020:50;;;23066:1;23063;23056:12;23020:50;23089:60;23141:7;23132:6;23121:9;23117:22;23089:60;:::i;24544:184::-;24614:6;24667:2;24655:9;24646:7;24642:23;24638:32;24635:52;;;24683:1;24680;24673:12;24635:52;-1:-1:-1;24706:16:33;;24544:184;-1:-1:-1;24544:184:33:o;25090:273::-;25275:6;25267;25262:3;25249:33;25231:3;25301:16;;25326:13;;;25301:16;25090:273;-1:-1:-1;25090:273:33:o;25368:301::-;25497:3;25535:6;25529:13;25581:6;25574:4;25566:6;25562:17;25557:3;25551:37;25643:1;25607:16;;25632:13;;;-1:-1:-1;25607:16:33;25368:301;-1:-1:-1;25368:301:33:o;25674:127::-;25735:10;25730:3;25726:20;25723:1;25716:31;25766:4;25763:1;25756:15;25790:4;25787:1;25780:15;25806:128;25873:9;;;25894:11;;;25891:37;;;25908:18;;:::i;26731:151::-;26821:4;26814:12;;;26800;;;26796:31;;26839:14;;26836:40;;;26856:18;;:::i;29083:355::-;29204:9;29215;29257:8;29245:10;29242:24;29239:44;;;29279:1;29276;29269:12;29239:44;29308:6;29298:8;29295:20;29292:40;;;29328:1;29325;29318:12;29292:40;-1:-1:-1;;29370:1:33;29366:18;;;29354:31;;29407:25;;;;;-1:-1:-1;29083:355:33:o;30738:245::-;30805:6;30858:2;30846:9;30837:7;30833:23;30829:32;30826:52;;;30874:1;30871;30864:12;30826:52;30906:9;30900:16;30925:28;30947:5;30925:28;:::i;30988:127::-;31049:10;31044:3;31040:20;31037:1;31030:31;31080:4;31077:1;31070:15;31104:4;31101:1;31094:15;31120:721;31414:2;31403:9;31396:21;31377:4;31440:61;31497:2;31486:9;31482:18;31474:6;31466;31440:61;:::i;:::-;31549:9;31541:6;31537:22;31532:2;31521:9;31517:18;31510:50;31577:61;31631:6;31623;31615;31577:61;:::i;:::-;31569:69;;;31668:2;31660:6;31657:14;31647:145;;31714:10;31709:3;31705:20;31702:1;31695:31;31749:4;31746:1;31739:15;31777:4;31774:1;31767:15;31647:145;31828:6;31823:2;31812:9;31808:18;31801:34;31120:721;;;;;;;;:::o;31846:456::-;31934:6;31942;31950;32003:2;31991:9;31982:7;31978:23;31974:32;31971:52;;;32019:1;32016;32009:12;31971:52;-1:-1:-1;;32064:16:33;;32170:2;32155:18;;32149:25;32266:2;32251:18;;;32245:25;32064:16;;32149:25;;-1:-1:-1;32245:25:33;31846:456;-1:-1:-1;31846:456:33:o;32307:342::-;32509:2;32491:21;;;32548:2;32528:18;;;32521:30;-1:-1:-1;;;32582:2:33;32567:18;;32560:48;32640:2;32625:18;;32307:342::o;34520:486::-;34722:2;34704:21;;;34761:2;34741:18;;;34734:30;34800:34;34795:2;34780:18;;34773:62;34871:34;34866:2;34851:18;;34844:62;-1:-1:-1;;;34937:3:33;34922:19;;34915:49;34996:3;34981:19;;34520:486::o;35503:487::-;35705:2;35687:21;;;35744:2;35724:18;;;35717:30;35783:34;35778:2;35763:18;;35756:62;35854:34;35849:2;35834:18;;35827:62;-1:-1:-1;;;35920:3:33;35905:19;;35898:50;35980:3;35965:19;;35503:487::o;35995:1173::-;36109:6;36117;36170:2;36158:9;36149:7;36145:23;36141:32;36138:52;;;36186:1;36183;36176:12;36138:52;36219:9;36213:16;-1:-1:-1;;;;;36244:6:33;36241:30;36238:50;;;36284:1;36281;36274:12;36238:50;36307:22;;36360:4;36352:13;;36348:27;-1:-1:-1;36338:55:33;;36389:1;36386;36379:12;36338:55;36422:2;36416:9;36445:63;36461:46;36500:6;36461:46;:::i;36445:63::-;36530:3;36554:6;36549:3;36542:19;36586:4;36581:3;36577:14;36570:21;;36643:4;36633:6;36630:1;36626:14;36622:2;36618:23;36614:34;36600:48;;36671:7;36663:6;36660:19;36657:39;;;36692:1;36689;36682:12;36657:39;36724:4;36720:2;36716:13;36738:308;36754:6;36749:3;36746:15;36738:308;;;36835:3;36829:10;-1:-1:-1;;;;;36858:11:33;36855:35;36852:55;;;36903:1;36900;36893:12;36852:55;36932:69;36993:7;36986:4;36972:11;36968:2;36964:20;36960:31;36932:69;:::i;:::-;36920:82;;-1:-1:-1;37031:4:33;37022:14;;;;36771;36738:308;;;-1:-1:-1;37132:4:33;37117:20;;;;37111:27;37065:5;;37111:27;;-1:-1:-1;;;;;;35995:1173:33:o;39367:331::-;39472:9;39483;39525:8;39513:10;39510:24;39507:44;;;39547:1;39544;39537:12;39507:44;39576:6;39566:8;39563:20;39560:40;;;39596:1;39593;39586:12;39560:40;-1:-1:-1;;39622:23:33;;;39667:25;;;;;-1:-1:-1;39367:331:33:o",
956
+ linkReferences: {
957
+ "src/InputsExtractor.sol": {
958
+ InputsExtractor: [
959
+ { start: 1839, length: 20 },
960
+ { start: 2003, length: 20 },
961
+ { start: 2196, length: 20 },
962
+ { start: 2557, length: 20 },
963
+ { start: 2721, length: 20 },
964
+ { start: 2859, length: 20 },
965
+ { start: 3481, length: 20 },
966
+ { start: 4861, length: 20 },
967
+ { start: 6622, length: 20 },
968
+ { start: 7225, length: 20 },
969
+ { start: 8054, length: 20 },
970
+ { start: 8596, length: 20 }
971
+ ]
972
+ }
973
+ }
974
+ },
975
+ methodIdentifiers: {
976
+ "CERTIFICATE_REGISTRY_ID()": "41a0e2c2",
977
+ "CIRCUIT_REGISTRY_ID()": "6c40d5d6",
978
+ "SANCTIONS_REGISTRY_ID()": "652ba33d",
979
+ "addVerifiers(bytes32[],address[])": "a6df2c01",
980
+ "admin()": "f851a440",
981
+ "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "653cfd81",
982
+ "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "59545f45",
983
+ "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": "1e26a9dc",
984
+ "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "37889655",
985
+ "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "54dbe4d1",
986
+ "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "bf73c26c",
987
+ "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "aa1346ea",
988
+ "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "62067c82",
989
+ "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c0940ebd",
990
+ "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "04951b86",
991
+ "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "704876d6",
992
+ "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "921076c7",
993
+ "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "deb7c059",
994
+ "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c4560786",
995
+ "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "0b90581b",
996
+ "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d3f6ffff",
997
+ "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "4c127428",
998
+ "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "a88f1cef",
999
+ "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e718bc32",
1000
+ "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "46bd0a16",
1001
+ "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "cfd9464a",
1002
+ "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "ec46f774",
1003
+ "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "3a86bd3d",
1004
+ "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "f87e19b1",
1005
+ "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e420e354",
1006
+ "paused()": "5c975abb",
1007
+ "removeVerifiers(bytes32[])": "8d6937b8",
1008
+ "rootRegistry()": "b96b161c",
1009
+ "setPaused(bool)": "16c38b3c",
1010
+ "transferAdmin(address)": "75829def",
1011
+ "updateRootRegistry(address)": "18677f2a",
1012
+ "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d7bf616a",
1013
+ "verifyScopes(bytes32[],string,string)": "847755e3",
1014
+ "vkeyHashToVerifier(bytes32)": "8163f231"
1015
+ },
1016
+ rawMetadata: '{"compiler":{"version":"0.8.29+commit.ab55807c"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":true,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"certificateRegistryRoot","type":"bytes32"}],"name":"CertificateRegistryRootRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_sanctionsTreesRoot","type":"bytes32"}],"name":"SanctionsTreesRootUpdates","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"verifier","type":"address"}],"name":"VerifierAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"vkeyHash","type":"bytes32"}],"name":"VerifierRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ZKPassportVerifierDeployed","type":"event"},{"inputs":[],"name":"CERTIFICATE_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CIRCUIT_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SANCTIONS_REGISTRY_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"},{"internalType":"address[]","name":"verifiers","type":"address[]"}],"name":"addVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"enforceSanctionsRoot","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"getBoundData","outputs":[{"components":[{"internalType":"address","name":"senderAddress","type":"address"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"string","name":"customData","type":"string"}],"internalType":"struct BoundData","name":"boundData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"},{"internalType":"bool","name":"isIDCard","type":"bool"}],"name":"getDisclosedData","outputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"issuingCountry","type":"string"},{"internalType":"string","name":"nationality","type":"string"},{"internalType":"string","name":"gender","type":"string"},{"internalType":"string","name":"birthDate","type":"string"},{"internalType":"string","name":"expiryDate","type":"string"},{"internalType":"string","name":"documentNumber","type":"string"},{"internalType":"string","name":"documentType","type":"string"}],"internalType":"struct DisclosedData","name":"disclosedData","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeAbove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeAboveOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBelow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBelowOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"age","type":"uint8"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isAgeEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isBirthdateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBeforeOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isExpiryDateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isIssuingCountryIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isIssuingCountryOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isNationalityIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"isNationalityOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"vkeyHashes","type":"bytes32[]"}],"name":"removeVerifiers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rootRegistry","outputs":[{"internalType":"contract IRootRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rootRegistry","type":"address"}],"name":"updateRootRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"},{"internalType":"uint256","name":"validityPeriodInSeconds","type":"uint256"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"},{"internalType":"bool","name":"devMode","type":"bool"}],"internalType":"struct ProofVerificationParams","name":"params","type":"tuple"}],"name":"verifyProof","outputs":[{"internalType":"bool","name":"isValid","type":"bool"},{"internalType":"bytes32","name":"uniqueIdentifier","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"},{"internalType":"string","name":"domain","type":"string"},{"internalType":"string","name":"scope","type":"string"}],"name":"verifyScopes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"vkeyHashToVerifier","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Constructor"},"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"}},"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"},"returns":{"boundData":"The data bound to the proof"}},"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)":{"params":{"isIDCard":"Whether the proof is an ID card","params":"The proof verification parameters"},"returns":{"disclosedData":"The data disclosed by the proof"}},"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minAge":"The age must be above this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is above the given age, false otherwise"}},"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minAge":"The age must be above or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is above or equal to the given age, false otherwise"}},"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be below this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is below the given age, false otherwise"}},"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be below or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is below or equal to the given age, false otherwise"}},"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxAge":"The age must be less than or equal to this age","minAge":"The age must be greater than or equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is in the given range, false otherwise"}},"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"age":"The age must be equal to this age","params":"The proof verification parameters"},"returns":{"_0":"True if the age is equal to the given age, false otherwise"}},"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The birthdate must be after this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is after the given date, false otherwise"}},"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The birthdate must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is after or equal to the given date, false otherwise"}},"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is before the given date, false otherwise"}},"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is before or equal to the given date, false otherwise"}},"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The birthdate must be before or equal to this date","minDate":"The birthdate must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is between the given dates, false otherwise"}},"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"date":"The birthdate must be equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the birthdate is equal to the given date, false otherwise"}},"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The expiry date must be after this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is after the given date, false otherwise"}},"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"minDate":"The expiry date must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is after or equal to the given date, false otherwise"}},"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is before the given date, false otherwise"}},"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is before or equal to the given date, false otherwise"}},"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"maxDate":"The expiry date must be before or equal to this date","minDate":"The expiry date must be after or equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is between the given dates, false otherwise"}},"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"date":"The expiry date must be equal to this date","params":"The proof verification parameters"},"returns":{"_0":"True if the expiry date is equal to the given date, false otherwise"}},"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof)","params":"The proof verification parameters"},"returns":{"_0":"True if the issuing country is in the list of countries, false otherwise"}},"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order","params":"The proof verification parameters"},"returns":{"_0":"True if the issuing country is not in the list of countries, false otherwise"}},"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof)","params":"The proof verification parameters"},"returns":{"_0":"True if the nationality is in the list of countries, false otherwise"}},"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"countryList":"The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order","params":"The proof verification parameters"},"returns":{"_0":"True if the nationality is not in the list of countries, false otherwise"}},"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"params":"The proof verification parameters"},"returns":{"isValid":"True if the proof is valid, false otherwise","uniqueIdentifier":"The unique identifier associated to the identity document that generated the proof"}},"verifyScopes(bytes32[],string,string)":{"params":{"domain":"The domain to check against","publicInputs":"The public inputs of the proof","scope":"The scope to check against"},"returns":{"_0":"True if the proof was generated for the given domain and scope, false otherwise"}}},"version":1},"userdoc":{"kind":"user","methods":{"enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Enforces that the proof checks against the expected sanction list(s)"},"getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Gets the data bound to the proof"},"getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)":{"notice":"Gets the data disclosed by the proof"},"isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is above the given age"},"isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is above or equal to the given age"},"isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is below the given age"},"isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is below or equal to the given age"},"isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is in the given range"},"isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the age is equal to the given age"},"isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is after the given date"},"isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is after or equal to the given date"},"isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is before the given date"},"isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is before or equal to the given date"},"isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is between the given dates"},"isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the birthdate is equal to the given date"},"isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is after the given date"},"isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is after or equal to the given date"},"isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is before the given date"},"isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is before or equal to the given date"},"isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is between the given dates"},"isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the expiry date is equal to the given date"},"isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the issuing country is in the list of countries"},"isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the issuing country is not in the list of countries"},"isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the nationality is in the list of countries"},"isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the nationality is not in the list of countries"},"verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Verifies a proof from ZKPassport"},"verifyScopes(bytes32[],string,string)":{"notice":"Verifies that the proof was generated for the given domain and scope"}},"version":1}},"settings":{"compilationTarget":{"src/ZKPassportVerifier.sol":"ZKPassportVerifier"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":200},"remappings":[":forge-std/=lib/forge-std/src/"]},"sources":{"src/Constants.sol":{"keccak256":"0xb1105acee68946ef452b55289a556a42289c3e1e849482d26cb8af4e2447ebdd","license":"Apache-2.0","urls":["bzz-raw://4639a621a472a215c320dd3f2d22e08d57028550df503bbffbd7330b57ba9ed8","dweb:/ipfs/QmfMoxNwnJMBNzHxUByv1eqtaktX1EGFqU2VJ4L1pYidJq"]},"src/DateUtils.sol":{"keccak256":"0xc04aef2f5732f8c3b28077a0af19e2fbbdec2f9178f3800563bf64ccdecefc77","license":"Apache-2.0","urls":["bzz-raw://bcc2610f3bdd3411fc040d39efe9e68f826b48986b2df7987f3adb6a1467c833","dweb:/ipfs/Qmc7uyW8Y7ekaKEdjd3kU9e1eDcCiAqsujGc5ZavuzGx4w"]},"src/IRootRegistry.sol":{"keccak256":"0xa9955e80821ca9ccbdf7d05a8ce9a3e237b4771e1f6e09190ed1c803a5e1e516","license":"MIT","urls":["bzz-raw://fd9fc9fbd7057a6bcc16a682e52be9ebd012954898626a11f0a0e8788644789d","dweb:/ipfs/QmZYpMRHdv4gMCNXCQtGQu8XqRVtNR9Kgkzh7u1YMpvrEB"]},"src/InputsExtractor.sol":{"keccak256":"0x55af333a1ed7cd5a1299f1b0778db0fc2a15f68903e9ae6a6034d24f13da03e7","license":"Apache-2.0","urls":["bzz-raw://10ccdb51863cfd11f222ecb3111f0f291aae3a19fdbef6d90233d08f02eab1d5","dweb:/ipfs/QmebPTX4Dbc5LkhG57YuTjEZgEvCk51ut3ZERZoqeGemsB"]},"src/StringUtils.sol":{"keccak256":"0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1","license":"Apache-2.0","urls":["bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342","dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"]},"src/Types.sol":{"keccak256":"0x6cd3120512911d8319b011016e19204c3f2d72b75efc2663cbde807571a5a7f0","license":"Apache-2.0","urls":["bzz-raw://ec0c51990097f62145282a34f553465843007d0c86e742652c5ea2c7878e78be","dweb:/ipfs/QmVUFfqiYGZuwbj5AA4smnSn5KpDyeKpw9iFmRzuK18dVo"]},"src/ZKPassportVerifier.sol":{"keccak256":"0x692154ad13d61bc9a232b33396888dcbe6f0ff46bbcd261e00ffa49c4afc8728","license":"Apache-2.0","urls":["bzz-raw://d1477d1851973999abda47bbb20d4f3120bc50b0ad9a3c5a041b768a2c9d47c3","dweb:/ipfs/QmZqefNqexmbFbQ7HUJUDwAAMjcDUobNUyhj1tDYj2HU9S"]},"src/ultra-honk-verifiers/OuterCount4.sol":{"keccak256":"0x9f343e672cd22bb67bda44f4ed5ce7318769dfd65270f52eadf70c12a2377aab","license":"Apache-2.0","urls":["bzz-raw://69a1177da0c5a7148676bef2a5e5c58840a66b2e142d2a0d331dca01dd0109ad","dweb:/ipfs/QmQ6iVmrCNEG6XE3ejP4dgBiw3XhMaGm1hW61z4rj7zsiF"]}},"version":1}',
1017
+ metadata: {
1018
+ compiler: { version: "0.8.29+commit.ab55807c" },
1019
+ language: "Solidity",
1020
+ output: {
1021
+ abi: [
1022
+ {
1023
+ inputs: [{ internalType: "address", name: "_rootRegistry", type: "address" }],
1024
+ stateMutability: "nonpayable",
1025
+ type: "constructor"
1026
+ },
1027
+ {
1028
+ inputs: [
1029
+ { internalType: "address", name: "oldAdmin", type: "address", indexed: true },
1030
+ { internalType: "address", name: "newAdmin", type: "address", indexed: true }
1031
+ ],
1032
+ type: "event",
445
1033
  name: "AdminUpdated",
446
1034
  anonymous: false
447
1035
  },
448
1036
  {
449
1037
  inputs: [
450
1038
  {
451
- internalType: "bytes32",
452
- name: "certificateRegistryRoot",
453
- type: "bytes32",
454
- indexed: true
1039
+ internalType: "bytes32",
1040
+ name: "certificateRegistryRoot",
1041
+ type: "bytes32",
1042
+ indexed: true
1043
+ }
1044
+ ],
1045
+ type: "event",
1046
+ name: "CertificateRegistryRootAdded",
1047
+ anonymous: false
1048
+ },
1049
+ {
1050
+ inputs: [
1051
+ {
1052
+ internalType: "bytes32",
1053
+ name: "certificateRegistryRoot",
1054
+ type: "bytes32",
1055
+ indexed: true
1056
+ }
1057
+ ],
1058
+ type: "event",
1059
+ name: "CertificateRegistryRootRemoved",
1060
+ anonymous: false
1061
+ },
1062
+ {
1063
+ inputs: [
1064
+ { internalType: "bool", name: "paused", type: "bool", indexed: false }
1065
+ ],
1066
+ type: "event",
1067
+ name: "PausedStatusChanged",
1068
+ anonymous: false
1069
+ },
1070
+ {
1071
+ inputs: [
1072
+ {
1073
+ internalType: "bytes32",
1074
+ name: "_sanctionsTreesRoot",
1075
+ type: "bytes32",
1076
+ indexed: true
1077
+ }
1078
+ ],
1079
+ type: "event",
1080
+ name: "SanctionsTreesRootUpdates",
1081
+ anonymous: false
1082
+ },
1083
+ {
1084
+ inputs: [
1085
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true },
1086
+ { internalType: "address", name: "verifier", type: "address", indexed: true }
1087
+ ],
1088
+ type: "event",
1089
+ name: "VerifierAdded",
1090
+ anonymous: false
1091
+ },
1092
+ {
1093
+ inputs: [
1094
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true }
1095
+ ],
1096
+ type: "event",
1097
+ name: "VerifierRemoved",
1098
+ anonymous: false
1099
+ },
1100
+ {
1101
+ inputs: [
1102
+ { internalType: "address", name: "admin", type: "address", indexed: true },
1103
+ { internalType: "uint256", name: "timestamp", type: "uint256", indexed: false }
1104
+ ],
1105
+ type: "event",
1106
+ name: "ZKPassportVerifierDeployed",
1107
+ anonymous: false
1108
+ },
1109
+ {
1110
+ inputs: [],
1111
+ stateMutability: "view",
1112
+ type: "function",
1113
+ name: "CERTIFICATE_REGISTRY_ID",
1114
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
1115
+ },
1116
+ {
1117
+ inputs: [],
1118
+ stateMutability: "view",
1119
+ type: "function",
1120
+ name: "CIRCUIT_REGISTRY_ID",
1121
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
1122
+ },
1123
+ {
1124
+ inputs: [],
1125
+ stateMutability: "view",
1126
+ type: "function",
1127
+ name: "SANCTIONS_REGISTRY_ID",
1128
+ outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
1129
+ },
1130
+ {
1131
+ inputs: [
1132
+ { internalType: "bytes32[]", name: "vkeyHashes", type: "bytes32[]" },
1133
+ { internalType: "address[]", name: "verifiers", type: "address[]" }
1134
+ ],
1135
+ stateMutability: "nonpayable",
1136
+ type: "function",
1137
+ name: "addVerifiers"
1138
+ },
1139
+ {
1140
+ inputs: [],
1141
+ stateMutability: "view",
1142
+ type: "function",
1143
+ name: "admin",
1144
+ outputs: [{ internalType: "address", name: "", type: "address" }]
1145
+ },
1146
+ {
1147
+ inputs: [
1148
+ {
1149
+ internalType: "struct ProofVerificationParams",
1150
+ name: "params",
1151
+ type: "tuple",
1152
+ components: [
1153
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1154
+ { internalType: "bytes", name: "proof", type: "bytes" },
1155
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1156
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1157
+ {
1158
+ internalType: "uint256[]",
1159
+ name: "committedInputCounts",
1160
+ type: "uint256[]"
1161
+ },
1162
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1163
+ { internalType: "string", name: "domain", type: "string" },
1164
+ { internalType: "string", name: "scope", type: "string" },
1165
+ { internalType: "bool", name: "devMode", type: "bool" }
1166
+ ]
1167
+ }
1168
+ ],
1169
+ stateMutability: "view",
1170
+ type: "function",
1171
+ name: "enforceSanctionsRoot"
1172
+ },
1173
+ {
1174
+ inputs: [
1175
+ {
1176
+ internalType: "struct ProofVerificationParams",
1177
+ name: "params",
1178
+ type: "tuple",
1179
+ components: [
1180
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1181
+ { internalType: "bytes", name: "proof", type: "bytes" },
1182
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1183
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1184
+ {
1185
+ internalType: "uint256[]",
1186
+ name: "committedInputCounts",
1187
+ type: "uint256[]"
1188
+ },
1189
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1190
+ { internalType: "string", name: "domain", type: "string" },
1191
+ { internalType: "string", name: "scope", type: "string" },
1192
+ { internalType: "bool", name: "devMode", type: "bool" }
1193
+ ]
1194
+ }
1195
+ ],
1196
+ stateMutability: "pure",
1197
+ type: "function",
1198
+ name: "getBoundData",
1199
+ outputs: [
1200
+ {
1201
+ internalType: "struct BoundData",
1202
+ name: "boundData",
1203
+ type: "tuple",
1204
+ components: [
1205
+ { internalType: "address", name: "senderAddress", type: "address" },
1206
+ { internalType: "uint256", name: "chainId", type: "uint256" },
1207
+ { internalType: "string", name: "customData", type: "string" }
1208
+ ]
1209
+ }
1210
+ ]
1211
+ },
1212
+ {
1213
+ inputs: [
1214
+ {
1215
+ internalType: "struct ProofVerificationParams",
1216
+ name: "params",
1217
+ type: "tuple",
1218
+ components: [
1219
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1220
+ { internalType: "bytes", name: "proof", type: "bytes" },
1221
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1222
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1223
+ {
1224
+ internalType: "uint256[]",
1225
+ name: "committedInputCounts",
1226
+ type: "uint256[]"
1227
+ },
1228
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1229
+ { internalType: "string", name: "domain", type: "string" },
1230
+ { internalType: "string", name: "scope", type: "string" },
1231
+ { internalType: "bool", name: "devMode", type: "bool" }
1232
+ ]
1233
+ },
1234
+ { internalType: "bool", name: "isIDCard", type: "bool" }
1235
+ ],
1236
+ stateMutability: "pure",
1237
+ type: "function",
1238
+ name: "getDisclosedData",
1239
+ outputs: [
1240
+ {
1241
+ internalType: "struct DisclosedData",
1242
+ name: "disclosedData",
1243
+ type: "tuple",
1244
+ components: [
1245
+ { internalType: "string", name: "name", type: "string" },
1246
+ { internalType: "string", name: "issuingCountry", type: "string" },
1247
+ { internalType: "string", name: "nationality", type: "string" },
1248
+ { internalType: "string", name: "gender", type: "string" },
1249
+ { internalType: "string", name: "birthDate", type: "string" },
1250
+ { internalType: "string", name: "expiryDate", type: "string" },
1251
+ { internalType: "string", name: "documentNumber", type: "string" },
1252
+ { internalType: "string", name: "documentType", type: "string" }
1253
+ ]
1254
+ }
1255
+ ]
1256
+ },
1257
+ {
1258
+ inputs: [
1259
+ { internalType: "uint8", name: "minAge", type: "uint8" },
1260
+ {
1261
+ internalType: "struct ProofVerificationParams",
1262
+ name: "params",
1263
+ type: "tuple",
1264
+ components: [
1265
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1266
+ { internalType: "bytes", name: "proof", type: "bytes" },
1267
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1268
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1269
+ {
1270
+ internalType: "uint256[]",
1271
+ name: "committedInputCounts",
1272
+ type: "uint256[]"
1273
+ },
1274
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1275
+ { internalType: "string", name: "domain", type: "string" },
1276
+ { internalType: "string", name: "scope", type: "string" },
1277
+ { internalType: "bool", name: "devMode", type: "bool" }
1278
+ ]
1279
+ }
1280
+ ],
1281
+ stateMutability: "view",
1282
+ type: "function",
1283
+ name: "isAgeAbove",
1284
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
1285
+ },
1286
+ {
1287
+ inputs: [
1288
+ { internalType: "uint8", name: "minAge", type: "uint8" },
1289
+ {
1290
+ internalType: "struct ProofVerificationParams",
1291
+ name: "params",
1292
+ type: "tuple",
1293
+ components: [
1294
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1295
+ { internalType: "bytes", name: "proof", type: "bytes" },
1296
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1297
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1298
+ {
1299
+ internalType: "uint256[]",
1300
+ name: "committedInputCounts",
1301
+ type: "uint256[]"
1302
+ },
1303
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1304
+ { internalType: "string", name: "domain", type: "string" },
1305
+ { internalType: "string", name: "scope", type: "string" },
1306
+ { internalType: "bool", name: "devMode", type: "bool" }
1307
+ ]
1308
+ }
1309
+ ],
1310
+ stateMutability: "view",
1311
+ type: "function",
1312
+ name: "isAgeAboveOrEqual",
1313
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
1314
+ },
1315
+ {
1316
+ inputs: [
1317
+ { internalType: "uint8", name: "maxAge", type: "uint8" },
1318
+ {
1319
+ internalType: "struct ProofVerificationParams",
1320
+ name: "params",
1321
+ type: "tuple",
1322
+ components: [
1323
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1324
+ { internalType: "bytes", name: "proof", type: "bytes" },
1325
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1326
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1327
+ {
1328
+ internalType: "uint256[]",
1329
+ name: "committedInputCounts",
1330
+ type: "uint256[]"
1331
+ },
1332
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1333
+ { internalType: "string", name: "domain", type: "string" },
1334
+ { internalType: "string", name: "scope", type: "string" },
1335
+ { internalType: "bool", name: "devMode", type: "bool" }
1336
+ ]
1337
+ }
1338
+ ],
1339
+ stateMutability: "view",
1340
+ type: "function",
1341
+ name: "isAgeBelow",
1342
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
1343
+ },
1344
+ {
1345
+ inputs: [
1346
+ { internalType: "uint8", name: "maxAge", type: "uint8" },
1347
+ {
1348
+ internalType: "struct ProofVerificationParams",
1349
+ name: "params",
1350
+ type: "tuple",
1351
+ components: [
1352
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1353
+ { internalType: "bytes", name: "proof", type: "bytes" },
1354
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1355
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1356
+ {
1357
+ internalType: "uint256[]",
1358
+ name: "committedInputCounts",
1359
+ type: "uint256[]"
1360
+ },
1361
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1362
+ { internalType: "string", name: "domain", type: "string" },
1363
+ { internalType: "string", name: "scope", type: "string" },
1364
+ { internalType: "bool", name: "devMode", type: "bool" }
1365
+ ]
1366
+ }
1367
+ ],
1368
+ stateMutability: "view",
1369
+ type: "function",
1370
+ name: "isAgeBelowOrEqual",
1371
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
1372
+ },
1373
+ {
1374
+ inputs: [
1375
+ { internalType: "uint8", name: "minAge", type: "uint8" },
1376
+ { internalType: "uint8", name: "maxAge", type: "uint8" },
1377
+ {
1378
+ internalType: "struct ProofVerificationParams",
1379
+ name: "params",
1380
+ type: "tuple",
1381
+ components: [
1382
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1383
+ { internalType: "bytes", name: "proof", type: "bytes" },
1384
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1385
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1386
+ {
1387
+ internalType: "uint256[]",
1388
+ name: "committedInputCounts",
1389
+ type: "uint256[]"
1390
+ },
1391
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1392
+ { internalType: "string", name: "domain", type: "string" },
1393
+ { internalType: "string", name: "scope", type: "string" },
1394
+ { internalType: "bool", name: "devMode", type: "bool" }
1395
+ ]
455
1396
  }
456
1397
  ],
457
- type: "event",
458
- name: "CertificateRegistryRootAdded",
459
- anonymous: false
1398
+ stateMutability: "view",
1399
+ type: "function",
1400
+ name: "isAgeBetween",
1401
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
460
1402
  },
461
1403
  {
462
1404
  inputs: [
1405
+ { internalType: "uint8", name: "age", type: "uint8" },
463
1406
  {
464
- internalType: "bytes32",
465
- name: "certificateRegistryRoot",
466
- type: "bytes32",
467
- indexed: true
1407
+ internalType: "struct ProofVerificationParams",
1408
+ name: "params",
1409
+ type: "tuple",
1410
+ components: [
1411
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1412
+ { internalType: "bytes", name: "proof", type: "bytes" },
1413
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1414
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1415
+ {
1416
+ internalType: "uint256[]",
1417
+ name: "committedInputCounts",
1418
+ type: "uint256[]"
1419
+ },
1420
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1421
+ { internalType: "string", name: "domain", type: "string" },
1422
+ { internalType: "string", name: "scope", type: "string" },
1423
+ { internalType: "bool", name: "devMode", type: "bool" }
1424
+ ]
468
1425
  }
469
1426
  ],
470
- type: "event",
471
- name: "CertificateRegistryRootRemoved",
472
- anonymous: false
1427
+ stateMutability: "view",
1428
+ type: "function",
1429
+ name: "isAgeEqual",
1430
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
473
1431
  },
474
1432
  {
475
1433
  inputs: [
476
- { internalType: "bool", name: "paused", type: "bool", indexed: false }
1434
+ { internalType: "uint256", name: "minDate", type: "uint256" },
1435
+ {
1436
+ internalType: "struct ProofVerificationParams",
1437
+ name: "params",
1438
+ type: "tuple",
1439
+ components: [
1440
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1441
+ { internalType: "bytes", name: "proof", type: "bytes" },
1442
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1443
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1444
+ {
1445
+ internalType: "uint256[]",
1446
+ name: "committedInputCounts",
1447
+ type: "uint256[]"
1448
+ },
1449
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1450
+ { internalType: "string", name: "domain", type: "string" },
1451
+ { internalType: "string", name: "scope", type: "string" },
1452
+ { internalType: "bool", name: "devMode", type: "bool" }
1453
+ ]
1454
+ }
477
1455
  ],
478
- type: "event",
479
- name: "PausedStatusChanged",
480
- anonymous: false
1456
+ stateMutability: "view",
1457
+ type: "function",
1458
+ name: "isBirthdateAfter",
1459
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
481
1460
  },
482
1461
  {
483
1462
  inputs: [
1463
+ { internalType: "uint256", name: "minDate", type: "uint256" },
484
1464
  {
485
- internalType: "bytes32",
486
- name: "_sanctionsTreesRoot",
487
- type: "bytes32",
488
- indexed: true
1465
+ internalType: "struct ProofVerificationParams",
1466
+ name: "params",
1467
+ type: "tuple",
1468
+ components: [
1469
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1470
+ { internalType: "bytes", name: "proof", type: "bytes" },
1471
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1472
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1473
+ {
1474
+ internalType: "uint256[]",
1475
+ name: "committedInputCounts",
1476
+ type: "uint256[]"
1477
+ },
1478
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1479
+ { internalType: "string", name: "domain", type: "string" },
1480
+ { internalType: "string", name: "scope", type: "string" },
1481
+ { internalType: "bool", name: "devMode", type: "bool" }
1482
+ ]
489
1483
  }
490
1484
  ],
491
- type: "event",
492
- name: "SanctionsTreesRootUpdates",
493
- anonymous: false
1485
+ stateMutability: "view",
1486
+ type: "function",
1487
+ name: "isBirthdateAfterOrEqual",
1488
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
494
1489
  },
495
1490
  {
496
1491
  inputs: [
497
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true },
498
- { internalType: "address", name: "verifier", type: "address", indexed: true }
1492
+ { internalType: "uint256", name: "maxDate", type: "uint256" },
1493
+ {
1494
+ internalType: "struct ProofVerificationParams",
1495
+ name: "params",
1496
+ type: "tuple",
1497
+ components: [
1498
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1499
+ { internalType: "bytes", name: "proof", type: "bytes" },
1500
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1501
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1502
+ {
1503
+ internalType: "uint256[]",
1504
+ name: "committedInputCounts",
1505
+ type: "uint256[]"
1506
+ },
1507
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1508
+ { internalType: "string", name: "domain", type: "string" },
1509
+ { internalType: "string", name: "scope", type: "string" },
1510
+ { internalType: "bool", name: "devMode", type: "bool" }
1511
+ ]
1512
+ }
499
1513
  ],
500
- type: "event",
501
- name: "VerifierAdded",
502
- anonymous: false
1514
+ stateMutability: "view",
1515
+ type: "function",
1516
+ name: "isBirthdateBefore",
1517
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
503
1518
  },
504
1519
  {
505
1520
  inputs: [
506
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32", indexed: true }
1521
+ { internalType: "uint256", name: "maxDate", type: "uint256" },
1522
+ {
1523
+ internalType: "struct ProofVerificationParams",
1524
+ name: "params",
1525
+ type: "tuple",
1526
+ components: [
1527
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1528
+ { internalType: "bytes", name: "proof", type: "bytes" },
1529
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1530
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1531
+ {
1532
+ internalType: "uint256[]",
1533
+ name: "committedInputCounts",
1534
+ type: "uint256[]"
1535
+ },
1536
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1537
+ { internalType: "string", name: "domain", type: "string" },
1538
+ { internalType: "string", name: "scope", type: "string" },
1539
+ { internalType: "bool", name: "devMode", type: "bool" }
1540
+ ]
1541
+ }
507
1542
  ],
508
- type: "event",
509
- name: "VerifierRemoved",
510
- anonymous: false
1543
+ stateMutability: "view",
1544
+ type: "function",
1545
+ name: "isBirthdateBeforeOrEqual",
1546
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
511
1547
  },
512
1548
  {
513
1549
  inputs: [
514
- { internalType: "address", name: "admin", type: "address", indexed: true },
515
- { internalType: "uint256", name: "timestamp", type: "uint256", indexed: false }
1550
+ { internalType: "uint256", name: "minDate", type: "uint256" },
1551
+ { internalType: "uint256", name: "maxDate", type: "uint256" },
1552
+ {
1553
+ internalType: "struct ProofVerificationParams",
1554
+ name: "params",
1555
+ type: "tuple",
1556
+ components: [
1557
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1558
+ { internalType: "bytes", name: "proof", type: "bytes" },
1559
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1560
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1561
+ {
1562
+ internalType: "uint256[]",
1563
+ name: "committedInputCounts",
1564
+ type: "uint256[]"
1565
+ },
1566
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1567
+ { internalType: "string", name: "domain", type: "string" },
1568
+ { internalType: "string", name: "scope", type: "string" },
1569
+ { internalType: "bool", name: "devMode", type: "bool" }
1570
+ ]
1571
+ }
516
1572
  ],
517
- type: "event",
518
- name: "ZKPassportVerifierDeployed",
519
- anonymous: false
520
- },
521
- {
522
- inputs: [],
523
1573
  stateMutability: "view",
524
1574
  type: "function",
525
- name: "CERTIFICATE_REGISTRY_ID",
526
- outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
1575
+ name: "isBirthdateBetween",
1576
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
527
1577
  },
528
1578
  {
529
- inputs: [],
1579
+ inputs: [
1580
+ { internalType: "uint256", name: "date", type: "uint256" },
1581
+ {
1582
+ internalType: "struct ProofVerificationParams",
1583
+ name: "params",
1584
+ type: "tuple",
1585
+ components: [
1586
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1587
+ { internalType: "bytes", name: "proof", type: "bytes" },
1588
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1589
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1590
+ {
1591
+ internalType: "uint256[]",
1592
+ name: "committedInputCounts",
1593
+ type: "uint256[]"
1594
+ },
1595
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1596
+ { internalType: "string", name: "domain", type: "string" },
1597
+ { internalType: "string", name: "scope", type: "string" },
1598
+ { internalType: "bool", name: "devMode", type: "bool" }
1599
+ ]
1600
+ }
1601
+ ],
530
1602
  stateMutability: "view",
531
1603
  type: "function",
532
- name: "CIRCUIT_REGISTRY_ID",
533
- outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
1604
+ name: "isBirthdateEqual",
1605
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
534
1606
  },
535
1607
  {
536
- inputs: [],
1608
+ inputs: [
1609
+ { internalType: "uint256", name: "minDate", type: "uint256" },
1610
+ {
1611
+ internalType: "struct ProofVerificationParams",
1612
+ name: "params",
1613
+ type: "tuple",
1614
+ components: [
1615
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1616
+ { internalType: "bytes", name: "proof", type: "bytes" },
1617
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1618
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1619
+ {
1620
+ internalType: "uint256[]",
1621
+ name: "committedInputCounts",
1622
+ type: "uint256[]"
1623
+ },
1624
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1625
+ { internalType: "string", name: "domain", type: "string" },
1626
+ { internalType: "string", name: "scope", type: "string" },
1627
+ { internalType: "bool", name: "devMode", type: "bool" }
1628
+ ]
1629
+ }
1630
+ ],
537
1631
  stateMutability: "view",
538
1632
  type: "function",
539
- name: "SANCTIONS_REGISTRY_ID",
540
- outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }]
1633
+ name: "isExpiryDateAfter",
1634
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
541
1635
  },
542
1636
  {
543
1637
  inputs: [
544
- { internalType: "bytes32[]", name: "vkeyHashes", type: "bytes32[]" },
545
- { internalType: "address[]", name: "verifiers", type: "address[]" }
1638
+ { internalType: "uint256", name: "minDate", type: "uint256" },
1639
+ {
1640
+ internalType: "struct ProofVerificationParams",
1641
+ name: "params",
1642
+ type: "tuple",
1643
+ components: [
1644
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1645
+ { internalType: "bytes", name: "proof", type: "bytes" },
1646
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1647
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1648
+ {
1649
+ internalType: "uint256[]",
1650
+ name: "committedInputCounts",
1651
+ type: "uint256[]"
1652
+ },
1653
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1654
+ { internalType: "string", name: "domain", type: "string" },
1655
+ { internalType: "string", name: "scope", type: "string" },
1656
+ { internalType: "bool", name: "devMode", type: "bool" }
1657
+ ]
1658
+ }
546
1659
  ],
547
- stateMutability: "nonpayable",
548
- type: "function",
549
- name: "addVerifiers"
550
- },
551
- {
552
- inputs: [],
553
1660
  stateMutability: "view",
554
1661
  type: "function",
555
- name: "admin",
556
- outputs: [{ internalType: "address", name: "", type: "address" }]
1662
+ name: "isExpiryDateAfterOrEqual",
1663
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
557
1664
  },
558
1665
  {
559
1666
  inputs: [
560
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
561
- { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
1667
+ { internalType: "uint256", name: "maxDate", type: "uint256" },
1668
+ {
1669
+ internalType: "struct ProofVerificationParams",
1670
+ name: "params",
1671
+ type: "tuple",
1672
+ components: [
1673
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1674
+ { internalType: "bytes", name: "proof", type: "bytes" },
1675
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1676
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1677
+ {
1678
+ internalType: "uint256[]",
1679
+ name: "committedInputCounts",
1680
+ type: "uint256[]"
1681
+ },
1682
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1683
+ { internalType: "string", name: "domain", type: "string" },
1684
+ { internalType: "string", name: "scope", type: "string" },
1685
+ { internalType: "bool", name: "devMode", type: "bool" }
1686
+ ]
1687
+ }
562
1688
  ],
563
1689
  stateMutability: "view",
564
1690
  type: "function",
565
- name: "enforceSanctionsRoot"
1691
+ name: "isExpiryDateBefore",
1692
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
566
1693
  },
567
1694
  {
568
1695
  inputs: [
569
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
570
- { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
1696
+ { internalType: "uint256", name: "maxDate", type: "uint256" },
1697
+ {
1698
+ internalType: "struct ProofVerificationParams",
1699
+ name: "params",
1700
+ type: "tuple",
1701
+ components: [
1702
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1703
+ { internalType: "bytes", name: "proof", type: "bytes" },
1704
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1705
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1706
+ {
1707
+ internalType: "uint256[]",
1708
+ name: "committedInputCounts",
1709
+ type: "uint256[]"
1710
+ },
1711
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1712
+ { internalType: "string", name: "domain", type: "string" },
1713
+ { internalType: "string", name: "scope", type: "string" },
1714
+ { internalType: "bool", name: "devMode", type: "bool" }
1715
+ ]
1716
+ }
571
1717
  ],
572
- stateMutability: "pure",
1718
+ stateMutability: "view",
573
1719
  type: "function",
574
- name: "getAgeProofInputs",
575
- outputs: [
576
- { internalType: "uint256", name: "currentDate", type: "uint256" },
577
- { internalType: "uint8", name: "minAge", type: "uint8" },
578
- { internalType: "uint8", name: "maxAge", type: "uint8" }
579
- ]
1720
+ name: "isExpiryDateBeforeOrEqual",
1721
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
580
1722
  },
581
1723
  {
582
1724
  inputs: [
583
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
584
- { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
1725
+ { internalType: "uint256", name: "minDate", type: "uint256" },
1726
+ { internalType: "uint256", name: "maxDate", type: "uint256" },
1727
+ {
1728
+ internalType: "struct ProofVerificationParams",
1729
+ name: "params",
1730
+ type: "tuple",
1731
+ components: [
1732
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1733
+ { internalType: "bytes", name: "proof", type: "bytes" },
1734
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1735
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1736
+ {
1737
+ internalType: "uint256[]",
1738
+ name: "committedInputCounts",
1739
+ type: "uint256[]"
1740
+ },
1741
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1742
+ { internalType: "string", name: "domain", type: "string" },
1743
+ { internalType: "string", name: "scope", type: "string" },
1744
+ { internalType: "bool", name: "devMode", type: "bool" }
1745
+ ]
1746
+ }
585
1747
  ],
586
- stateMutability: "pure",
587
- type: "function",
588
- name: "getBindProofInputs",
589
- outputs: [{ internalType: "bytes", name: "data", type: "bytes" }]
590
- },
591
- {
592
- inputs: [{ internalType: "bytes", name: "data", type: "bytes" }],
593
- stateMutability: "pure",
1748
+ stateMutability: "view",
594
1749
  type: "function",
595
- name: "getBoundData",
596
- outputs: [
597
- { internalType: "address", name: "senderAddress", type: "address" },
598
- { internalType: "uint256", name: "chainId", type: "uint256" },
599
- { internalType: "string", name: "customData", type: "string" }
600
- ]
1750
+ name: "isExpiryDateBetween",
1751
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
601
1752
  },
602
1753
  {
603
1754
  inputs: [
604
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
605
- { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" },
606
- { internalType: "enum ProofType", name: "proofType", type: "uint8" }
1755
+ { internalType: "uint256", name: "date", type: "uint256" },
1756
+ {
1757
+ internalType: "struct ProofVerificationParams",
1758
+ name: "params",
1759
+ type: "tuple",
1760
+ components: [
1761
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1762
+ { internalType: "bytes", name: "proof", type: "bytes" },
1763
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1764
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1765
+ {
1766
+ internalType: "uint256[]",
1767
+ name: "committedInputCounts",
1768
+ type: "uint256[]"
1769
+ },
1770
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1771
+ { internalType: "string", name: "domain", type: "string" },
1772
+ { internalType: "string", name: "scope", type: "string" },
1773
+ { internalType: "bool", name: "devMode", type: "bool" }
1774
+ ]
1775
+ }
607
1776
  ],
608
- stateMutability: "pure",
1777
+ stateMutability: "view",
609
1778
  type: "function",
610
- name: "getCountryProofInputs",
611
- outputs: [{ internalType: "string[]", name: "countryList", type: "string[]" }]
1779
+ name: "isExpiryDateEqual",
1780
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
612
1781
  },
613
1782
  {
614
1783
  inputs: [
615
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
616
- { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" },
617
- { internalType: "enum ProofType", name: "proofType", type: "uint8" }
1784
+ { internalType: "string[]", name: "countryList", type: "string[]" },
1785
+ {
1786
+ internalType: "struct ProofVerificationParams",
1787
+ name: "params",
1788
+ type: "tuple",
1789
+ components: [
1790
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1791
+ { internalType: "bytes", name: "proof", type: "bytes" },
1792
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1793
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1794
+ {
1795
+ internalType: "uint256[]",
1796
+ name: "committedInputCounts",
1797
+ type: "uint256[]"
1798
+ },
1799
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1800
+ { internalType: "string", name: "domain", type: "string" },
1801
+ { internalType: "string", name: "scope", type: "string" },
1802
+ { internalType: "bool", name: "devMode", type: "bool" }
1803
+ ]
1804
+ }
618
1805
  ],
619
1806
  stateMutability: "pure",
620
1807
  type: "function",
621
- name: "getDateProofInputs",
622
- outputs: [
623
- { internalType: "uint256", name: "currentDate", type: "uint256" },
624
- { internalType: "uint256", name: "minDate", type: "uint256" },
625
- { internalType: "uint256", name: "maxDate", type: "uint256" }
626
- ]
1808
+ name: "isIssuingCountryIn",
1809
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
627
1810
  },
628
1811
  {
629
1812
  inputs: [
630
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
631
- { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
1813
+ { internalType: "string[]", name: "countryList", type: "string[]" },
1814
+ {
1815
+ internalType: "struct ProofVerificationParams",
1816
+ name: "params",
1817
+ type: "tuple",
1818
+ components: [
1819
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1820
+ { internalType: "bytes", name: "proof", type: "bytes" },
1821
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1822
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1823
+ {
1824
+ internalType: "uint256[]",
1825
+ name: "committedInputCounts",
1826
+ type: "uint256[]"
1827
+ },
1828
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1829
+ { internalType: "string", name: "domain", type: "string" },
1830
+ { internalType: "string", name: "scope", type: "string" },
1831
+ { internalType: "bool", name: "devMode", type: "bool" }
1832
+ ]
1833
+ }
632
1834
  ],
633
1835
  stateMutability: "pure",
634
1836
  type: "function",
635
- name: "getDiscloseProofInputs",
636
- outputs: [
637
- { internalType: "bytes", name: "discloseMask", type: "bytes" },
638
- { internalType: "bytes", name: "discloseBytes", type: "bytes" }
639
- ]
1837
+ name: "isIssuingCountryOut",
1838
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
640
1839
  },
641
1840
  {
642
1841
  inputs: [
643
- { internalType: "bytes", name: "discloseBytes", type: "bytes" },
644
- { internalType: "bool", name: "isIDCard", type: "bool" }
1842
+ { internalType: "string[]", name: "countryList", type: "string[]" },
1843
+ {
1844
+ internalType: "struct ProofVerificationParams",
1845
+ name: "params",
1846
+ type: "tuple",
1847
+ components: [
1848
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1849
+ { internalType: "bytes", name: "proof", type: "bytes" },
1850
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1851
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1852
+ {
1853
+ internalType: "uint256[]",
1854
+ name: "committedInputCounts",
1855
+ type: "uint256[]"
1856
+ },
1857
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1858
+ { internalType: "string", name: "domain", type: "string" },
1859
+ { internalType: "string", name: "scope", type: "string" },
1860
+ { internalType: "bool", name: "devMode", type: "bool" }
1861
+ ]
1862
+ }
645
1863
  ],
646
1864
  stateMutability: "pure",
647
1865
  type: "function",
648
- name: "getDisclosedData",
649
- outputs: [
650
- { internalType: "string", name: "name", type: "string" },
651
- { internalType: "string", name: "issuingCountry", type: "string" },
652
- { internalType: "string", name: "nationality", type: "string" },
653
- { internalType: "string", name: "gender", type: "string" },
654
- { internalType: "string", name: "birthDate", type: "string" },
655
- { internalType: "string", name: "expiryDate", type: "string" },
656
- { internalType: "string", name: "documentNumber", type: "string" },
657
- { internalType: "string", name: "documentType", type: "string" }
658
- ]
1866
+ name: "isNationalityIn",
1867
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
659
1868
  },
660
1869
  {
661
1870
  inputs: [
662
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
663
- { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
1871
+ { internalType: "string[]", name: "countryList", type: "string[]" },
1872
+ {
1873
+ internalType: "struct ProofVerificationParams",
1874
+ name: "params",
1875
+ type: "tuple",
1876
+ components: [
1877
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
1878
+ { internalType: "bytes", name: "proof", type: "bytes" },
1879
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
1880
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
1881
+ {
1882
+ internalType: "uint256[]",
1883
+ name: "committedInputCounts",
1884
+ type: "uint256[]"
1885
+ },
1886
+ { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
1887
+ { internalType: "string", name: "domain", type: "string" },
1888
+ { internalType: "string", name: "scope", type: "string" },
1889
+ { internalType: "bool", name: "devMode", type: "bool" }
1890
+ ]
1891
+ }
664
1892
  ],
665
1893
  stateMutability: "pure",
666
1894
  type: "function",
667
- name: "getSanctionsProofInputs",
668
- outputs: [
669
- { internalType: "bytes32", name: "sanctionsTreesCommitment", type: "bytes32" }
670
- ]
1895
+ name: "isNationalityOut",
1896
+ outputs: [{ internalType: "bool", name: "", type: "bool" }]
671
1897
  },
672
1898
  {
673
1899
  inputs: [],
@@ -734,8 +1960,8 @@ var ZKPassportVerifier_default = {
734
1960
  type: "function",
735
1961
  name: "verifyProof",
736
1962
  outputs: [
737
- { internalType: "bool", name: "", type: "bool" },
738
- { internalType: "bytes32", name: "", type: "bytes32" }
1963
+ { internalType: "bool", name: "isValid", type: "bool" },
1964
+ { internalType: "bytes32", name: "uniqueIdentifier", type: "bytes32" }
739
1965
  ]
740
1966
  },
741
1967
  {
@@ -761,11 +1987,216 @@ var ZKPassportVerifier_default = {
761
1987
  kind: "dev",
762
1988
  methods: {
763
1989
  constructor: { details: "Constructor" },
1990
+ "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
1991
+ params: { params: "The proof verification parameters" }
1992
+ },
1993
+ "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
1994
+ params: { params: "The proof verification parameters" },
1995
+ returns: { boundData: "The data bound to the proof" }
1996
+ },
1997
+ "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
1998
+ params: {
1999
+ isIDCard: "Whether the proof is an ID card",
2000
+ params: "The proof verification parameters"
2001
+ },
2002
+ returns: { disclosedData: "The data disclosed by the proof" }
2003
+ },
2004
+ "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2005
+ params: {
2006
+ minAge: "The age must be above this age",
2007
+ params: "The proof verification parameters"
2008
+ },
2009
+ returns: { _0: "True if the age is above the given age, false otherwise" }
2010
+ },
2011
+ "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2012
+ params: {
2013
+ minAge: "The age must be above or equal to this age",
2014
+ params: "The proof verification parameters"
2015
+ },
2016
+ returns: {
2017
+ _0: "True if the age is above or equal to the given age, false otherwise"
2018
+ }
2019
+ },
2020
+ "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2021
+ params: {
2022
+ maxAge: "The age must be below this age",
2023
+ params: "The proof verification parameters"
2024
+ },
2025
+ returns: { _0: "True if the age is below the given age, false otherwise" }
2026
+ },
2027
+ "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2028
+ params: {
2029
+ maxAge: "The age must be below or equal to this age",
2030
+ params: "The proof verification parameters"
2031
+ },
2032
+ returns: {
2033
+ _0: "True if the age is below or equal to the given age, false otherwise"
2034
+ }
2035
+ },
2036
+ "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2037
+ params: {
2038
+ maxAge: "The age must be less than or equal to this age",
2039
+ minAge: "The age must be greater than or equal to this age",
2040
+ params: "The proof verification parameters"
2041
+ },
2042
+ returns: { _0: "True if the age is in the given range, false otherwise" }
2043
+ },
2044
+ "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2045
+ params: {
2046
+ age: "The age must be equal to this age",
2047
+ params: "The proof verification parameters"
2048
+ },
2049
+ returns: { _0: "True if the age is equal to the given age, false otherwise" }
2050
+ },
2051
+ "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2052
+ params: {
2053
+ minDate: "The birthdate must be after this date",
2054
+ params: "The proof verification parameters"
2055
+ },
2056
+ returns: { _0: "True if the birthdate is after the given date, false otherwise" }
2057
+ },
2058
+ "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2059
+ params: {
2060
+ minDate: "The birthdate must be after or equal to this date",
2061
+ params: "The proof verification parameters"
2062
+ },
2063
+ returns: {
2064
+ _0: "True if the birthdate is after or equal to the given date, false otherwise"
2065
+ }
2066
+ },
2067
+ "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2068
+ params: {
2069
+ maxDate: "The birthdate must be before this date",
2070
+ params: "The proof verification parameters"
2071
+ },
2072
+ returns: { _0: "True if the birthdate is before the given date, false otherwise" }
2073
+ },
2074
+ "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2075
+ params: {
2076
+ maxDate: "The birthdate must be before or equal to this date",
2077
+ params: "The proof verification parameters"
2078
+ },
2079
+ returns: {
2080
+ _0: "True if the birthdate is before or equal to the given date, false otherwise"
2081
+ }
2082
+ },
2083
+ "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2084
+ params: {
2085
+ maxDate: "The birthdate must be before or equal to this date",
2086
+ minDate: "The birthdate must be after or equal to this date",
2087
+ params: "The proof verification parameters"
2088
+ },
2089
+ returns: { _0: "True if the birthdate is between the given dates, false otherwise" }
2090
+ },
2091
+ "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2092
+ params: {
2093
+ date: "The birthdate must be equal to this date",
2094
+ params: "The proof verification parameters"
2095
+ },
2096
+ returns: { _0: "True if the birthdate is equal to the given date, false otherwise" }
2097
+ },
2098
+ "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2099
+ params: {
2100
+ minDate: "The expiry date must be after this date",
2101
+ params: "The proof verification parameters"
2102
+ },
2103
+ returns: { _0: "True if the expiry date is after the given date, false otherwise" }
2104
+ },
2105
+ "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2106
+ params: {
2107
+ minDate: "The expiry date must be after or equal to this date",
2108
+ params: "The proof verification parameters"
2109
+ },
2110
+ returns: {
2111
+ _0: "True if the expiry date is after or equal to the given date, false otherwise"
2112
+ }
2113
+ },
2114
+ "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2115
+ params: {
2116
+ maxDate: "The expiry date must be before this date",
2117
+ params: "The proof verification parameters"
2118
+ },
2119
+ returns: { _0: "True if the expiry date is before the given date, false otherwise" }
2120
+ },
2121
+ "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2122
+ params: {
2123
+ maxDate: "The expiry date must be before or equal to this date",
2124
+ params: "The proof verification parameters"
2125
+ },
2126
+ returns: {
2127
+ _0: "True if the expiry date is before or equal to the given date, false otherwise"
2128
+ }
2129
+ },
2130
+ "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2131
+ params: {
2132
+ maxDate: "The expiry date must be before or equal to this date",
2133
+ minDate: "The expiry date must be after or equal to this date",
2134
+ params: "The proof verification parameters"
2135
+ },
2136
+ returns: {
2137
+ _0: "True if the expiry date is between the given dates, false otherwise"
2138
+ }
2139
+ },
2140
+ "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2141
+ params: {
2142
+ date: "The expiry date must be equal to this date",
2143
+ params: "The proof verification parameters"
2144
+ },
2145
+ returns: {
2146
+ _0: "True if the expiry date is equal to the given date, false otherwise"
2147
+ }
2148
+ },
2149
+ "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2150
+ params: {
2151
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
2152
+ params: "The proof verification parameters"
2153
+ },
2154
+ returns: {
2155
+ _0: "True if the issuing country is in the list of countries, false otherwise"
2156
+ }
2157
+ },
2158
+ "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2159
+ params: {
2160
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order",
2161
+ params: "The proof verification parameters"
2162
+ },
2163
+ returns: {
2164
+ _0: "True if the issuing country is not in the list of countries, false otherwise"
2165
+ }
2166
+ },
2167
+ "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2168
+ params: {
2169
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
2170
+ params: "The proof verification parameters"
2171
+ },
2172
+ returns: {
2173
+ _0: "True if the nationality is in the list of countries, false otherwise"
2174
+ }
2175
+ },
2176
+ "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2177
+ params: {
2178
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof) Note: The list of countries must be sorted in alphabetical order",
2179
+ params: "The proof verification parameters"
2180
+ },
2181
+ returns: {
2182
+ _0: "True if the nationality is not in the list of countries, false otherwise"
2183
+ }
2184
+ },
764
2185
  "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
765
2186
  params: { params: "The proof verification parameters" },
766
2187
  returns: {
767
- _0: "isValid True if the proof is valid, false otherwise",
768
- _1: "uniqueIdentifier The unique identifier associated to the identity document that generated the proof"
2188
+ isValid: "True if the proof is valid, false otherwise",
2189
+ uniqueIdentifier: "The unique identifier associated to the identity document that generated the proof"
2190
+ }
2191
+ },
2192
+ "verifyScopes(bytes32[],string,string)": {
2193
+ params: {
2194
+ domain: "The domain to check against",
2195
+ publicInputs: "The public inputs of the proof",
2196
+ scope: "The scope to check against"
2197
+ },
2198
+ returns: {
2199
+ _0: "True if the proof was generated for the given domain and scope, false otherwise"
769
2200
  }
770
2201
  }
771
2202
  },
@@ -774,8 +2205,86 @@ var ZKPassportVerifier_default = {
774
2205
  userdoc: {
775
2206
  kind: "user",
776
2207
  methods: {
2208
+ "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2209
+ notice: "Enforces that the proof checks against the expected sanction list(s)"
2210
+ },
2211
+ "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2212
+ notice: "Gets the data bound to the proof"
2213
+ },
2214
+ "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
2215
+ notice: "Gets the data disclosed by the proof"
2216
+ },
2217
+ "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2218
+ notice: "Checks if the age is above the given age"
2219
+ },
2220
+ "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2221
+ notice: "Checks if the age is above or equal to the given age"
2222
+ },
2223
+ "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2224
+ notice: "Checks if the age is below the given age"
2225
+ },
2226
+ "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2227
+ notice: "Checks if the age is below or equal to the given age"
2228
+ },
2229
+ "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2230
+ notice: "Checks if the age is in the given range"
2231
+ },
2232
+ "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2233
+ notice: "Checks if the age is equal to the given age"
2234
+ },
2235
+ "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2236
+ notice: "Checks if the birthdate is after the given date"
2237
+ },
2238
+ "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2239
+ notice: "Checks if the birthdate is after or equal to the given date"
2240
+ },
2241
+ "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2242
+ notice: "Checks if the birthdate is before the given date"
2243
+ },
2244
+ "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2245
+ notice: "Checks if the birthdate is before or equal to the given date"
2246
+ },
2247
+ "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2248
+ notice: "Checks if the birthdate is between the given dates"
2249
+ },
2250
+ "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2251
+ notice: "Checks if the birthdate is equal to the given date"
2252
+ },
2253
+ "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2254
+ notice: "Checks if the expiry date is after the given date"
2255
+ },
2256
+ "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2257
+ notice: "Checks if the expiry date is after or equal to the given date"
2258
+ },
2259
+ "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2260
+ notice: "Checks if the expiry date is before the given date"
2261
+ },
2262
+ "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2263
+ notice: "Checks if the expiry date is before or equal to the given date"
2264
+ },
2265
+ "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2266
+ notice: "Checks if the expiry date is between the given dates"
2267
+ },
2268
+ "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2269
+ notice: "Checks if the expiry date is equal to the given date"
2270
+ },
2271
+ "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2272
+ notice: "Checks if the issuing country is in the list of countries"
2273
+ },
2274
+ "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2275
+ notice: "Checks if the issuing country is not in the list of countries"
2276
+ },
2277
+ "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2278
+ notice: "Checks if the nationality is in the list of countries"
2279
+ },
2280
+ "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
2281
+ notice: "Checks if the nationality is not in the list of countries"
2282
+ },
777
2283
  "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
778
2284
  notice: "Verifies a proof from ZKPassport"
2285
+ },
2286
+ "verifyScopes(bytes32[],string,string)": {
2287
+ notice: "Verifies that the proof was generated for the given domain and scope"
779
2288
  }
780
2289
  },
781
2290
  version: 1
@@ -790,19 +2299,11 @@ var ZKPassportVerifier_default = {
790
2299
  libraries: {}
791
2300
  },
792
2301
  sources: {
793
- "src/ArrayUtils.sol": {
794
- keccak256: "0x8decadfca50750cbdcb00be06030305478292f0042affa868e733d85a3fc9882",
795
- urls: [
796
- "bzz-raw://87c9fef005d1894a5fd5dcb1dd46d9a8643ce7496f6aaed7e000fe7a518cf0d1",
797
- "dweb:/ipfs/QmdCn9qvZXQDpBWcDXumLagWg5dEV5yE1DCMiE1PidqCBe"
798
- ],
799
- license: "Apache-2.0"
800
- },
801
2302
  "src/Constants.sol": {
802
- keccak256: "0x2e71da3d5f2fde93f12d5f37d5e91ddeb18fb55409cdc24080ce9726bac64a37",
2303
+ keccak256: "0xb1105acee68946ef452b55289a556a42289c3e1e849482d26cb8af4e2447ebdd",
803
2304
  urls: [
804
- "bzz-raw://7a8e4219aff4170b7e9ed4cbb8b6c729926cc43579373e10a138f679fccdcca7",
805
- "dweb:/ipfs/Qmb4n5phYnw9EUtRG76V6vBC2rVC5aXNSgLKvTej7gk3Qi"
2305
+ "bzz-raw://4639a621a472a215c320dd3f2d22e08d57028550df503bbffbd7330b57ba9ed8",
2306
+ "dweb:/ipfs/QmfMoxNwnJMBNzHxUByv1eqtaktX1EGFqU2VJ4L1pYidJq"
806
2307
  ],
807
2308
  license: "Apache-2.0"
808
2309
  },
@@ -822,34 +2323,50 @@ var ZKPassportVerifier_default = {
822
2323
  ],
823
2324
  license: "MIT"
824
2325
  },
825
- "src/OuterCount4.sol": {
826
- keccak256: "0x9f343e672cd22bb67bda44f4ed5ce7318769dfd65270f52eadf70c12a2377aab",
2326
+ "src/InputsExtractor.sol": {
2327
+ keccak256: "0x55af333a1ed7cd5a1299f1b0778db0fc2a15f68903e9ae6a6034d24f13da03e7",
827
2328
  urls: [
828
- "bzz-raw://69a1177da0c5a7148676bef2a5e5c58840a66b2e142d2a0d331dca01dd0109ad",
829
- "dweb:/ipfs/QmQ6iVmrCNEG6XE3ejP4dgBiw3XhMaGm1hW61z4rj7zsiF"
2329
+ "bzz-raw://10ccdb51863cfd11f222ecb3111f0f291aae3a19fdbef6d90233d08f02eab1d5",
2330
+ "dweb:/ipfs/QmebPTX4Dbc5LkhG57YuTjEZgEvCk51ut3ZERZoqeGemsB"
830
2331
  ],
831
2332
  license: "Apache-2.0"
832
2333
  },
833
2334
  "src/StringUtils.sol": {
834
- keccak256: "0x518791675043f4c927aa2d02b543b8be56b77b9c0c9aab46dd8dcea45ee7e8d5",
2335
+ keccak256: "0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1",
2336
+ urls: [
2337
+ "bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342",
2338
+ "dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"
2339
+ ],
2340
+ license: "Apache-2.0"
2341
+ },
2342
+ "src/Types.sol": {
2343
+ keccak256: "0x6cd3120512911d8319b011016e19204c3f2d72b75efc2663cbde807571a5a7f0",
835
2344
  urls: [
836
- "bzz-raw://851a2758819d8cf3d3628fa6b43f3ae84c0f0a684c3a08dd3a640c0a4075268d",
837
- "dweb:/ipfs/QmRZn415Bgyv6rcCfiZhfDNt6uDCgxCTMi48nU2KmDZBTb"
2345
+ "bzz-raw://ec0c51990097f62145282a34f553465843007d0c86e742652c5ea2c7878e78be",
2346
+ "dweb:/ipfs/QmVUFfqiYGZuwbj5AA4smnSn5KpDyeKpw9iFmRzuK18dVo"
838
2347
  ],
839
2348
  license: "Apache-2.0"
840
2349
  },
841
2350
  "src/ZKPassportVerifier.sol": {
842
- keccak256: "0xe30f6521fa584090908f70f89a8c597983d62dbec440b8fe744db02c759f80d8",
2351
+ keccak256: "0x692154ad13d61bc9a232b33396888dcbe6f0ff46bbcd261e00ffa49c4afc8728",
2352
+ urls: [
2353
+ "bzz-raw://d1477d1851973999abda47bbb20d4f3120bc50b0ad9a3c5a041b768a2c9d47c3",
2354
+ "dweb:/ipfs/QmZqefNqexmbFbQ7HUJUDwAAMjcDUobNUyhj1tDYj2HU9S"
2355
+ ],
2356
+ license: "Apache-2.0"
2357
+ },
2358
+ "src/ultra-honk-verifiers/OuterCount4.sol": {
2359
+ keccak256: "0x9f343e672cd22bb67bda44f4ed5ce7318769dfd65270f52eadf70c12a2377aab",
843
2360
  urls: [
844
- "bzz-raw://236ef32dcef9f8eadb98948cba074e65567a8de0f0ac88183447486a09729f57",
845
- "dweb:/ipfs/Qmezw3ZJak5dniGQAkhWGRRAJHvJUAkb72u2Qe4Ab7G49h"
2361
+ "bzz-raw://69a1177da0c5a7148676bef2a5e5c58840a66b2e142d2a0d331dca01dd0109ad",
2362
+ "dweb:/ipfs/QmQ6iVmrCNEG6XE3ejP4dgBiw3XhMaGm1hW61z4rj7zsiF"
846
2363
  ],
847
2364
  license: "Apache-2.0"
848
2365
  }
849
2366
  },
850
2367
  version: 1
851
2368
  },
852
- id: 29
2369
+ id: 26
853
2370
  };
854
2371
 
855
2372
  // src/index.ts
@@ -863,7 +2380,7 @@ import {
863
2380
  ASEAN_COUNTRIES,
864
2381
  MERCOSUR_COUNTRIES
865
2382
  } from "@zkpassport/utils";
866
- var VERSION = "0.8.5";
2383
+ var VERSION = "0.8.7";
867
2384
  var DEFAULT_DATE_VALUE = /* @__PURE__ */ new Date(0);
868
2385
  var DEFAULT_VALIDITY = 7 * 24 * 60 * 60;
869
2386
  if (typeof globalThis.Buffer === "undefined") {
@@ -1186,6 +2703,7 @@ var ZKPassport = class {
1186
2703
  * @param logo The logo of your service
1187
2704
  * @param purpose To explain what you want to do with the user's data
1188
2705
  * @param scope Scope this request to a specific use case
2706
+ * @param projectID The project ID of your service
1189
2707
  * @param validity How many seconds ago the proof checking the expiry date of the ID should have been generated
1190
2708
  * @param devMode Whether to enable dev mode. This will allow you to verify mock proofs (i.e. from ZKR)
1191
2709
  * @returns The query builder object.
@@ -1195,6 +2713,7 @@ var ZKPassport = class {
1195
2713
  logo,
1196
2714
  purpose,
1197
2715
  scope,
2716
+ projectID,
1198
2717
  mode,
1199
2718
  validity,
1200
2719
  devMode,
@@ -1215,6 +2734,7 @@ var ZKPassport = class {
1215
2734
  logo,
1216
2735
  purpose,
1217
2736
  scope,
2737
+ projectID,
1218
2738
  cloudProverUrl,
1219
2739
  bridgeUrl
1220
2740
  };
@@ -3223,7 +4743,7 @@ var ZKPassport = class {
3223
4743
  if (network === "ethereum_sepolia") {
3224
4744
  return {
3225
4745
  ...baseConfig,
3226
- address: "0xBec82dec0747C9170D760D5aba9cc44929B17C05"
4746
+ address: "0xE486bdA3e2f8a6e00c6E2d3a4ADb0A7aa7b1cEe9"
3227
4747
  };
3228
4748
  } else if (network === "local_anvil") {
3229
4749
  return {