@zkpassport/sdk 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,25 +65,22 @@ var import_utils = require("@zkpassport/utils");
65
65
  var import_registry = require("@zkpassport/registry");
66
66
 
67
67
  // src/constants.ts
68
- var VERSION = "0.9.0";
68
+ var VERSION = "0.9.1";
69
69
  var DEFAULT_VALIDITY = 7 * 24 * 60 * 60;
70
70
  var DEFAULT_DATE_VALUE = /* @__PURE__ */ new Date(0);
71
- var ZKPASSPORT_APP_ID_HASH = "0x1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b";
71
+ var ZKPASSPORT_IOS_APP_ID_HASH = "0x1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b";
72
+ var ZKPASSPORT_ANDROID_APP_ID_HASH = "0x24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d";
72
73
  var APPLE_APP_ATTEST_ROOT_KEY_HASH = "0x2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b";
74
+ var GOOGLE_APP_ATTEST_RSA_ROOT_KEY_HASH = "0x16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c211";
73
75
 
74
76
  // src/public-input-checker.ts
75
77
  var PublicInputChecker = class {
76
78
  static checkDiscloseBytesPublicInputs(proof, queryResult) {
77
79
  const queryResultErrors = {};
78
80
  let isCorrect = true;
79
- const disclosedDataPassport = import_utils.DisclosedData.fromDisclosedBytes(
80
- (proof.committedInputs?.disclose_bytes).disclosedBytes,
81
- "passport"
82
- );
83
- const disclosedDataIDCard = import_utils.DisclosedData.fromDisclosedBytes(
84
- (proof.committedInputs?.disclose_bytes).disclosedBytes,
85
- "id_card"
86
- );
81
+ const disclosedBytes = (proof.committedInputs?.disclose_bytes).disclosedBytes ?? (proof.committedInputs?.disclose_bytes_evm).disclosedBytes;
82
+ const disclosedDataPassport = import_utils.DisclosedData.fromDisclosedBytes(disclosedBytes, "passport");
83
+ const disclosedDataIDCard = import_utils.DisclosedData.fromDisclosedBytes(disclosedBytes, "id_card");
87
84
  if (queryResult.document_type) {
88
85
  if (queryResult.document_type.eq && queryResult.document_type.eq.result && queryResult.document_type.eq.expected !== disclosedDataPassport.documentType) {
89
86
  console.warn("Document type does not match the expected document type");
@@ -378,10 +375,10 @@ var PublicInputChecker = class {
378
375
  0
379
376
  );
380
377
  const minAge = (0, import_utils.getMinAgeFromCommittedInputs)(
381
- proof.committedInputs?.compare_age
378
+ proof.committedInputs?.compare_age ?? proof.committedInputs?.compare_age_evm
382
379
  );
383
380
  const maxAge = (0, import_utils.getMaxAgeFromCommittedInputs)(
384
- proof.committedInputs?.compare_age
381
+ proof.committedInputs?.compare_age ?? proof.committedInputs?.compare_age_evm
385
382
  );
386
383
  if (queryResult.age) {
387
384
  if (queryResult.age.gte && queryResult.age.gte.result && minAge !== queryResult.age.gte.expected) {
@@ -469,7 +466,7 @@ var PublicInputChecker = class {
469
466
  };
470
467
  }
471
468
  const currentDate = (0, import_utils.getCurrentDateFromCommittedInputs)(
472
- proof.committedInputs?.compare_age
469
+ proof.committedInputs?.compare_age ?? proof.committedInputs?.compare_age_evm
473
470
  );
474
471
  if (!(0, import_utils.areDatesEqual)(currentDate, today) && !(0, import_utils.areDatesEqual)(currentDate, today.getTime() - 864e5)) {
475
472
  console.warn("Current date in the proof is too old");
@@ -498,15 +495,15 @@ var PublicInputChecker = class {
498
495
  0
499
496
  );
500
497
  const minDate = (0, import_utils.getBirthdateMinDateTimestamp)(
501
- proof.committedInputs?.compare_birthdate,
498
+ proof.committedInputs?.compare_birthdate ?? proof.committedInputs?.compare_birthdate_evm,
502
499
  -1 * import_utils.SECONDS_BETWEEN_1900_AND_1970
503
500
  );
504
501
  const maxDate = (0, import_utils.getBirthdateMaxDateTimestamp)(
505
- proof.committedInputs?.compare_birthdate,
502
+ proof.committedInputs?.compare_birthdate ?? proof.committedInputs?.compare_birthdate_evm,
506
503
  -1 * import_utils.SECONDS_BETWEEN_1900_AND_1970
507
504
  );
508
505
  const currentDate = (0, import_utils.getCurrentDateFromCommittedInputs)(
509
- proof.committedInputs?.compare_birthdate
506
+ proof.committedInputs?.compare_birthdate ?? proof.committedInputs?.compare_birthdate_evm
510
507
  );
511
508
  if (queryResult.birthdate) {
512
509
  if (queryResult.birthdate.gte && queryResult.birthdate.gte.result && !(0, import_utils.areDatesEqual)(minDate, queryResult.birthdate.gte.expected)) {
@@ -608,13 +605,13 @@ var PublicInputChecker = class {
608
605
  0
609
606
  );
610
607
  const minDate = (0, import_utils.getMinDateFromCommittedInputs)(
611
- proof.committedInputs?.compare_expiry
608
+ proof.committedInputs?.compare_expiry ?? proof.committedInputs?.compare_expiry_evm
612
609
  );
613
610
  const maxDate = (0, import_utils.getMaxDateFromCommittedInputs)(
614
- proof.committedInputs?.compare_expiry
611
+ proof.committedInputs?.compare_expiry ?? proof.committedInputs?.compare_expiry_evm
615
612
  );
616
613
  const currentDate = (0, import_utils.getCurrentDateFromCommittedInputs)(
617
- proof.committedInputs?.compare_expiry
614
+ proof.committedInputs?.compare_expiry ?? proof.committedInputs?.compare_expiry_evm
618
615
  );
619
616
  if (queryResult.expiry_date) {
620
617
  if (queryResult.expiry_date.gte && queryResult.expiry_date.gte.result && !(0, import_utils.areDatesEqual)(minDate, queryResult.expiry_date.gte.expected)) {
@@ -996,19 +993,25 @@ var PublicInputChecker = class {
996
993
  let isCorrect = true;
997
994
  let queryResultErrors = {};
998
995
  if (queryResult.facematch && queryResult.facematch.passed) {
999
- if (facematchCommittedInputs.rootKeyLeaf !== APPLE_APP_ATTEST_ROOT_KEY_HASH) {
996
+ if (facematchCommittedInputs.rootKeyLeaf !== APPLE_APP_ATTEST_ROOT_KEY_HASH && facematchCommittedInputs.rootKeyLeaf !== GOOGLE_APP_ATTEST_RSA_ROOT_KEY_HASH) {
1000
997
  console.warn("Invalid facematch root key hash");
1001
998
  isCorrect = false;
1002
999
  queryResultErrors.facematch = {
1003
1000
  ...queryResultErrors.facematch,
1004
1001
  eq: {
1005
- expected: APPLE_APP_ATTEST_ROOT_KEY_HASH,
1002
+ expected: `${APPLE_APP_ATTEST_ROOT_KEY_HASH} (iOS) or ${GOOGLE_APP_ATTEST_RSA_ROOT_KEY_HASH} (Android)`,
1006
1003
  received: facematchCommittedInputs.rootKeyLeaf,
1007
1004
  message: "Invalid facematch root key hash"
1008
1005
  }
1009
1006
  };
1010
1007
  }
1011
1008
  const EXPECTED_ENVIRONMENT = "production";
1009
+ console.log("facematchCommittedInputs.environment", facematchCommittedInputs.environment);
1010
+ console.log("EXPECTED_ENVIRONMENT", EXPECTED_ENVIRONMENT);
1011
+ console.log(
1012
+ "facematchCommittedInputs.environment !== EXPECTED_ENVIRONMENT",
1013
+ facematchCommittedInputs.environment !== EXPECTED_ENVIRONMENT
1014
+ );
1012
1015
  if (facematchCommittedInputs.environment !== EXPECTED_ENVIRONMENT) {
1013
1016
  console.warn("Invalid facematch environment, it should be production");
1014
1017
  isCorrect = false;
@@ -1021,7 +1024,7 @@ var PublicInputChecker = class {
1021
1024
  }
1022
1025
  };
1023
1026
  }
1024
- if (facematchCommittedInputs.appId !== ZKPASSPORT_APP_ID_HASH) {
1027
+ if (facematchCommittedInputs.appId !== ZKPASSPORT_IOS_APP_ID_HASH && facematchCommittedInputs.appId !== ZKPASSPORT_ANDROID_APP_ID_HASH) {
1025
1028
  console.warn(
1026
1029
  "Invalid facematch app id hash, the attestation should be coming from the ZKPassport app"
1027
1030
  );
@@ -1029,7 +1032,7 @@ var PublicInputChecker = class {
1029
1032
  queryResultErrors.facematch = {
1030
1033
  ...queryResultErrors.facematch,
1031
1034
  eq: {
1032
- expected: ZKPASSPORT_APP_ID_HASH,
1035
+ expected: `${ZKPASSPORT_IOS_APP_ID_HASH} (iOS) or ${ZKPASSPORT_ANDROID_APP_ID_HASH} (Android)`,
1033
1036
  received: facematchCommittedInputs.appId,
1034
1037
  message: "Invalid facematch app id hash, the attestation should be coming from the ZKPassport app"
1035
1038
  }
@@ -1163,8 +1166,8 @@ var PublicInputChecker = class {
1163
1166
  }
1164
1167
  };
1165
1168
  }
1166
- if (!!committedInputs?.compare_age) {
1167
- const ageCommittedInputs = committedInputs?.compare_age;
1169
+ if (!!committedInputs?.compare_age || !!committedInputs?.compare_age_evm) {
1170
+ const ageCommittedInputs = committedInputs?.compare_age ?? committedInputs?.compare_age_evm;
1168
1171
  const ageParameterCommitment = isForEVM ? await (0, import_utils.getAgeEVMParameterCommitment)(
1169
1172
  ageCommittedInputs.currentDateTimestamp,
1170
1173
  ageCommittedInputs.minAge,
@@ -1192,8 +1195,9 @@ var PublicInputChecker = class {
1192
1195
  ...queryResultErrors,
1193
1196
  ...queryResultErrorsAge
1194
1197
  };
1195
- } else if (!!committedInputs?.compare_birthdate) {
1196
- const birthdateCommittedInputs = committedInputs?.compare_birthdate;
1198
+ }
1199
+ if (!!committedInputs?.compare_birthdate || !!committedInputs?.compare_birthdate_evm) {
1200
+ const birthdateCommittedInputs = committedInputs?.compare_birthdate ?? committedInputs?.compare_birthdate_evm;
1197
1201
  const birthdateParameterCommitment = isForEVM ? await (0, import_utils.getDateEVMParameterCommitment)(
1198
1202
  import_utils.ProofType.BIRTHDATE,
1199
1203
  birthdateCommittedInputs.currentDateTimestamp,
@@ -1225,8 +1229,9 @@ var PublicInputChecker = class {
1225
1229
  ...queryResultErrors,
1226
1230
  ...queryResultErrorsBirthdate
1227
1231
  };
1228
- } else if (!!committedInputs?.compare_expiry) {
1229
- const expiryCommittedInputs = committedInputs?.compare_expiry;
1232
+ }
1233
+ if (!!committedInputs?.compare_expiry || !!committedInputs?.compare_expiry_evm) {
1234
+ const expiryCommittedInputs = committedInputs?.compare_expiry ?? committedInputs?.compare_expiry_evm;
1230
1235
  const expiryParameterCommitment = isForEVM ? await (0, import_utils.getDateEVMParameterCommitment)(
1231
1236
  import_utils.ProofType.EXPIRY_DATE,
1232
1237
  expiryCommittedInputs.currentDateTimestamp,
@@ -1256,8 +1261,9 @@ var PublicInputChecker = class {
1256
1261
  ...queryResultErrors,
1257
1262
  ...queryResultErrorsExpiryDate
1258
1263
  };
1259
- } else if (!!committedInputs?.disclose_bytes) {
1260
- const discloseCommittedInputs = committedInputs?.disclose_bytes;
1264
+ }
1265
+ if (!!committedInputs?.disclose_bytes || !!committedInputs?.disclose_bytes_evm) {
1266
+ const discloseCommittedInputs = committedInputs?.disclose_bytes ?? committedInputs?.disclose_bytes_evm;
1261
1267
  const discloseParameterCommitment = isForEVM ? await (0, import_utils.getDiscloseEVMParameterCommitment)(
1262
1268
  discloseCommittedInputs.discloseMask,
1263
1269
  discloseCommittedInputs.disclosedBytes
@@ -1283,8 +1289,9 @@ var PublicInputChecker = class {
1283
1289
  ...queryResultErrors,
1284
1290
  ...queryResultErrorsDisclose
1285
1291
  };
1286
- } else if (!!committedInputs?.inclusion_check_nationality) {
1287
- const inclusionCheckNationalityCommittedInputs = committedInputs?.inclusion_check_nationality;
1292
+ }
1293
+ if (!!committedInputs?.inclusion_check_nationality || !!committedInputs?.inclusion_check_nationality_evm) {
1294
+ const inclusionCheckNationalityCommittedInputs = committedInputs?.inclusion_check_nationality ?? committedInputs?.inclusion_check_nationality_evm;
1288
1295
  const inclusionCheckNationalityParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1289
1296
  import_utils.ProofType.NATIONALITY_INCLUSION,
1290
1297
  inclusionCheckNationalityCommittedInputs.countries
@@ -1314,8 +1321,9 @@ var PublicInputChecker = class {
1314
1321
  ...queryResultErrors,
1315
1322
  ...queryResultErrorsNationalityInclusion
1316
1323
  };
1317
- } else if (!!committedInputs?.inclusion_check_issuing_country) {
1318
- const inclusionCheckIssuingCountryCommittedInputs = committedInputs?.inclusion_check_issuing_country;
1324
+ }
1325
+ if (!!committedInputs?.inclusion_check_issuing_country || !!committedInputs?.inclusion_check_issuing_country_evm) {
1326
+ const inclusionCheckIssuingCountryCommittedInputs = committedInputs?.inclusion_check_issuing_country ?? committedInputs?.inclusion_check_issuing_country_evm;
1319
1327
  const inclusionCheckIssuingCountryParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1320
1328
  import_utils.ProofType.ISSUING_COUNTRY_INCLUSION,
1321
1329
  inclusionCheckIssuingCountryCommittedInputs.countries
@@ -1345,8 +1353,9 @@ var PublicInputChecker = class {
1345
1353
  ...queryResultErrors,
1346
1354
  ...queryResultErrorsIssuingCountryInclusion
1347
1355
  };
1348
- } else if (!!committedInputs?.exclusion_check_nationality) {
1349
- const exclusionCheckNationalityCommittedInputs = committedInputs?.exclusion_check_nationality;
1356
+ }
1357
+ if (!!committedInputs?.exclusion_check_nationality || !!committedInputs?.exclusion_check_nationality_evm) {
1358
+ const exclusionCheckNationalityCommittedInputs = committedInputs?.exclusion_check_nationality ?? committedInputs?.exclusion_check_nationality_evm;
1350
1359
  const exclusionCheckNationalityParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1351
1360
  import_utils.ProofType.NATIONALITY_EXCLUSION,
1352
1361
  exclusionCheckNationalityCommittedInputs.countries
@@ -1376,8 +1385,9 @@ var PublicInputChecker = class {
1376
1385
  ...queryResultErrors,
1377
1386
  ...queryResultErrorsNationalityExclusion
1378
1387
  };
1379
- } else if (!!committedInputs?.exclusion_check_issuing_country) {
1380
- const exclusionCheckIssuingCountryCommittedInputs = committedInputs?.exclusion_check_issuing_country;
1388
+ }
1389
+ if (!!committedInputs?.exclusion_check_issuing_country || !!committedInputs?.exclusion_check_issuing_country_evm) {
1390
+ const exclusionCheckIssuingCountryCommittedInputs = committedInputs?.exclusion_check_issuing_country ?? committedInputs?.exclusion_check_issuing_country_evm;
1381
1391
  const exclusionCheckIssuingCountryParameterCommitment = isForEVM ? await (0, import_utils.getCountryEVMParameterCommitment)(
1382
1392
  import_utils.ProofType.ISSUING_COUNTRY_EXCLUSION,
1383
1393
  exclusionCheckIssuingCountryCommittedInputs.countries
@@ -1407,8 +1417,9 @@ var PublicInputChecker = class {
1407
1417
  ...queryResultErrors,
1408
1418
  ...queryResultErrorsIssuingCountryExclusion
1409
1419
  };
1410
- } else if (!!committedInputs?.bind) {
1411
- const bindCommittedInputs = committedInputs?.bind;
1420
+ }
1421
+ if (!!committedInputs?.bind || !!committedInputs?.bind_evm) {
1422
+ const bindCommittedInputs = committedInputs?.bind ?? committedInputs?.bind_evm;
1412
1423
  const bindParameterCommitment = isForEVM ? await (0, import_utils.getBindEVMParameterCommitment)((0, import_utils.formatBoundData)(bindCommittedInputs.data)) : await (0, import_utils.getBindParameterCommitment)((0, import_utils.formatBoundData)(bindCommittedInputs.data));
1413
1424
  if (!paramCommitments.includes(bindParameterCommitment)) {
1414
1425
  console.warn("This proof does not verify the bound data");
@@ -1428,9 +1439,10 @@ var PublicInputChecker = class {
1428
1439
  ...queryResultErrors,
1429
1440
  ...queryResultErrorsBind
1430
1441
  };
1431
- } else if (!!committedInputs?.exclusion_check_sanctions) {
1442
+ }
1443
+ if (!!committedInputs?.exclusion_check_sanctions || !!committedInputs?.exclusion_check_sanctions_evm) {
1432
1444
  const sanctionsBuilder = await import_utils.SanctionsBuilder.create();
1433
- const exclusionCheckSanctionsCommittedInputs = committedInputs?.exclusion_check_sanctions;
1445
+ const exclusionCheckSanctionsCommittedInputs = committedInputs?.exclusion_check_sanctions ?? committedInputs?.exclusion_check_sanctions_evm;
1434
1446
  const exclusionCheckSanctionsParameterCommitment = isForEVM ? await sanctionsBuilder.getSanctionsEvmParameterCommitment() : await sanctionsBuilder.getSanctionsParameterCommitment();
1435
1447
  if (!paramCommitments.includes(exclusionCheckSanctionsParameterCommitment)) {
1436
1448
  console.warn("This proof does not verify the exclusion from the sanction lists");
@@ -1457,22 +1469,19 @@ var PublicInputChecker = class {
1457
1469
  ...queryResultErrors,
1458
1470
  ...queryResultErrorsSanctionsExclusion
1459
1471
  };
1460
- } else if (!!committedInputs?.facematch) {
1461
- const facematchCommittedInputs = committedInputs?.facematch;
1472
+ }
1473
+ if (!!committedInputs?.facematch || !!committedInputs?.facematch_evm) {
1474
+ const facematchCommittedInputs = committedInputs?.facematch ?? committedInputs?.facematch_evm;
1462
1475
  const facematchParameterCommitment = isForEVM ? await (0, import_utils.getFacematchEvmParameterCommitment)(
1463
1476
  BigInt(facematchCommittedInputs.rootKeyLeaf),
1464
1477
  facematchCommittedInputs.environment === "development" ? 0n : 1n,
1465
1478
  BigInt(facematchCommittedInputs.appId),
1466
- // TODO: Uncomment this when the facematch mode is properly supported
1467
- // facematchCommittedInputs.mode === "regular" ? 1n : 2n,
1468
- 1n
1479
+ facematchCommittedInputs.mode === "regular" ? 1n : 2n
1469
1480
  ) : await (0, import_utils.getFacematchParameterCommitment)(
1470
1481
  BigInt(facematchCommittedInputs.rootKeyLeaf),
1471
1482
  facematchCommittedInputs.environment === "development" ? 0n : 1n,
1472
1483
  BigInt(facematchCommittedInputs.appId),
1473
- // TODO: Uncomment this when the facematch mode is properly supported
1474
- // facematchCommittedInputs.mode === "regular" ? 1n : 2n,
1475
- 1n
1484
+ facematchCommittedInputs.mode === "regular" ? 1n : 2n
1476
1485
  );
1477
1486
  if (!paramCommitments.includes(facematchParameterCommitment)) {
1478
1487
  console.warn("This proof does not verify FaceMatch");
@@ -2055,16 +2064,14 @@ var PublicInputChecker = class {
2055
2064
  };
2056
2065
  uniqueIdentifier = (0, import_utils.getNullifierFromDisclosureProof)(proofData).toString(10);
2057
2066
  uniqueIdentifierType = (0, import_utils.getNullifierTypeFromDisclosureProof)(proofData);
2058
- } else if (proof.name === "facematch") {
2067
+ } else if (proof.name?.startsWith("facematch") && !proof.name?.endsWith("_evm")) {
2059
2068
  const facematchCommittedInputs = proof.committedInputs?.facematch;
2060
2069
  const paramCommittment = (0, import_utils.getParameterCommitmentFromDisclosureProof)(proofData);
2061
2070
  const calculatedParamCommitment = await (0, import_utils.getFacematchParameterCommitment)(
2062
2071
  BigInt(facematchCommittedInputs.rootKeyLeaf),
2063
2072
  facematchCommittedInputs.environment === "development" ? 0n : 1n,
2064
2073
  BigInt(facematchCommittedInputs.appId),
2065
- // TODO: Uncomment this when the facematch mode is properly supported
2066
- // facematchCommittedInputs.mode === "regular" ? 1n : 2n,
2067
- 1n
2074
+ facematchCommittedInputs.mode === "regular" ? 1n : 2n
2068
2075
  );
2069
2076
  if (paramCommittment !== calculatedParamCommitment) {
2070
2077
  console.warn("The FaceMatch verification does not match the ones from the proof");
@@ -2148,19 +2155,12 @@ var ZKPassportVerifier_default = {
2148
2155
  name: "enforceSanctionsRoot",
2149
2156
  inputs: [
2150
2157
  {
2151
- name: "params",
2158
+ name: "commitments",
2152
2159
  type: "tuple",
2153
- internalType: "struct ProofVerificationParams",
2160
+ internalType: "struct Commitments",
2154
2161
  components: [
2155
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2156
- { name: "proof", type: "bytes", internalType: "bytes" },
2157
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2158
2162
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2159
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2160
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2161
- { name: "domain", type: "string", internalType: "string" },
2162
- { name: "scope", type: "string", internalType: "string" },
2163
- { name: "devMode", type: "bool", internalType: "bool" }
2163
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2164
2164
  ]
2165
2165
  }
2166
2166
  ],
@@ -2172,19 +2172,12 @@ var ZKPassportVerifier_default = {
2172
2172
  name: "getBoundData",
2173
2173
  inputs: [
2174
2174
  {
2175
- name: "params",
2175
+ name: "commitments",
2176
2176
  type: "tuple",
2177
- internalType: "struct ProofVerificationParams",
2177
+ internalType: "struct Commitments",
2178
2178
  components: [
2179
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2180
- { name: "proof", type: "bytes", internalType: "bytes" },
2181
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2182
2179
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2183
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2184
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2185
- { name: "domain", type: "string", internalType: "string" },
2186
- { name: "scope", type: "string", internalType: "string" },
2187
- { name: "devMode", type: "bool", internalType: "bool" }
2180
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2188
2181
  ]
2189
2182
  }
2190
2183
  ],
@@ -2207,19 +2200,12 @@ var ZKPassportVerifier_default = {
2207
2200
  name: "getDisclosedData",
2208
2201
  inputs: [
2209
2202
  {
2210
- name: "params",
2203
+ name: "commitments",
2211
2204
  type: "tuple",
2212
- internalType: "struct ProofVerificationParams",
2205
+ internalType: "struct Commitments",
2213
2206
  components: [
2214
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2215
- { name: "proof", type: "bytes", internalType: "bytes" },
2216
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2217
2207
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2218
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2219
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2220
- { name: "domain", type: "string", internalType: "string" },
2221
- { name: "scope", type: "string", internalType: "string" },
2222
- { name: "devMode", type: "bool", internalType: "bool" }
2208
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2223
2209
  ]
2224
2210
  },
2225
2211
  { name: "isIDCard", type: "bool", internalType: "bool" }
@@ -2249,15 +2235,19 @@ var ZKPassportVerifier_default = {
2249
2235
  inputs: [
2250
2236
  { name: "minAge", type: "uint8", internalType: "uint8" },
2251
2237
  {
2252
- name: "params",
2238
+ name: "commitments",
2253
2239
  type: "tuple",
2254
- internalType: "struct ProofVerificationParams",
2240
+ internalType: "struct Commitments",
2255
2241
  components: [
2256
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2257
- { name: "proof", type: "bytes", internalType: "bytes" },
2258
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2259
2242
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2260
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2243
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2244
+ ]
2245
+ },
2246
+ {
2247
+ name: "serviceConfig",
2248
+ type: "tuple",
2249
+ internalType: "struct ServiceConfig",
2250
+ components: [
2261
2251
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2262
2252
  { name: "domain", type: "string", internalType: "string" },
2263
2253
  { name: "scope", type: "string", internalType: "string" },
@@ -2274,15 +2264,19 @@ var ZKPassportVerifier_default = {
2274
2264
  inputs: [
2275
2265
  { name: "minAge", type: "uint8", internalType: "uint8" },
2276
2266
  {
2277
- name: "params",
2267
+ name: "commitments",
2278
2268
  type: "tuple",
2279
- internalType: "struct ProofVerificationParams",
2269
+ internalType: "struct Commitments",
2280
2270
  components: [
2281
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2282
- { name: "proof", type: "bytes", internalType: "bytes" },
2283
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2284
2271
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2285
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2272
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2273
+ ]
2274
+ },
2275
+ {
2276
+ name: "serviceConfig",
2277
+ type: "tuple",
2278
+ internalType: "struct ServiceConfig",
2279
+ components: [
2286
2280
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2287
2281
  { name: "domain", type: "string", internalType: "string" },
2288
2282
  { name: "scope", type: "string", internalType: "string" },
@@ -2299,15 +2293,19 @@ var ZKPassportVerifier_default = {
2299
2293
  inputs: [
2300
2294
  { name: "maxAge", type: "uint8", internalType: "uint8" },
2301
2295
  {
2302
- name: "params",
2296
+ name: "commitments",
2303
2297
  type: "tuple",
2304
- internalType: "struct ProofVerificationParams",
2298
+ internalType: "struct Commitments",
2305
2299
  components: [
2306
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2307
- { name: "proof", type: "bytes", internalType: "bytes" },
2308
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2309
2300
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2310
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2301
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2302
+ ]
2303
+ },
2304
+ {
2305
+ name: "serviceConfig",
2306
+ type: "tuple",
2307
+ internalType: "struct ServiceConfig",
2308
+ components: [
2311
2309
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2312
2310
  { name: "domain", type: "string", internalType: "string" },
2313
2311
  { name: "scope", type: "string", internalType: "string" },
@@ -2324,15 +2322,19 @@ var ZKPassportVerifier_default = {
2324
2322
  inputs: [
2325
2323
  { name: "maxAge", type: "uint8", internalType: "uint8" },
2326
2324
  {
2327
- name: "params",
2325
+ name: "commitments",
2328
2326
  type: "tuple",
2329
- internalType: "struct ProofVerificationParams",
2327
+ internalType: "struct Commitments",
2330
2328
  components: [
2331
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2332
- { name: "proof", type: "bytes", internalType: "bytes" },
2333
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2334
2329
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2335
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2330
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2331
+ ]
2332
+ },
2333
+ {
2334
+ name: "serviceConfig",
2335
+ type: "tuple",
2336
+ internalType: "struct ServiceConfig",
2337
+ components: [
2336
2338
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2337
2339
  { name: "domain", type: "string", internalType: "string" },
2338
2340
  { name: "scope", type: "string", internalType: "string" },
@@ -2350,15 +2352,19 @@ var ZKPassportVerifier_default = {
2350
2352
  { name: "minAge", type: "uint8", internalType: "uint8" },
2351
2353
  { name: "maxAge", type: "uint8", internalType: "uint8" },
2352
2354
  {
2353
- name: "params",
2355
+ name: "commitments",
2354
2356
  type: "tuple",
2355
- internalType: "struct ProofVerificationParams",
2357
+ internalType: "struct Commitments",
2356
2358
  components: [
2357
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2358
- { name: "proof", type: "bytes", internalType: "bytes" },
2359
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2360
2359
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2361
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2360
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2361
+ ]
2362
+ },
2363
+ {
2364
+ name: "serviceConfig",
2365
+ type: "tuple",
2366
+ internalType: "struct ServiceConfig",
2367
+ components: [
2362
2368
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2363
2369
  { name: "domain", type: "string", internalType: "string" },
2364
2370
  { name: "scope", type: "string", internalType: "string" },
@@ -2375,15 +2381,19 @@ var ZKPassportVerifier_default = {
2375
2381
  inputs: [
2376
2382
  { name: "age", type: "uint8", internalType: "uint8" },
2377
2383
  {
2378
- name: "params",
2384
+ name: "commitments",
2379
2385
  type: "tuple",
2380
- internalType: "struct ProofVerificationParams",
2386
+ internalType: "struct Commitments",
2381
2387
  components: [
2382
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2383
- { name: "proof", type: "bytes", internalType: "bytes" },
2384
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2385
2388
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2386
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2389
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2390
+ ]
2391
+ },
2392
+ {
2393
+ name: "serviceConfig",
2394
+ type: "tuple",
2395
+ internalType: "struct ServiceConfig",
2396
+ components: [
2387
2397
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2388
2398
  { name: "domain", type: "string", internalType: "string" },
2389
2399
  { name: "scope", type: "string", internalType: "string" },
@@ -2400,15 +2410,19 @@ var ZKPassportVerifier_default = {
2400
2410
  inputs: [
2401
2411
  { name: "minDate", type: "uint256", internalType: "uint256" },
2402
2412
  {
2403
- name: "params",
2413
+ name: "commitments",
2404
2414
  type: "tuple",
2405
- internalType: "struct ProofVerificationParams",
2415
+ internalType: "struct Commitments",
2406
2416
  components: [
2407
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2408
- { name: "proof", type: "bytes", internalType: "bytes" },
2409
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2410
2417
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2411
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2418
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2419
+ ]
2420
+ },
2421
+ {
2422
+ name: "serviceConfig",
2423
+ type: "tuple",
2424
+ internalType: "struct ServiceConfig",
2425
+ components: [
2412
2426
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2413
2427
  { name: "domain", type: "string", internalType: "string" },
2414
2428
  { name: "scope", type: "string", internalType: "string" },
@@ -2425,15 +2439,19 @@ var ZKPassportVerifier_default = {
2425
2439
  inputs: [
2426
2440
  { name: "minDate", type: "uint256", internalType: "uint256" },
2427
2441
  {
2428
- name: "params",
2442
+ name: "commitments",
2429
2443
  type: "tuple",
2430
- internalType: "struct ProofVerificationParams",
2444
+ internalType: "struct Commitments",
2431
2445
  components: [
2432
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2433
- { name: "proof", type: "bytes", internalType: "bytes" },
2434
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2435
2446
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2436
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2447
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2448
+ ]
2449
+ },
2450
+ {
2451
+ name: "serviceConfig",
2452
+ type: "tuple",
2453
+ internalType: "struct ServiceConfig",
2454
+ components: [
2437
2455
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2438
2456
  { name: "domain", type: "string", internalType: "string" },
2439
2457
  { name: "scope", type: "string", internalType: "string" },
@@ -2450,15 +2468,19 @@ var ZKPassportVerifier_default = {
2450
2468
  inputs: [
2451
2469
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2452
2470
  {
2453
- name: "params",
2471
+ name: "commitments",
2454
2472
  type: "tuple",
2455
- internalType: "struct ProofVerificationParams",
2473
+ internalType: "struct Commitments",
2456
2474
  components: [
2457
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2458
- { name: "proof", type: "bytes", internalType: "bytes" },
2459
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2460
2475
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2461
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2476
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2477
+ ]
2478
+ },
2479
+ {
2480
+ name: "serviceConfig",
2481
+ type: "tuple",
2482
+ internalType: "struct ServiceConfig",
2483
+ components: [
2462
2484
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2463
2485
  { name: "domain", type: "string", internalType: "string" },
2464
2486
  { name: "scope", type: "string", internalType: "string" },
@@ -2475,15 +2497,19 @@ var ZKPassportVerifier_default = {
2475
2497
  inputs: [
2476
2498
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2477
2499
  {
2478
- name: "params",
2500
+ name: "commitments",
2479
2501
  type: "tuple",
2480
- internalType: "struct ProofVerificationParams",
2502
+ internalType: "struct Commitments",
2481
2503
  components: [
2482
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2483
- { name: "proof", type: "bytes", internalType: "bytes" },
2484
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2485
2504
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2486
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2505
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2506
+ ]
2507
+ },
2508
+ {
2509
+ name: "serviceConfig",
2510
+ type: "tuple",
2511
+ internalType: "struct ServiceConfig",
2512
+ components: [
2487
2513
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2488
2514
  { name: "domain", type: "string", internalType: "string" },
2489
2515
  { name: "scope", type: "string", internalType: "string" },
@@ -2501,15 +2527,19 @@ var ZKPassportVerifier_default = {
2501
2527
  { name: "minDate", type: "uint256", internalType: "uint256" },
2502
2528
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2503
2529
  {
2504
- name: "params",
2530
+ name: "commitments",
2505
2531
  type: "tuple",
2506
- internalType: "struct ProofVerificationParams",
2532
+ internalType: "struct Commitments",
2507
2533
  components: [
2508
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2509
- { name: "proof", type: "bytes", internalType: "bytes" },
2510
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2511
2534
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2512
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2535
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2536
+ ]
2537
+ },
2538
+ {
2539
+ name: "serviceConfig",
2540
+ type: "tuple",
2541
+ internalType: "struct ServiceConfig",
2542
+ components: [
2513
2543
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2514
2544
  { name: "domain", type: "string", internalType: "string" },
2515
2545
  { name: "scope", type: "string", internalType: "string" },
@@ -2526,15 +2556,19 @@ var ZKPassportVerifier_default = {
2526
2556
  inputs: [
2527
2557
  { name: "date", type: "uint256", internalType: "uint256" },
2528
2558
  {
2529
- name: "params",
2559
+ name: "commitments",
2530
2560
  type: "tuple",
2531
- internalType: "struct ProofVerificationParams",
2561
+ internalType: "struct Commitments",
2532
2562
  components: [
2533
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2534
- { name: "proof", type: "bytes", internalType: "bytes" },
2535
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2536
2563
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2537
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2564
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2565
+ ]
2566
+ },
2567
+ {
2568
+ name: "serviceConfig",
2569
+ type: "tuple",
2570
+ internalType: "struct ServiceConfig",
2571
+ components: [
2538
2572
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2539
2573
  { name: "domain", type: "string", internalType: "string" },
2540
2574
  { name: "scope", type: "string", internalType: "string" },
@@ -2551,15 +2585,19 @@ var ZKPassportVerifier_default = {
2551
2585
  inputs: [
2552
2586
  { name: "minDate", type: "uint256", internalType: "uint256" },
2553
2587
  {
2554
- name: "params",
2588
+ name: "commitments",
2555
2589
  type: "tuple",
2556
- internalType: "struct ProofVerificationParams",
2590
+ internalType: "struct Commitments",
2557
2591
  components: [
2558
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2559
- { name: "proof", type: "bytes", internalType: "bytes" },
2560
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2561
2592
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2562
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2593
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2594
+ ]
2595
+ },
2596
+ {
2597
+ name: "serviceConfig",
2598
+ type: "tuple",
2599
+ internalType: "struct ServiceConfig",
2600
+ components: [
2563
2601
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2564
2602
  { name: "domain", type: "string", internalType: "string" },
2565
2603
  { name: "scope", type: "string", internalType: "string" },
@@ -2576,15 +2614,19 @@ var ZKPassportVerifier_default = {
2576
2614
  inputs: [
2577
2615
  { name: "minDate", type: "uint256", internalType: "uint256" },
2578
2616
  {
2579
- name: "params",
2617
+ name: "commitments",
2580
2618
  type: "tuple",
2581
- internalType: "struct ProofVerificationParams",
2619
+ internalType: "struct Commitments",
2582
2620
  components: [
2583
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2584
- { name: "proof", type: "bytes", internalType: "bytes" },
2585
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2586
2621
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2587
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2622
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2623
+ ]
2624
+ },
2625
+ {
2626
+ name: "serviceConfig",
2627
+ type: "tuple",
2628
+ internalType: "struct ServiceConfig",
2629
+ components: [
2588
2630
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2589
2631
  { name: "domain", type: "string", internalType: "string" },
2590
2632
  { name: "scope", type: "string", internalType: "string" },
@@ -2601,15 +2643,19 @@ var ZKPassportVerifier_default = {
2601
2643
  inputs: [
2602
2644
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2603
2645
  {
2604
- name: "params",
2646
+ name: "commitments",
2605
2647
  type: "tuple",
2606
- internalType: "struct ProofVerificationParams",
2648
+ internalType: "struct Commitments",
2607
2649
  components: [
2608
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2609
- { name: "proof", type: "bytes", internalType: "bytes" },
2610
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2611
2650
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2612
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2651
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2652
+ ]
2653
+ },
2654
+ {
2655
+ name: "serviceConfig",
2656
+ type: "tuple",
2657
+ internalType: "struct ServiceConfig",
2658
+ components: [
2613
2659
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2614
2660
  { name: "domain", type: "string", internalType: "string" },
2615
2661
  { name: "scope", type: "string", internalType: "string" },
@@ -2626,15 +2672,19 @@ var ZKPassportVerifier_default = {
2626
2672
  inputs: [
2627
2673
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2628
2674
  {
2629
- name: "params",
2675
+ name: "commitments",
2630
2676
  type: "tuple",
2631
- internalType: "struct ProofVerificationParams",
2677
+ internalType: "struct Commitments",
2632
2678
  components: [
2633
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2634
- { name: "proof", type: "bytes", internalType: "bytes" },
2635
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2636
2679
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2637
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2680
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2681
+ ]
2682
+ },
2683
+ {
2684
+ name: "serviceConfig",
2685
+ type: "tuple",
2686
+ internalType: "struct ServiceConfig",
2687
+ components: [
2638
2688
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2639
2689
  { name: "domain", type: "string", internalType: "string" },
2640
2690
  { name: "scope", type: "string", internalType: "string" },
@@ -2652,15 +2702,19 @@ var ZKPassportVerifier_default = {
2652
2702
  { name: "minDate", type: "uint256", internalType: "uint256" },
2653
2703
  { name: "maxDate", type: "uint256", internalType: "uint256" },
2654
2704
  {
2655
- name: "params",
2705
+ name: "commitments",
2656
2706
  type: "tuple",
2657
- internalType: "struct ProofVerificationParams",
2707
+ internalType: "struct Commitments",
2658
2708
  components: [
2659
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2660
- { name: "proof", type: "bytes", internalType: "bytes" },
2661
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2662
2709
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2663
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2710
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2711
+ ]
2712
+ },
2713
+ {
2714
+ name: "serviceConfig",
2715
+ type: "tuple",
2716
+ internalType: "struct ServiceConfig",
2717
+ components: [
2664
2718
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2665
2719
  { name: "domain", type: "string", internalType: "string" },
2666
2720
  { name: "scope", type: "string", internalType: "string" },
@@ -2677,15 +2731,19 @@ var ZKPassportVerifier_default = {
2677
2731
  inputs: [
2678
2732
  { name: "date", type: "uint256", internalType: "uint256" },
2679
2733
  {
2680
- name: "params",
2734
+ name: "commitments",
2681
2735
  type: "tuple",
2682
- internalType: "struct ProofVerificationParams",
2736
+ internalType: "struct Commitments",
2683
2737
  components: [
2684
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2685
- { name: "proof", type: "bytes", internalType: "bytes" },
2686
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2687
2738
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2688
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2739
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2740
+ ]
2741
+ },
2742
+ {
2743
+ name: "serviceConfig",
2744
+ type: "tuple",
2745
+ internalType: "struct ServiceConfig",
2746
+ components: [
2689
2747
  { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2690
2748
  { name: "domain", type: "string", internalType: "string" },
2691
2749
  { name: "scope", type: "string", internalType: "string" },
@@ -2701,20 +2759,14 @@ var ZKPassportVerifier_default = {
2701
2759
  name: "isFaceMatchVerified",
2702
2760
  inputs: [
2703
2761
  { name: "faceMatchMode", type: "uint8", internalType: "enum FaceMatchMode" },
2762
+ { name: "os", type: "uint8", internalType: "enum OS" },
2704
2763
  {
2705
- name: "params",
2764
+ name: "commitments",
2706
2765
  type: "tuple",
2707
- internalType: "struct ProofVerificationParams",
2766
+ internalType: "struct Commitments",
2708
2767
  components: [
2709
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2710
- { name: "proof", type: "bytes", internalType: "bytes" },
2711
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2712
2768
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2713
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2714
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2715
- { name: "domain", type: "string", internalType: "string" },
2716
- { name: "scope", type: "string", internalType: "string" },
2717
- { name: "devMode", type: "bool", internalType: "bool" }
2769
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2718
2770
  ]
2719
2771
  }
2720
2772
  ],
@@ -2727,19 +2779,12 @@ var ZKPassportVerifier_default = {
2727
2779
  inputs: [
2728
2780
  { name: "countryList", type: "string[]", internalType: "string[]" },
2729
2781
  {
2730
- name: "params",
2782
+ name: "commitments",
2731
2783
  type: "tuple",
2732
- internalType: "struct ProofVerificationParams",
2784
+ internalType: "struct Commitments",
2733
2785
  components: [
2734
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2735
- { name: "proof", type: "bytes", internalType: "bytes" },
2736
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2737
2786
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2738
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2739
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2740
- { name: "domain", type: "string", internalType: "string" },
2741
- { name: "scope", type: "string", internalType: "string" },
2742
- { name: "devMode", type: "bool", internalType: "bool" }
2787
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2743
2788
  ]
2744
2789
  }
2745
2790
  ],
@@ -2752,19 +2797,12 @@ var ZKPassportVerifier_default = {
2752
2797
  inputs: [
2753
2798
  { name: "countryList", type: "string[]", internalType: "string[]" },
2754
2799
  {
2755
- name: "params",
2800
+ name: "commitments",
2756
2801
  type: "tuple",
2757
- internalType: "struct ProofVerificationParams",
2802
+ internalType: "struct Commitments",
2758
2803
  components: [
2759
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2760
- { name: "proof", type: "bytes", internalType: "bytes" },
2761
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2762
2804
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2763
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2764
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2765
- { name: "domain", type: "string", internalType: "string" },
2766
- { name: "scope", type: "string", internalType: "string" },
2767
- { name: "devMode", type: "bool", internalType: "bool" }
2805
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2768
2806
  ]
2769
2807
  }
2770
2808
  ],
@@ -2777,19 +2815,12 @@ var ZKPassportVerifier_default = {
2777
2815
  inputs: [
2778
2816
  { name: "countryList", type: "string[]", internalType: "string[]" },
2779
2817
  {
2780
- name: "params",
2818
+ name: "commitments",
2781
2819
  type: "tuple",
2782
- internalType: "struct ProofVerificationParams",
2820
+ internalType: "struct Commitments",
2783
2821
  components: [
2784
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2785
- { name: "proof", type: "bytes", internalType: "bytes" },
2786
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2787
2822
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2788
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2789
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2790
- { name: "domain", type: "string", internalType: "string" },
2791
- { name: "scope", type: "string", internalType: "string" },
2792
- { name: "devMode", type: "bool", internalType: "bool" }
2823
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2793
2824
  ]
2794
2825
  }
2795
2826
  ],
@@ -2802,19 +2833,12 @@ var ZKPassportVerifier_default = {
2802
2833
  inputs: [
2803
2834
  { name: "countryList", type: "string[]", internalType: "string[]" },
2804
2835
  {
2805
- name: "params",
2836
+ name: "commitments",
2806
2837
  type: "tuple",
2807
- internalType: "struct ProofVerificationParams",
2838
+ internalType: "struct Commitments",
2808
2839
  components: [
2809
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2810
- { name: "proof", type: "bytes", internalType: "bytes" },
2811
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2812
2840
  { name: "committedInputs", type: "bytes", internalType: "bytes" },
2813
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2814
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2815
- { name: "domain", type: "string", internalType: "string" },
2816
- { name: "scope", type: "string", internalType: "string" },
2817
- { name: "devMode", type: "bool", internalType: "bool" }
2841
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2818
2842
  ]
2819
2843
  }
2820
2844
  ],
@@ -2872,15 +2896,36 @@ var ZKPassportVerifier_default = {
2872
2896
  type: "tuple",
2873
2897
  internalType: "struct ProofVerificationParams",
2874
2898
  components: [
2875
- { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2876
- { name: "proof", type: "bytes", internalType: "bytes" },
2877
- { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" },
2878
- { name: "committedInputs", type: "bytes", internalType: "bytes" },
2879
- { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" },
2880
- { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2881
- { name: "domain", type: "string", internalType: "string" },
2882
- { name: "scope", type: "string", internalType: "string" },
2883
- { name: "devMode", type: "bool", internalType: "bool" }
2899
+ {
2900
+ name: "proofVerificationData",
2901
+ type: "tuple",
2902
+ internalType: "struct ProofVerificationData",
2903
+ components: [
2904
+ { name: "vkeyHash", type: "bytes32", internalType: "bytes32" },
2905
+ { name: "proof", type: "bytes", internalType: "bytes" },
2906
+ { name: "publicInputs", type: "bytes32[]", internalType: "bytes32[]" }
2907
+ ]
2908
+ },
2909
+ {
2910
+ name: "commitments",
2911
+ type: "tuple",
2912
+ internalType: "struct Commitments",
2913
+ components: [
2914
+ { name: "committedInputs", type: "bytes", internalType: "bytes" },
2915
+ { name: "committedInputCounts", type: "uint256[]", internalType: "uint256[]" }
2916
+ ]
2917
+ },
2918
+ {
2919
+ name: "serviceConfig",
2920
+ type: "tuple",
2921
+ internalType: "struct ServiceConfig",
2922
+ components: [
2923
+ { name: "validityPeriodInSeconds", type: "uint256", internalType: "uint256" },
2924
+ { name: "domain", type: "string", internalType: "string" },
2925
+ { name: "scope", type: "string", internalType: "string" },
2926
+ { name: "devMode", type: "bool", internalType: "bool" }
2927
+ ]
2928
+ }
2884
2929
  ]
2885
2930
  }
2886
2931
  ],
@@ -2990,47 +3035,47 @@ var ZKPassportVerifier_default = {
2990
3035
  }
2991
3036
  ],
2992
3037
  bytecode: {
2993
- object: "0x608060405234801561000f575f5ffd5b50604051613ab3380380613ab383398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b613983806101305f395ff3fe608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e3541461053e578063e718bc3214610551578063ec46f77414610564578063f851a44014610577578063f87e19b114610589575f5ffd5b8063c4560786146104c8578063cfd9464a146104db578063d3f6ffff146104ee578063d7bf616a14610501578063deb7c0591461052b575f5ffd5b8063a88f1cef116100fa578063a88f1cef14610469578063aa1346ea1461047c578063b96b161c1461048f578063bf73c26c146104a2578063c0940ebd146104b5575f5ffd5b80638163f231146103dd578063847755e31461041d5780638d6937b814610430578063921076c714610443578063a6df2c0114610456575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610394578063653cfd811461039c5780636c40d5d6146103af578063704876d6146103b757806375829def146103ca575f5ffd5b80634c1274281461032857806354dbe4d11461033b57806359545f451461034e5780635c975abb1461036e57806362067c8214610381575f5ffd5b80632e27242c116102075780632e27242c146102c657806337889655146102d95780633a86bd3d146102ec57806341a0e2c2146102ff57806346bd0a1614610315575f5ffd5b806304951b86146102435780630b90581b1461026b57806316c38b3c1461027e57806318677f2a146102935780631e26a9dc146102a6575b5f5ffd5b610256610251366004612987565b61059c565b60405190151581526020015b60405180910390f35b610256610279366004612987565b6105be565b61029161028c3660046129d7565b6105cc565b005b6102916102a1366004612a06565b610655565b6102b96102b4366004612a21565b610702565b6040516102629190612a9d565b6102566102d4366004612ba1565b610865565b6102566102e7366004612be5565b6109b7565b6102566102fa366004612cb6565b6109cc565b610307600181565b604051908152602001610262565b610256610323366004612dbe565b6109d9565b610256610336366004612987565b6109f1565b610256610349366004612be5565b6109fe565b61036161035c366004612e09565b610b4f565b6040516102629190612e3a565b5f5461025690600160a01b900460ff1681565b61025661038f366004612e70565b610c95565b610307600381565b6102916103aa366004612e09565b610f06565b610307600281565b6102566103c5366004612987565b610fa8565b6102916103d8366004612a06565b610fb5565b6104056103eb366004612eb7565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b61025661042b366004612f52565b611083565b61029161043e366004612fee565b61124b565b610256610451366004612987565b61130b565b61029161046436600461302c565b611324565b610256610477366004612987565b61144e565b61025661048a366004612be5565b611467565b600254610405906001600160a01b031681565b6102566104b0366004612be5565b6115b8565b6102566104c3366004612be5565b61161f565b6102566104d6366004612dbe565b61162b565b6102566104e9366004612987565b611639565b6102566104fc366004612987565b611647565b61051461050f366004612e09565b611660565b604080519215158352602083019190915201610262565b610256610539366004612987565b611bda565b61025661054c366004612cb6565b611be7565b61025661055f366004612987565b611bf4565b610256610572366004612cb6565b611c01565b5f54610405906001600160a01b031681565b610256610597366004612cb6565b611c0e565b5f6105b56105ad84620151806130aa565b600284611c1b565b90505b92915050565b5f6105b58384600285611e76565b5f546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105f5906130bd565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061064a90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461067e5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166106e05760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105f5565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61074a60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec961077260608701876130f4565b61077f6080890189613136565b6040518563ffffffff1660e01b815260040161079e94939291906131d3565b5f60405180830381865af41580156107b8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107df9190810190613248565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae9061081c90849087906004016132a1565b5f60405180830381865af4158015610836573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261085d91908101906132c4565b949350505050565b5f8080808073__$144f4fe859debe4776cdef2b99f7b97a42$__63c802bad161089160608901896130f4565b61089e60808b018b613136565b6040518563ffffffff1660e01b81526004016108bd94939291906131d3565b608060405180830381865af41580156108d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fc9190613455565b929650909450925090505f600184600181111561091b5761091b6134a1565b1490505f886002811115610931576109316134a1565b836002811115610943576109436134a1565b1490507f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b86147f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b85148380156109965750825b801561099f5750815b80156109a85750805b9b9a5050505050505050505050565b5f6105b56109c68460016134b5565b836109fe565b5f6105b5836007846121b4565b5f6109e78484600385611e76565b90505b9392505050565b5f6105b583600384611c1b565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610a2960608801886130f4565b610a3660808a018a613136565b6040518563ffffffff1660e01b8152600401610a5594939291906131d3565b606060405180830381865af4158015610a70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9491906134ce565b925092509250610aa8838660a001356122de565b610ac45760405162461bcd60e51b81526004016105f59061350f565b60ff811615610b3d576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610b9260608601866130f4565b610b9f6080880188613136565b6040518563ffffffff1660e01b8152600401610bbe94939291906131d3565b5f60405180830381865af4158015610bd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bff9190810190613580565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610c399084906004016135b1565b5f60405180830381865af4158015610c53573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c7a91908101906135c3565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610cc060608801886130f4565b610ccd60808a018a613136565b6040518563ffffffff1660e01b8152600401610cec94939291906131d3565b606060405180830381865af4158015610d07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b91906134ce565b925092509250610d3f838660a001356122de565b610d5b5760405162461bcd60e51b81526004016105f59061350f565b8560ff168760ff161115610dc75760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105f5565b8160ff165f03610e545760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8060ff165f03610ee15760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8160ff168760ff16148015610efb57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610f2e60608501856130f4565b610f3b6080870187613136565b6040518563ffffffff1660e01b8152600401610f5a94939291906131d3565b602060405180830381865af4158015610f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f99919061360e565b9050610fa48161230b565b5050565b5f6105b583600284611c1b565b5f546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105f5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f6110c386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b61113d576008600287876040516020016110de929190613625565b60408051601f19818403018152908290526110f891613634565b602060405180830381855afa158015611113573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611136919061360e565b901c61113f565b5f5b90505f61118085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b6111fa5760086002868660405160200161119b929190613625565b60408051601f19818403018152908290526111b591613634565b602060405180830381855afa1580156111d0573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906111f3919061360e565b901c6111fc565b5f5b905081898960038181106112125761121261364a565b9050602002013514801561123e575080898960048181106112355761123561364a565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146112745760405162461bcd60e51b81526004016105f5906130bd565b5f5b818110156113065760015f8484848181106112935761129361364a565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106112cb576112cb61364a565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611276565b505050565b5f6105b561131c620151808561365e565b6002846123d1565b5f546001600160a01b0316331461134d5760405162461bcd60e51b81526004016105f5906130bd565b5f5b83811015611447578282828181106113695761136961364a565b905060200201602081019061137e9190612a06565b60015f8787858181106113935761139361364a565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106113dc576113dc61364a565b90506020020160208101906113f19190612a06565b6001600160a01b031685858381811061140c5761140c61364a565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a360010161134f565b5050505050565b5f6105b561145f620151808561365e565b6003846123d1565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c61149260608801886130f4565b61149f60808a018a613136565b6040518563ffffffff1660e01b81526004016114be94939291906131d3565b606060405180830381865af41580156114d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fd91906134ce565b925092509250611511838660a001356122de565b61152d5760405162461bcd60e51b81526004016105f59061350f565b60ff8216156115a6576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b60ff8681169116149250505092915050565b5f5f8360ff161161160b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105f5565b6105b5611619600185613671565b83611467565b5f6105b5838484610c95565b5f6109e78484600285611e76565b5f6105b58384600385611e76565b5f6105b561165884620151806130aa565b600384611c1b565b5f80548190600160a01b900460ff16156116b15760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105f5565b5f6116bc84356125d5565b90506116ea6116ce6040860186613136565b5f8181106116de576116de61364a565b9050602002013561262e565b6117176116fa6040860186613136565b600181811061170b5761170b61364a565b905060200201356126f6565b6117616117276040860186613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08601356127b4565b6117c95760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105f5565b6117f36117d96040860186613136565b6117e660c08801886130f4565b61042b60e08a018a6130f4565b61183f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105f5565b6118fa61184f6040860186613136565b600590600161186160408a018a613136565b61186c92915061365e565b926118799392919061368a565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506118b79250505060608701876130f4565b6118c46080890189613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506127df92505050565b5f6119086040860186613136565b60026119176040890189613136565b61192292915061365e565b8181106119315761193161364a565b905060200201355f1c600381111561194b5761194b6134a1565b90506002816003811115611961576119616134a1565b141580156119815750600381600381111561197e5761197e6134a1565b14155b806119995750611999610120860161010087016129d7565b6119f65760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105f5565b5f816003811115611a0957611a096134a1565b1480611a225750611a22610120860161010087016129d7565b611a825760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016105f5565b6007611a916040870187613136565b611a9c92915061365e565b611aa96080870187613136565b905014611b065760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105f5565b6001600160a01b03821663ea50d0e4611b2260208801886130f4565b611b2f60408a018a613136565b6040518563ffffffff1660e01b8152600401611b4e94939291906131d3565b602060405180830381865afa158015611b69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8d91906136b5565b93505f6001611b9f6040880188613136565b611baa92915061365e565b9050611bb96040870187613136565b82818110611bc957611bc961364a565b905060200201359350505050915091565b5f6105b5836002846123d1565b5f6105b5836005846121b4565b5f6105b5836003846123d1565b5f6105b5836006846121b4565b5f6105b5836004846121b4565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c4660608801886130f4565b611c5360808a018a613136565b8b6040518663ffffffff1660e01b8152600401611c749594939291906136d0565b606060405180830381865af4158015611c8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190613725565b925092509250611cc7838660a001356122de565b611ce35760405162461bcd60e51b81526004016105f59061350f565b600286600a811115611cf757611cf76134a1565b1480611d145750600386600a811115611d1257611d126134a1565b145b611d305760405162461bcd60e51b81526004016105f590613750565b600286600a811115611d4457611d446134a1565b03611de6578015611dcc5760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105f5565b611dda6383aa7e808361365e565b871493505050506109ea565b8015611e6a5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105f5565b50851491506109ea9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611ea160608801886130f4565b611eae60808a018a613136565b8b6040518663ffffffff1660e01b8152600401611ecf9594939291906136d0565b606060405180830381865af4158015611eea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0e9190613725565b925092509250611f22838660a001356122de565b611f3e5760405162461bcd60e51b81526004016105f59061350f565b86881115611fa65760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105f5565b600286600a811115611fba57611fba6134a1565b1480611fd75750600386600a811115611fd557611fd56134a1565b145b611ff35760405162461bcd60e51b81526004016105f590613750565b600286600a811115612007576120076134a1565b036120ed57815f0361209c5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105f5565b805f036120bb5760405162461bcd60e51b81526004016105f59061377c565b6120c96383aa7e808361365e565b881480156120e357506120e06383aa7e808261365e565b87145b935050505061085d565b815f0361217e5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105f5565b805f0361219d5760405162461bcd60e51b81526004016105f5906137f4565b81881480156120e357509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca06121de60608701876130f4565b6121eb6080890189613136565b8a6040518663ffffffff1660e01b815260040161220c9594939291906136d0565b5f60405180830381865af4158015612226573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261224d919081019061386d565b9150915080865114612263575f925050506109ea565b5f5b818110156122d1576122ba8782815181106122825761228261364a565b602002602001015184838151811061229c5761229c61364a565b60200260200101518051602091820120825192909101919091201490565b6122c9575f93505050506109ea565b600101612265565b5060019695505050505050565b5f806122ea83856130aa565b90508342101580156122fb57508381115b801561085d575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237d91906136b5565b6123c95760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105f5565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926123fc60608801886130f4565b61240960808a018a613136565b8b6040518663ffffffff1660e01b815260040161242a9594939291906136d0565b606060405180830381865af4158015612445573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124699190613725565b92509250925061247d838660a001356122de565b6124995760405162461bcd60e51b81526004016105f59061350f565b81156125175760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105f5565b600286600a81111561252b5761252b6134a1565b14806125485750600386600a811115612546576125466134a1565b145b6125645760405162461bcd60e51b81526004016105f590613750565b600286600a811115612578576125786134a1565b036125aa57805f0361259c5760405162461bcd60e51b81526004016105f59061377c565b611dda6383aa7e808261365e565b805f036125c95760405162461bcd60e51b81526004016105f5906137f4565b861492506109ea915050565b5f818152600160205260408120546001600160a01b0316806105b85760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105f5565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561267c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a091906136b5565b6123c95760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105f5565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612744573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276891906136b5565b6123c95760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105f5565b5f5f836002815181106127c9576127c961364a565b60200260200101515f1c905061085d81846122de565b5f805b8251811015612920575f60086002878786908887815181106128065761280661364a565b60200260200101518861281991906130aa565b9261282693929190613926565b604051602001612837929190613625565b60408051601f198184030181529082905261285191613634565b602060405180830381855afa15801561286c573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061288f919061360e565b901c90508682815181106128a5576128a561364a565b602002602001015181146128f05760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105f5565b8382815181106129025761290261364a565b60200260200101518361291591906130aa565b9250506001016127e2565b508083146114475760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105f5565b5f6101208284031215612981575f5ffd5b50919050565b5f5f60408385031215612998575f5ffd5b8235915060208301356001600160401b038111156129b4575f5ffd5b6129c085828601612970565b9150509250929050565b80151581146123c9575f5ffd5b5f602082840312156129e7575f5ffd5b81356109ea816129ca565b6001600160a01b03811681146123c9575f5ffd5b5f60208284031215612a16575f5ffd5b81356109ea816129f2565b5f5f60408385031215612a32575f5ffd5b82356001600160401b03811115612a47575f5ffd5b612a5385828601612970565b9250506020830135612a64816129ca565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f82516101006020840152612aba610120840182612a6f565b90506020840151601f19848303016040850152612ad78282612a6f565b9150506040840151601f19848303016060850152612af58282612a6f565b9150506060840151601f19848303016080850152612b138282612a6f565b9150506080840151601f198483030160a0850152612b318282612a6f565b91505060a0840151601f198483030160c0850152612b4f8282612a6f565b91505060c0840151601f198483030160e0850152612b6d8282612a6f565b91505060e0840151601f1984830301610100850152612b8c8282612a6f565b95945050505050565b600381106123c9575f5ffd5b5f5f60408385031215612bb2575f5ffd5b8235612bbd81612b95565b915060208301356001600160401b038111156129b4575f5ffd5b60ff811681146123c9575f5ffd5b5f5f60408385031215612bf6575f5ffd5b8235612bbd81612bd7565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612c3857612c38612c01565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c6657612c66612c01565b604052919050565b5f6001600160401b03821115612c8657612c86612c01565b5060051b60200190565b5f6001600160401b03821115612ca857612ca8612c01565b50601f01601f191660200190565b5f5f60408385031215612cc7575f5ffd5b82356001600160401b03811115612cdc575f5ffd5b8301601f81018513612cec575f5ffd5b8035612cff612cfa82612c6e565b612c3e565b8082825260208201915060208360051b850101925087831115612d20575f5ffd5b602084015b83811015612da05780356001600160401b03811115612d42575f5ffd5b8501603f81018a13612d52575f5ffd5b6020810135612d63612cfa82612c90565b8181526040838301018c1015612d77575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612d25565b50945050505060208301356001600160401b038111156129b4575f5ffd5b5f5f5f60608486031215612dd0575f5ffd5b833592506020840135915060408401356001600160401b03811115612df3575f5ffd5b612dff86828701612970565b9150509250925092565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b61085d84828501612970565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261085d6080840182612a6f565b5f5f5f60608486031215612e82575f5ffd5b8335612e8d81612bd7565b92506020840135612e9d81612bd7565b915060408401356001600160401b03811115612df3575f5ffd5b5f60208284031215612ec7575f5ffd5b5035919050565b5f5f83601f840112612ede575f5ffd5b5081356001600160401b03811115612ef4575f5ffd5b6020830191508360208260051b8501011115612f0e575f5ffd5b9250929050565b5f5f83601f840112612f25575f5ffd5b5081356001600160401b03811115612f3b575f5ffd5b602083019150836020828501011115612f0e575f5ffd5b5f5f5f5f5f5f60608789031215612f67575f5ffd5b86356001600160401b03811115612f7c575f5ffd5b612f8889828a01612ece565b90975095505060208701356001600160401b03811115612fa6575f5ffd5b612fb289828a01612f15565b90955093505060408701356001600160401b03811115612fd0575f5ffd5b612fdc89828a01612f15565b979a9699509497509295939492505050565b5f5f60208385031215612fff575f5ffd5b82356001600160401b03811115613014575f5ffd5b61302085828601612ece565b90969095509350505050565b5f5f5f5f6040858703121561303f575f5ffd5b84356001600160401b03811115613054575f5ffd5b61306087828801612ece565b90955093505060208501356001600160401b0381111561307e575f5ffd5b61308a87828801612ece565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105b8576105b8613096565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112613109575f5ffd5b8301803591506001600160401b03821115613122575f5ffd5b602001915036819003821315612f0e575f5ffd5b5f5f8335601e1984360301811261314b575f5ffd5b8301803591506001600160401b03821115613164575f5ffd5b6020019150600581901b3603821315612f0e575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b038311156131ba575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f6131e660408301868861317b565b8281036020840152610efb8185876131a3565b5f82601f830112613208575f5ffd5b8151602083015f61321b612cfa84612c90565b905082815285838301111561322e575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215613259575f5ffd5b82516001600160401b0381111561326e575f5ffd5b61327a858286016131f9565b92505060208301516001600160401b03811115613295575f5ffd5b6129c0858286016131f9565b604081525f6132b36040830185612a6f565b905082151560208301529392505050565b5f602082840312156132d4575f5ffd5b81516001600160401b038111156132e9575f5ffd5b820161010081850312156132fb575f5ffd5b613303612c15565b81516001600160401b03811115613318575f5ffd5b613324868285016131f9565b82525060208201516001600160401b0381111561333f575f5ffd5b61334b868285016131f9565b60208301525060408201516001600160401b03811115613369575f5ffd5b613375868285016131f9565b60408301525060608201516001600160401b03811115613393575f5ffd5b61339f868285016131f9565b60608301525060808201516001600160401b038111156133bd575f5ffd5b6133c9868285016131f9565b60808301525060a08201516001600160401b038111156133e7575f5ffd5b6133f3868285016131f9565b60a08301525060c08201516001600160401b03811115613411575f5ffd5b61341d868285016131f9565b60c08301525060e08201516001600160401b0381111561343b575f5ffd5b613447868285016131f9565b60e083015250949350505050565b5f5f5f5f60808587031215613468575f5ffd5b845160208601519094506002811061347e575f5ffd5b60408601516060870151919450925061349681612b95565b939692955090935050565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156105b8576105b8613096565b5f5f5f606084860312156134e0575f5ffd5b835160208501519093506134f381612bd7565b604085015190925061350481612bd7565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f60208284031215613590575f5ffd5b81516001600160401b038111156135a5575f5ffd5b61085d848285016131f9565b602081525f6105b56020830184612a6f565b5f5f5f606084860312156135d5575f5ffd5b83516135e0816129f2565b6020850151604086015191945092506001600160401b03811115613602575f5ffd5b612dff868287016131f9565b5f6020828403121561361e575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b818103818111156105b8576105b8613096565b60ff82811682821603908111156105b8576105b8613096565b5f5f85851115613698575f5ffd5b838611156136a4575f5ffd5b5050600583901b0193919092039150565b5f602082840312156136c5575f5ffd5b81516109ea816129ca565b606081525f6136e360608301878961317b565b82810360208401526136f68186886131a3565b915050600b831061371557634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613737575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f6040838503121561387e575f5ffd5b82516001600160401b03811115613893575f5ffd5b8301601f810185136138a3575f5ffd5b80516138b1612cfa82612c6e565b8082825260208201915060208360051b8501019250878311156138d2575f5ffd5b602084015b838110156139125780516001600160401b038111156138f4575f5ffd5b6139038a6020838901016131f9565b845250602092830192016138d7565b506020969096015195979596505050505050565b5f5f85851115613934575f5ffd5b83861115613940575f5ffd5b505082019391909203915056fea2646970667358221220623aa0f5d6fd1ed4b32bdfd3907fb8b21b1ba73e0a28815b6397c145a04864b764736f6c634300081d0033",
2994
- sourceMap: "674:28697:26:-:0;;;1816:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1865:27:26;;1857:76;;;;-1:-1:-1;;;1857:76:26;;511:2:34;1857:76:26;;;493:21:34;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:34;;;633:34;684:19;;1857:76:26;;;;;;;;1939:5;:18;;1947:10;-1:-1:-1;;;;;;1939:18:26;;;;;;;;1963:12;:43;;;;;-1:-1:-1;;;;;1963:43:26;;;;;2017:50;;2051:15;860:25:34;;2017:50:26;;848:2:34;833:18;2017:50:26;;;;;;;1816:256;674:28697;;14:290:34;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:34;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:34:o;714:177::-;674:28697:26;;;;;;",
3038
+ object: "0x608060405234801561000f575f5ffd5b50604051613d70380380613d7083398101604081905261002e916100f6565b6001600160a01b0381166100945760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b606482015260840160405180910390fd5b5f8054336001600160a01b03199182168117909255600280549091166001600160a01b0384161790556040514281527ff29b53747ae7121d0958d490ad3d5cf6767119b0fdbd8389d918de3a12cf5a299060200160405180910390a250610123565b5f60208284031215610106575f5ffd5b81516001600160a01b038116811461011c575f5ffd5b9392505050565b613c40806101305f395ff3fe608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638b2ec61111610135578063c3fa6f22116100b4578063ddd8f8e311610079578063ddd8f8e31461051a578063ec8e07291461052d578063f3757ad414610557578063f851a44014610577578063ff20370714610589575f5ffd5b8063c3fa6f22146104bb578063ca4051f2146104ce578063cf515d37146104e1578063d39a5cf9146104f4578063d4932b4e14610507575f5ffd5b8063a6df2c01116100fa578063a6df2c011461045c578063ac20d6781461046f578063b8bd487914610482578063b96b161c14610495578063c1b77162146104a8575f5ffd5b80638b2ec611146103f05780638d6937b8146104035780638e2e2e621461041657806398e73ac3146104295780639c1a81a314610449575f5ffd5b806346b758a0116101c157806375829def1161018657806375829def146103645780637e5a88f3146103775780638163f2311461038a578063818694f1146103ca578063847755e3146103dd575f5ffd5b806346b758a01461031b5780635b7ab9291461032e5780635c975abb14610341578063652ba33d146103545780636c40d5d61461035c575f5ffd5b80632e5ce77f116102075780632e5ce77f146102b9578063311a335c146102cc578063320d3b55146102df5780633d6ed975146102f257806341a0e2c214610305575f5ffd5b8063106a2f6d1461024357806316c38b3c1461026b57806316e3d7291461028057806318677f2a146102935780631fac4345146102a6575b5f5ffd5b610256610251366004612a78565b61059c565b60405190151581526020015b60405180910390f35b61027e610279366004612ae2565b610809565b005b61027e61028e366004612afd565b610892565b61027e6102a1366004612b42565b610919565b6102566102b4366004612b6d565b6109c6565b6102566102c7366004612bdc565b6109dc565b6102566102da366004612c13565b610b10565b6102566102ed366004612b6d565b610b28565b610256610300366004612c13565b610b37565b61030d600181565b604051908152602001610262565b610256610329366004612d3d565b610b46565b61025661033c366004612d3d565b610b5c565b5f5461025690600160a01b900460ff1681565b61030d600381565b61030d600281565b61027e610372366004612b42565b610b69565b610256610385366004612d3d565b610c37565b6103b2610398366004612e5b565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b6102566103d8366004612bdc565b610c44565b6102566103eb366004612ef6565b610cac565b6102566103fe366004612b6d565b610e74565b61027e610411366004612f92565b610e83565b610256610424366004612b6d565b610f43565b61043c610437366004612afd565b610f51565b6040516102629190612ffe565b610256610457366004612b6d565b61107c565b61027e61046a366004613034565b611096565b61025661047d366004612b6d565b6111c0565b610256610490366004612b6d565b6111da565b6002546103b2906001600160a01b031681565b6102566104b6366004612b6d565b6111f4565b6102566104c9366004612bdc565b611202565b6102566104dc366004612b6d565b611218565b6102566104ef36600461309e565b611226565b610256610502366004612d3d565b61147a565b610256610515366004612bdc565b611487565b610256610528366004612b6d565b6115bb565b61054061053b3660046130e6565b6115d5565b604080519215158352602083019190915201610262565b61056a61056536600461311c565b611bf5565b604051610262919061316a565b5f546103b2906001600160a01b031681565b610256610597366004612bdc565b611d35565b5f5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63defa8ed9876040518263ffffffff1660e01b81526004016105d89190613360565b608060405180830381865af41580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190613372565b929650909450925090505f6001846001811115610636576106366133be565b1490505f89600281111561064c5761064c6133be565b83600281111561065e5761065e6133be565b1490505f7f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b871480156106bc575060018a60028111156106a0576106a06133be565b14806106bc57505f8a60028111156106ba576106ba6133be565b145b8061071c57507f16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c2118714801561071c575060028a6002811115610700576107006133be565b148061071c57505f8a600281111561071a5761071a6133be565b145b90505f7f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b86148015610779575060018b600281111561075d5761075d6133be565b148061077957505f8b6002811115610777576107776133be565b145b806107d957507f24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d861480156107d9575060028b60028111156107bd576107bd6133be565b14806107d957505f8b60028111156107d7576107d76133be565b145b90508380156107e55750825b80156107ee5750815b80156107f75750805b985050505050505050505b9392505050565b5f546001600160a01b0316331461083b5760405162461bcd60e51b8152600401610832906133d2565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061088790831515815260200190565b60405180910390a150565b604051632988ebc960e21b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a623af24906108cb908590600401613360565b602060405180830381865af41580156108e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090a9190613409565b905061091581611d42565b5050565b5f546001600160a01b031633146109425760405162461bcd60e51b8152600401610832906133d2565b6001600160a01b0381166109a45760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b6064820152608401610832565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f6109d48460028585611e03565b949350505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b8152600401610a179190613360565b606060405180830381865af4158015610a32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a569190613420565b91945092509050610a68838635611ff5565b610a845760405162461bcd60e51b815260040161083290613461565b60ff811615610afd576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e73746561646064820152608401610832565b5060ff8681169116149150509392505050565b5f610b1f858560028686612022565b95945050505050565b5f6109d4848560028686612022565b5f610b1f858560038686612022565b5f610b5383600484612343565b90505b92915050565b5f610b5383600784612343565b5f546001600160a01b03163314610b925760405162461bcd60e51b8152600401610832906133d2565b6001600160a01b038116610be85760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610832565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f610b5383600684612343565b5f5f8460ff1611610c975760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e203000006044820152606401610832565b6109d4610ca56001866134e6565b8484611487565b5f5f610cec86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061245192505050565b610d6657600860028787604051602001610d079291906134ff565b60408051601f1981840301815290829052610d219161350e565b602060405180830381855afa158015610d3c573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d5f9190613409565b901c610d68565b5f5b90505f610da985858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061245192505050565b610e2357600860028686604051602001610dc49291906134ff565b60408051601f1981840301815290829052610dde9161350e565b602060405180830381855afa158015610df9573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e1c9190613409565b901c610e25565b5f5b90508189896003818110610e3b57610e3b613524565b90506020020135148015610e6757508089896004818110610e5e57610e5e613524565b90506020020135145b9998505050505050505050565b5f6109d4848560038686612022565b5f546001600160a01b03163314610eac5760405162461bcd60e51b8152600401610832906133d2565b5f5b81811015610f3e5760015f848484818110610ecb57610ecb613524565b602090810292909201358352508101919091526040015f2080546001600160a01b0319169055828282818110610f0357610f03613524565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101610eae565b505050565b5f6109d48460038585611e03565b60408051606080820183525f80835260208301529181019190915260405163dfda037960e01b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063dfda037990610fa5908690600401613360565b5f60405180830381865af4158015610fbf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fe69190810190613587565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba6906110209084906004016135b8565b5f60405180830381865af415801561103a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261106191908101906135ca565b604085015260208401526001600160a01b0316825250919050565b5f6109d461108d6201518086613615565b60028585611e03565b5f546001600160a01b031633146110bf5760405162461bcd60e51b8152600401610832906133d2565b5f5b838110156111b9578282828181106110db576110db613524565b90506020020160208101906110f09190612b42565b60015f87878581811061110557611105613524565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061114e5761114e613524565b90506020020160208101906111639190612b42565b6001600160a01b031685858381811061117e5761117e613524565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016110c1565b5050505050565b5f6109d46111d18562015180613628565b60038585612456565b5f6109d46111eb8562015180613628565b60028585612456565b5f6109d48460028585612456565b5f6109d461121185600161363b565b84846109dc565b5f6109d48460038585612456565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b81526004016112619190613360565b606060405180830381865af415801561127c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a09190613420565b919450925090506112b2838635611ff5565b6112ce5760405162461bcd60e51b815260040161083290613461565b8660ff168860ff16111561133a5760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b6064820152608401610832565b8160ff165f036113c75760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a401610832565b8060ff165f036114545760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a401610832565b8160ff168860ff1614801561146e57508060ff168760ff16145b98975050505050505050565b5f610b5383600584612343565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b81526004016114c29190613360565b606060405180830381865af41580156114dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115019190613420565b91945092509050611513838635611ff5565b61152f5760405162461bcd60e51b815260040161083290613461565b60ff8216156115a8576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e73746561646064820152608401610832565b60ff878116911614925050509392505050565b5f6109d46115cc6201518086613615565b60038585611e03565b5f80548190600160a01b900460ff16156116265760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610832565b5f61163a6116348580613654565b35612687565b90506116736116498580613654565b611657906040810190613672565b5f81811061166757611667613524565b905060200201356126e0565b6116ab6116808580613654565b61168e906040810190613672565b600181811061169f5761169f613524565b905060200201356127a8565b61170a6116b88580613654565b6116c6906040810190613672565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506117049250505060408701876136b7565b35612866565b6117725760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b6064820152608401610832565b6117c361177f8580613654565b61178d906040810190613672565b61179a60408801886136b7565b6117a89060208101906136cb565b6117b560408a018a6136b7565b6103eb9060408101906136cb565b61180f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f70650000000000000000006044820152606401610832565b6118a261181c8580613654565b61182a906040810190613672565b60059060016118398980613654565b611847906040810190613672565b611852929150613615565b9261185f9392919061370d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061189d925050506020870187613738565b612891565b5f6118ad8580613654565b6118bb906040810190613672565b60026118c78880613654565b6118d5906040810190613672565b6118e0929150613615565b8181106118ef576118ef613524565b905060200201355f1c6003811115611909576119096133be565b9050600281600381111561191f5761191f6133be565b1415801561193f5750600381600381111561193c5761193c6133be565b14155b80611963575061195260408601866136b7565b611963906080810190606001612ae2565b6119c05760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b6064820152608401610832565b5f8160038111156119d3576119d36133be565b14806119f857506119e760408601866136b7565b6119f8906080810190606001612ae2565b611a585760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b6064820152608401610832565b6007611a648680613654565b611a72906040810190613672565b611a7d929150613615565b611a8a6020870187613738565b611a98906020810190613672565b905014611af55760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b6064820152608401610832565b6001600160a01b03821663ea50d0e4611b0e8780613654565b611b1c9060208101906136cb565b611b268980613654565b611b34906040810190613672565b6040518563ffffffff1660e01b8152600401611b53949392919061374c565b602060405180830381865afa158015611b6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b92919061377d565b93505f6001611ba18780613654565b611baf906040810190613672565b611bba929150613615565b9050611bc68680613654565b611bd4906040810190613672565b82818110611be457611be4613524565b905060200201359350505050915091565b611c3d60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b604051635450abb360e11b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a8a1576690611c76908790600401613360565b5f60405180830381865af4158015611c90573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611cb79190810190613798565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae90611cf490849087906004016137f1565b5f60405180830381865af4158015611d0e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109d49190810190613814565b5f6109d484858585611226565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015611d90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db4919061377d565b611e005760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f74006044820152606401610832565b50565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b8152600401611e409291906139a5565b606060405180830381865af4158015611e5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7f91906139e2565b91945092509050611e91838635611ff5565b611ead5760405162461bcd60e51b815260040161083290613461565b8115611f2b5760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a401610832565b600287600a811115611f3f57611f3f6133be565b1480611f5c5750600387600a811115611f5a57611f5a6133be565b145b611f785760405162461bcd60e51b815260040161083290613a0d565b600287600a811115611f8c57611f8c6133be565b03611fca57805f03611fb05760405162461bcd60e51b815260040161083290613a39565b611fbe6383aa7e8082613615565b881493505050506109d4565b805f03611fe95760405162461bcd60e51b815260040161083290613ab1565b871492506109d4915050565b5f806120018385613628565b905083421015801561201257508381115b80156109d4575042109392505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b815260040161205f9291906139a5565b606060405180830381865af415801561207a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209e91906139e2565b919450925090506120b0838635611ff5565b6120cc5760405162461bcd60e51b815260040161083290613461565b878911156121345760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b6064820152608401610832565b600287600a811115612148576121486133be565b14806121655750600387600a811115612163576121636133be565b145b6121815760405162461bcd60e51b815260040161083290613a0d565b600287600a811115612195576121956133be565b0361227b57815f0361222a5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a401610832565b805f036122495760405162461bcd60e51b815260040161083290613a39565b6122576383aa7e8083613615565b89148015612271575061226e6383aa7e8082613615565b88145b9350505050610b1f565b815f0361230c5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a401610832565b805f0361232b5760405162461bcd60e51b815260040161083290613ab1565b81891480156122715750909614979650505050505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63dc8c5e9a85876040518363ffffffff1660e01b815260040161237f9291906139a5565b5f60405180830381865af4158015612399573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123c09190810190613b2a565b91509150808651146123d6575f92505050610802565b5f5b818110156124445761242d8782815181106123f5576123f5613524565b602002602001015184838151811061240f5761240f613524565b60200260200101518051602091820120825192909101919091201490565b61243c575f9350505050610802565b6001016123d8565b5060019695505050505050565b511590565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b81526004016124939291906139a5565b606060405180830381865af41580156124ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124d291906139e2565b919450925090506124e4838635611ff5565b6125005760405162461bcd60e51b815260040161083290613461565b600287600a811115612514576125146133be565b14806125315750600387600a81111561252f5761252f6133be565b145b61254d5760405162461bcd60e51b815260040161083290613a0d565b600287600a811115612561576125616133be565b036125f75780156125e95760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a401610832565b611fbe6383aa7e8083613615565b801561267b5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a401610832565b50861491506109d49050565b5f818152600160205260408120546001600160a01b031680610b565760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b6044820152606401610832565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561272e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612752919061377d565b611e005760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b6064820152608401610832565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa1580156127f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281a919061377d565b611e005760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f740000006044820152606401610832565b5f5f8360028151811061287b5761287b613524565b60200260200101515f1c90506109d48184611ff5565b5f805b6128a16020840184613672565b90508110156129fb575f600860026128b986806136cb565b86906128c860208a018a613672565b888181106128d8576128d8613524565b90506020020135886128ea9190613628565b926128f793929190613be3565b6040516020016129089291906134ff565b60408051601f19818403018152908290526129229161350e565b602060405180830381855afa15801561293d573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906129609190613409565b901c905084828151811061297657612976613524565b602002602001015181146129c15760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b6044820152606401610832565b6129ce6020850185613672565b838181106129de576129de613524565b90506020020135836129f09190613628565b925050600101612894565b50612a0682806136cb565b90508114610f3e5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e677468006044820152606401610832565b60038110611e00575f5ffd5b5f60408284031215612a72575f5ffd5b50919050565b5f5f5f60608486031215612a8a575f5ffd5b8335612a9581612a56565b92506020840135612aa581612a56565b915060408401356001600160401b03811115612abf575f5ffd5b612acb86828701612a62565b9150509250925092565b8015158114611e00575f5ffd5b5f60208284031215612af2575f5ffd5b813561080281612ad5565b5f60208284031215612b0d575f5ffd5b81356001600160401b03811115612b22575f5ffd5b6109d484828501612a62565b6001600160a01b0381168114611e00575f5ffd5b5f60208284031215612b52575f5ffd5b813561080281612b2e565b5f60808284031215612a72575f5ffd5b5f5f5f60608486031215612b7f575f5ffd5b8335925060208401356001600160401b03811115612b9b575f5ffd5b612ba786828701612a62565b92505060408401356001600160401b03811115612bc2575f5ffd5b612acb86828701612b5d565b60ff81168114611e00575f5ffd5b5f5f5f60608486031215612bee575f5ffd5b8335612bf981612bce565b925060208401356001600160401b03811115612b9b575f5ffd5b5f5f5f5f60808587031215612c26575f5ffd5b843593506020850135925060408501356001600160401b03811115612c49575f5ffd5b612c5587828801612a62565b92505060608501356001600160401b03811115612c70575f5ffd5b612c7c87828801612b5d565b91505092959194509250565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612cbf57612cbf612c88565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612ced57612ced612c88565b604052919050565b5f6001600160401b03821115612d0d57612d0d612c88565b5060051b60200190565b5f6001600160401b03821115612d2f57612d2f612c88565b50601f01601f191660200190565b5f5f60408385031215612d4e575f5ffd5b82356001600160401b03811115612d63575f5ffd5b8301601f81018513612d73575f5ffd5b8035612d86612d8182612cf5565b612cc5565b8082825260208201915060208360051b850101925087831115612da7575f5ffd5b602084015b83811015612e275780356001600160401b03811115612dc9575f5ffd5b8501603f81018a13612dd9575f5ffd5b6020810135612dea612d8182612d17565b8181526040838301018c1015612dfe575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612dac565b50945050505060208301356001600160401b03811115612e45575f5ffd5b612e5185828601612a62565b9150509250929050565b5f60208284031215612e6b575f5ffd5b5035919050565b5f5f83601f840112612e82575f5ffd5b5081356001600160401b03811115612e98575f5ffd5b6020830191508360208260051b8501011115612eb2575f5ffd5b9250929050565b5f5f83601f840112612ec9575f5ffd5b5081356001600160401b03811115612edf575f5ffd5b602083019150836020828501011115612eb2575f5ffd5b5f5f5f5f5f5f60608789031215612f0b575f5ffd5b86356001600160401b03811115612f20575f5ffd5b612f2c89828a01612e72565b90975095505060208701356001600160401b03811115612f4a575f5ffd5b612f5689828a01612eb9565b90955093505060408701356001600160401b03811115612f74575f5ffd5b612f8089828a01612eb9565b979a9699509497509295939492505050565b5f5f60208385031215612fa3575f5ffd5b82356001600160401b03811115612fb8575f5ffd5b612fc485828601612e72565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b038251166020820152602082015160408201525f60408301516060808401526109d46080840182612fd0565b5f5f5f5f60408587031215613047575f5ffd5b84356001600160401b0381111561305c575f5ffd5b61306887828801612e72565b90955093505060208501356001600160401b03811115613086575f5ffd5b61309287828801612e72565b95989497509550505050565b5f5f5f5f608085870312156130b1575f5ffd5b84356130bc81612bce565b935060208501356130cc81612bce565b925060408501356001600160401b03811115612c49575f5ffd5b5f602082840312156130f6575f5ffd5b81356001600160401b0381111561310b575f5ffd5b820160608185031215610802575f5ffd5b5f5f6040838503121561312d575f5ffd5b82356001600160401b03811115613142575f5ffd5b61314e85828601612a62565b925050602083013561315f81612ad5565b809150509250929050565b602081525f82516101006020840152613187610120840182612fd0565b90506020840151601f198483030160408501526131a48282612fd0565b9150506040840151601f198483030160608501526131c28282612fd0565b9150506060840151601f198483030160808501526131e08282612fd0565b9150506080840151601f198483030160a08501526131fe8282612fd0565b91505060a0840151601f198483030160c085015261321c8282612fd0565b91505060c0840151601f198483030160e085015261323a8282612fd0565b91505060e0840151601f1984830301610100850152610b1f8282612fd0565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115613298575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8135601e19833603018082126132c6575f5ffd5b602091840191820191356001600160401b038111156132e3575f5ffd5b8036038313156132f1575f5ffd5b60408652613303604087018285613259565b9250506020840135818112613316575f5ffd5b8401602081019150356001600160401b03811115613332575f5ffd5b8060051b3603821315613343575f5ffd5b8583036020870152613356838284613281565b9695505050505050565b602081525f610b5360208301846132b1565b5f5f5f5f60808587031215613385575f5ffd5b845160208601519094506002811061339b575f5ffd5b6040860151606087015191945092506133b381612a56565b939692955090935050565b634e487b7160e01b5f52602160045260245ffd5b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f60208284031215613419575f5ffd5b5051919050565b5f5f5f60608486031215613432575f5ffd5b8351602085015190935061344581612bce565b604085015190925061345681612bce565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115610b5657610b566134d2565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b5f82601f830112613547575f5ffd5b8151602083015f61355a612d8184612d17565b905082815285838301111561356d575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215613597575f5ffd5b81516001600160401b038111156135ac575f5ffd5b6109d484828501613538565b602081525f610b536020830184612fd0565b5f5f5f606084860312156135dc575f5ffd5b83516135e781612b2e565b6020850151604086015191945092506001600160401b03811115613609575f5ffd5b612acb86828701613538565b81810381811115610b5657610b566134d2565b80820180821115610b5657610b566134d2565b60ff8181168382160190811115610b5657610b566134d2565b5f8235605e19833603018112613668575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613687575f5ffd5b8301803591506001600160401b038211156136a0575f5ffd5b6020019150600581901b3603821315612eb2575f5ffd5b5f8235607e19833603018112613668575f5ffd5b5f5f8335601e198436030181126136e0575f5ffd5b8301803591506001600160401b038211156136f9575f5ffd5b602001915036819003821315612eb2575f5ffd5b5f5f8585111561371b575f5ffd5b83861115613727575f5ffd5b5050600583901b0193919092039150565b5f8235603e19833603018112613668575f5ffd5b604081525f61375f604083018688613259565b8281036020840152613772818587613281565b979650505050505050565b5f6020828403121561378d575f5ffd5b815161080281612ad5565b5f5f604083850312156137a9575f5ffd5b82516001600160401b038111156137be575f5ffd5b6137ca85828601613538565b92505060208301516001600160401b038111156137e5575f5ffd5b612e5185828601613538565b604081525f6138036040830185612fd0565b905082151560208301529392505050565b5f60208284031215613824575f5ffd5b81516001600160401b03811115613839575f5ffd5b8201610100818503121561384b575f5ffd5b613853612c9c565b81516001600160401b03811115613868575f5ffd5b61387486828501613538565b82525060208201516001600160401b0381111561388f575f5ffd5b61389b86828501613538565b60208301525060408201516001600160401b038111156138b9575f5ffd5b6138c586828501613538565b60408301525060608201516001600160401b038111156138e3575f5ffd5b6138ef86828501613538565b60608301525060808201516001600160401b0381111561390d575f5ffd5b61391986828501613538565b60808301525060a08201516001600160401b03811115613937575f5ffd5b61394386828501613538565b60a08301525060c08201516001600160401b03811115613961575f5ffd5b61396d86828501613538565b60c08301525060e08201516001600160401b0381111561398b575f5ffd5b61399786828501613538565b60e083015250949350505050565b604081525f6139b760408301856132b1565b9050600b83106139d557634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f5f5f606084860312156139f4575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f60408385031215613b3b575f5ffd5b82516001600160401b03811115613b50575f5ffd5b8301601f81018513613b60575f5ffd5b8051613b6e612d8182612cf5565b8082825260208201915060208360051b850101925087831115613b8f575f5ffd5b602084015b83811015613bcf5780516001600160401b03811115613bb1575f5ffd5b613bc08a602083890101613538565b84525060209283019201613b94565b506020969096015195979596505050505050565b5f5f85851115613bf1575f5ffd5b83861115613bfd575f5ffd5b505082019391909203915056fea2646970667358221220f991155c5f0495dd21a11592eb81a72baddd6126ad66ff51d0de5dd26a8c865164736f6c634300081d0033",
3039
+ sourceMap: "706:30507:26:-:0;;;1848:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1897:27:26;;1889:76;;;;-1:-1:-1;;;1889:76:26;;511:2:34;1889:76:26;;;493:21:34;550:2;530:18;;;523:30;589:34;569:18;;;562:62;-1:-1:-1;;;640:18:34;;;633:34;684:19;;1889:76:26;;;;;;;;1971:5;:18;;1979:10;-1:-1:-1;;;;;;1971:18:26;;;;;;;;1995:12;:43;;;;;-1:-1:-1;;;;;1995:43:26;;;;;2049:50;;2083:15;860:25:34;;2049:50:26;;848:2:34;833:18;2049:50:26;;;;;;;1848:256;706:30507;;14:290:34;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:34;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:34:o;714:177::-;706:30507:26;;;;;;",
2995
3040
  linkReferences: {
2996
3041
  "src/InputsExtractor.sol": {
2997
3042
  InputsExtractor: [
2998
- { start: 2173, length: 20 },
2999
- { start: 2337, length: 20 },
3000
- { start: 2460, length: 20 },
3001
- { start: 2868, length: 20 },
3002
- { start: 3229, length: 20 },
3003
- { start: 3393, length: 20 },
3004
- { start: 3531, length: 20 },
3005
- { start: 4153, length: 20 },
3006
- { start: 5533, length: 20 },
3007
- { start: 7505, length: 20 },
3008
- { start: 8108, length: 20 },
3009
- { start: 8937, length: 20 },
3010
- { start: 9479, length: 20 }
3043
+ { start: 1747, length: 20 },
3044
+ { start: 2515, length: 20 },
3045
+ { start: 2834, length: 20 },
3046
+ { start: 4269, length: 20 },
3047
+ { start: 4392, length: 20 },
3048
+ { start: 4956, length: 20 },
3049
+ { start: 5565, length: 20 },
3050
+ { start: 7550, length: 20 },
3051
+ { start: 7673, length: 20 },
3052
+ { start: 7993, length: 20 },
3053
+ { start: 8536, length: 20 },
3054
+ { start: 9336, length: 20 },
3055
+ { start: 9612, length: 20 }
3011
3056
  ]
3012
3057
  }
3013
3058
  }
3014
3059
  },
3015
3060
  deployedBytecode: {
3016
- object: "0x608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638163f23111610135578063c4560786116100b4578063e420e35411610079578063e420e3541461053e578063e718bc3214610551578063ec46f77414610564578063f851a44014610577578063f87e19b114610589575f5ffd5b8063c4560786146104c8578063cfd9464a146104db578063d3f6ffff146104ee578063d7bf616a14610501578063deb7c0591461052b575f5ffd5b8063a88f1cef116100fa578063a88f1cef14610469578063aa1346ea1461047c578063b96b161c1461048f578063bf73c26c146104a2578063c0940ebd146104b5575f5ffd5b80638163f231146103dd578063847755e31461041d5780638d6937b814610430578063921076c714610443578063a6df2c0114610456575f5ffd5b80634c127428116101c1578063652ba33d11610186578063652ba33d14610394578063653cfd811461039c5780636c40d5d6146103af578063704876d6146103b757806375829def146103ca575f5ffd5b80634c1274281461032857806354dbe4d11461033b57806359545f451461034e5780635c975abb1461036e57806362067c8214610381575f5ffd5b80632e27242c116102075780632e27242c146102c657806337889655146102d95780633a86bd3d146102ec57806341a0e2c2146102ff57806346bd0a1614610315575f5ffd5b806304951b86146102435780630b90581b1461026b57806316c38b3c1461027e57806318677f2a146102935780631e26a9dc146102a6575b5f5ffd5b610256610251366004612987565b61059c565b60405190151581526020015b60405180910390f35b610256610279366004612987565b6105be565b61029161028c3660046129d7565b6105cc565b005b6102916102a1366004612a06565b610655565b6102b96102b4366004612a21565b610702565b6040516102629190612a9d565b6102566102d4366004612ba1565b610865565b6102566102e7366004612be5565b6109b7565b6102566102fa366004612cb6565b6109cc565b610307600181565b604051908152602001610262565b610256610323366004612dbe565b6109d9565b610256610336366004612987565b6109f1565b610256610349366004612be5565b6109fe565b61036161035c366004612e09565b610b4f565b6040516102629190612e3a565b5f5461025690600160a01b900460ff1681565b61025661038f366004612e70565b610c95565b610307600381565b6102916103aa366004612e09565b610f06565b610307600281565b6102566103c5366004612987565b610fa8565b6102916103d8366004612a06565b610fb5565b6104056103eb366004612eb7565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b61025661042b366004612f52565b611083565b61029161043e366004612fee565b61124b565b610256610451366004612987565b61130b565b61029161046436600461302c565b611324565b610256610477366004612987565b61144e565b61025661048a366004612be5565b611467565b600254610405906001600160a01b031681565b6102566104b0366004612be5565b6115b8565b6102566104c3366004612be5565b61161f565b6102566104d6366004612dbe565b61162b565b6102566104e9366004612987565b611639565b6102566104fc366004612987565b611647565b61051461050f366004612e09565b611660565b604080519215158352602083019190915201610262565b610256610539366004612987565b611bda565b61025661054c366004612cb6565b611be7565b61025661055f366004612987565b611bf4565b610256610572366004612cb6565b611c01565b5f54610405906001600160a01b031681565b610256610597366004612cb6565b611c0e565b5f6105b56105ad84620151806130aa565b600284611c1b565b90505b92915050565b5f6105b58384600285611e76565b5f546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105f5906130bd565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061064a90831515815260200190565b60405180910390a150565b5f546001600160a01b0316331461067e5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166106e05760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b60648201526084016105f5565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b61074a60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63ddf3eec961077260608701876130f4565b61077f6080890189613136565b6040518563ffffffff1660e01b815260040161079e94939291906131d3565b5f60405180830381865af41580156107b8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107df9190810190613248565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae9061081c90849087906004016132a1565b5f60405180830381865af4158015610836573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261085d91908101906132c4565b949350505050565b5f8080808073__$144f4fe859debe4776cdef2b99f7b97a42$__63c802bad161089160608901896130f4565b61089e60808b018b613136565b6040518563ffffffff1660e01b81526004016108bd94939291906131d3565b608060405180830381865af41580156108d8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fc9190613455565b929650909450925090505f600184600181111561091b5761091b6134a1565b1490505f886002811115610931576109316134a1565b836002811115610943576109436134a1565b1490507f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b86147f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b85148380156109965750825b801561099f5750815b80156109a85750805b9b9a5050505050505050505050565b5f6105b56109c68460016134b5565b836109fe565b5f6105b5836007846121b4565b5f6109e78484600385611e76565b90505b9392505050565b5f6105b583600384611c1b565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610a2960608801886130f4565b610a3660808a018a613136565b6040518563ffffffff1660e01b8152600401610a5594939291906131d3565b606060405180830381865af4158015610a70573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9491906134ce565b925092509250610aa8838660a001356122de565b610ac45760405162461bcd60e51b81526004016105f59061350f565b60ff811615610b3d576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b5060ff85811691161491505092915050565b60408051606080820183525f8083526020830152918101919091525f73__$144f4fe859debe4776cdef2b99f7b97a42$__634601173c610b9260608601866130f4565b610b9f6080880188613136565b6040518563ffffffff1660e01b8152600401610bbe94939291906131d3565b5f60405180830381865af4158015610bd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bff9190810190613580565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba690610c399084906004016135b1565b5f60405180830381865af4158015610c53573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c7a91908101906135c3565b604085015260208401526001600160a01b0316825250919050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c610cc060608801886130f4565b610ccd60808a018a613136565b6040518563ffffffff1660e01b8152600401610cec94939291906131d3565b606060405180830381865af4158015610d07573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2b91906134ce565b925092509250610d3f838660a001356122de565b610d5b5760405162461bcd60e51b81526004016105f59061350f565b8560ff168760ff161115610dc75760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b60648201526084016105f5565b8160ff165f03610e545760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8060ff165f03610ee15760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a4016105f5565b8160ff168760ff16148015610efb57508060ff168660ff16145b979650505050505050565b5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63fbd24457610f2e60608501856130f4565b610f3b6080870187613136565b6040518563ffffffff1660e01b8152600401610f5a94939291906131d3565b602060405180830381865af4158015610f75573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f99919061360e565b9050610fa48161230b565b5050565b5f6105b583600284611c1b565b5f546001600160a01b03163314610fde5760405162461bcd60e51b81526004016105f5906130bd565b6001600160a01b0381166110345760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f20616464726573730000000060448201526064016105f5565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f5f6110c386868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b61113d576008600287876040516020016110de929190613625565b60408051601f19818403018152908290526110f891613634565b602060405180830381855afa158015611113573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611136919061360e565b901c61113f565b5f5b90505f61118085858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506123cc92505050565b6111fa5760086002868660405160200161119b929190613625565b60408051601f19818403018152908290526111b591613634565b602060405180830381855afa1580156111d0573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906111f3919061360e565b901c6111fc565b5f5b905081898960038181106112125761121261364a565b9050602002013514801561123e575080898960048181106112355761123561364a565b90506020020135145b9998505050505050505050565b5f546001600160a01b031633146112745760405162461bcd60e51b81526004016105f5906130bd565b5f5b818110156113065760015f8484848181106112935761129361364a565b602090810292909201358352508101919091526040015f2080546001600160a01b03191690558282828181106112cb576112cb61364a565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101611276565b505050565b5f6105b561131c620151808561365e565b6002846123d1565b5f546001600160a01b0316331461134d5760405162461bcd60e51b81526004016105f5906130bd565b5f5b83811015611447578282828181106113695761136961364a565b905060200201602081019061137e9190612a06565b60015f8787858181106113935761139361364a565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b031602179055508282828181106113dc576113dc61364a565b90506020020160208101906113f19190612a06565b6001600160a01b031685858381811061140c5761140c61364a565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a360010161134f565b5050505050565b5f6105b561145f620151808561365e565b6003846123d1565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__63b2b37a4c61149260608801886130f4565b61149f60808a018a613136565b6040518563ffffffff1660e01b81526004016114be94939291906131d3565b606060405180830381865af41580156114d9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114fd91906134ce565b925092509250611511838660a001356122de565b61152d5760405162461bcd60e51b81526004016105f59061350f565b60ff8216156115a6576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e737465616460648201526084016105f5565b60ff8681169116149250505092915050565b5f5f8360ff161161160b5760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e2030000060448201526064016105f5565b6105b5611619600185613671565b83611467565b5f6105b5838484610c95565b5f6109e78484600285611e76565b5f6105b58384600385611e76565b5f6105b561165884620151806130aa565b600384611c1b565b5f80548190600160a01b900460ff16156116b15760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b60448201526064016105f5565b5f6116bc84356125d5565b90506116ea6116ce6040860186613136565b5f8181106116de576116de61364a565b9050602002013561262e565b6117176116fa6040860186613136565b600181811061170b5761170b61364a565b905060200201356126f6565b6117616117276040860186613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050505060a08601356127b4565b6117c95760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b60648201526084016105f5565b6117f36117d96040860186613136565b6117e660c08801886130f4565b61042b60e08a018a6130f4565b61183f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f706500000000000000000060448201526064016105f5565b6118fa61184f6040860186613136565b600590600161186160408a018a613136565b61186c92915061365e565b926118799392919061368a565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506118b79250505060608701876130f4565b6118c46080890189613136565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506127df92505050565b5f6119086040860186613136565b60026119176040890189613136565b61192292915061365e565b8181106119315761193161364a565b905060200201355f1c600381111561194b5761194b6134a1565b90506002816003811115611961576119616134a1565b141580156119815750600381600381111561197e5761197e6134a1565b14155b806119995750611999610120860161010087016129d7565b6119f65760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b60648201526084016105f5565b5f816003811115611a0957611a096134a1565b1480611a225750611a22610120860161010087016129d7565b611a825760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b60648201526084016105f5565b6007611a916040870187613136565b611a9c92915061365e565b611aa96080870187613136565b905014611b065760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b60648201526084016105f5565b6001600160a01b03821663ea50d0e4611b2260208801886130f4565b611b2f60408a018a613136565b6040518563ffffffff1660e01b8152600401611b4e94939291906131d3565b602060405180830381865afa158015611b69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b8d91906136b5565b93505f6001611b9f6040880188613136565b611baa92915061365e565b9050611bb96040870187613136565b82818110611bc957611bc961364a565b905060200201359350505050915091565b5f6105b5836002846123d1565b5f6105b5836005846121b4565b5f6105b5836003846123d1565b5f6105b5836006846121b4565b5f6105b5836004846121b4565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611c4660608801886130f4565b611c5360808a018a613136565b8b6040518663ffffffff1660e01b8152600401611c749594939291906136d0565b606060405180830381865af4158015611c8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190613725565b925092509250611cc7838660a001356122de565b611ce35760405162461bcd60e51b81526004016105f59061350f565b600286600a811115611cf757611cf76134a1565b1480611d145750600386600a811115611d1257611d126134a1565b145b611d305760405162461bcd60e51b81526004016105f590613750565b600286600a811115611d4457611d446134a1565b03611de6578015611dcc5760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a4016105f5565b611dda6383aa7e808361365e565b871493505050506109ea565b8015611e6a5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a4016105f5565b50851491506109ea9050565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f92611ea160608801886130f4565b611eae60808a018a613136565b8b6040518663ffffffff1660e01b8152600401611ecf9594939291906136d0565b606060405180830381865af4158015611eea573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0e9190613725565b925092509250611f22838660a001356122de565b611f3e5760405162461bcd60e51b81526004016105f59061350f565b86881115611fa65760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b60648201526084016105f5565b600286600a811115611fba57611fba6134a1565b1480611fd75750600386600a811115611fd557611fd56134a1565b145b611ff35760405162461bcd60e51b81526004016105f590613750565b600286600a811115612007576120076134a1565b036120ed57815f0361209c5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a4016105f5565b805f036120bb5760405162461bcd60e51b81526004016105f59061377c565b6120c96383aa7e808361365e565b881480156120e357506120e06383aa7e808261365e565b87145b935050505061085d565b815f0361217e5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a4016105f5565b805f0361219d5760405162461bcd60e51b81526004016105f5906137f4565b81881480156120e357509095149695505050505050565b5f808073__$144f4fe859debe4776cdef2b99f7b97a42$__6384d40ca06121de60608701876130f4565b6121eb6080890189613136565b8a6040518663ffffffff1660e01b815260040161220c9594939291906136d0565b5f60405180830381865af4158015612226573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261224d919081019061386d565b9150915080865114612263575f925050506109ea565b5f5b818110156122d1576122ba8782815181106122825761228261364a565b602002602001015184838151811061229c5761229c61364a565b60200260200101518051602091820120825192909101919091201490565b6122c9575f93505050506109ea565b600101612265565b5060019695505050505050565b5f806122ea83856130aa565b90508342101580156122fb57508381115b801561085d575042109392505050565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015612359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061237d91906136b5565b6123c95760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f740060448201526064016105f5565b50565b511590565b5f80808073__$144f4fe859debe4776cdef2b99f7b97a42$__638a8b3f926123fc60608801886130f4565b61240960808a018a613136565b8b6040518663ffffffff1660e01b815260040161242a9594939291906136d0565b606060405180830381865af4158015612445573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124699190613725565b92509250925061247d838660a001356122de565b6124995760405162461bcd60e51b81526004016105f59061350f565b81156125175760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a4016105f5565b600286600a81111561252b5761252b6134a1565b14806125485750600386600a811115612546576125466134a1565b145b6125645760405162461bcd60e51b81526004016105f590613750565b600286600a811115612578576125786134a1565b036125aa57805f0361259c5760405162461bcd60e51b81526004016105f59061377c565b611dda6383aa7e808261365e565b805f036125c95760405162461bcd60e51b81526004016105f5906137f4565b861492506109ea915050565b5f818152600160205260408120546001600160a01b0316806105b85760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b60448201526064016105f5565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561267c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a091906136b5565b6123c95760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b60648201526084016105f5565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa158015612744573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061276891906136b5565b6123c95760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f7400000060448201526064016105f5565b5f5f836002815181106127c9576127c961364a565b60200260200101515f1c905061085d81846122de565b5f805b8251811015612920575f60086002878786908887815181106128065761280661364a565b60200260200101518861281991906130aa565b9261282693929190613926565b604051602001612837929190613625565b60408051601f198184030181529082905261285191613634565b602060405180830381855afa15801561286c573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061288f919061360e565b901c90508682815181106128a5576128a561364a565b602002602001015181146128f05760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b60448201526064016105f5565b8382815181106129025761290261364a565b60200260200101518361291591906130aa565b9250506001016127e2565b508083146114475760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e6774680060448201526064016105f5565b5f6101208284031215612981575f5ffd5b50919050565b5f5f60408385031215612998575f5ffd5b8235915060208301356001600160401b038111156129b4575f5ffd5b6129c085828601612970565b9150509250929050565b80151581146123c9575f5ffd5b5f602082840312156129e7575f5ffd5b81356109ea816129ca565b6001600160a01b03811681146123c9575f5ffd5b5f60208284031215612a16575f5ffd5b81356109ea816129f2565b5f5f60408385031215612a32575f5ffd5b82356001600160401b03811115612a47575f5ffd5b612a5385828601612970565b9250506020830135612a64816129ca565b809150509250929050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f82516101006020840152612aba610120840182612a6f565b90506020840151601f19848303016040850152612ad78282612a6f565b9150506040840151601f19848303016060850152612af58282612a6f565b9150506060840151601f19848303016080850152612b138282612a6f565b9150506080840151601f198483030160a0850152612b318282612a6f565b91505060a0840151601f198483030160c0850152612b4f8282612a6f565b91505060c0840151601f198483030160e0850152612b6d8282612a6f565b91505060e0840151601f1984830301610100850152612b8c8282612a6f565b95945050505050565b600381106123c9575f5ffd5b5f5f60408385031215612bb2575f5ffd5b8235612bbd81612b95565b915060208301356001600160401b038111156129b4575f5ffd5b60ff811681146123c9575f5ffd5b5f5f60408385031215612bf6575f5ffd5b8235612bbd81612bd7565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612c3857612c38612c01565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c6657612c66612c01565b604052919050565b5f6001600160401b03821115612c8657612c86612c01565b5060051b60200190565b5f6001600160401b03821115612ca857612ca8612c01565b50601f01601f191660200190565b5f5f60408385031215612cc7575f5ffd5b82356001600160401b03811115612cdc575f5ffd5b8301601f81018513612cec575f5ffd5b8035612cff612cfa82612c6e565b612c3e565b8082825260208201915060208360051b850101925087831115612d20575f5ffd5b602084015b83811015612da05780356001600160401b03811115612d42575f5ffd5b8501603f81018a13612d52575f5ffd5b6020810135612d63612cfa82612c90565b8181526040838301018c1015612d77575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612d25565b50945050505060208301356001600160401b038111156129b4575f5ffd5b5f5f5f60608486031215612dd0575f5ffd5b833592506020840135915060408401356001600160401b03811115612df3575f5ffd5b612dff86828701612970565b9150509250925092565b5f60208284031215612e19575f5ffd5b81356001600160401b03811115612e2e575f5ffd5b61085d84828501612970565b6020815260018060a01b038251166020820152602082015160408201525f604083015160608084015261085d6080840182612a6f565b5f5f5f60608486031215612e82575f5ffd5b8335612e8d81612bd7565b92506020840135612e9d81612bd7565b915060408401356001600160401b03811115612df3575f5ffd5b5f60208284031215612ec7575f5ffd5b5035919050565b5f5f83601f840112612ede575f5ffd5b5081356001600160401b03811115612ef4575f5ffd5b6020830191508360208260051b8501011115612f0e575f5ffd5b9250929050565b5f5f83601f840112612f25575f5ffd5b5081356001600160401b03811115612f3b575f5ffd5b602083019150836020828501011115612f0e575f5ffd5b5f5f5f5f5f5f60608789031215612f67575f5ffd5b86356001600160401b03811115612f7c575f5ffd5b612f8889828a01612ece565b90975095505060208701356001600160401b03811115612fa6575f5ffd5b612fb289828a01612f15565b90955093505060408701356001600160401b03811115612fd0575f5ffd5b612fdc89828a01612f15565b979a9699509497509295939492505050565b5f5f60208385031215612fff575f5ffd5b82356001600160401b03811115613014575f5ffd5b61302085828601612ece565b90969095509350505050565b5f5f5f5f6040858703121561303f575f5ffd5b84356001600160401b03811115613054575f5ffd5b61306087828801612ece565b90955093505060208501356001600160401b0381111561307e575f5ffd5b61308a87828801612ece565b95989497509550505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105b8576105b8613096565b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f5f8335601e19843603018112613109575f5ffd5b8301803591506001600160401b03821115613122575f5ffd5b602001915036819003821315612f0e575f5ffd5b5f5f8335601e1984360301811261314b575f5ffd5b8301803591506001600160401b03821115613164575f5ffd5b6020019150600581901b3603821315612f0e575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b038311156131ba575f5ffd5b8260051b80836020870137939093016020019392505050565b604081525f6131e660408301868861317b565b8281036020840152610efb8185876131a3565b5f82601f830112613208575f5ffd5b8151602083015f61321b612cfa84612c90565b905082815285838301111561322e575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f5f60408385031215613259575f5ffd5b82516001600160401b0381111561326e575f5ffd5b61327a858286016131f9565b92505060208301516001600160401b03811115613295575f5ffd5b6129c0858286016131f9565b604081525f6132b36040830185612a6f565b905082151560208301529392505050565b5f602082840312156132d4575f5ffd5b81516001600160401b038111156132e9575f5ffd5b820161010081850312156132fb575f5ffd5b613303612c15565b81516001600160401b03811115613318575f5ffd5b613324868285016131f9565b82525060208201516001600160401b0381111561333f575f5ffd5b61334b868285016131f9565b60208301525060408201516001600160401b03811115613369575f5ffd5b613375868285016131f9565b60408301525060608201516001600160401b03811115613393575f5ffd5b61339f868285016131f9565b60608301525060808201516001600160401b038111156133bd575f5ffd5b6133c9868285016131f9565b60808301525060a08201516001600160401b038111156133e7575f5ffd5b6133f3868285016131f9565b60a08301525060c08201516001600160401b03811115613411575f5ffd5b61341d868285016131f9565b60c08301525060e08201516001600160401b0381111561343b575f5ffd5b613447868285016131f9565b60e083015250949350505050565b5f5f5f5f60808587031215613468575f5ffd5b845160208601519094506002811061347e575f5ffd5b60408601516060870151919450925061349681612b95565b939692955090935050565b634e487b7160e01b5f52602160045260245ffd5b60ff81811683821601908111156105b8576105b8613096565b5f5f5f606084860312156134e0575f5ffd5b835160208501519093506134f381612bd7565b604085015190925061350481612bd7565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b5f60208284031215613590575f5ffd5b81516001600160401b038111156135a5575f5ffd5b61085d848285016131f9565b602081525f6105b56020830184612a6f565b5f5f5f606084860312156135d5575f5ffd5b83516135e0816129f2565b6020850151604086015191945092506001600160401b03811115613602575f5ffd5b612dff868287016131f9565b5f6020828403121561361e575f5ffd5b5051919050565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b818103818111156105b8576105b8613096565b60ff82811682821603908111156105b8576105b8613096565b5f5f85851115613698575f5ffd5b838611156136a4575f5ffd5b5050600583901b0193919092039150565b5f602082840312156136c5575f5ffd5b81516109ea816129ca565b606081525f6136e360608301878961317b565b82810360208401526136f68186886131a3565b915050600b831061371557634e487b7160e01b5f52602160045260245ffd5b8260408301529695505050505050565b5f5f5f60608486031215613737575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f6040838503121561387e575f5ffd5b82516001600160401b03811115613893575f5ffd5b8301601f810185136138a3575f5ffd5b80516138b1612cfa82612c6e565b8082825260208201915060208360051b8501019250878311156138d2575f5ffd5b602084015b838110156139125780516001600160401b038111156138f4575f5ffd5b6139038a6020838901016131f9565b845250602092830192016138d7565b506020969096015195979596505050505050565b5f5f85851115613934575f5ffd5b83861115613940575f5ffd5b505082019391909203915056fea2646970667358221220623aa0f5d6fd1ed4b32bdfd3907fb8b21b1ba73e0a28815b6397c145a04864b764736f6c634300081d0033",
3017
- sourceMap: "674:28697:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12985:206;;;;;;:::i;:::-;;:::i;:::-;;;864:14:34;;857:22;839:41;;827:2;812:18;12985:206:26;;;;;;;;15024:192;;;;;;:::i;:::-;;:::i;2495:118::-;;;;;;:::i;:::-;;:::i;:::-;;3146:206;;;;;;:::i;:::-;;:::i;3887:369::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;22499:700::-;;;;;;:::i;:::-;;:::i;5317:169::-;;;;;;:::i;:::-;;:::i;21021:230::-;;;;;;:::i;:::-;;:::i;706:69::-;;772:1;706:69;;;;;8483:25:34;;;8471:2;8456:18;706:69:26;8337:177:34;16569:227:26;;;;;;:::i;:::-;;:::i;15522:207::-;;;;;;:::i;:::-;;:::i;4534:541::-;;;;;;:::i;:::-;;:::i;21417:347::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;944:18::-;;;;;-1:-1:-1;;;944:18:26;;;;;;5811:766;;;;;;:::i;:::-;;:::i;848:67::-;;912:1;848:67;;21915:271;;;;;;:::i;:::-;;:::i;779:65::-;;841:1;779:65;;12517:204;;;;;;:::i;:::-;;:::i;2262:229::-;;;;;;:::i;:::-;;:::i;1052:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1052:53:26;;;;;;-1:-1:-1;;;;;11049:32:34;;;11031:51;;11019:2;11004:18;1052:53:26;10885:203:34;23538:706:26;;;;;;:::i;:::-;;:::i;2911:231::-;;;;;;:::i;:::-;;:::i;14544:210::-;;;;;;:::i;:::-;;:::i;2617:290::-;;;;;;:::i;:::-;;:::i;17587:211::-;;;;;;:::i;:::-;;:::i;6855:541::-;;;;;;:::i;:::-;;:::i;1179:33::-;;;;;-1:-1:-1;;;;;1179:33:26;;;7638:228;;;;;;:::i;:::-;;:::i;8114:159::-;;;;;;:::i;:::-;;:::i;13544:224::-;;;;;;:::i;:::-;;:::i;18074:195::-;;;;;;:::i;:::-;;:::i;15999:209::-;;;;;;:::i;:::-;;:::i;26163:3206::-;;;;;;:::i;:::-;;:::i;:::-;;;;14509:14:34;;14502:22;14484:41;;14556:2;14541:18;;14534:34;;;;14457:18;26163:3206:26;14316:258:34;14071:206:26;;;;;;:::i;:::-;;:::i;20388:223::-;;;;;;:::i;:::-;;:::i;17105:209::-;;;;;;:::i;:::-;;:::i;19757:229::-;;;;;;:::i;:::-;;:::i;920:20::-;;;;;-1:-1:-1;;;;;920:20:26;;;19203:222;;;;;;:::i;:::-;;:::i;12985:206::-;13102:4;13121:65;13140:16;:7;13150:6;13140:16;:::i;:::-;13158:19;13179:6;13121:18;:65::i;:::-;13114:72;;12985:206;;;;;:::o;15024:192::-;15138:4;15157:54;15171:4;15177;15183:19;15204:6;15157:13;:54::i;2495:118::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;;;;;;;;;2553:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2553:16:26::1;-1:-1:-1::0;;;;2553:16:26;;::::1;;::::0;;2580:28:::1;::::0;::::1;::::0;::::1;::::0;2562:7;864:14:34;857:22;839:41;;827:2;812:18;;699:187;2580:28:26::1;;;;;;;;2495:118:::0;:::o;3146:206::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;3230:27:26;::::1;3222:76;;;::::0;-1:-1:-1;;;3222:76:26;;15398:2:34;3222:76:26::1;::::0;::::1;15380:21:34::0;15437:2;15417:18;;;15410:30;15476:34;15456:18;;;15449:62;-1:-1:-1;;;15527:18:34;;;15520:34;15571:19;;3222:76:26::1;15196:400:34::0;3222:76:26::1;3304:12;:43:::0;;-1:-1:-1;;;;;;3304:43:26::1;-1:-1:-1::0;;;;;3304:43:26;;;::::1;::::0;;;::::1;::::0;;3146:206::o;3887:369::-;4006:34;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:34:26;4051:26;4081:15;:38;4120:22;;;;:6;:22;:::i;:::-;4144:27;;;;:6;:27;:::i;:::-;4081:91;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4081:91:26;;;;;;;;;;;;:::i;:::-;4194:57;;-1:-1:-1;;;4194:57:26;;4048:124;;-1:-1:-1;4194:15:26;;-1:-1:-1;4194:32:26;;:57;;4048:124;;4242:8;;4194:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4194:57:26;;;;;;;;;;;;:::i;:::-;4178:73;3887:369;-1:-1:-1;;;;3887:369:26:o;22499:700::-;22631:4;;;;;22745:15;:39;22785:22;;;;:6;:22;:::i;:::-;22809:27;;;;:6;:27;:::i;:::-;22745:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22643:194;;-1:-1:-1;22643:194:26;;-1:-1:-1;22643:194:26;-1:-1:-1;22643:194:26;-1:-1:-1;22843:17:26;22878:22;22863:11;:37;;;;;;;;:::i;:::-;;22843:57;;22906:18;22953:13;22927:39;;;;;;;;:::i;:::-;:22;:39;;;;;;;;:::i;:::-;;;-1:-1:-1;5043:66:19;23000:44:26;;4934:66:19;23076:30:26;;23119:12;:29;;;;;23135:13;23119:29;:53;;;;;23152:20;23119:53;:75;;;;;23176:18;23119:75;23112:82;22499:700;-1:-1:-1;;;;;;;;;;;22499:700:26:o;5317:169::-;5425:4;5444:37;5462:10;:6;5471:1;5462:10;:::i;:::-;5474:6;5444:17;:37::i;21021:230::-;21153:4;21172:74;21189:11;21202:35;21239:6;21172:16;:74::i;16569:227::-;16710:4;16729:62;16743:7;16752;16761:21;16784:6;16729:13;:62::i;:::-;16722:69;;16569:227;;;;;;:::o;15522:207::-;15647:4;15666:58;15685:7;15694:21;15717:6;15666:18;:58::i;4534:541::-;4649:4;;;;4707:15;:33;4741:22;;;;:6;:22;:::i;:::-;4765:27;;;;:6;:27;:::i;:::-;4707:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4661:132;;;;;;4807:66;4829:11;4842:6;:30;;;4807:21;:66::i;:::-;4799:154;;;;-1:-1:-1;;;4799:154:26;;;;;;;:::i;:::-;4967:8;;;;4959:85;;;;;-1:-1:-1;;;4959:85:26;;23257:2:34;4959:85:26;;;23239:21:34;23276:18;;;23269:30;;;;23335:34;23315:18;;;23308:62;23406:34;23386:18;;;23379:62;23458:19;;4959:85:26;23055:428:34;4959:85:26;-1:-1:-1;5057:13:26;;;;;;;;-1:-1:-1;;4534:541:26;;;;:::o;21417:347::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21543:17:26;21563:15;:34;21598:22;;;;:6;:22;:::i;:::-;21622:27;;;;:6;:27;:::i;:::-;21563:87;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21563:87:26;;;;;;;;;;;;:::i;:::-;21725:34;;-1:-1:-1;;;21725:34:26;;21543:107;;-1:-1:-1;21725:15:26;;:28;;:34;;21543:107;;21725:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21725:34:26;;;;;;;;;;;;:::i;:::-;21701:20;;;21656:103;21682:17;;;21656:103;-1:-1:-1;;;;;21656:103:26;;;-1:-1:-1;21657:9:26;21417:347;-1:-1:-1;21417:347:26:o;5811:766::-;5939:4;;;;5997:15;:33;6031:22;;;;:6;:22;:::i;:::-;6055:27;;;;:6;:27;:::i;:::-;5997:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5951:132;;;;;;6097:66;6119:11;6132:6;:30;;;6097:21;:66::i;:::-;6089:154;;;;-1:-1:-1;;;6089:154:26;;;;;;;:::i;:::-;6267:6;6257:16;;:6;:16;;;;6249:74;;;;-1:-1:-1;;;6249:74:26;;24843:2:34;6249:74:26;;;24825:21:34;24882:2;24862:18;;;24855:30;24921:34;24901:18;;;24894:62;-1:-1:-1;;;24972:18:34;;;24965:43;25025:19;;6249:74:26;24641:409:34;6249:74:26;6337:3;:8;;6344:1;6337:8;6329:97;;;;-1:-1:-1;;;6329:97:26;;25257:2:34;6329:97:26;;;25239:21:34;25296:2;25276:18;;;25269:30;25335:34;25315:18;;;25308:62;25406:34;25386:18;;;25379:62;-1:-1:-1;;;25457:19:34;;;25450:43;25510:19;;6329:97:26;25055:480:34;6329:97:26;6440:3;:8;;6447:1;6440:8;6432:97;;;;-1:-1:-1;;;6432:97:26;;25742:2:34;6432:97:26;;;25724:21:34;25781:2;25761:18;;;25754:30;25820:34;25800:18;;;25793:62;25891:34;25871:18;;;25864:62;-1:-1:-1;;;25942:19:34;;;25935:43;25995:19;;6432:97:26;25540:480:34;6432:97:26;6552:3;6542:13;;:6;:13;;;:30;;;;;6569:3;6559:13;;:6;:13;;;6542:30;6535:37;5811:766;-1:-1:-1;;;;;;;5811:766:26:o;21915:271::-;22012:26;22041:15;:39;22081:22;;;;:6;:22;:::i;:::-;22105:27;;;;:6;:27;:::i;:::-;22041:92;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22012:121;;22139:42;22162:18;22139:22;:42::i;:::-;22006:180;21915:271;:::o;12517:204::-;12641:4;12660:56;12679:7;12688:19;12709:6;12660:18;:56::i;2262:229::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;2336:22:26;::::1;2328:63;;;::::0;-1:-1:-1;;;2328:63:26;;26462:2:34;2328:63:26::1;::::0;::::1;26444:21:34::0;26501:2;26481:18;;;26474:30;26540;26520:18;;;26513:58;26588:18;;2328:63:26::1;26260:352:34::0;2328:63:26::1;2397:16;2416:5:::0;;-1:-1:-1;;;;;2427:16:26;;::::1;-1:-1:-1::0;;;;;;2427:16:26;::::1;::::0;::::1;::::0;;2454:32:::1;::::0;2416:5;;;::::1;::::0;;;2454:32:::1;::::0;2397:16;2454:32:::1;2322:169;2262:229:::0;:::o;23538:706::-;23677:4;23791:17;23811:27;23831:6;;23811:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23811:19:26;;-1:-1:-1;;;23811:27:26:i;:::-;:92;;23902:1;23866:32;23890:6;;23873:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;23873:24:26;;;;;;;;;;23866:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;23811:92;;;23855:1;23811:92;23791:112;;24003:20;24026:26;24046:5;;24026:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24026:19:26;;-1:-1:-1;;;24026:26:26:i;:::-;:90;;24115:1;24080:31;24104:5;;24087:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;24087:23:26;;;;;;;;;;24080:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;24026:90;;;24069:1;24026:90;24003:113;;24170:9;24129:12;;1108:1:19;24129:37:26;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;24227:12;24183;;1147:1:19;24183:40:26;;;;;;;:::i;:::-;;;;;;;:56;24129:110;24122:117;23538:706;-1:-1:-1;;;;;;;;;23538:706:26:o;2911:231::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;2997:9:::1;2992:146;3012:21:::0;;::::1;2992:146;;;3055:18;:33;3074:10;;3085:1;3074:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;3055:33:::0;;-1:-1:-1;3055:33:26;::::1;::::0;;;;;;-1:-1:-1;3055:33:26;3048:40;;-1:-1:-1;;;;;;3048:40:26::1;::::0;;3117:10;;3128:1;3117:13;;::::1;;;;;:::i;:::-;;;;;;;3101:30;;;;;;;;;;3035:3;;2992:146;;;;2911:231:::0;;:::o;14544:210::-;14664:4;14683:66;14703:16;14713:6;14703:7;:16;:::i;:::-;14721:19;14742:6;14683:19;:66::i;2617:290::-;2125:5;;-1:-1:-1;;;;;2125:5:26;2111:10;:19;2103:58;;;;-1:-1:-1;;;2103:58:26;;;;;;;:::i;:::-;2742:9:::1;2737:166;2757:21:::0;;::::1;2737:166;;;2829:9;;2839:1;2829:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2793:18;:33;2812:10;;2823:1;2812:13;;;;;;;:::i;:::-;;;;;;;2793:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;2793:48:26::1;;;;;-1:-1:-1::0;;;;;2793:48:26::1;;;;;;2883:9;;2893:1;2883:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2854:42:26::1;2868:10;;2879:1;2868:13;;;;;;;:::i;:::-;;;;;;;2854:42;;;;;;;;;;2780:3;;2737:166;;;;2617:290:::0;;;;:::o;17587:211::-;17706:4;17725:68;17745:16;17755:6;17745:7;:16;:::i;:::-;17763:21;17786:6;17725:19;:68::i;6855:541::-;6970:4;;;;7028:15;:33;7062:22;;;;:6;:22;:::i;:::-;7086:27;;;;:6;:27;:::i;:::-;7028:86;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6982:132;;;;;;7128:66;7150:11;7163:6;:30;;;7128:21;:66::i;:::-;7120:154;;;;-1:-1:-1;;;7120:154:26;;;;;;;:::i;:::-;7288:8;;;;7280:85;;;;;-1:-1:-1;;;7280:85:26;;27668:2:34;7280:85:26;;;27650:21:34;27687:18;;;27680:30;;;;27746:34;27726:18;;;27719:62;27817:34;27797:18;;;27790:62;27869:19;;7280:85:26;27466:428:34;7280:85:26;7378:13;;;;;;;;-1:-1:-1;;;6855:541:26;;;;:::o;7638:228::-;7746:4;7775:1;7766:6;:10;;;7758:53;;;;-1:-1:-1;;;7758:53:26;;28101:2:34;7758:53:26;;;28083:21:34;28140:2;28120:18;;;28113:30;28179:32;28159:18;;;28152:60;28229:18;;7758:53:26;27899:354:34;7758:53:26;7824:37;7842:10;7851:1;7842:6;:10;:::i;:::-;7854:6;7824:17;:37::i;8114:159::-;8219:4;8238:30;8251:3;8256;8261:6;8238:12;:30::i;13544:224::-;13684:4;13703:60;13717:7;13726;13735:19;13756:6;13703:13;:60::i;18074:195::-;18189:4;18208:56;18222:4;18228;18234:21;18257:6;18208:13;:56::i;15999:209::-;16117:4;16136:67;16155:16;:7;16165:6;16155:16;:::i;:::-;16173:21;16196:6;16136:18;:67::i;26163:3206::-;26270:12;2217:6;;26270:12;;-1:-1:-1;;;2217:6:26;;;;2216:7;2208:38;;;;-1:-1:-1;;;2208:38:26;;28616:2:34;2208:38:26;;;28598:21:34;28655:2;28635:18;;;28628:30;-1:-1:-1;;;28674:18:34;;;28667:48;28732:18;;2208:38:26;28414:342:34;2208:38:26;26393:16:::1;26412:29;26425:15:::0;::::1;26412:12;:29::i;:::-;26393:48:::0;-1:-1:-1;26490:90:26::1;26515:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;977:1:19;26515:64:26;;;;;;;:::i;:::-;;;;;;;26490:24;:90::i;:::-;26625:82;26646:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;1029:1:19;26646:60:26;;;;;;;:::i;:::-;;;;;;;26625:20;:82::i;:::-;26765:62;26775:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;26765:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;;;26796:30:26::1;::::0;::::1;;26765:9;:62::i;:::-;26750:144;;;::::0;-1:-1:-1;;;26750:144:26;;29513:2:34;26750:144:26::1;::::0;::::1;29495:21:34::0;29552:2;29532:18;;;29525:30;29591:34;29571:18;;;29564:62;-1:-1:-1;;;29642:18:34;;;29635:49;29701:19;;26750:144:26::1;29311:415:34::0;26750:144:26::1;27238:62;27251:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27272:13;;::::0;::::1;:6:::0;:13:::1;:::i;:::-;27287:12;;::::0;::::1;:6:::0;:12:::1;:::i;27238:62::-;27230:98;;;::::0;-1:-1:-1;;;27230:98:26;;30460:2:34;27230:98:26::1;::::0;::::1;30442:21:34::0;30499:2;30479:18;;;30472:30;30538:25;30518:18;;;30511:53;30581:18;;27230:98:26::1;30258:347:34::0;27230:98:26::1;27396:244;27482:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;1195:1:19;::::0;27567::26::1;27538:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;27538:30:26::1;:::i;:::-;27482:87;;;;;;;:::i;:::-;27396:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27577:22:26::1;::::0;-1:-1:-1;;;27577:22:26::1;::::0;::::1;::::0;::::1;:::i;:::-;27607:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;27396:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;27396:21:26::1;::::0;-1:-1:-1;;;27396:244:26:i:1;:::-;27647:27;27699:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;27748:1;27719:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;27719:30:26::1;:::i;:::-;27699:51;;;;;;;:::i;:::-;;;;;;;27691:60;;27677:75;;;;;;;;:::i;:::-;27647:105:::0;-1:-1:-1;28016:39:26::1;27999:13;:56;;;;;;;;:::i;:::-;;;:112;;;;-1:-1:-1::0;28076:35:26::1;28059:13;:52;;;;;;;;:::i;:::-;;;27999:112;27998:138;;;-1:-1:-1::0;28122:14:26::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;27983:209;;;::::0;-1:-1:-1;;;27983:209:26;;31172:2:34;27983:209:26::1;::::0;::::1;31154:21:34::0;31211:2;31191:18;;;31184:30;31250:34;31230:18;;;31223:62;-1:-1:-1;;;31301:18:34;;;31294:38;31349:19;;27983:209:26::1;30970:404:34::0;27983:209:26::1;28423:34;28406:13;:51;;;;;;;;:::i;:::-;;:69;;;-1:-1:-1::0;28461:14:26::1;::::0;;;::::1;::::0;::::1;;:::i;:::-;28391:143;;;::::0;-1:-1:-1;;;28391:143:26;;31581:2:34;28391:143:26::1;::::0;::::1;31563:21:34::0;31620:2;31600:18;;;31593:30;31659:34;31639:18;;;31632:62;-1:-1:-1;;;31710:18:34;;;31703:41;31761:19;;28391:143:26::1;31379:407:34::0;28391:143:26::1;1337:1:19;28752:19:26;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:89;::::0;;-1:-1:-1;28752:89:26::1;:::i;:::-;28714:27;;::::0;::::1;:6:::0;:27:::1;:::i;:::-;:34;;:127;28706:177;;;::::0;-1:-1:-1;;;28706:177:26;;31993:2:34;28706:177:26::1;::::0;::::1;31975:21:34::0;32032:2;32012:18;;;32005:30;32071:34;32051:18;;;32044:62;-1:-1:-1;;;32122:18:34;;;32115:35;32167:19;;28706:177:26::1;31791:401:34::0;28706:177:26::1;-1:-1:-1::0;;;;;29002:26:26;::::1;;29029:12;;::::0;::::1;:6:::0;:12:::1;:::i;:::-;29043:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;29002:61;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28992:71:::0;-1:-1:-1;29126:29:26::1;29187:1;29158:19;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;:30;::::0;;-1:-1:-1;29158:30:26::1;:::i;:::-;29126:62:::0;-1:-1:-1;29213:19:26::1;;::::0;::::1;:6:::0;:19:::1;:::i;:::-;29233:21;29213:42;;;;;;;:::i;:::-;;;;;;;29194:61;;29330:34;;;26163:3206:::0;;;:::o;14071:206::-;14196:4;14215:57;14235:7;14244:19;14265:6;14215:19;:57::i;20388:223::-;20517:4;20536:70;20553:11;20566:31;20599:6;20536:16;:70::i;17105:209::-;17231:4;17250:59;17270:7;17279:21;17302:6;17250:19;:59::i;19757:229::-;19888:4;19907:74;19924:11;19937:35;19974:6;19907:16;:74::i;19203:222::-;19331:4;19350:70;19367:11;19380:31;19413:6;19350:16;:70::i;8277:1133::-;8422:4;;;;8484:15;:34;8519:22;;;;:6;:22;:::i;:::-;8543:27;;;;:6;:27;:::i;:::-;8572:9;8484:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8434:148;;;;;;8596:66;8618:11;8631:6;:30;;;8596:21;:66::i;:::-;8588:154;;;;-1:-1:-1;;;8588:154:26;;;;;;;:::i;:::-;8769:19;8756:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;8805:21:26;8792:9;:34;;;;;;;;:::i;:::-;;8756:70;8748:101;;;;-1:-1:-1;;;8748:101:26;;;;;;;:::i;:::-;8872:19;8859:9;:32;;;;;;;;:::i;:::-;;8855:551;;8909:8;;8901:91;;;;-1:-1:-1;;;8901:91:26;;34663:2:34;8901:91:26;;;34645:21:34;34702:2;34682:18;;;34675:30;34741:34;34721:18;;;34714:62;34812:34;34792:18;;;34785:62;-1:-1:-1;;;34863:19:34;;;34856:37;34910:19;;8901:91:26;34461:474:34;8901:91:26;9222:35;144:10:19;9222:3:26;:35;:::i;:::-;9211:7;:46;9204:53;;;;;;;8855:551;9286:8;;9278:92;;;;-1:-1:-1;;;9278:92:26;;35142:2:34;9278:92:26;;;35124:21:34;35181:2;35161:18;;;35154:30;35220:34;35200:18;;;35193:62;35291:34;35271:18;;;35264:62;-1:-1:-1;;;35342:19:34;;;35335:38;35390:19;;9278:92:26;34940:475:34;9278:92:26;-1:-1:-1;9385:14:26;;;-1:-1:-1;9378:21:26;;-1:-1:-1;9378:21:26;9414:1549;9575:4;;;;9637:15;:34;9672:22;;;;:6;:22;:::i;:::-;9696:27;;;;:6;:27;:::i;:::-;9725:9;9637:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9587:148;;;;;;9749:66;9771:11;9784:6;:30;;;9749:21;:66::i;:::-;9741:154;;;;-1:-1:-1;;;9741:154:26;;;;;;;:::i;:::-;9920:7;9909;:18;;9901:78;;;;-1:-1:-1;;;9901:78:26;;35622:2:34;9901:78:26;;;35604:21:34;35661:2;35641:18;;;35634:30;35700:34;35680:18;;;35673:62;-1:-1:-1;;;35751:18:34;;;35744:45;35806:19;;9901:78:26;35420:411:34;9901:78:26;10006:19;9993:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;10042:21:26;10029:9;:34;;;;;;;;:::i;:::-;;9993:70;9985:101;;;;-1:-1:-1;;;9985:101:26;;;;;;;:::i;:::-;10109:19;10096:9;:32;;;;;;;;:::i;:::-;;10092:867;;10146:3;10153:1;10146:8;10138:103;;;;-1:-1:-1;;;10138:103:26;;36038:2:34;10138:103:26;;;36020:21:34;36077:2;36057:18;;;36050:30;36116:34;36096:18;;;36089:62;36187:34;36167:18;;;36160:62;-1:-1:-1;;;36238:19:34;;;36231:49;36297:19;;10138:103:26;35836:486:34;10138:103:26;10257:3;10264:1;10257:8;10249:103;;;;-1:-1:-1;;;10249:103:26;;;;;;;:::i;:::-;10583:35;144:10:19;10583:3:26;:35;:::i;:::-;10572:7;:46;:96;;;;-1:-1:-1;10633:35:26;144:10:19;10633:3:26;:35;:::i;:::-;10622:7;:46;10572:96;10565:103;;;;;;;10092:867;10697:3;10704:1;10697:8;10689:104;;;;-1:-1:-1;;;10689:104:26;;37020:2:34;10689:104:26;;;37002:21:34;37059:2;37039:18;;;37032:30;37098:34;37078:18;;;37071:62;37169:34;37149:18;;;37142:62;-1:-1:-1;;;37220:19:34;;;37213:50;37280:19;;10689:104:26;36818:487:34;10689:104:26;10809:3;10816:1;10809:8;10801:104;;;;-1:-1:-1;;;10801:104:26;;;;;;;:::i;:::-;10931:3;10920:7;:14;:32;;;;-1:-1:-1;10938:14:26;;;;9414:1549;-1:-1:-1;;;;;;9414:1549:26:o;18273:606::-;18428:4;;;18509:15;:37;18547:22;;;;:6;:22;:::i;:::-;18571:27;;;;:6;:27;:::i;:::-;18600:9;18509:101;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18509:101:26;;;;;;;;;;;;:::i;:::-;18440:170;;;;18642:22;18620:11;:18;:44;18616:77;;18681:5;18674:12;;;;;;18616:77;18703:9;18698:160;18722:22;18718:1;:26;18698:160;;;18764:55;18783:11;18795:1;18783:14;;;;;;;;:::i;:::-;;;;;;;18799:16;18816:1;18799:19;;;;;;;;:::i;:::-;;;;;;;234::24;;;;;;;211;;;;;;;;;;:42;;119:139;18764:55:26;18759:93;;18838:5;18831:12;;;;;;;18759:93;18746:3;;18698:160;;;-1:-1:-1;18870:4:26;;18273:606;-1:-1:-1;;;;;;18273: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;25666:204:26:-;25756:12;;:62;;-1:-1:-1;;;25756:62:26;;912:1;25756:62;;;39154:25:34;39195:18;;;39188:34;;;-1:-1:-1;;;;;25756:12:26;;;;:24;;39127:18:34;;25756:62:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25741:124;;;;-1:-1:-1;;;25741:124:26;;39435:2:34;25741:124:26;;;39417:21:34;39474:2;39454:18;;;39447:30;39513:33;39493:18;;;39486:61;39564:18;;25741:124:26;39233:355:34;25741:124:26;25666:204;:::o;262:101:24:-;338:15;:20;;262:101::o;10967:1250:26:-;11113:4;;;;11175:15;:34;11210:22;;;;:6;:22;:::i;:::-;11234:27;;;;:6;:27;:::i;:::-;11263:9;11175:98;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11125:148;;;;;;11287:66;11309:11;11322:6;:30;;;11287:21;:66::i;:::-;11279:154;;;;-1:-1:-1;;;11279:154:26;;;;;;;:::i;:::-;11447:8;;11439:86;;;;-1:-1:-1;;;11439:86:26;;39795:2:34;11439:86:26;;;39777:21:34;39834:2;39814:18;;;39807:30;39873:34;39853:18;;;39846:62;39944:34;39924:18;;;39917:62;-1:-1:-1;;;39995:19:34;;;39988:32;40037:19;;11439:86:26;39593:469:34;11439:86:26;11552:19;11539:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;11588:21:26;11575:9;:34;;;;;;;;:::i;:::-;;11539:70;11531:101;;;;-1:-1:-1;;;11531:101:26;;;;;;;:::i;:::-;11655:19;11642:9;:32;;;;;;;;:::i;:::-;;11638:575;;11692:3;11699:1;11692:8;11684:103;;;;-1:-1:-1;;;11684:103:26;;;;;;;:::i;:::-;12017:35;144:10:19;12017:3:26;:35;:::i;11638:575::-;12081:3;12088:1;12081:8;12073:104;;;;-1:-1:-1;;;12073:104:26;;;;;;;:::i;:::-;12192:14;;;-1:-1:-1;12185:21:26;;-1:-1:-1;;12185:21:26;25036:210;25099:7;25133:28;;;:18;:28;;;;;;-1:-1:-1;;;;;25133:28:26;;25167:53;;;;-1:-1:-1;;;25167:53:26;;40269:2:34;25167:53:26;;;40251:21:34;40308:2;40288:18;;;40281:30;-1:-1:-1;;;40327:18:34;;;40320:48;40385:18;;25167:53:26;40067:342:34;25250:214:26;25344:12;;:66;;-1:-1:-1;;;25344:66:26;;:12;:66;;;39154:25:34;39195:18;;;39188:34;;;-1:-1:-1;;;;;25344:12:26;;;;:24;;39127:18:34;;25344:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25329:130;;;;-1:-1:-1;;;25329:130:26;;40616:2:34;25329:130:26;;;40598:21:34;40655:2;40635:18;;;40628:30;40694:34;40674:18;;;40667:62;-1:-1:-1;;;40745:18:34;;;40738:31;40786:19;;25329:130:26;40414:397:34;25468:194:26;25554:12;;;:58;;-1:-1:-1;;;25554:58:26;;;;;39154:25:34;;;;39195:18;;;39188:34;;;-1:-1:-1;;;;;25554:12:26;;:24;;39127:18:34;;25554:58:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25539:118;;;;-1:-1:-1;;;25539:118:26;;41018:2:34;25539:118:26;;;41000:21:34;41057:2;41037:18;;;41030:30;41096:31;41076:18;;;41069:59;41145:18;;25539:118:26;40816:353:34;3356:300:26;3474:4;3486:28;3525:12;1072:1:19;3525:44:26;;;;;;;;:::i;:::-;;;;;;;3517:53;;3486:84;;3583:68;3605:20;3627:23;3583:21;:68::i;24248:784::-;24421:14;;24445:410;24469:20;:27;24465:1;:31;24445:410;;;24591:28;24724:1;24622:98;24655:15;;24671:6;24655:56;24687:20;24708:1;24687:23;;;;;;;;:::i;:::-;;;;;;;24678:6;:32;;;;:::i;:::-;24655:56;;;;;;;:::i;:::-;24638:74;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;24638:74:26;;;;;;;;;;24622:98;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:103;;24591:134;;24765:16;24782:1;24765:19;;;;;;;;:::i;:::-;;;;;;;24741:20;:43;24733:74;;;;-1:-1:-1;;;24733:74:26;;41994:2:34;24733:74:26;;;41976:21:34;42033:2;42013:18;;;42006:30;-1:-1:-1;;;42052:18:34;;;42045:48;42110:18;;24733:74:26;41792:342:34;24733:74:26;24825:20;24846:1;24825:23;;;;;;;;:::i;:::-;;;;;;;24815:33;;;;;:::i;:::-;;-1:-1:-1;;24498:3:26;;24445:410;;;-1:-1:-1;24959:32:26;;;24951:76;;;;-1:-1:-1;;;24951:76:26;;42341:2:34;24951:76:26;;;42323:21:34;42380:2;42360:18;;;42353:30;42419:33;42399:18;;;42392:61;42470:18;;24951:76:26;42139:355:34;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:34;14:172;-1:-1:-1;14:172:34: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:34;508:18;;495:32;-1:-1:-1;;;;;539:30:34;;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:34;;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:34;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:34:o;4168:112::-;4254:1;4247:5;4244:12;4234:40;;4270:1;4267;4260:12;4285:554;4416:6;4424;4477:2;4465:9;4456:7;4452:23;4448:32;4445:52;;;4493:1;4490;4483:12;4445:52;4532:9;4519:23;4551:42;4587:5;4551:42;:::i;:::-;4612:5;-1:-1:-1;4668:2:34;4653:18;;4640:32;-1:-1:-1;;;;;4684:30:34;;4681:50;;;4727:1;4724;4717:12;4844:114;4928:4;4921:5;4917:16;4910:5;4907:27;4897:55;;4948:1;4945;4938:12;4963:520;5073:6;5081;5134:2;5122:9;5113:7;5109:23;5105:32;5102:52;;;5150:1;5147;5140:12;5102:52;5189:9;5176:23;5208:29;5231:5;5208:29;:::i;5488:127::-;5549:10;5544:3;5540:20;5537:1;5530:31;5580:4;5577:1;5570:15;5604:4;5601:1;5594:15;5620:255;5692:2;5686:9;5734:6;5722:19;;-1:-1:-1;;;;;5756:34:34;;5792:22;;;5753:62;5750:88;;;5818:18;;:::i;:::-;5854:2;5847:22;5620:255;:::o;5880:275::-;5951:2;5945:9;6016:2;5997:13;;-1:-1:-1;;5993:27:34;5981:40;;-1:-1:-1;;;;;6036:34:34;;6072:22;;;6033:62;6030:88;;;6098:18;;:::i;:::-;6134:2;6127:22;5880:275;;-1:-1:-1;5880:275:34:o;6160:182::-;6219:4;-1:-1:-1;;;;;6244:6:34;6241:30;6238:56;;;6274:18;;:::i;:::-;-1:-1:-1;6319:1:34;6315:14;6331:4;6311:25;;6160:182::o;6347:187::-;6396:4;-1:-1:-1;;;;;6421:6:34;6418:30;6415:56;;;6451:18;;:::i;:::-;-1:-1:-1;6517:2:34;6496:15;-1:-1:-1;;6492:29:34;6523:4;6488:40;;6347:187::o;6539:1793::-;6686:6;6694;6747:2;6735:9;6726:7;6722:23;6718:32;6715:52;;;6763:1;6760;6753:12;6715:52;6803:9;6790:23;-1:-1:-1;;;;;6828:6:34;6825:30;6822:50;;;6868:1;6865;6858:12;6822:50;6891:22;;6944:4;6936:13;;6932:27;-1:-1:-1;6922:55:34;;6973:1;6970;6963:12;6922:55;7013:2;7000:16;7036:63;7052:46;7091:6;7052:46;:::i;:::-;7036:63;:::i;:::-;7121:3;7145:6;7140:3;7133:19;7177:4;7172:3;7168:14;7161:21;;7234:4;7224:6;7221:1;7217:14;7213:2;7209:23;7205:34;7191:48;;7262:7;7254:6;7251:19;7248:39;;;7283:1;7280;7273:12;7248:39;7315:4;7311:2;7307:13;7329:749;7345:6;7340:3;7337:15;7329:749;;;7433:3;7420:17;-1:-1:-1;;;;;7456:11:34;7453:35;7450:55;;;7501:1;7498;7491:12;7450:55;7528:20;;7583:2;7575:11;;7571:25;-1:-1:-1;7561:53:34;;7610:1;7607;7600:12;7561:53;7664:4;7660:2;7656:13;7643:27;7698:55;7714:38;7743:8;7714:38;:::i;7698:55::-;7766:25;;;7810:39;7818:17;;;7810:39;7807:52;-1:-1:-1;7804:72:34;;;7872:1;7869;7862:12;7804:72;7935:8;7930:2;7926;7922:11;7915:4;7906:7;7902:18;7889:55;7999:1;7992:4;7981:8;7972:7;7968:22;7964:33;7957:44;8026:7;8021:3;8014:20;;;;8063:4;8058:3;8054:14;8047:21;;7371:4;7366:3;7362:14;7355:21;;7329:749;;;-1:-1:-1;8097:5:34;-1:-1:-1;;;;8155:4:34;8140:20;;8127:34;-1:-1:-1;;;;;8173:32:34;;8170:52;;;8218:1;8215;8208:12;8519:623;8640:6;8648;8656;8709:2;8697:9;8688:7;8684:23;8680:32;8677:52;;;8725:1;8722;8715:12;8677:52;8770:23;;;-1:-1:-1;8890:2:34;8875:18;;8862:32;;-1:-1:-1;8971:2:34;8956:18;;8943:32;-1:-1:-1;;;;;8987:30:34;;8984:50;;;9030:1;9027;9020:12;8984:50;9053:83;9128:7;9119:6;9108:9;9104:22;9053:83;:::i;:::-;9043:93;;;8519:623;;;;;:::o;9147:389::-;9250:6;9303:2;9291:9;9282:7;9278:23;9274:32;9271:52;;;9319:1;9316;9309:12;9271:52;9359:9;9346:23;-1:-1:-1;;;;;9384:6:34;9381:30;9378:50;;;9424:1;9421;9414:12;9378:50;9447:83;9522:7;9513:6;9502:9;9498:22;9447:83;:::i;9541:492::-;9726:2;9715:9;9708:21;9801:1;9797;9792:3;9788:11;9784:19;9775:6;9769:13;9765:39;9760:2;9749:9;9745:18;9738:67;9859:2;9851:6;9847:15;9841:22;9836:2;9825:9;9821:18;9814:50;9689:4;9911:2;9903:6;9899:15;9893:22;9953:4;9946;9935:9;9931:20;9924:34;9975:52;10022:3;10011:9;10007:19;9993:12;9975:52;:::i;10038:657::-;10155:6;10163;10171;10224:2;10212:9;10203:7;10199:23;10195:32;10192:52;;;10240:1;10237;10230:12;10192:52;10279:9;10266:23;10298:29;10321:5;10298:29;:::i;:::-;10346:5;-1:-1:-1;10403:2:34;10388:18;;10375:32;10416:31;10375:32;10416:31;:::i;:::-;10466:7;-1:-1:-1;10524:2:34;10509:18;;10496:32;-1:-1:-1;;;;;10540:30:34;;10537:50;;;10583:1;10580;10573:12;10700:180;10759:6;10812:2;10800:9;10791:7;10787:23;10783:32;10780:52;;;10828:1;10825;10818:12;10780:52;-1:-1:-1;10851:23:34;;10700:180;-1:-1:-1;10700:180:34:o;11093:367::-;11156:8;11166:6;11220:3;11213:4;11205:6;11201:17;11197:27;11187:55;;11238:1;11235;11228:12;11187:55;-1:-1:-1;11261:20:34;;-1:-1:-1;;;;;11293:30:34;;11290:50;;;11336:1;11333;11326:12;11290:50;11373:4;11365:6;11361:17;11349:29;;11433:3;11426:4;11416:6;11413:1;11409:14;11401:6;11397:27;11393:38;11390:47;11387:67;;;11450:1;11447;11440:12;11387:67;11093:367;;;;;:::o;11465:348::-;11517:8;11527:6;11581:3;11574:4;11566:6;11562:17;11558:27;11548:55;;11599:1;11596;11589:12;11548:55;-1:-1:-1;11622:20:34;;-1:-1:-1;;;;;11654:30:34;;11651:50;;;11697:1;11694;11687:12;11651:50;11734:4;11726:6;11722:17;11710:29;;11786:3;11779:4;11770:6;11762;11758:19;11754:30;11751:39;11748:59;;;11803:1;11800;11793:12;11818:1047;11946:6;11954;11962;11970;11978;11986;12039:2;12027:9;12018:7;12014:23;12010:32;12007:52;;;12055:1;12052;12045:12;12007:52;12095:9;12082:23;-1:-1:-1;;;;;12120:6:34;12117:30;12114:50;;;12160:1;12157;12150:12;12114:50;12199:70;12261:7;12252:6;12241:9;12237:22;12199:70;:::i;:::-;12288:8;;-1:-1:-1;12173:96:34;-1:-1:-1;;12376:2:34;12361:18;;12348:32;-1:-1:-1;;;;;12392:32:34;;12389:52;;;12437:1;12434;12427:12;12389:52;12476:61;12529:7;12518:8;12507:9;12503:24;12476:61;:::i;:::-;12556:8;;-1:-1:-1;12450:87:34;-1:-1:-1;;12644:2:34;12629:18;;12616:32;-1:-1:-1;;;;;12660:32:34;;12657:52;;;12705:1;12702;12695:12;12657:52;12744:61;12797:7;12786:8;12775:9;12771:24;12744:61;:::i;:::-;11818:1047;;;;-1:-1:-1;11818:1047:34;;-1:-1:-1;11818:1047:34;;12824:8;;11818:1047;-1:-1:-1;;;11818:1047:34:o;12870:437::-;12956:6;12964;13017:2;13005:9;12996:7;12992:23;12988:32;12985:52;;;13033:1;13030;13023:12;12985:52;13073:9;13060:23;-1:-1:-1;;;;;13098:6:34;13095:30;13092:50;;;13138:1;13135;13128:12;13092:50;13177:70;13239:7;13230:6;13219:9;13215:22;13177:70;:::i;:::-;13266:8;;13151:96;;-1:-1:-1;12870:437:34;-1:-1:-1;;;;12870:437:34:o;13312:768::-;13434:6;13442;13450;13458;13511:2;13499:9;13490:7;13486:23;13482:32;13479:52;;;13527:1;13524;13517:12;13479:52;13567:9;13554:23;-1:-1:-1;;;;;13592:6:34;13589:30;13586:50;;;13632:1;13629;13622:12;13586:50;13671:70;13733:7;13724:6;13713:9;13709:22;13671:70;:::i;:::-;13760:8;;-1:-1:-1;13645:96:34;-1:-1:-1;;13848:2:34;13833:18;;13820:32;-1:-1:-1;;;;;13864:32:34;;13861:52;;;13909:1;13906;13899:12;13861:52;13948:72;14012:7;14001:8;13990:9;13986:24;13948:72;:::i;:::-;13312:768;;;;-1:-1:-1;14039:8:34;-1:-1:-1;;;;13312:768:34:o;14579:127::-;14640:10;14635:3;14631:20;14628:1;14621:31;14671:4;14668:1;14661:15;14695:4;14692:1;14685:15;14711:125;14776:9;;;14797:10;;;14794:36;;;14810:18;;:::i;14841:350::-;15043:2;15025:21;;;15082:2;15062:18;;;15055:30;15121:28;15116:2;15101:18;;15094:56;15182:2;15167:18;;14841:350::o;15601:521::-;15678:4;15684:6;15744:11;15731:25;15838:2;15834:7;15823:8;15807:14;15803:29;15799:43;15779:18;15775:68;15765:96;;15857:1;15854;15847:12;15765:96;15884:33;;15936:20;;;-1:-1:-1;;;;;;15968:30:34;;15965:50;;;16011:1;16008;16001:12;15965:50;16044:4;16032:17;;-1:-1:-1;16075:14:34;16071:27;;;16061:38;;16058:58;;;16112:1;16109;16102:12;16127:545;16220:4;16226:6;16286:11;16273:25;16380:2;16376:7;16365:8;16349:14;16345:29;16341:43;16321:18;16317:68;16307:96;;16399:1;16396;16389:12;16307:96;16426:33;;16478:20;;;-1:-1:-1;;;;;;16510:30:34;;16507:50;;;16553:1;16550;16543:12;16507:50;16586:4;16574:17;;-1:-1:-1;16637:1:34;16633:14;;;16617;16613:35;16603:46;;16600:66;;;16662:1;16659;16652:12;16677:266;16765:6;16760:3;16753:19;16817:6;16810:5;16803:4;16798:3;16794:14;16781:43;-1:-1:-1;16869:1:34;16844:16;;;16862:4;16840:27;;;16833:38;;;;16925:2;16904:15;;;-1:-1:-1;;16900:29:34;16891:39;;;16887:50;;16677:266::o;16948:311::-;17036:19;;;17018:3;-1:-1:-1;;;;;17067:31:34;;17064:51;;;17111:1;17108;17101:12;17064:51;17147:6;17144:1;17140:14;17199:8;17192:5;17185:4;17180:3;17176:14;17163:45;17228:18;;;;17248:4;17224:29;;16948:311;-1:-1:-1;;;16948:311:34:o;17264:483::-;17517:2;17506:9;17499:21;17480:4;17543:61;17600:2;17589:9;17585:18;17577:6;17569;17543:61;:::i;:::-;17652:9;17644:6;17640:22;17635:2;17624:9;17620:18;17613:50;17680:61;17734:6;17726;17718;17680:61;:::i;17752:514::-;17805:5;17858:3;17851:4;17843:6;17839:17;17835:27;17825:55;;17876:1;17873;17866:12;17825:55;17909:6;17903:13;17948:4;17940:6;17936:17;17977:1;17998:53;18014:36;18043:6;18014:36;:::i;17998:53::-;17987:64;;18076:6;18067:7;18060:23;18116:3;18107:6;18102:3;18098:16;18095:25;18092:45;;;18133:1;18130;18123:12;18092:45;18177:6;18172:3;18165:4;18156:7;18152:18;18146:38;18233:1;18204:20;;;18226:4;18200:31;18193:42;;;;-1:-1:-1;18208:7:34;17752:514;-1:-1:-1;;;17752:514:34:o;18271:553::-;18368:6;18376;18429:2;18417:9;18408:7;18404:23;18400:32;18397:52;;;18445:1;18442;18435:12;18397:52;18478:9;18472:16;-1:-1:-1;;;;;18503:6:34;18500:30;18497:50;;;18543:1;18540;18533:12;18497:50;18566:60;18618:7;18609:6;18598:9;18594:22;18566:60;:::i;:::-;18556:70;;;18672:2;18661:9;18657:18;18651:25;-1:-1:-1;;;;;18691:8:34;18688:32;18685:52;;;18733:1;18730;18723:12;18685:52;18756:62;18810:7;18799:8;18788:9;18784:24;18756:62;:::i;18829:307::-;19006:2;18995:9;18988:21;18969:4;19026:45;19067:2;19056:9;19052:18;19044:6;19026:45;:::i;:::-;19018:53;;19121:6;19114:14;19107:22;19102:2;19091:9;19087:18;19080:50;18829:307;;;;;:::o;19141:1972::-;19243:6;19296:2;19284:9;19275:7;19271:23;19267:32;19264:52;;;19312:1;19309;19302:12;19264:52;19345:9;19339:16;-1:-1:-1;;;;;19370:6:34;19367:30;19364:50;;;19410:1;19407;19400:12;19364:50;19433:22;;19489:6;19471:16;;;19467:29;19464:49;;;19509:1;19506;19499:12;19464:49;19535:22;;:::i;:::-;19588:2;19582:9;-1:-1:-1;;;;;19606:8:34;19603:32;19600:52;;;19648:1;19645;19638:12;19600:52;19675:55;19722:7;19711:8;19707:2;19703:17;19675:55;:::i;:::-;19668:5;19661:70;;19770:2;19766;19762:11;19756:18;-1:-1:-1;;;;;19789:8:34;19786:32;19783:52;;;19831:1;19828;19821:12;19783:52;19867:55;19914:7;19903:8;19899:2;19895:17;19867:55;:::i;:::-;19862:2;19855:5;19851:14;19844:79;;19962:2;19958;19954:11;19948:18;-1:-1:-1;;;;;19981:8:34;19978:32;19975:52;;;20023:1;20020;20013:12;19975:52;20059:55;20106:7;20095:8;20091:2;20087:17;20059:55;:::i;:::-;20054:2;20047:5;20043:14;20036:79;;20154:2;20150;20146:11;20140:18;-1:-1:-1;;;;;20173:8:34;20170:32;20167:52;;;20215:1;20212;20205:12;20167:52;20251:55;20298:7;20287:8;20283:2;20279:17;20251:55;:::i;:::-;20246:2;20239:5;20235:14;20228:79;;20346:3;20342:2;20338:12;20332:19;-1:-1:-1;;;;;20366:8:34;20363:32;20360:52;;;20408:1;20405;20398:12;20360:52;20445:55;20492:7;20481:8;20477:2;20473:17;20445:55;:::i;:::-;20439:3;20432:5;20428:15;20421:80;;20540:3;20536:2;20532:12;20526:19;-1:-1:-1;;;;;20560:8:34;20557:32;20554:52;;;20602:1;20599;20592:12;20554:52;20639:55;20686:7;20675:8;20671:2;20667:17;20639:55;:::i;:::-;20633:3;20626:5;20622:15;20615:80;;20734:3;20730:2;20726:12;20720:19;-1:-1:-1;;;;;20754:8:34;20751:32;20748:52;;;20796:1;20793;20786:12;20748:52;20833:55;20880:7;20869:8;20865:2;20861:17;20833:55;:::i;:::-;20827:3;20820:5;20816:15;20809:80;;20928:3;20924:2;20920:12;20914:19;-1:-1:-1;;;;;20948:8:34;20945:32;20942:52;;;20990:1;20987;20980:12;20942:52;21027:55;21074:7;21063:8;21059:2;21055:17;21027:55;:::i;:::-;21021:3;21010:15;;21003:80;-1:-1:-1;21014:5:34;19141:1972;-1:-1:-1;;;;19141:1972:34:o;21118:668::-;21251:6;21259;21267;21275;21328:3;21316:9;21307:7;21303:23;21299:33;21296:53;;;21345:1;21342;21335:12;21296:53;21390:16;;21475:2;21460:18;;21454:25;21390:16;;-1:-1:-1;21510:1:34;21498:14;;21488:42;;21526:1;21523;21516:12;21488:42;21622:2;21607:18;;21601:25;21697:2;21682:18;;21676:25;21549:7;;-1:-1:-1;21601:25:34;-1:-1:-1;21710:44:34;21676:25;21710:44;:::i;:::-;21118:668;;;;-1:-1:-1;21118:668:34;;-1:-1:-1;;21118:668:34:o;21791:127::-;21852:10;21847:3;21843:20;21840:1;21833:31;21883:4;21880:1;21873:15;21907:4;21904:1;21897:15;21923:148;22011:4;21990:12;;;22004;;;21986:31;;22029:13;;22026:39;;;22045:18;;:::i;22076:490::-;22160:6;22168;22176;22229:2;22217:9;22208:7;22204:23;22200:32;22197:52;;;22245:1;22242;22235:12;22197:52;22290:16;;22375:2;22360:18;;22354:25;22290:16;;-1:-1:-1;22388:31:34;22354:25;22388:31;:::i;:::-;22490:2;22475:18;;22469:25;22438:7;;-1:-1:-1;22503:31:34;22469:25;22503:31;:::i;:::-;22553:7;22543:17;;;22076:490;;;;;:::o;22571:479::-;22773:2;22755:21;;;22812:2;22792:18;;;22785:30;22851:34;22846:2;22831:18;;22824:62;22922:34;22917:2;22902:18;;22895:62;-1:-1:-1;;;22988:3:34;22973:19;;22966:42;23040:3;23025:19;;22571:479::o;23488:335::-;23567:6;23620:2;23608:9;23599:7;23595:23;23591:32;23588:52;;;23636:1;23633;23626:12;23588:52;23669:9;23663:16;-1:-1:-1;;;;;23694:6:34;23691:30;23688:50;;;23734:1;23731;23724:12;23688:50;23757:60;23809:7;23800:6;23789:9;23785:22;23757:60;:::i;23828:226::-;23983:2;23972:9;23965:21;23946:4;24003:45;24044:2;24033:9;24029:18;24021:6;24003:45;:::i;24059:577::-;24157:6;24165;24173;24226:2;24214:9;24205:7;24201:23;24197:32;24194:52;;;24242:1;24239;24232:12;24194:52;24274:9;24268:16;24293:31;24318:5;24293:31;:::i;:::-;24414:2;24399:18;;24393:25;24488:2;24473:18;;24467:25;24343:5;;-1:-1:-1;24393:25:34;-1:-1:-1;;;;;;24504:30:34;;24501:50;;;24547:1;24544;24537:12;24501:50;24570:60;24622:7;24613:6;24602:9;24598:22;24570:60;:::i;26025:230::-;26095:6;26148:2;26136:9;26127:7;26123:23;26119:32;26116:52;;;26164:1;26161;26154:12;26116:52;-1:-1:-1;26209:16:34;;26025:230;-1:-1:-1;26025:230:34:o;26617:273::-;26802:6;26794;26789:3;26776:33;26758:3;26828:16;;26853:13;;;26828:16;26617:273;-1:-1:-1;26617:273:34:o;26895:301::-;27024:3;27062:6;27056:13;27108:6;27101:4;27093:6;27089:17;27084:3;27078:37;27170:1;27134:16;;27159:13;;;-1:-1:-1;27134:16:34;26895:301;-1:-1:-1;26895:301:34:o;27201:127::-;27262:10;27257:3;27253:20;27250:1;27243:31;27293:4;27290:1;27283:15;27317:4;27314:1;27307:15;27333:128;27400:9;;;27421:11;;;27418:37;;;27435:18;;:::i;28258:151::-;28348:4;28341:12;;;28327;;;28323:31;;28366:14;;28363:40;;;28383:18;;:::i;30610:355::-;30731:9;30742;30784:8;30772:10;30769:24;30766:44;;;30806:1;30803;30796:12;30766:44;30835:6;30825:8;30822:20;30819:40;;;30855:1;30852;30845:12;30819:40;-1:-1:-1;;30897:1:34;30893:18;;;30881:31;;30934:25;;;;;-1:-1:-1;30610:355:34:o;32677:245::-;32744:6;32797:2;32785:9;32776:7;32772:23;32768:32;32765:52;;;32813:1;32810;32803:12;32765:52;32845:9;32839:16;32864:28;32886:5;32864:28;:::i;32927:721::-;33221:2;33210:9;33203:21;33184:4;33247:61;33304:2;33293:9;33289:18;33281:6;33273;33247:61;:::i;:::-;33356:9;33348:6;33344:22;33339:2;33328:9;33324:18;33317:50;33384:61;33438:6;33430;33422;33384:61;:::i;:::-;33376:69;;;33475:2;33467:6;33464:14;33454:145;;33521:10;33516:3;33512:20;33509:1;33502:31;33556:4;33553:1;33546:15;33584:4;33581:1;33574:15;33454:145;33635:6;33630:2;33619:9;33615:18;33608:34;32927:721;;;;;;;;:::o;33653:456::-;33741:6;33749;33757;33810:2;33798:9;33789:7;33785:23;33781:32;33778:52;;;33826:1;33823;33816:12;33778:52;-1:-1:-1;;33871:16:34;;33977:2;33962:18;;33956:25;34073:2;34058:18;;;34052:25;33871:16;;33956:25;;-1:-1:-1;34052:25:34;33653:456;-1:-1:-1;33653:456:34:o;34114:342::-;34316:2;34298:21;;;34355:2;34335:18;;;34328:30;-1:-1:-1;;;34389:2:34;34374:18;;34367:48;34447:2;34432:18;;34114:342::o;36327:486::-;36529:2;36511:21;;;36568:2;36548:18;;;36541:30;36607:34;36602:2;36587:18;;36580:62;36678:34;36673:2;36658:18;;36651:62;-1:-1:-1;;;36744:3:34;36729:19;;36722:49;36803:3;36788:19;;36327:486::o;37310:487::-;37512:2;37494:21;;;37551:2;37531:18;;;37524:30;37590:34;37585:2;37570:18;;37563:62;37661:34;37656:2;37641:18;;37634:62;-1:-1:-1;;;37727:3:34;37712:19;;37705:50;37787:3;37772:19;;37310:487::o;37802:1173::-;37916:6;37924;37977:2;37965:9;37956:7;37952:23;37948:32;37945:52;;;37993:1;37990;37983:12;37945:52;38026:9;38020:16;-1:-1:-1;;;;;38051:6:34;38048:30;38045:50;;;38091:1;38088;38081:12;38045:50;38114:22;;38167:4;38159:13;;38155:27;-1:-1:-1;38145:55:34;;38196:1;38193;38186:12;38145:55;38229:2;38223:9;38252:63;38268:46;38307:6;38268:46;:::i;38252:63::-;38337:3;38361:6;38356:3;38349:19;38393:4;38388:3;38384:14;38377:21;;38450:4;38440:6;38437:1;38433:14;38429:2;38425:23;38421:34;38407:48;;38478:7;38470:6;38467:19;38464:39;;;38499:1;38496;38489:12;38464:39;38531:4;38527:2;38523:13;38545:308;38561:6;38556:3;38553:15;38545:308;;;38642:3;38636:10;-1:-1:-1;;;;;38665:11:34;38662:35;38659:55;;;38710:1;38707;38700:12;38659:55;38739:69;38800:7;38793:4;38779:11;38775:2;38771:20;38767:31;38739:69;:::i;:::-;38727:82;;-1:-1:-1;38838:4:34;38829:14;;;;38578;38545:308;;;-1:-1:-1;38939:4:34;38924:20;;;;38918:27;38872:5;;38918:27;;-1:-1:-1;;;;;;37802:1173:34:o;41174:331::-;41279:9;41290;41332:8;41320:10;41317:24;41314:44;;;41354:1;41351;41344:12;41314:44;41383:6;41373:8;41370:20;41367:40;;;41403:1;41400;41393:12;41367:40;-1:-1:-1;;41429:23:34;;;41474:25;;;;;-1:-1:-1;41174:331:34:o",
3061
+ object: "0x608060405234801561000f575f5ffd5b506004361061023f575f3560e01c80638b2ec61111610135578063c3fa6f22116100b4578063ddd8f8e311610079578063ddd8f8e31461051a578063ec8e07291461052d578063f3757ad414610557578063f851a44014610577578063ff20370714610589575f5ffd5b8063c3fa6f22146104bb578063ca4051f2146104ce578063cf515d37146104e1578063d39a5cf9146104f4578063d4932b4e14610507575f5ffd5b8063a6df2c01116100fa578063a6df2c011461045c578063ac20d6781461046f578063b8bd487914610482578063b96b161c14610495578063c1b77162146104a8575f5ffd5b80638b2ec611146103f05780638d6937b8146104035780638e2e2e621461041657806398e73ac3146104295780639c1a81a314610449575f5ffd5b806346b758a0116101c157806375829def1161018657806375829def146103645780637e5a88f3146103775780638163f2311461038a578063818694f1146103ca578063847755e3146103dd575f5ffd5b806346b758a01461031b5780635b7ab9291461032e5780635c975abb14610341578063652ba33d146103545780636c40d5d61461035c575f5ffd5b80632e5ce77f116102075780632e5ce77f146102b9578063311a335c146102cc578063320d3b55146102df5780633d6ed975146102f257806341a0e2c214610305575f5ffd5b8063106a2f6d1461024357806316c38b3c1461026b57806316e3d7291461028057806318677f2a146102935780631fac4345146102a6575b5f5ffd5b610256610251366004612a78565b61059c565b60405190151581526020015b60405180910390f35b61027e610279366004612ae2565b610809565b005b61027e61028e366004612afd565b610892565b61027e6102a1366004612b42565b610919565b6102566102b4366004612b6d565b6109c6565b6102566102c7366004612bdc565b6109dc565b6102566102da366004612c13565b610b10565b6102566102ed366004612b6d565b610b28565b610256610300366004612c13565b610b37565b61030d600181565b604051908152602001610262565b610256610329366004612d3d565b610b46565b61025661033c366004612d3d565b610b5c565b5f5461025690600160a01b900460ff1681565b61030d600381565b61030d600281565b61027e610372366004612b42565b610b69565b610256610385366004612d3d565b610c37565b6103b2610398366004612e5b565b60016020525f90815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610262565b6102566103d8366004612bdc565b610c44565b6102566103eb366004612ef6565b610cac565b6102566103fe366004612b6d565b610e74565b61027e610411366004612f92565b610e83565b610256610424366004612b6d565b610f43565b61043c610437366004612afd565b610f51565b6040516102629190612ffe565b610256610457366004612b6d565b61107c565b61027e61046a366004613034565b611096565b61025661047d366004612b6d565b6111c0565b610256610490366004612b6d565b6111da565b6002546103b2906001600160a01b031681565b6102566104b6366004612b6d565b6111f4565b6102566104c9366004612bdc565b611202565b6102566104dc366004612b6d565b611218565b6102566104ef36600461309e565b611226565b610256610502366004612d3d565b61147a565b610256610515366004612bdc565b611487565b610256610528366004612b6d565b6115bb565b61054061053b3660046130e6565b6115d5565b604080519215158352602083019190915201610262565b61056a61056536600461311c565b611bf5565b604051610262919061316a565b5f546103b2906001600160a01b031681565b610256610597366004612bdc565b611d35565b5f5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63defa8ed9876040518263ffffffff1660e01b81526004016105d89190613360565b608060405180830381865af41580156105f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106179190613372565b929650909450925090505f6001846001811115610636576106366133be565b1490505f89600281111561064c5761064c6133be565b83600281111561065e5761065e6133be565b1490505f7f2532418a107c5306fa8308c22255792cf77e4a290cbce8a840a642a3e591340b871480156106bc575060018a60028111156106a0576106a06133be565b14806106bc57505f8a60028111156106ba576106ba6133be565b145b8061071c57507f16700a2d9168a194fc85f237af5829b5a2be05b8ae8ac4879ada34cf54a9c2118714801561071c575060028a6002811115610700576107006133be565b148061071c57505f8a600281111561071a5761071a6133be565b145b90505f7f1fa73686cf510f8f85757b0602de0dd72a13e68ae2092462be8b72662e7f179b86148015610779575060018b600281111561075d5761075d6133be565b148061077957505f8b6002811115610777576107776133be565b145b806107d957507f24d9929b248be7eeecaa98e105c034a50539610f3fdd4cb9c8983ef4100d615d861480156107d9575060028b60028111156107bd576107bd6133be565b14806107d957505f8b60028111156107d7576107d76133be565b145b90508380156107e55750825b80156107ee5750815b80156107f75750805b985050505050505050505b9392505050565b5f546001600160a01b0316331461083b5760405162461bcd60e51b8152600401610832906133d2565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c59061088790831515815260200190565b60405180910390a150565b604051632988ebc960e21b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a623af24906108cb908590600401613360565b602060405180830381865af41580156108e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090a9190613409565b905061091581611d42565b5050565b5f546001600160a01b031633146109425760405162461bcd60e51b8152600401610832906133d2565b6001600160a01b0381166109a45760405162461bcd60e51b8152602060048201526024808201527f526f6f742072656769737472792063616e6e6f74206265207a65726f206164646044820152637265737360e01b6064820152608401610832565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b5f6109d48460028585611e03565b949350505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b8152600401610a179190613360565b606060405180830381865af4158015610a32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a569190613420565b91945092509050610a68838635611ff5565b610a845760405162461bcd60e51b815260040161083290613461565b60ff811615610afd576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e73746561646064820152608401610832565b5060ff8681169116149150509392505050565b5f610b1f858560028686612022565b95945050505050565b5f6109d4848560028686612022565b5f610b1f858560038686612022565b5f610b5383600484612343565b90505b92915050565b5f610b5383600784612343565b5f546001600160a01b03163314610b925760405162461bcd60e51b8152600401610832906133d2565b6001600160a01b038116610be85760405162461bcd60e51b815260206004820152601c60248201527f41646d696e2063616e6e6f74206265207a65726f2061646472657373000000006044820152606401610832565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f101b8081ff3b56bbf45deb824d86a3b0fd38b7e3dd42421105cf8abe9106db0b9190a35050565b5f610b5383600684612343565b5f5f8460ff1611610c975760405162461bcd60e51b815260206004820152601e60248201527f4d617820616765206d7573742062652067726561746572207468616e203000006044820152606401610832565b6109d4610ca56001866134e6565b8484611487565b5f5f610cec86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061245192505050565b610d6657600860028787604051602001610d079291906134ff565b60408051601f1981840301815290829052610d219161350e565b602060405180830381855afa158015610d3c573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d5f9190613409565b901c610d68565b5f5b90505f610da985858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061245192505050565b610e2357600860028686604051602001610dc49291906134ff565b60408051601f1981840301815290829052610dde9161350e565b602060405180830381855afa158015610df9573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e1c9190613409565b901c610e25565b5f5b90508189896003818110610e3b57610e3b613524565b90506020020135148015610e6757508089896004818110610e5e57610e5e613524565b90506020020135145b9998505050505050505050565b5f6109d4848560038686612022565b5f546001600160a01b03163314610eac5760405162461bcd60e51b8152600401610832906133d2565b5f5b81811015610f3e5760015f848484818110610ecb57610ecb613524565b602090810292909201358352508101919091526040015f2080546001600160a01b0319169055828282818110610f0357610f03613524565b905060200201357f6fdcbcf8f91bc23f2c9dcfe8fe01d80d1b1afbbf207298e94c0171ccc587424c60405160405180910390a2600101610eae565b505050565b5f6109d48460038585611e03565b60408051606080820183525f80835260208301529181019190915260405163dfda037960e01b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063dfda037990610fa5908690600401613360565b5f60405180830381865af4158015610fbf573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fe69190810190613587565b604051630578c5d360e11b815290915073__$144f4fe859debe4776cdef2b99f7b97a42$__90630af18ba6906110209084906004016135b8565b5f60405180830381865af415801561103a573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261106191908101906135ca565b604085015260208401526001600160a01b0316825250919050565b5f6109d461108d6201518086613615565b60028585611e03565b5f546001600160a01b031633146110bf5760405162461bcd60e51b8152600401610832906133d2565b5f5b838110156111b9578282828181106110db576110db613524565b90506020020160208101906110f09190612b42565b60015f87878581811061110557611105613524565b9050602002013581526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555082828281811061114e5761114e613524565b90506020020160208101906111639190612b42565b6001600160a01b031685858381811061117e5761117e613524565b905060200201357f636107338a3eb46f1f60562462f3ec11393d35fbc965991aaade3b9e7d89c3f560405160405180910390a36001016110c1565b5050505050565b5f6109d46111d18562015180613628565b60038585612456565b5f6109d46111eb8562015180613628565b60028585612456565b5f6109d48460028585612456565b5f6109d461121185600161363b565b84846109dc565b5f6109d48460038585612456565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b81526004016112619190613360565b606060405180830381865af415801561127c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a09190613420565b919450925090506112b2838635611ff5565b6112ce5760405162461bcd60e51b815260040161083290613461565b8660ff168860ff16111561133a5760405162461bcd60e51b815260206004820152602d60248201527f4d696e20616765206d757374206265206c657373207468616e206f722065717560448201526c616c20746f206d61782061676560981b6064820152608401610832565b8160ff165f036113c75760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676542656c6f774f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a401610832565b8060ff165f036114545760405162461bcd60e51b815260206004820152604c60248201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697341676541626f76654f724560648201526b1c5d585b081a5b9cdd19585960a21b608482015260a401610832565b8160ff168860ff1614801561146e57508060ff168760ff16145b98975050505050505050565b5f610b5383600584612343565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6384052813876040518263ffffffff1660e01b81526004016114c29190613360565b606060405180830381865af41580156114dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115019190613420565b91945092509050611513838635611ff5565b61152f5760405162461bcd60e51b815260040161083290613461565b60ff8216156115a8576040805162461bcd60e51b81526020600482015260248101919091527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734167654265747765656e20696e73746561646064820152608401610832565b60ff878116911614925050509392505050565b5f6109d46115cc6201518086613615565b60038585611e03565b5f80548190600160a01b900460ff16156116265760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81c185d5cd95960721b6044820152606401610832565b5f61163a6116348580613654565b35612687565b90506116736116498580613654565b611657906040810190613672565b5f81811061166757611667613524565b905060200201356126e0565b6116ab6116808580613654565b61168e906040810190613672565b600181811061169f5761169f613524565b905060200201356127a8565b61170a6116b88580613654565b6116c6906040810190613672565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506117049250505060408701876136b7565b35612866565b6117725760405162461bcd60e51b815260206004820152603360248201527f5468652070726f6f66207761732067656e657261746564206f757473696465206044820152721d1a19481d985b1a591a5d1e481c195c9a5bd9606a1b6064820152608401610832565b6117c361177f8580613654565b61178d906040810190613672565b61179a60408801886136b7565b6117a89060208101906136cb565b6117b560408a018a6136b7565b6103eb9060408101906136cb565b61180f5760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420646f6d61696e206f722073636f70650000000000000000006044820152606401610832565b6118a261181c8580613654565b61182a906040810190613672565b60059060016118398980613654565b611847906040810190613672565b611852929150613615565b9261185f9392919061370d565b808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061189d925050506020870187613738565b612891565b5f6118ad8580613654565b6118bb906040810190613672565b60026118c78880613654565b6118d5906040810190613672565b6118e0929150613615565b8181106118ef576118ef613524565b905060200201355f1c6003811115611909576119096133be565b9050600281600381111561191f5761191f6133be565b1415801561193f5750600381600381111561193c5761193c6133be565b14155b80611963575061195260408601866136b7565b611963906080810190606001612ae2565b6119c05760405162461bcd60e51b815260206004820152602860248201527f4d6f636b2070726f6f667320617265206f6e6c7920616c6c6f77656420696e20604482015267646576206d6f646560c01b6064820152608401610832565b5f8160038111156119d3576119d36133be565b14806119f857506119e760408601866136b7565b6119f8906080810190606001612ae2565b611a585760405162461bcd60e51b815260206004820152602b60248201527f53616c746564206e756c6c69666965727320617265206e6f7420737570706f7260448201526a74656420666f72206e6f7760a81b6064820152608401610832565b6007611a648680613654565b611a72906040810190613672565b611a7d929150613615565b611a8a6020870187613738565b611a98906020810190613672565b905014611af55760405162461bcd60e51b815260206004820152602560248201527f496e76616c696420636f6d6d697474656420696e70757420636f756e7473206c6044820152640cadccee8d60db1b6064820152608401610832565b6001600160a01b03821663ea50d0e4611b0e8780613654565b611b1c9060208101906136cb565b611b268980613654565b611b34906040810190613672565b6040518563ffffffff1660e01b8152600401611b53949392919061374c565b602060405180830381865afa158015611b6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b92919061377d565b93505f6001611ba18780613654565b611baf906040810190613672565b611bba929150613615565b9050611bc68680613654565b611bd4906040810190613672565b82818110611be457611be4613524565b905060200201359350505050915091565b611c3d60405180610100016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b604051635450abb360e11b81525f9073__$144f4fe859debe4776cdef2b99f7b97a42$__9063a8a1576690611c76908790600401613360565b5f60405180830381865af4158015611c90573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611cb79190810190613798565b6040516301e9bf5760e11b815290925073__$144f4fe859debe4776cdef2b99f7b97a42$__91506303d37eae90611cf490849087906004016137f1565b5f60405180830381865af4158015611d0e573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109d49190810190613814565b5f6109d484858585611226565b6002546040516383578c1160e01b815260036004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa158015611d90573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db4919061377d565b611e005760405162461bcd60e51b815260206004820152601f60248201527f496e76616c69642073616e6374696f6e7320726567697374727920726f6f74006044820152606401610832565b50565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b8152600401611e409291906139a5565b606060405180830381865af4158015611e5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7f91906139e2565b91945092509050611e91838635611ff5565b611ead5760405162461bcd60e51b815260040161083290613461565b8115611f2b5760405162461bcd60e51b815260206004820152604160248201527f5468652070726f6f66206c6f77657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973446174654265747765656e20696e737465616064820152601960fa1b608482015260a401610832565b600287600a811115611f3f57611f3f6133be565b1480611f5c5750600387600a811115611f5a57611f5a6133be565b145b611f785760405162461bcd60e51b815260040161083290613a0d565b600287600a811115611f8c57611f8c6133be565b03611fca57805f03611fb05760405162461bcd60e51b815260040161083290613a39565b611fbe6383aa7e8082613615565b881493505050506109d4565b805f03611fe95760405162461bcd60e51b815260040161083290613ab1565b871492506109d4915050565b5f806120018385613628565b905083421015801561201257508381115b80156109d4575042109392505050565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b815260040161205f9291906139a5565b606060405180830381865af415801561207a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061209e91906139e2565b919450925090506120b0838635611ff5565b6120cc5760405162461bcd60e51b815260040161083290613461565b878911156121345760405162461bcd60e51b815260206004820152602f60248201527f4d696e2064617465206d757374206265206c657373207468616e206f7220657160448201526e75616c20746f206d6178206461746560881b6064820152608401610832565b600287600a811115612148576121486133be565b14806121655750600387600a811115612163576121636133be565b145b6121815760405162461bcd60e51b815260040161083290613a0d565b600287600a811115612195576121956133be565b0361227b57815f0361222a5760405162461bcd60e51b815260206004820152605260248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746542656064820152711b1bddd3dc915c5d585b081a5b9cdd19585960721b608482015260a401610832565b805f036122495760405162461bcd60e51b815260040161083290613a39565b6122576383aa7e8083613615565b89148015612271575061226e6383aa7e8082613615565b88145b9350505050610b1f565b815f0361230c5760405162461bcd60e51b815260206004820152605360248201527f5468652070726f6f66206c6f77657220626f756e64206d757374206265206e6f60448201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746542606482015272195b1bddd3dc915c5d585b081a5b9cdd195859606a1b608482015260a401610832565b805f0361232b5760405162461bcd60e51b815260040161083290613ab1565b81891480156122715750909614979650505050505050565b5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__63dc8c5e9a85876040518363ffffffff1660e01b815260040161237f9291906139a5565b5f60405180830381865af4158015612399573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123c09190810190613b2a565b91509150808651146123d6575f92505050610802565b5f5b818110156124445761242d8782815181106123f5576123f5613524565b602002602001015184838151811061240f5761240f613524565b60200260200101518051602091820120825192909101919091201490565b61243c575f9350505050610802565b6001016123d8565b5060019695505050505050565b511590565b5f5f5f5f73__$144f4fe859debe4776cdef2b99f7b97a42$__6374d9a37e87896040518363ffffffff1660e01b81526004016124939291906139a5565b606060405180830381865af41580156124ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124d291906139e2565b919450925090506124e4838635611ff5565b6125005760405162461bcd60e51b815260040161083290613461565b600287600a811115612514576125146133be565b14806125315750600387600a81111561252f5761252f6133be565b145b61254d5760405162461bcd60e51b815260040161083290613a0d565b600287600a811115612561576125616133be565b036125f75780156125e95760405162461bcd60e51b815260206004820152604660248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c65617365207573652069734269727468646174654265747765656e20696064820152651b9cdd19585960d21b608482015260a401610832565b611fbe6383aa7e8083613615565b801561267b5760405162461bcd60e51b815260206004820152604760248201527f5468652070726f6f6620757070657220626f756e64206d75737420626520302c60448201527f20706c6561736520757365206973457870697279446174654265747765656e206064820152661a5b9cdd19585960ca1b608482015260a401610832565b50861491506109d49050565b5f818152600160205260408120546001600160a01b031680610b565760405162461bcd60e51b815260206004820152601260248201527115995c9a599a595c881b9bdd08199bdd5b9960721b6044820152606401610832565b6002546040516383578c1160e01b815260016004820152602481018390526001600160a01b03909116906383578c1190604401602060405180830381865afa15801561272e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612752919061377d565b611e005760405162461bcd60e51b815260206004820152602160248201527f496e76616c696420636572746966696361746520726567697374727920726f6f6044820152601d60fa1b6064820152608401610832565b600280546040516383578c1160e01b81526004810192909252602482018390526001600160a01b0316906383578c1190604401602060405180830381865afa1580156127f6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061281a919061377d565b611e005760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206369726375697420726567697374727920726f6f740000006044820152606401610832565b5f5f8360028151811061287b5761287b613524565b60200260200101515f1c90506109d48184611ff5565b5f805b6128a16020840184613672565b90508110156129fb575f600860026128b986806136cb565b86906128c860208a018a613672565b888181106128d8576128d8613524565b90506020020135886128ea9190613628565b926128f793929190613be3565b6040516020016129089291906134ff565b60408051601f19818403018152908290526129229161350e565b602060405180830381855afa15801561293d573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906129609190613409565b901c905084828151811061297657612976613524565b602002602001015181146129c15760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590818dbdb5b5a5d1b595b9d60721b6044820152606401610832565b6129ce6020850185613672565b838181106129de576129de613524565b90506020020135836129f09190613628565b925050600101612894565b50612a0682806136cb565b90508114610f3e5760405162461bcd60e51b815260206004820152601f60248201527f496e76616c696420636f6d6d697474656420696e70757473206c656e677468006044820152606401610832565b60038110611e00575f5ffd5b5f60408284031215612a72575f5ffd5b50919050565b5f5f5f60608486031215612a8a575f5ffd5b8335612a9581612a56565b92506020840135612aa581612a56565b915060408401356001600160401b03811115612abf575f5ffd5b612acb86828701612a62565b9150509250925092565b8015158114611e00575f5ffd5b5f60208284031215612af2575f5ffd5b813561080281612ad5565b5f60208284031215612b0d575f5ffd5b81356001600160401b03811115612b22575f5ffd5b6109d484828501612a62565b6001600160a01b0381168114611e00575f5ffd5b5f60208284031215612b52575f5ffd5b813561080281612b2e565b5f60808284031215612a72575f5ffd5b5f5f5f60608486031215612b7f575f5ffd5b8335925060208401356001600160401b03811115612b9b575f5ffd5b612ba786828701612a62565b92505060408401356001600160401b03811115612bc2575f5ffd5b612acb86828701612b5d565b60ff81168114611e00575f5ffd5b5f5f5f60608486031215612bee575f5ffd5b8335612bf981612bce565b925060208401356001600160401b03811115612b9b575f5ffd5b5f5f5f5f60808587031215612c26575f5ffd5b843593506020850135925060408501356001600160401b03811115612c49575f5ffd5b612c5587828801612a62565b92505060608501356001600160401b03811115612c70575f5ffd5b612c7c87828801612b5d565b91505092959194509250565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715612cbf57612cbf612c88565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612ced57612ced612c88565b604052919050565b5f6001600160401b03821115612d0d57612d0d612c88565b5060051b60200190565b5f6001600160401b03821115612d2f57612d2f612c88565b50601f01601f191660200190565b5f5f60408385031215612d4e575f5ffd5b82356001600160401b03811115612d63575f5ffd5b8301601f81018513612d73575f5ffd5b8035612d86612d8182612cf5565b612cc5565b8082825260208201915060208360051b850101925087831115612da7575f5ffd5b602084015b83811015612e275780356001600160401b03811115612dc9575f5ffd5b8501603f81018a13612dd9575f5ffd5b6020810135612dea612d8182612d17565b8181526040838301018c1015612dfe575f5ffd5b816040840160208301375f60208383010152808652505050602083019250602081019050612dac565b50945050505060208301356001600160401b03811115612e45575f5ffd5b612e5185828601612a62565b9150509250929050565b5f60208284031215612e6b575f5ffd5b5035919050565b5f5f83601f840112612e82575f5ffd5b5081356001600160401b03811115612e98575f5ffd5b6020830191508360208260051b8501011115612eb2575f5ffd5b9250929050565b5f5f83601f840112612ec9575f5ffd5b5081356001600160401b03811115612edf575f5ffd5b602083019150836020828501011115612eb2575f5ffd5b5f5f5f5f5f5f60608789031215612f0b575f5ffd5b86356001600160401b03811115612f20575f5ffd5b612f2c89828a01612e72565b90975095505060208701356001600160401b03811115612f4a575f5ffd5b612f5689828a01612eb9565b90955093505060408701356001600160401b03811115612f74575f5ffd5b612f8089828a01612eb9565b979a9699509497509295939492505050565b5f5f60208385031215612fa3575f5ffd5b82356001600160401b03811115612fb8575f5ffd5b612fc485828601612e72565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6020815260018060a01b038251166020820152602082015160408201525f60408301516060808401526109d46080840182612fd0565b5f5f5f5f60408587031215613047575f5ffd5b84356001600160401b0381111561305c575f5ffd5b61306887828801612e72565b90955093505060208501356001600160401b03811115613086575f5ffd5b61309287828801612e72565b95989497509550505050565b5f5f5f5f608085870312156130b1575f5ffd5b84356130bc81612bce565b935060208501356130cc81612bce565b925060408501356001600160401b03811115612c49575f5ffd5b5f602082840312156130f6575f5ffd5b81356001600160401b0381111561310b575f5ffd5b820160608185031215610802575f5ffd5b5f5f6040838503121561312d575f5ffd5b82356001600160401b03811115613142575f5ffd5b61314e85828601612a62565b925050602083013561315f81612ad5565b809150509250929050565b602081525f82516101006020840152613187610120840182612fd0565b90506020840151601f198483030160408501526131a48282612fd0565b9150506040840151601f198483030160608501526131c28282612fd0565b9150506060840151601f198483030160808501526131e08282612fd0565b9150506080840151601f198483030160a08501526131fe8282612fd0565b91505060a0840151601f198483030160c085015261321c8282612fd0565b91505060c0840151601f198483030160e085015261323a8282612fd0565b91505060e0840151601f1984830301610100850152610b1f8282612fd0565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8183525f6001600160fb1b03831115613298575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8135601e19833603018082126132c6575f5ffd5b602091840191820191356001600160401b038111156132e3575f5ffd5b8036038313156132f1575f5ffd5b60408652613303604087018285613259565b9250506020840135818112613316575f5ffd5b8401602081019150356001600160401b03811115613332575f5ffd5b8060051b3603821315613343575f5ffd5b8583036020870152613356838284613281565b9695505050505050565b602081525f610b5360208301846132b1565b5f5f5f5f60808587031215613385575f5ffd5b845160208601519094506002811061339b575f5ffd5b6040860151606087015191945092506133b381612a56565b939692955090935050565b634e487b7160e01b5f52602160045260245ffd5b6020808252601a908201527f4e6f7420617574686f72697a65643a2061646d696e206f6e6c79000000000000604082015260600190565b5f60208284031215613419575f5ffd5b5051919050565b5f5f5f60608486031215613432575f5ffd5b8351602085015190935061344581612bce565b604085015190925061345681612bce565b809150509250925092565b6020808252604b908201527f5468652063757272656e742064617465207573656420696e207468652070726f60408201527f6f6620646f6573206e6f742066616c6c2077697468696e207468652076616c6960608201526a191a5d1e481c195c9a5bd960aa1b608082015260a00190565b634e487b7160e01b5f52601160045260245ffd5b60ff8281168282160390811115610b5657610b566134d2565b818382375f9101908152919050565b5f82518060208501845e5f920191825250919050565b634e487b7160e01b5f52603260045260245ffd5b5f82601f830112613547575f5ffd5b8151602083015f61355a612d8184612d17565b905082815285838301111561356d575f5ffd5b8282602083015e5f92810160200192909252509392505050565b5f60208284031215613597575f5ffd5b81516001600160401b038111156135ac575f5ffd5b6109d484828501613538565b602081525f610b536020830184612fd0565b5f5f5f606084860312156135dc575f5ffd5b83516135e781612b2e565b6020850151604086015191945092506001600160401b03811115613609575f5ffd5b612acb86828701613538565b81810381811115610b5657610b566134d2565b80820180821115610b5657610b566134d2565b60ff8181168382160190811115610b5657610b566134d2565b5f8235605e19833603018112613668575f5ffd5b9190910192915050565b5f5f8335601e19843603018112613687575f5ffd5b8301803591506001600160401b038211156136a0575f5ffd5b6020019150600581901b3603821315612eb2575f5ffd5b5f8235607e19833603018112613668575f5ffd5b5f5f8335601e198436030181126136e0575f5ffd5b8301803591506001600160401b038211156136f9575f5ffd5b602001915036819003821315612eb2575f5ffd5b5f5f8585111561371b575f5ffd5b83861115613727575f5ffd5b5050600583901b0193919092039150565b5f8235603e19833603018112613668575f5ffd5b604081525f61375f604083018688613259565b8281036020840152613772818587613281565b979650505050505050565b5f6020828403121561378d575f5ffd5b815161080281612ad5565b5f5f604083850312156137a9575f5ffd5b82516001600160401b038111156137be575f5ffd5b6137ca85828601613538565b92505060208301516001600160401b038111156137e5575f5ffd5b612e5185828601613538565b604081525f6138036040830185612fd0565b905082151560208301529392505050565b5f60208284031215613824575f5ffd5b81516001600160401b03811115613839575f5ffd5b8201610100818503121561384b575f5ffd5b613853612c9c565b81516001600160401b03811115613868575f5ffd5b61387486828501613538565b82525060208201516001600160401b0381111561388f575f5ffd5b61389b86828501613538565b60208301525060408201516001600160401b038111156138b9575f5ffd5b6138c586828501613538565b60408301525060608201516001600160401b038111156138e3575f5ffd5b6138ef86828501613538565b60608301525060808201516001600160401b0381111561390d575f5ffd5b61391986828501613538565b60808301525060a08201516001600160401b03811115613937575f5ffd5b61394386828501613538565b60a08301525060c08201516001600160401b03811115613961575f5ffd5b61396d86828501613538565b60c08301525060e08201516001600160401b0381111561398b575f5ffd5b61399786828501613538565b60e083015250949350505050565b604081525f6139b760408301856132b1565b9050600b83106139d557634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f5f5f606084860312156139f4575f5ffd5b5050815160208301516040909301519094929350919050565b602080825260129082015271496e76616c69642070726f6f66207479706560701b604082015260600190565b60208082526052908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c656173652075736520697342697274686461746541626060820152711bdd9953dc915c5d585b081a5b9cdd19585960721b608082015260a00190565b60208082526053908201527f5468652070726f6f6620757070657220626f756e64206d757374206265206e6f60408201527f6e2d7a65726f2c20706c65617365207573652069734578706972794461746541606082015272189bdd9953dc915c5d585b081a5b9cdd195859606a1b608082015260a00190565b5f5f60408385031215613b3b575f5ffd5b82516001600160401b03811115613b50575f5ffd5b8301601f81018513613b60575f5ffd5b8051613b6e612d8182612cf5565b8082825260208201915060208360051b850101925087831115613b8f575f5ffd5b602084015b83811015613bcf5780516001600160401b03811115613bb1575f5ffd5b613bc08a602083890101613538565b84525060209283019201613b94565b506020969096015195979596505050505050565b5f5f85851115613bf1575f5ffd5b83861115613bfd575f5ffd5b505082019391909203915056fea2646970667358221220f991155c5f0495dd21a11592eb81a72baddd6126ad66ff51d0de5dd26a8c865164736f6c634300081d0033",
3062
+ sourceMap: "706:30507:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23756:915;;;;;;:::i;:::-;;:::i;:::-;;;1155:14:34;;1148:22;1130:41;;1118:2;1103:18;23756:915:26;;;;;;;;2527:118;;;;;;:::i;:::-;;:::i;:::-;;23118:224;;;;;;:::i;:::-;;:::i;3178:206::-;;;;;;:::i;:::-;;:::i;14705:261::-;;;;;;:::i;:::-;;:::i;4538:543::-;;;;;;:::i;:::-;;:::i;14091:279::-;;;;;;:::i;:::-;;:::i;15830:247::-;;;;;;:::i;:::-;;:::i;17636:282::-;;;;;;:::i;:::-;;:::i;738:69::-;;804:1;738:69;;;;;5120:25:34;;;5108:2;5093:18;738:69:26;4974:177:34;20526:220:26;;;;;;:::i;:::-;;:::i;22299:228::-;;;;;;:::i;:::-;;:::i;976:18::-;;;;;-1:-1:-1;;;976:18:26;;;;;;880:67;;944:1;880:67;;811:65;;873:1;811:65;;2294:229;;;;;;:::i;:::-;;:::i;21065:227::-;;;;;;:::i;:::-;;:::i;1084:53::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;1084:53:26;;;;;;-1:-1:-1;;;;;8330:32:34;;;8312:51;;8300:2;8285:18;1084:53:26;8166:203:34;7831:283:26;;;;;;:::i;:::-;;:::i;25010:706::-;;;;;;:::i;:::-;;:::i;19402:250::-;;;;;;:::i;:::-;;:::i;2943:231::-;;;;;;:::i;:::-;;:::i;18259:264::-;;;;;;:::i;:::-;;:::i;22680:300::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15265:263::-;;;;;;:::i;:::-;;:::i;2649:290::-;;;;;;:::i;:::-;;:::i;16979:264::-;;;;;;:::i;:::-;;:::i;13445:261::-;;;;;;:::i;:::-;;:::i;1211:33::-;;;;;-1:-1:-1;;;;;1211:33:26;;;12890:259;;;;;;:::i;:::-;;:::i;5355:224::-;;;;;;:::i;:::-;;:::i;16415:262::-;;;;;;:::i;:::-;;:::i;5936:768::-;;;;;;:::i;:::-;;:::i;21681:221::-;;;;;;:::i;:::-;;:::i;7014:543::-;;;;;;:::i;:::-;;:::i;18828:266::-;;;;;;:::i;:::-;;:::i;27654:3557::-;;;;;;:::i;:::-;;:::i;:::-;;;;13891:14:34;;13884:22;13866:41;;13938:2;13923:18;;13916:34;;;;13839:18;27654:3557:26;13698:258:34;3906:322:26;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;952:20::-;;;;;-1:-1:-1;;;;;952:20:26;;;8394:214;;;;;;:::i;:::-;;:::i;23756:915::-;23892:4;23905:19;23926:23;23951:13;23966:36;24006:15;:39;24046:11;24006:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23904:154;;-1:-1:-1;23904:154:26;;-1:-1:-1;23904:154:26;-1:-1:-1;23904:154:26;-1:-1:-1;24064:17:26;24099:22;24084:11;:37;;;;;;;;:::i;:::-;;24064:57;;24127:18;24174:13;24148:39;;;;;;;;:::i;:::-;:22;:39;;;;;;;;:::i;:::-;;;-1:-1:-1;24193:25:26;5336:66:19;24222:44:26;;:78;;;;-1:-1:-1;24277:6:26;24271:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;24293:6:26;24287:2;:12;;;;;;;;:::i;:::-;;24271:28;24221:173;;;-1:-1:-1;5508:66:19;24306:49:26;;:87;;;;-1:-1:-1;24366:10:26;24360:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;24386:6:26;24380:2;:12;;;;;;;;:::i;:::-;;24360:32;24193:201;-1:-1:-1;24400:23:26;4953:66:19;24427:34:26;;:68;;;;-1:-1:-1;24472:6:26;24466:2;:12;;;;;;;;:::i;:::-;;:28;;;-1:-1:-1;24488:6:26;24482:2;:12;;;;;;;;:::i;:::-;;24466:28;24426:152;;;-1:-1:-1;5174:66:19;24501:38:26;;:76;;;;-1:-1:-1;24550:10:26;24544:2;:16;;;;;;;;:::i;:::-;;:32;;;-1:-1:-1;24570:6:26;24564:2;:12;;;;;;;;:::i;:::-;;24544:32;24400:178;;24591:12;:29;;;;;24607:13;24591:29;:53;;;;;24624:20;24591:53;:75;;;;;24648:18;24591:75;24584:82;;;;;;;;;;23756:915;;;;;;:::o;2527:118::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;;;;;;;;;2585:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;2585:16:26::1;-1:-1:-1::0;;;;2585:16:26;;::::1;;::::0;;2612:28:::1;::::0;::::1;::::0;::::1;::::0;2594:7;1155:14:34;1148:22;1130:41;;1118:2;1103:18;;990:187;2612:28:26::1;;;;;;;;2527:118:::0;:::o;23118:224::-;23237:52;;-1:-1:-1;;;23237:52:26;;23208:26;;23237:15;;:39;;:52;;23277:11;;23237:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23208:81;;23295:42;23318:18;23295:22;:42::i;:::-;23202:140;23118:224;:::o;3178:206::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;3262:27:26;::::1;3254:76;;;::::0;-1:-1:-1;;;3254:76:26;;19820:2:34;3254:76:26::1;::::0;::::1;19802:21:34::0;19859:2;19839:18;;;19832:30;19898:34;19878:18;;;19871:62;-1:-1:-1;;;19949:18:34;;;19942:34;19993:19;;3254:76:26::1;19618:400:34::0;3254:76:26::1;3336:12;:43:::0;;-1:-1:-1;;;;;;3336:43:26::1;-1:-1:-1::0;;;;;3336:43:26;;;::::1;::::0;;;::::1;::::0;;3178:206::o;14705:261::-;14865:4;14884:77;14904:7;14913:19;14934:11;14947:13;14884:19;:77::i;:::-;14877:84;14705:261;-1:-1:-1;;;;14705:261:26:o;4538:543::-;4688:4;4701:19;4722:9;4733;4746:15;:33;4780:11;4746:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4700:92;;-1:-1:-1;4700:92:26;-1:-1:-1;4700:92:26;-1:-1:-1;4806:73:26;4700:92;4841:37;;4806:21;:73::i;:::-;4798:161;;;;-1:-1:-1;;;4798:161:26;;;;;;;:::i;:::-;4973:8;;;;4965:85;;;;;-1:-1:-1;;;4965:85:26;;21204:2:34;4965:85:26;;;21186:21:34;21223:18;;;21216:30;;;;21282:34;21262:18;;;21255:62;21353:34;21333:18;;;21326:62;21405:19;;4965:85:26;21002:428:34;4965:85:26;-1:-1:-1;5063:13:26;;;;;;;;-1:-1:-1;;4538:543:26;;;;;:::o;14091:279::-;14266:4;14285:80;14299:7;14308;14317:19;14338:11;14351:13;14285;:80::i;:::-;14278:87;14091:279;-1:-1:-1;;;;;14091:279:26:o;15830:247::-;15979:4;15998:74;16012:4;16018;16024:19;16045:11;16058:13;15998;:74::i;17636:282::-;17812:4;17831:82;17845:7;17854;17863:21;17886:11;17899:13;17831;:82::i;20526:220::-;20647:4;20666:75;20683:11;20696:31;20729:11;20666:16;:75::i;:::-;20659:82;;20526:220;;;;;:::o;22299:228::-;22424:4;22443:79;22460:11;22473:35;22510:11;22443:16;:79::i;2294:229::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;-1:-1:-1;;;;;2368:22:26;::::1;2360:63;;;::::0;-1:-1:-1;;;2360:63:26;;21637:2:34;2360:63:26::1;::::0;::::1;21619:21:34::0;21676:2;21656:18;;;21649:30;21715;21695:18;;;21688:58;21763:18;;2360:63:26::1;21435:352:34::0;2360:63:26::1;2429:16;2448:5:::0;;-1:-1:-1;;;;;2459:16:26;;::::1;-1:-1:-1::0;;;;;;2459:16:26;::::1;::::0;::::1;::::0;;2486:32:::1;::::0;2448:5;;;::::1;::::0;;;2486:32:::1;::::0;2429:16;2486:32:::1;2354:169;2294:229:::0;:::o;21065:227::-;21189:4;21208:79;21225:11;21238:35;21275:11;21208:16;:79::i;7831:283::-;7974:4;8003:1;7994:6;:10;;;7986:53;;;;-1:-1:-1;;;7986:53:26;;21994:2:34;7986:53:26;;;21976:21:34;22033:2;22013:18;;;22006:30;22072:32;22052:18;;;22045:60;22122:18;;7986:53:26;21792:354:34;7986:53:26;8052:57;8070:10;8079:1;8070:6;:10;:::i;:::-;8082:11;8095:13;8052:17;:57::i;25010:706::-;25149:4;25263:17;25283:27;25303:6;;25283:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25283:19:26;;-1:-1:-1;;;25283:27:26:i;:::-;:92;;25374:1;25338:32;25362:6;;25345:24;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;25345:24:26;;;;;;;;;;25338:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:37;;25283:92;;;25327:1;25283:92;25263:112;;25475:20;25498:26;25518:5;;25498:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25498:19:26;;-1:-1:-1;;;25498:26:26:i;:::-;:90;;25587:1;25552:31;25576:5;;25559:23;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;25559:23:26;;;;;;;;;;25552:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;25498:90;;;25541:1;25498:90;25475:113;;25642:9;25601:12;;1108:1:19;25601:37:26;;;;;;;:::i;:::-;;;;;;;:50;:110;;;;;25699:12;25655;;1147:1:19;25655:40:26;;;;;;;:::i;:::-;;;;;;;:56;25601:110;25594:117;25010:706;-1:-1:-1;;;;;;;;;25010:706:26:o;19402:250::-;19552:4;19571:76;19585:4;19591;19597:21;19620:11;19633:13;19571;:76::i;2943:231::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;3029:9:::1;3024:146;3044:21:::0;;::::1;3024:146;;;3087:18;:33;3106:10;;3117:1;3106:13;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;3087:33:::0;;-1:-1:-1;3087:33:26;::::1;::::0;;;;;;-1:-1:-1;3087:33:26;3080:40;;-1:-1:-1;;;;;;3080:40:26::1;::::0;;3149:10;;3160:1;3149:13;;::::1;;;;;:::i;:::-;;;;;;;3133:30;;;;;;;;;;3067:3;;3024:146;;;;2943:231:::0;;:::o;18259:264::-;18420:4;18439:79;18459:7;18468:21;18491:11;18504:13;18439:19;:79::i;22680:300::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;22819:47:26;;-1:-1:-1;;;22819:47:26;;22799:17;;22819:15;;:34;;:47;;22854:11;;22819:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22819:47:26;;;;;;;;;;;;:::i;:::-;22941:34;;-1:-1:-1;;;22941:34:26;;22799:67;;-1:-1:-1;22941:15:26;;:28;;:34;;22799:67;;22941:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22941:34:26;;;;;;;;;;;;:::i;:::-;22917:20;;;22872:103;22898:17;;;22872:103;-1:-1:-1;;;;;22872:103:26;;;-1:-1:-1;22873:9:26;22680:300;-1:-1:-1;22680:300:26:o;15265:263::-;15418:4;15437:86;15457:16;15467:6;15457:7;:16;:::i;:::-;15475:19;15496:11;15509:13;15437:19;:86::i;2649:290::-;2157:5;;-1:-1:-1;;;;;2157:5:26;2143:10;:19;2135:58;;;;-1:-1:-1;;;2135:58:26;;;;;;;:::i;:::-;2774:9:::1;2769:166;2789:21:::0;;::::1;2769:166;;;2861:9;;2871:1;2861:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;2825:18;:33;2844:10;;2855:1;2844:13;;;;;;;:::i;:::-;;;;;;;2825:33;;;;;;;;;;;;:48;;;;;-1:-1:-1::0;;;;;2825:48:26::1;;;;;-1:-1:-1::0;;;;;2825:48:26::1;;;;;;2915:9;;2925:1;2915:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;2886:42:26::1;2900:10;;2911:1;2900:13;;;;;;;:::i;:::-;;;;;;;2886:42;;;;;;;;;;2812:3;;2769:166;;;;2649:290:::0;;;;:::o;16979:264::-;17132:4;17151:87;17170:16;:7;17180:6;17170:16;:::i;:::-;17188:21;17211:11;17224:13;17151:18;:87::i;13445:261::-;13597:4;13616:85;13635:16;:7;13645:6;13635:16;:::i;:::-;13653:19;13674:11;13687:13;13616:18;:85::i;12890:259::-;13049:4;13068:76;13087:7;13096:19;13117:11;13130:13;13068:18;:76::i;5355:224::-;5498:4;5517:57;5535:10;:6;5544:1;5535:10;:::i;:::-;5547:11;5560:13;5517:17;:57::i;16415:262::-;16575:4;16594:78;16613:7;16622:21;16645:11;16658:13;16594:18;:78::i;5936:768::-;6099:4;6112:19;6133:9;6144;6157:15;:33;6191:11;6157:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6111:92;;-1:-1:-1;6111:92:26;-1:-1:-1;6111:92:26;-1:-1:-1;6217:73:26;6111:92;6252:37;;6217:21;:73::i;:::-;6209:161;;;;-1:-1:-1;;;6209:161:26;;;;;;;:::i;:::-;6394:6;6384:16;;:6;:16;;;;6376:74;;;;-1:-1:-1;;;6376:74:26;;25445:2:34;6376:74:26;;;25427:21:34;25484:2;25464:18;;;25457:30;25523:34;25503:18;;;25496:62;-1:-1:-1;;;25574:18:34;;;25567:43;25627:19;;6376:74:26;25243:409:34;6376:74:26;6464:3;:8;;6471:1;6464:8;6456:97;;;;-1:-1:-1;;;6456:97:26;;25859:2:34;6456:97:26;;;25841:21:34;25898:2;25878:18;;;25871:30;25937:34;25917:18;;;25910:62;26008:34;25988:18;;;25981:62;-1:-1:-1;;;26059:19:34;;;26052:43;26112:19;;6456:97:26;25657:480:34;6456:97:26;6567:3;:8;;6574:1;6567:8;6559:97;;;;-1:-1:-1;;;6559:97:26;;26344:2:34;6559:97:26;;;26326:21:34;26383:2;26363:18;;;26356:30;26422:34;26402:18;;;26395:62;26493:34;26473:18;;;26466:62;-1:-1:-1;;;26544:19:34;;;26537:43;26597:19;;6559:97:26;26142:480:34;6559:97:26;6679:3;6669:13;;:6;:13;;;:30;;;;;6696:3;6686:13;;:6;:13;;;6669:30;6662:37;5936:768;-1:-1:-1;;;;;;;;5936:768:26:o;21681:221::-;21803:4;21822:75;21839:11;21852:31;21885:11;21822:16;:75::i;7014:543::-;7164:4;7177:19;7198:9;7209;7222:15;:33;7256:11;7222:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7176:92;;-1:-1:-1;7176:92:26;-1:-1:-1;7176:92:26;-1:-1:-1;7282:73:26;7176:92;7317:37;;7282:21;:73::i;:::-;7274:161;;;;-1:-1:-1;;;7274:161:26;;;;;;;:::i;:::-;7449:8;;;;7441:85;;;;;-1:-1:-1;;;7441:85:26;;26829:2:34;7441:85:26;;;26811:21:34;26848:18;;;26841:30;;;;26907:34;26887:18;;;26880:62;26978:34;26958:18;;;26951:62;27030:19;;7441:85:26;26627:428:34;7441:85:26;7539:13;;;;;;;;-1:-1:-1;;;7014:543:26;;;;;:::o;18828:266::-;18982:4;19001:88;19021:16;19031:6;19021:7;:16;:::i;:::-;19039:21;19062:11;19075:13;19001:19;:88::i;27654:3557::-;27761:12;2249:6;;27761:12;;-1:-1:-1;;;2249:6:26;;;;2248:7;2240:38;;;;-1:-1:-1;;;2240:38:26;;27262:2:34;2240:38:26;;;27244:21:34;27301:2;27281:18;;;27274:30;-1:-1:-1;;;27320:18:34;;;27313:48;27378:18;;2240:38:26;27060:342:34;2240:38:26;27884:16:::1;27903:51;27916:28;:6:::0;;:28:::1;:::i;:::-;:37;27903:12;:51::i;:::-;27884:70:::0;-1:-1:-1;28003:112:26::1;28028:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;977:1:19;28028:86:26;;;;;;;:::i;:::-;;;;;;;28003:24;:112::i;:::-;28160:104;28181:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;1029:1:19;28181:82:26;;;;;;;:::i;:::-;;;;;;;28160:20;:104::i;:::-;28322:98;28332:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;28322:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;28375:20:26::1;::::0;-1:-1:-1;;;28375:20:26::1;::::0;::::1;::::0;::::1;:::i;:::-;:44;28322:9;:98::i;:::-;28307:180;;;::::0;-1:-1:-1;;;28307:180:26;;28840:2:34;28307:180:26::1;::::0;::::1;28822:21:34::0;28879:2;28859:18;;;28852:30;28918:34;28898:18;;;28891:62;-1:-1:-1;;;28969:18:34;;;28962:49;29028:19;;28307:180:26::1;28638:415:34::0;28307:180:26::1;28831:112;28844:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;28887:20;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:27;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;28916:20;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:26;::::0;::::1;::::0;::::1;::::0;::::1;:::i;28831:112::-;28823:148;;;::::0;-1:-1:-1;;;28823:148:26;;29787:2:34;28823:148:26::1;::::0;::::1;29769:21:34::0;29826:2;29806:18;;;29799:30;29865:25;29845:18;;;29838:53;29908:18;;28823:148:26::1;29585:347:34::0;28823:148:26::1;29039:249;29125:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;1195:1:19;::::0;29254::26::1;29203:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;29203:52:26::1;:::i;:::-;29125:131;;;;;;;:::i;:::-;29039:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;29264:18:26::1;::::0;-1:-1:-1;;;29264:18:26::1;::::0;::::1;::::0;::::1;:::i;:::-;29039:21;:249::i;:::-;29295:27;29347:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;29440:1;29389:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;29389:52:26::1;:::i;:::-;29347:95;;;;;;;:::i;:::-;;;;;;;29339:104;;29325:119;;;;;;;;:::i;:::-;29295:149:::0;-1:-1:-1;29708:39:26::1;29691:13;:56;;;;;;;;:::i;:::-;;;:112;;;;-1:-1:-1::0;29768:35:26::1;29751:13;:52;;;;;;;;:::i;:::-;;;29691:112;29690:152;;;-1:-1:-1::0;29814:20:26::1;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:28;::::0;;;;;::::1;;;:::i;:::-;29675:223;;;::::0;-1:-1:-1;;;29675:223:26;;30833:2:34;29675:223:26::1;::::0;::::1;30815:21:34::0;30872:2;30852:18;;;30845:30;30911:34;30891:18;;;30884:62;-1:-1:-1;;;30962:18:34;;;30955:38;31010:19;;29675:223:26::1;30631:404:34::0;29675:223:26::1;30129:34;30112:13;:51;;;;;;;;:::i;:::-;;:83;;;-1:-1:-1::0;30167:20:26::1;;::::0;::::1;:6:::0;:20:::1;:::i;:::-;:28;::::0;;;;;::::1;;;:::i;:::-;30097:157;;;::::0;-1:-1:-1;;;30097:157:26;;31242:2:34;30097:157:26::1;::::0;::::1;31224:21:34::0;31281:2;31261:18;;;31254:30;31320:34;31300:18;;;31293:62;-1:-1:-1;;;31371:18:34;;;31364:41;31422:19;;30097:157:26::1;31040:407:34::0;30097:157:26::1;1337:1:19;30484:28:26;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:111;::::0;;-1:-1:-1;30484:111:26::1;:::i;:::-;30434:18;;::::0;::::1;:6:::0;:18:::1;:::i;:::-;:39;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:46;;:161;30426:211;;;::::0;-1:-1:-1;;;30426:211:26;;32204:2:34;30426:211:26::1;::::0;::::1;32186:21:34::0;32243:2;32223:18;;;32216:30;32282:34;32262:18;;;32255:62;-1:-1:-1;;;32333:18:34;;;32326:35;32378:19;;30426:211:26::1;32002:401:34::0;30426:211:26::1;-1:-1:-1::0;;;;;30756:26:26;::::1;;30783:28;:6:::0;;:28:::1;:::i;:::-;:34;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;30819:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;30756:105;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30746:115:::0;-1:-1:-1;30924:29:26::1;31007:1;30956:28;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;:52;::::0;;-1:-1:-1;30956:52:26::1;:::i;:::-;30924:84:::0;-1:-1:-1;31033:28:26::1;:6:::0;;:28:::1;:::i;:::-;:41;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;31075:21;31033:64;;;;;;;:::i;:::-;;;;;;;31014:83;;31172:34;;;27654:3557:::0;;;:::o;3906:322::-;4018:34;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4018:34:26;4093:51;;-1:-1:-1;;;4093:51:26;;4063:26;;4093:15;;:38;;:51;;4132:11;;4093:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4093:51:26;;;;;;;;;;;;:::i;:::-;4166:57;;-1:-1:-1;;;4166:57:26;;4060:84;;-1:-1:-1;4166:15:26;;-1:-1:-1;4166:32:26;;:57;;4060:84;;4214:8;;4166:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4166:57:26;;;;;;;;;;;;:::i;8394:214::-;8534:4;8553:50;8566:3;8571;8576:11;8589:13;8553:12;:50::i;27157:204::-;27247:12;;:62;;-1:-1:-1;;;27247:62:26;;944:1;27247:62;;;36685:25:34;36726:18;;;36719:34;;;-1:-1:-1;;;;;27247:12:26;;;;:24;;36658:18:34;;27247:62:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27232:124;;;;-1:-1:-1;;;27232:124:26;;36966:2:34;27232:124:26;;;36948:21:34;37005:2;36985:18;;;36978:30;37044:33;37024:18;;;37017:61;37095:18;;27232:124:26;36764:355:34;27232:124:26;27157:204;:::o;11306:1252::-;11487:4;11500:19;11521:11;11534;11549:15;:34;11584:11;11597:9;11549:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11499:108;;-1:-1:-1;11499:108:26;-1:-1:-1;11499:108:26;-1:-1:-1;11621:73:26;11499:108;11656:37;;11621:21;:73::i;:::-;11613:161;;;;-1:-1:-1;;;11613:161:26;;;;;;;:::i;:::-;11788:8;;11780:86;;;;-1:-1:-1;;;11780:86:26;;38321:2:34;11780:86:26;;;38303:21:34;38360:2;38340:18;;;38333:30;38399:34;38379:18;;;38372:62;38470:34;38450:18;;;38443:62;-1:-1:-1;;;38521:19:34;;;38514:32;38563:19;;11780:86:26;38119:469:34;11780:86:26;11893:19;11880:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;11929:21:26;11916:9;:34;;;;;;;;:::i;:::-;;11880:70;11872:101;;;;-1:-1:-1;;;11872:101:26;;;;;;;:::i;:::-;11996:19;11983:9;:32;;;;;;;;:::i;:::-;;11979:575;;12033:3;12040:1;12033:8;12025:103;;;;-1:-1:-1;;;12025:103:26;;;;;;;:::i;:::-;12358:35;144:10:19;12358:3:26;:35;:::i;:::-;12347:7;:46;12340:53;;;;;;;11979:575;12422:3;12429:1;12422:8;12414:104;;;;-1:-1:-1;;;12414:104:26;;;;;;;:::i;:::-;12533:14;;;-1:-1:-1;12526:21:26;;-1:-1:-1;;12526:21:26;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;9751:1551:26:-;9947:4;9960:19;9981:11;9994;10009:15;:34;10044:11;10057:9;10009:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9959:108;;-1:-1:-1;9959:108:26;-1:-1:-1;9959:108:26;-1:-1:-1;10081:73:26;9959:108;10116:37;;10081:21;:73::i;:::-;10073:161;;;;-1:-1:-1;;;10073:161:26;;;;;;;:::i;:::-;10259:7;10248;:18;;10240:78;;;;-1:-1:-1;;;10240:78:26;;40125:2:34;10240:78:26;;;40107:21:34;40164:2;40144:18;;;40137:30;40203:34;40183:18;;;40176:62;-1:-1:-1;;;40254:18:34;;;40247:45;40309:19;;10240:78:26;39923:411:34;10240:78:26;10345:19;10332:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;10381:21:26;10368:9;:34;;;;;;;;:::i;:::-;;10332:70;10324:101;;;;-1:-1:-1;;;10324:101:26;;;;;;;:::i;:::-;10448:19;10435:9;:32;;;;;;;;:::i;:::-;;10431:867;;10485:3;10492:1;10485:8;10477:103;;;;-1:-1:-1;;;10477:103:26;;40541:2:34;10477:103:26;;;40523:21:34;40580:2;40560:18;;;40553:30;40619:34;40599:18;;;40592:62;40690:34;40670:18;;;40663:62;-1:-1:-1;;;40741:19:34;;;40734:49;40800:19;;10477:103:26;40339:486:34;10477:103:26;10596:3;10603:1;10596:8;10588:103;;;;-1:-1:-1;;;10588:103:26;;;;;;;:::i;:::-;10922:35;144:10:19;10922:3:26;:35;:::i;:::-;10911:7;:46;:96;;;;-1:-1:-1;10972:35:26;144:10:19;10972:3:26;:35;:::i;:::-;10961:7;:46;10911:96;10904:103;;;;;;;10431:867;11036:3;11043:1;11036:8;11028:104;;;;-1:-1:-1;;;11028:104:26;;41032:2:34;11028:104:26;;;41014:21:34;41071:2;41051:18;;;41044:30;41110:34;41090:18;;;41083:62;41181:34;41161:18;;;41154:62;-1:-1:-1;;;41232:19:34;;;41225:50;41292:19;;11028:104:26;40830:487:34;11028:104:26;11148:3;11155:1;11148:8;11140:104;;;;-1:-1:-1;;;11140:104:26;;;;;;;:::i;:::-;11270:3;11259:7;:14;:32;;;;-1:-1:-1;11277:14:26;;;;9751:1551;-1:-1:-1;;;;;;;9751:1551:26:o;19656:559::-;19804:4;19817:32;19851:30;19885:15;:37;19923:11;19936:9;19885:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19885:61:26;;;;;;;;;;;;:::i;:::-;19816:130;;;;19978:22;19956:11;:18;:44;19952:77;;20017:5;20010:12;;;;;;19952:77;20039:9;20034:160;20058:22;20054:1;:26;20034:160;;;20100:55;20119:11;20131:1;20119:14;;;;;;;;:::i;:::-;;;;;;;20135:16;20152:1;20135:19;;;;;;;;:::i;:::-;;;;;;;234::24;;;;;;;211;;;;;;;;;;:42;;119:139;20100:55:26;20095:93;;20174:5;20167:12;;;;;;;20095:93;20082:3;;20034:160;;;-1:-1:-1;20206:4:26;;19656:559;-1:-1:-1;;;;;;19656:559:26:o;262:101:24:-;338:15;:20;;262:101::o;8612:1135:26:-;8792:4;8805:19;8826:11;8839;8854:15;:34;8889:11;8902:9;8854:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8804:108;;-1:-1:-1;8804:108:26;-1:-1:-1;8804:108:26;-1:-1:-1;8926:73:26;8804:108;8961:37;;8926:21;:73::i;:::-;8918:161;;;;-1:-1:-1;;;8918:161:26;;;;;;;:::i;:::-;9106:19;9093:9;:32;;;;;;;;:::i;:::-;;:70;;;-1:-1:-1;9142:21:26;9129:9;:34;;;;;;;;:::i;:::-;;9093:70;9085:101;;;;-1:-1:-1;;;9085:101:26;;;;;;;:::i;:::-;9209:19;9196:9;:32;;;;;;;;:::i;:::-;;9192:551;;9246:8;;9238:91;;;;-1:-1:-1;;;9238:91:26;;42702:2:34;9238:91:26;;;42684:21:34;42741:2;42721:18;;;42714:30;42780:34;42760:18;;;42753:62;42851:34;42831:18;;;42824:62;-1:-1:-1;;;42902:19:34;;;42895:37;42949:19;;9238:91:26;42500:474:34;9238:91:26;9559:35;144:10:19;9559:3:26;:35;:::i;9192:551::-;9623:8;;9615:92;;;;-1:-1:-1;;;9615:92:26;;43181:2:34;9615:92:26;;;43163:21:34;43220:2;43200:18;;;43193:30;43259:34;43239:18;;;43232:62;43330:34;43310:18;;;43303:62;-1:-1:-1;;;43381:19:34;;;43374:38;43429:19;;9615:92:26;42979:475:34;9615:92:26;-1:-1:-1;9722:14:26;;;-1:-1:-1;9715:21:26;;-1:-1:-1;9715:21:26;26527:210;26590:7;26624:28;;;:18;:28;;;;;;-1:-1:-1;;;;;26624:28:26;;26658:53;;;;-1:-1:-1;;;26658:53:26;;43661:2:34;26658:53:26;;;43643:21:34;43700:2;43680:18;;;43673:30;-1:-1:-1;;;43719:18:34;;;43712:48;43777:18;;26658:53:26;43459:342:34;26741:214:26;26835:12;;:66;;-1:-1:-1;;;26835:66:26;;:12;:66;;;36685:25:34;36726:18;;;36719:34;;;-1:-1:-1;;;;;26835:12:26;;;;:24;;36658:18:34;;26835:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26820:130;;;;-1:-1:-1;;;26820:130:26;;44008:2:34;26820:130:26;;;43990:21:34;44047:2;44027:18;;;44020:30;44086:34;44066:18;;;44059:62;-1:-1:-1;;;44137:18:34;;;44130:31;44178:19;;26820:130:26;43806:397:34;26959:194:26;27045:12;;;:58;;-1:-1:-1;;;27045:58:26;;;;;36685:25:34;;;;36726:18;;;36719:34;;;-1:-1:-1;;;;;27045:12:26;;:24;;36658:18:34;;27045:58:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27030:118;;;;-1:-1:-1;;;27030:118:26;;44410:2:34;27030:118:26;;;44392:21:34;44449:2;44429:18;;;44422:30;44488:31;44468:18;;;44461:59;44537:18;;27030:118:26;44208:353:34;3388:300:26;3506:4;3518:28;3557:12;1072:1:19;3557:44:26;;;;;;;;:::i;:::-;;;;;;;3549:53;;3518:84;;3615:68;3637:20;3659:23;3615:21;:68::i;25720:803::-;25852:14;;25876:458;25900:32;;;;:11;:32;:::i;:::-;:39;;25896:1;:43;25876:458;;;26034:28;26191:1;26065:122;26098:27;:11;;:27;:::i;:::-;26126:6;;26142:32;;;;:11;:32;:::i;:::-;26175:1;26142:35;;;;;;;:::i;:::-;;;;;;;26133:6;:44;;;;:::i;:::-;26098:80;;;;;;;:::i;:::-;26081:98;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;26081:98:26;;;;;;;;;;26065:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:127;;26034:158;;26232:16;26249:1;26232:19;;;;;;;;:::i;:::-;;;;;;;26208:20;:43;26200:74;;;;-1:-1:-1;;;26200:74:26;;45386:2:34;26200:74:26;;;45368:21:34;45425:2;45405:18;;;45398:30;-1:-1:-1;;;45444:18:34;;;45437:48;45502:18;;26200:74:26;45184:342:34;26200:74:26;26292:32;;;;:11;:32;:::i;:::-;26325:1;26292:35;;;;;;;:::i;:::-;;;;;;;26282:45;;;;;:::i;:::-;;-1:-1:-1;;25941:3:26;;25876:458;;;-1:-1:-1;26448:27:26;:11;;:27;:::i;:::-;:34;;26438:6;:44;26430:88;;;;-1:-1:-1;;;26430:88:26;;45733:2:34;26430:88:26;;;45715:21:34;45772:2;45752:18;;;45745:30;45811:33;45791:18;;;45784:61;45862:18;;26430:88:26;45531:355:34;14:112;100:1;93:5;90:12;80:40;;116:1;113;106:12;131:159;195:5;240:2;231:6;226:3;222:16;218:25;215:45;;;256:1;253;246:12;215:45;-1:-1:-1;278:6:34;131:159;-1:-1:-1;131:159:34:o;295:690::-;431:6;439;447;500:2;488:9;479:7;475:23;471:32;468:52;;;516:1;513;506:12;468:52;555:9;542:23;574:42;610:5;574:42;:::i;:::-;635:5;-1:-1:-1;692:2:34;677:18;;664:32;705:44;664:32;705:44;:::i;:::-;768:7;-1:-1:-1;826:2:34;811:18;;798:32;-1:-1:-1;;;;;842:30:34;;839:50;;;885:1;882;875:12;839:50;908:71;971:7;962:6;951:9;947:22;908:71;:::i;:::-;898:81;;;295:690;;;;;:::o;1182:118::-;1268:5;1261:13;1254:21;1247:5;1244:32;1234:60;;1290:1;1287;1280:12;1305:241;1361:6;1414:2;1402:9;1393:7;1389:23;1385:32;1382:52;;;1430:1;1427;1420:12;1382:52;1469:9;1456:23;1488:28;1510:5;1488:28;:::i;1551:365::-;1642:6;1695:2;1683:9;1674:7;1670:23;1666:32;1663:52;;;1711:1;1708;1701:12;1663:52;1751:9;1738:23;-1:-1:-1;;;;;1776:6:34;1773:30;1770:50;;;1816:1;1813;1806:12;1770:50;1839:71;1902:7;1893:6;1882:9;1878:22;1839:71;:::i;1921:131::-;-1:-1:-1;;;;;1996:31:34;;1986:42;;1976:70;;2042:1;2039;2032:12;2057:247;2116:6;2169:2;2157:9;2148:7;2144:23;2140:32;2137:52;;;2185:1;2182;2175:12;2137:52;2224:9;2211:23;2243:31;2268:5;2243:31;:::i;2309:162::-;2375:5;2420:3;2411:6;2406:3;2402:16;2398:26;2395:46;;;2437:1;2434;2427:12;2476:742;2619:6;2627;2635;2688:2;2676:9;2667:7;2663:23;2659:32;2656:52;;;2704:1;2701;2694:12;2656:52;2749:23;;;-1:-1:-1;2847:2:34;2832:18;;2819:32;-1:-1:-1;;;;;2863:30:34;;2860:50;;;2906:1;2903;2896:12;2860:50;2929:71;2992:7;2983:6;2972:9;2968:22;2929:71;:::i;:::-;2919:81;;;3053:2;3042:9;3038:18;3025:32;-1:-1:-1;;;;;3072:8:34;3069:32;3066:52;;;3114:1;3111;3104:12;3066:52;3137:75;3204:7;3193:8;3182:9;3178:24;3137:75;:::i;3223:114::-;3307:4;3300:5;3296:16;3289:5;3286:27;3276:55;;3327:1;3324;3317:12;3342:759;3483:6;3491;3499;3552:2;3540:9;3531:7;3527:23;3523:32;3520:52;;;3568:1;3565;3558:12;3520:52;3607:9;3594:23;3626:29;3649:5;3626:29;:::i;:::-;3674:5;-1:-1:-1;3730:2:34;3715:18;;3702:32;-1:-1:-1;;;;;3746:30:34;;3743:50;;;3789:1;3786;3779:12;4106:863;4258:6;4266;4274;4282;4335:3;4323:9;4314:7;4310:23;4306:33;4303:53;;;4352:1;4349;4342:12;4303:53;4397:23;;;-1:-1:-1;4517:2:34;4502:18;;4489:32;;-1:-1:-1;4598:2:34;4583:18;;4570:32;-1:-1:-1;;;;;4614:30:34;;4611:50;;;4657:1;4654;4647:12;4611:50;4680:71;4743:7;4734:6;4723:9;4719:22;4680:71;:::i;:::-;4670:81;;;4804:2;4793:9;4789:18;4776:32;-1:-1:-1;;;;;4823:8:34;4820:32;4817:52;;;4865:1;4862;4855:12;4817:52;4888:75;4955:7;4944:8;4933:9;4929:24;4888:75;:::i;:::-;4878:85;;;4106:863;;;;;;;:::o;5156:127::-;5217:10;5212:3;5208:20;5205:1;5198:31;5248:4;5245:1;5238:15;5272:4;5269:1;5262:15;5288:255;5360:2;5354:9;5402:6;5390:19;;-1:-1:-1;;;;;5424:34:34;;5460:22;;;5421:62;5418:88;;;5486:18;;:::i;:::-;5522:2;5515:22;5288:255;:::o;5548:275::-;5619:2;5613:9;5684:2;5665:13;;-1:-1:-1;;5661:27:34;5649:40;;-1:-1:-1;;;;;5704:34:34;;5740:22;;;5701:62;5698:88;;;5766:18;;:::i;:::-;5802:2;5795:22;5548:275;;-1:-1:-1;5548:275:34:o;5828:182::-;5887:4;-1:-1:-1;;;;;5912:6:34;5909:30;5906:56;;;5942:18;;:::i;:::-;-1:-1:-1;5987:1:34;5983:14;5999:4;5979:25;;5828:182::o;6015:187::-;6064:4;-1:-1:-1;;;;;6089:6:34;6086:30;6083:56;;;6119:18;;:::i;:::-;-1:-1:-1;6185:2:34;6164:15;-1:-1:-1;;6160:29:34;6191:4;6156:40;;6015:187::o;6207:1769::-;6342:6;6350;6403:2;6391:9;6382:7;6378:23;6374:32;6371:52;;;6419:1;6416;6409:12;6371:52;6459:9;6446:23;-1:-1:-1;;;;;6484:6:34;6481:30;6478:50;;;6524:1;6521;6514:12;6478:50;6547:22;;6600:4;6592:13;;6588:27;-1:-1:-1;6578:55:34;;6629:1;6626;6619:12;6578:55;6669:2;6656:16;6692:63;6708:46;6747:6;6708:46;:::i;:::-;6692:63;:::i;:::-;6777:3;6801:6;6796:3;6789:19;6833:4;6828:3;6824:14;6817:21;;6890:4;6880:6;6877:1;6873:14;6869:2;6865:23;6861:34;6847:48;;6918:7;6910:6;6907:19;6904:39;;;6939:1;6936;6929:12;6904:39;6971:4;6967:2;6963:13;6985:749;7001:6;6996:3;6993:15;6985:749;;;7089:3;7076:17;-1:-1:-1;;;;;7112:11:34;7109:35;7106:55;;;7157:1;7154;7147:12;7106:55;7184:20;;7239:2;7231:11;;7227:25;-1:-1:-1;7217:53:34;;7266:1;7263;7256:12;7217:53;7320:4;7316:2;7312:13;7299:27;7354:55;7370:38;7399:8;7370:38;:::i;7354:55::-;7422:25;;;7466:39;7474:17;;;7466:39;7463:52;-1:-1:-1;7460:72:34;;;7528:1;7525;7518:12;7460:72;7591:8;7586:2;7582;7578:11;7571:4;7562:7;7558:18;7545:55;7655:1;7648:4;7637:8;7628:7;7624:22;7620:33;7613:44;7682:7;7677:3;7670:20;;;;7719:4;7714:3;7710:14;7703:21;;7027:4;7022:3;7018:14;7011:21;;6985:749;;;-1:-1:-1;7753:5:34;-1:-1:-1;;;;7811:4:34;7796:20;;7783:34;-1:-1:-1;;;;;7829:32:34;;7826:52;;;7874:1;7871;7864:12;7826:52;7897:73;7962:7;7951:8;7940:9;7936:24;7897:73;:::i;:::-;7887:83;;;6207:1769;;;;;:::o;7981:180::-;8040:6;8093:2;8081:9;8072:7;8068:23;8064:32;8061:52;;;8109:1;8106;8099:12;8061:52;-1:-1:-1;8132:23:34;;7981:180;-1:-1:-1;7981:180:34:o;8374:367::-;8437:8;8447:6;8501:3;8494:4;8486:6;8482:17;8478:27;8468:55;;8519:1;8516;8509:12;8468:55;-1:-1:-1;8542:20:34;;-1:-1:-1;;;;;8574:30:34;;8571:50;;;8617:1;8614;8607:12;8571:50;8654:4;8646:6;8642:17;8630:29;;8714:3;8707:4;8697:6;8694:1;8690:14;8682:6;8678:27;8674:38;8671:47;8668:67;;;8731:1;8728;8721:12;8668:67;8374:367;;;;;:::o;8746:348::-;8798:8;8808:6;8862:3;8855:4;8847:6;8843:17;8839:27;8829:55;;8880:1;8877;8870:12;8829:55;-1:-1:-1;8903:20:34;;-1:-1:-1;;;;;8935:30:34;;8932:50;;;8978:1;8975;8968:12;8932:50;9015:4;9007:6;9003:17;8991:29;;9067:3;9060:4;9051:6;9043;9039:19;9035:30;9032:39;9029:59;;;9084:1;9081;9074:12;9099:1047;9227:6;9235;9243;9251;9259;9267;9320:2;9308:9;9299:7;9295:23;9291:32;9288:52;;;9336:1;9333;9326:12;9288:52;9376:9;9363:23;-1:-1:-1;;;;;9401:6:34;9398:30;9395:50;;;9441:1;9438;9431:12;9395:50;9480:70;9542:7;9533:6;9522:9;9518:22;9480:70;:::i;:::-;9569:8;;-1:-1:-1;9454:96:34;-1:-1:-1;;9657:2:34;9642:18;;9629:32;-1:-1:-1;;;;;9673:32:34;;9670:52;;;9718:1;9715;9708:12;9670:52;9757:61;9810:7;9799:8;9788:9;9784:24;9757:61;:::i;:::-;9837:8;;-1:-1:-1;9731:87:34;-1:-1:-1;;9925:2:34;9910:18;;9897:32;-1:-1:-1;;;;;9941:32:34;;9938:52;;;9986:1;9983;9976:12;9938:52;10025:61;10078:7;10067:8;10056:9;10052:24;10025:61;:::i;:::-;9099:1047;;;;-1:-1:-1;9099:1047:34;;-1:-1:-1;9099:1047:34;;10105:8;;9099:1047;-1:-1:-1;;;9099:1047:34:o;10151:437::-;10237:6;10245;10298:2;10286:9;10277:7;10273:23;10269:32;10266:52;;;10314:1;10311;10304:12;10266:52;10354:9;10341:23;-1:-1:-1;;;;;10379:6:34;10376:30;10373:50;;;10419:1;10416;10409:12;10373:50;10458:70;10520:7;10511:6;10500:9;10496:22;10458:70;:::i;:::-;10547:8;;10432:96;;-1:-1:-1;10151:437:34;-1:-1:-1;;;;10151:437:34:o;10593:289::-;10635:3;10673:5;10667:12;10700:6;10695:3;10688:19;10756:6;10749:4;10742:5;10738:16;10731:4;10726:3;10722:14;10716:47;10808:1;10801:4;10792:6;10787:3;10783:16;10779:27;10772:38;10871:4;10864:2;10860:7;10855:2;10847:6;10843:15;10839:29;10834:3;10830:39;10826:50;10819:57;;;10593:289;;;;:::o;10887:492::-;11072:2;11061:9;11054:21;11147:1;11143;11138:3;11134:11;11130:19;11121:6;11115:13;11111:39;11106:2;11095:9;11091:18;11084:67;11205:2;11197:6;11193:15;11187:22;11182:2;11171:9;11167:18;11160:50;11035:4;11257:2;11249:6;11245:15;11239:22;11299:4;11292;11281:9;11277:20;11270:34;11321:52;11368:3;11357:9;11353:19;11339:12;11321:52;:::i;11384:768::-;11506:6;11514;11522;11530;11583:2;11571:9;11562:7;11558:23;11554:32;11551:52;;;11599:1;11596;11589:12;11551:52;11639:9;11626:23;-1:-1:-1;;;;;11664:6:34;11661:30;11658:50;;;11704:1;11701;11694:12;11658:50;11743:70;11805:7;11796:6;11785:9;11781:22;11743:70;:::i;:::-;11832:8;;-1:-1:-1;11717:96:34;-1:-1:-1;;11920:2:34;11905:18;;11892:32;-1:-1:-1;;;;;11936:32:34;;11933:52;;;11981:1;11978;11971:12;11933:52;12020:72;12084:7;12073:8;12062:9;12058:24;12020:72;:::i;:::-;11384:768;;;;-1:-1:-1;12111:8:34;-1:-1:-1;;;;11384:768:34:o;12388:897::-;12536:6;12544;12552;12560;12613:3;12601:9;12592:7;12588:23;12584:33;12581:53;;;12630:1;12627;12620:12;12581:53;12669:9;12656:23;12688:29;12711:5;12688:29;:::i;:::-;12736:5;-1:-1:-1;12793:2:34;12778:18;;12765:32;12806:31;12765:32;12806:31;:::i;:::-;12856:7;-1:-1:-1;12914:2:34;12899:18;;12886:32;-1:-1:-1;;;;;12930:30:34;;12927:50;;;12973:1;12970;12963:12;13290:403;13393:6;13446:2;13434:9;13425:7;13421:23;13417:32;13414:52;;;13462:1;13459;13452:12;13414:52;13502:9;13489:23;-1:-1:-1;;;;;13527:6:34;13524:30;13521:50;;;13567:1;13564;13557:12;13521:50;13590:22;;13646:2;13628:16;;;13624:25;13621:45;;;13662:1;13659;13652:12;13961:494;14058:6;14066;14119:2;14107:9;14098:7;14094:23;14090:32;14087:52;;;14135:1;14132;14125:12;14087:52;14175:9;14162:23;-1:-1:-1;;;;;14200:6:34;14197:30;14194:50;;;14240:1;14237;14230:12;14194:50;14263:71;14326:7;14317:6;14306:9;14302:22;14263:71;:::i;:::-;14253:81;;;14384:2;14373:9;14369:18;14356:32;14397:28;14419:5;14397:28;:::i;:::-;14444:5;14434:15;;;13961:494;;;;;:::o;14460:1698::-;14653:2;14642:9;14635:21;14616:4;14691:6;14685:13;14734:6;14729:2;14718:9;14714:18;14707:34;14764:52;14811:3;14800:9;14796:19;14782:12;14764:52;:::i;:::-;14750:66;;14865:2;14857:6;14853:15;14847:22;14937:2;14933:7;14921:9;14913:6;14909:22;14905:36;14900:2;14889:9;14885:18;14878:64;14965:41;14999:6;14983:14;14965:41;:::i;:::-;14951:55;;;15055:2;15047:6;15043:15;15037:22;15127:2;15123:7;15111:9;15103:6;15099:22;15095:36;15090:2;15079:9;15075:18;15068:64;15155:41;15189:6;15173:14;15155:41;:::i;:::-;15141:55;;;15245:2;15237:6;15233:15;15227:22;15318:2;15314:7;15302:9;15294:6;15290:22;15286:36;15280:3;15269:9;15265:19;15258:65;15346:41;15380:6;15364:14;15346:41;:::i;:::-;15332:55;;;15436:3;15428:6;15424:16;15418:23;15510:2;15506:7;15494:9;15486:6;15482:22;15478:36;15472:3;15461:9;15457:19;15450:65;15538:41;15572:6;15556:14;15538:41;:::i;:::-;15524:55;;;15628:3;15620:6;15616:16;15610:23;15702:2;15698:7;15686:9;15678:6;15674:22;15670:36;15664:3;15653:9;15649:19;15642:65;15730:41;15764:6;15748:14;15730:41;:::i;:::-;15716:55;;;15820:3;15812:6;15808:16;15802:23;15894:2;15890:7;15878:9;15870:6;15866:22;15862:36;15856:3;15845:9;15841:19;15834:65;15922:41;15956:6;15940:14;15922:41;:::i;:::-;15908:55;;;16012:3;16004:6;16000:16;15994:23;16089:2;16085:7;16073:9;16065:6;16061:22;16057:36;16048:6;16037:9;16033:22;16026:68;16111:41;16145:6;16129:14;16111:41;:::i;16163:266::-;16251:6;16246:3;16239:19;16303:6;16296:5;16289:4;16284:3;16280:14;16267:43;-1:-1:-1;16355:1:34;16330:16;;;16348:4;16326:27;;;16319:38;;;;16411:2;16390:15;;;-1:-1:-1;;16386:29:34;16377:39;;;16373:50;;16163:266::o;16434:311::-;16522:19;;;16504:3;-1:-1:-1;;;;;16553:31:34;;16550:51;;;16597:1;16594;16587:12;16550:51;16633:6;16630:1;16626:14;16685:8;16678:5;16671:4;16666:3;16662:14;16649:45;16714:18;;;;16734:4;16710:29;;16434:311;-1:-1:-1;;;16434:311:34:o;16750:1172::-;16813:3;16870:5;16857:19;16931:2;16927:7;16919:5;16903:14;16899:26;16895:40;16978:2;16958:18;16954:27;16944:55;;16995:1;16992;16985:12;16944:55;17134:4;17023:30;;;17121:18;;;;17076:21;-1:-1:-1;;;;;17151:30:34;;17148:50;;;17194:1;17191;17184:12;17148:50;17243:6;17227:14;17223:27;17214:7;17210:41;17207:61;;;17264:1;17261;17254:12;17207:61;17289:4;17284:3;17277:17;17315:58;17367:4;17362:3;17358:14;17350:6;17341:7;17315:58;:::i;:::-;17303:70;;;17434:4;17427:5;17423:16;17410:30;17485:2;17463:20;17459:29;17449:57;;17502:1;17499;17492:12;17449:57;17530:32;;17645:4;17632:18;;;-1:-1:-1;17587:21:34;-1:-1:-1;;;;;17662:32:34;;17659:52;;;17707:1;17704;17697:12;17659:52;17763:8;17760:1;17756:16;17740:14;17736:37;17727:7;17723:51;17720:71;;;17787:1;17784;17777:12;17720:71;17833:3;17827:4;17823:14;17816:4;17811:3;17807:14;17800:38;17854:62;17911:4;17901:8;17892:7;17854:62;:::i;:::-;17847:69;16750:1172;-1:-1:-1;;;;;;16750:1172:34:o;17927:291::-;18126:2;18115:9;18108:21;18089:4;18146:66;18208:2;18197:9;18193:18;18185:6;18146:66;:::i;18223:668::-;18356:6;18364;18372;18380;18433:3;18421:9;18412:7;18408:23;18404:33;18401:53;;;18450:1;18447;18440:12;18401:53;18495:16;;18580:2;18565:18;;18559:25;18495:16;;-1:-1:-1;18615:1:34;18603:14;;18593:42;;18631:1;18628;18621:12;18593:42;18727:2;18712:18;;18706:25;18802:2;18787:18;;18781:25;18654:7;;-1:-1:-1;18706:25:34;-1:-1:-1;18815:44:34;18781:25;18815:44;:::i;:::-;18223:668;;;;-1:-1:-1;18223:668:34;;-1:-1:-1;;18223:668:34:o;18896:127::-;18957:10;18952:3;18948:20;18945:1;18938:31;18988:4;18985:1;18978:15;19012:4;19009:1;19002:15;19028:350;19230:2;19212:21;;;19269:2;19249:18;;;19242:30;19308:28;19303:2;19288:18;;19281:56;19369:2;19354:18;;19028:350::o;19383:230::-;19453:6;19506:2;19494:9;19485:7;19481:23;19477:32;19474:52;;;19522:1;19519;19512:12;19474:52;-1:-1:-1;19567:16:34;;19383:230;-1:-1:-1;19383:230:34:o;20023:490::-;20107:6;20115;20123;20176:2;20164:9;20155:7;20151:23;20147:32;20144:52;;;20192:1;20189;20182:12;20144:52;20237:16;;20322:2;20307:18;;20301:25;20237:16;;-1:-1:-1;20335:31:34;20301:25;20335:31;:::i;:::-;20437:2;20422:18;;20416:25;20385:7;;-1:-1:-1;20450:31:34;20416:25;20450:31;:::i;:::-;20500:7;20490:17;;;20023:490;;;;;:::o;20518:479::-;20720:2;20702:21;;;20759:2;20739:18;;;20732:30;20798:34;20793:2;20778:18;;20771:62;20869:34;20864:2;20849:18;;20842:62;-1:-1:-1;;;20935:3:34;20920:19;;20913:42;20987:3;20972:19;;20518:479::o;22151:127::-;22212:10;22207:3;22203:20;22200:1;22193:31;22243:4;22240:1;22233:15;22267:4;22264:1;22257:15;22283:151;22373:4;22366:12;;;22352;;;22348:31;;22391:14;;22388:40;;;22408:18;;:::i;22439:273::-;22624:6;22616;22611:3;22598:33;22580:3;22650:16;;22675:13;;;22650:16;22439:273;-1:-1:-1;22439:273:34:o;22717:301::-;22846:3;22884:6;22878:13;22930:6;22923:4;22915:6;22911:17;22906:3;22900:37;22992:1;22956:16;;22981:13;;;-1:-1:-1;22956:16:34;22717:301;-1:-1:-1;22717:301:34:o;23023:127::-;23084:10;23079:3;23075:20;23072:1;23065:31;23115:4;23112:1;23105:15;23139:4;23136:1;23129:15;23155:514;23208:5;23261:3;23254:4;23246:6;23242:17;23238:27;23228:55;;23279:1;23276;23269:12;23228:55;23312:6;23306:13;23351:4;23343:6;23339:17;23380:1;23401:53;23417:36;23446:6;23417:36;:::i;23401:53::-;23390:64;;23479:6;23470:7;23463:23;23519:3;23510:6;23505:3;23501:16;23498:25;23495:45;;;23536:1;23533;23526:12;23495:45;23580:6;23575:3;23568:4;23559:7;23555:18;23549:38;23636:1;23607:20;;;23629:4;23603:31;23596:42;;;;-1:-1:-1;23611:7:34;23155:514;-1:-1:-1;;;23155:514:34:o;23674:335::-;23753:6;23806:2;23794:9;23785:7;23781:23;23777:32;23774:52;;;23822:1;23819;23812:12;23774:52;23855:9;23849:16;-1:-1:-1;;;;;23880:6:34;23877:30;23874:50;;;23920:1;23917;23910:12;23874:50;23943:60;23995:7;23986:6;23975:9;23971:22;23943:60;:::i;24014:226::-;24169:2;24158:9;24151:21;24132:4;24189:45;24230:2;24219:9;24215:18;24207:6;24189:45;:::i;24245:577::-;24343:6;24351;24359;24412:2;24400:9;24391:7;24387:23;24383:32;24380:52;;;24428:1;24425;24418:12;24380:52;24460:9;24454:16;24479:31;24504:5;24479:31;:::i;:::-;24600:2;24585:18;;24579:25;24674:2;24659:18;;24653:25;24529:5;;-1:-1:-1;24579:25:34;-1:-1:-1;;;;;;24690:30:34;;24687:50;;;24733:1;24730;24723:12;24687:50;24756:60;24808:7;24799:6;24788:9;24784:22;24756:60;:::i;24827:128::-;24894:9;;;24915:11;;;24912:37;;;24929:18;;:::i;24960:125::-;25025:9;;;25046:10;;;25043:36;;;25059:18;;:::i;25090:148::-;25178:4;25157:12;;;25171;;;25153:31;;25196:13;;25193:39;;;25212:18;;:::i;27407:339::-;27515:4;27573:11;27560:25;27667:2;27663:7;27652:8;27636:14;27632:29;27628:43;27608:18;27604:68;27594:96;;27686:1;27683;27676:12;27594:96;27707:33;;;;;27407:339;-1:-1:-1;;27407:339:34:o;27751:545::-;27844:4;27850:6;27910:11;27897:25;28004:2;28000:7;27989:8;27973:14;27969:29;27965:43;27945:18;27941:68;27931:96;;28023:1;28020;28013:12;27931:96;28050:33;;28102:20;;;-1:-1:-1;;;;;;28134:30:34;;28131:50;;;28177:1;28174;28167:12;28131:50;28210:4;28198:17;;-1:-1:-1;28261:1:34;28257:14;;;28241;28237:35;28227:46;;28224:66;;;28286:1;28283;28276:12;28301:332;28401:4;28459:11;28446:25;28553:3;28549:8;28538;28522:14;28518:29;28514:44;28494:18;28490:69;28480:97;;28573:1;28570;28563:12;29058:522;29136:4;29142:6;29202:11;29189:25;29296:2;29292:7;29281:8;29265:14;29261:29;29257:43;29237:18;29233:68;29223:96;;29315:1;29312;29305:12;29223:96;29342:33;;29394:20;;;-1:-1:-1;;;;;;29426:30:34;;29423:50;;;29469:1;29466;29459:12;29423:50;29502:4;29490:17;;-1:-1:-1;29533:14:34;29529:27;;;29519:38;;29516:58;;;29570:1;29567;29560:12;29937:355;30058:9;30069;30111:8;30099:10;30096:24;30093:44;;;30133:1;30130;30123:12;30093:44;30162:6;30152:8;30149:20;30146:40;;;30182:1;30179;30172:12;30146:40;-1:-1:-1;;30224:1:34;30220:18;;;30208:31;;30261:25;;;;;-1:-1:-1;29937:355:34:o;30297:329::-;30395:4;30453:11;30440:25;30547:2;30543:7;30532:8;30516:14;30512:29;30508:43;30488:18;30484:68;30474:96;;30566:1;30563;30556:12;32934:475;33179:2;33168:9;33161:21;33142:4;33205:61;33262:2;33251:9;33247:18;33239:6;33231;33205:61;:::i;:::-;33314:9;33306:6;33302:22;33297:2;33286:9;33282:18;33275:50;33342:61;33396:6;33388;33380;33342:61;:::i;:::-;33334:69;32934:475;-1:-1:-1;;;;;;;32934:475:34:o;33414:245::-;33481:6;33534:2;33522:9;33513:7;33509:23;33505:32;33502:52;;;33550:1;33547;33540:12;33502:52;33582:9;33576:16;33601:28;33623:5;33601:28;:::i;33664:553::-;33761:6;33769;33822:2;33810:9;33801:7;33797:23;33793:32;33790:52;;;33838:1;33835;33828:12;33790:52;33871:9;33865:16;-1:-1:-1;;;;;33896:6:34;33893:30;33890:50;;;33936:1;33933;33926:12;33890:50;33959:60;34011:7;34002:6;33991:9;33987:22;33959:60;:::i;:::-;33949:70;;;34065:2;34054:9;34050:18;34044:25;-1:-1:-1;;;;;34084:8:34;34081:32;34078:52;;;34126:1;34123;34116:12;34078:52;34149:62;34203:7;34192:8;34181:9;34177:24;34149:62;:::i;34222:307::-;34399:2;34388:9;34381:21;34362:4;34419:45;34460:2;34449:9;34445:18;34437:6;34419:45;:::i;:::-;34411:53;;34514:6;34507:14;34500:22;34495:2;34484:9;34480:18;34473:50;34222:307;;;;;:::o;34534:1972::-;34636:6;34689:2;34677:9;34668:7;34664:23;34660:32;34657:52;;;34705:1;34702;34695:12;34657:52;34738:9;34732:16;-1:-1:-1;;;;;34763:6:34;34760:30;34757:50;;;34803:1;34800;34793:12;34757:50;34826:22;;34882:6;34864:16;;;34860:29;34857:49;;;34902:1;34899;34892:12;34857:49;34928:22;;:::i;:::-;34981:2;34975:9;-1:-1:-1;;;;;34999:8:34;34996:32;34993:52;;;35041:1;35038;35031:12;34993:52;35068:55;35115:7;35104:8;35100:2;35096:17;35068:55;:::i;:::-;35061:5;35054:70;;35163:2;35159;35155:11;35149:18;-1:-1:-1;;;;;35182:8:34;35179:32;35176:52;;;35224:1;35221;35214:12;35176:52;35260:55;35307:7;35296:8;35292:2;35288:17;35260:55;:::i;:::-;35255:2;35248:5;35244:14;35237:79;;35355:2;35351;35347:11;35341:18;-1:-1:-1;;;;;35374:8:34;35371:32;35368:52;;;35416:1;35413;35406:12;35368:52;35452:55;35499:7;35488:8;35484:2;35480:17;35452:55;:::i;:::-;35447:2;35440:5;35436:14;35429:79;;35547:2;35543;35539:11;35533:18;-1:-1:-1;;;;;35566:8:34;35563:32;35560:52;;;35608:1;35605;35598:12;35560:52;35644:55;35691:7;35680:8;35676:2;35672:17;35644:55;:::i;:::-;35639:2;35632:5;35628:14;35621:79;;35739:3;35735:2;35731:12;35725:19;-1:-1:-1;;;;;35759:8:34;35756:32;35753:52;;;35801:1;35798;35791:12;35753:52;35838:55;35885:7;35874:8;35870:2;35866:17;35838:55;:::i;:::-;35832:3;35825:5;35821:15;35814:80;;35933:3;35929:2;35925:12;35919:19;-1:-1:-1;;;;;35953:8:34;35950:32;35947:52;;;35995:1;35992;35985:12;35947:52;36032:55;36079:7;36068:8;36064:2;36060:17;36032:55;:::i;:::-;36026:3;36019:5;36015:15;36008:80;;36127:3;36123:2;36119:12;36113:19;-1:-1:-1;;;;;36147:8:34;36144:32;36141:52;;;36189:1;36186;36179:12;36141:52;36226:55;36273:7;36262:8;36258:2;36254:17;36226:55;:::i;:::-;36220:3;36213:5;36209:15;36202:80;;36321:3;36317:2;36313:12;36307:19;-1:-1:-1;;;;;36341:8:34;36338:32;36335:52;;;36383:1;36380;36373:12;36335:52;36420:55;36467:7;36456:8;36452:2;36448:17;36420:55;:::i;:::-;36414:3;36403:15;;36396:80;-1:-1:-1;36407:5:34;34534:1972;-1:-1:-1;;;;34534:1972:34:o;37124:529::-;37364:2;37353:9;37346:21;37327:4;37384:66;37446:2;37435:9;37431:18;37423:6;37384:66;:::i;:::-;37376:74;;37480:2;37472:6;37469:14;37459:145;;37526:10;37521:3;37517:20;37514:1;37507:31;37561:4;37558:1;37551:15;37589:4;37586:1;37579:15;37459:145;37640:6;37635:2;37624:9;37620:18;37613:34;37124:529;;;;;:::o;37658:456::-;37746:6;37754;37762;37815:2;37803:9;37794:7;37790:23;37786:32;37783:52;;;37831:1;37828;37821:12;37783:52;-1:-1:-1;;37876:16:34;;37982:2;37967:18;;37961:25;38078:2;38063:18;;;38057:25;37876:16;;37961:25;;-1:-1:-1;38057:25:34;37658:456;-1:-1:-1;37658:456:34:o;38593:342::-;38795:2;38777:21;;;38834:2;38814:18;;;38807:30;-1:-1:-1;;;38868:2:34;38853:18;;38846:48;38926:2;38911:18;;38593:342::o;38940:486::-;39142:2;39124:21;;;39181:2;39161:18;;;39154:30;39220:34;39215:2;39200:18;;39193:62;39291:34;39286:2;39271:18;;39264:62;-1:-1:-1;;;39357:3:34;39342:19;;39335:49;39416:3;39401:19;;38940:486::o;39431:487::-;39633:2;39615:21;;;39672:2;39652:18;;;39645:30;39711:34;39706:2;39691:18;;39684:62;39782:34;39777:2;39762:18;;39755:62;-1:-1:-1;;;39848:3:34;39833:19;;39826:50;39908:3;39893:19;;39431:487::o;41322:1173::-;41436:6;41444;41497:2;41485:9;41476:7;41472:23;41468:32;41465:52;;;41513:1;41510;41503:12;41465:52;41546:9;41540:16;-1:-1:-1;;;;;41571:6:34;41568:30;41565:50;;;41611:1;41608;41601:12;41565:50;41634:22;;41687:4;41679:13;;41675:27;-1:-1:-1;41665:55:34;;41716:1;41713;41706:12;41665:55;41749:2;41743:9;41772:63;41788:46;41827:6;41788:46;:::i;41772:63::-;41857:3;41881:6;41876:3;41869:19;41913:4;41908:3;41904:14;41897:21;;41970:4;41960:6;41957:1;41953:14;41949:2;41945:23;41941:34;41927:48;;41998:7;41990:6;41987:19;41984:39;;;42019:1;42016;42009:12;41984:39;42051:4;42047:2;42043:13;42065:308;42081:6;42076:3;42073:15;42065:308;;;42162:3;42156:10;-1:-1:-1;;;;;42185:11:34;42182:35;42179:55;;;42230:1;42227;42220:12;42179:55;42259:69;42320:7;42313:4;42299:11;42295:2;42291:20;42287:31;42259:69;:::i;:::-;42247:82;;-1:-1:-1;42358:4:34;42349:14;;;;42098;42065:308;;;-1:-1:-1;42459:4:34;42444:20;;;;42438:27;42392:5;;42438:27;;-1:-1:-1;;;;;;41322:1173:34:o;44566:331::-;44671:9;44682;44724:8;44712:10;44709:24;44706:44;;;44746:1;44743;44736:12;44706:44;44775:6;44765:8;44762:20;44759:40;;;44795:1;44792;44785:12;44759:40;-1:-1:-1;;44821:23:34;;;44866:25;;;;;-1:-1:-1;44566:331:34:o",
3018
3063
  linkReferences: {
3019
3064
  "src/InputsExtractor.sol": {
3020
3065
  InputsExtractor: [
3021
- { start: 1869, length: 20 },
3022
- { start: 2033, length: 20 },
3023
- { start: 2156, length: 20 },
3024
- { start: 2564, length: 20 },
3025
- { start: 2925, length: 20 },
3026
- { start: 3089, length: 20 },
3027
- { start: 3227, length: 20 },
3028
- { start: 3849, length: 20 },
3029
- { start: 5229, length: 20 },
3030
- { start: 7201, length: 20 },
3031
- { start: 7804, length: 20 },
3032
- { start: 8633, length: 20 },
3033
- { start: 9175, length: 20 }
3066
+ { start: 1443, length: 20 },
3067
+ { start: 2211, length: 20 },
3068
+ { start: 2530, length: 20 },
3069
+ { start: 3965, length: 20 },
3070
+ { start: 4088, length: 20 },
3071
+ { start: 4652, length: 20 },
3072
+ { start: 5261, length: 20 },
3073
+ { start: 7246, length: 20 },
3074
+ { start: 7369, length: 20 },
3075
+ { start: 7689, length: 20 },
3076
+ { start: 8232, length: 20 },
3077
+ { start: 9032, length: 20 },
3078
+ { start: 9308, length: 20 }
3034
3079
  ]
3035
3080
  }
3036
3081
  }
@@ -3041,43 +3086,43 @@ var ZKPassportVerifier_default = {
3041
3086
  "SANCTIONS_REGISTRY_ID()": "652ba33d",
3042
3087
  "addVerifiers(bytes32[],address[])": "a6df2c01",
3043
3088
  "admin()": "f851a440",
3044
- "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "653cfd81",
3045
- "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "59545f45",
3046
- "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": "1e26a9dc",
3047
- "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "37889655",
3048
- "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "54dbe4d1",
3049
- "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "bf73c26c",
3050
- "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "aa1346ea",
3051
- "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "62067c82",
3052
- "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c0940ebd",
3053
- "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "04951b86",
3054
- "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "704876d6",
3055
- "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "921076c7",
3056
- "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "deb7c059",
3057
- "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "c4560786",
3058
- "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "0b90581b",
3059
- "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d3f6ffff",
3060
- "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "4c127428",
3061
- "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "a88f1cef",
3062
- "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e718bc32",
3063
- "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "46bd0a16",
3064
- "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "cfd9464a",
3065
- "isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "2e27242c",
3066
- "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "ec46f774",
3067
- "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "3a86bd3d",
3068
- "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "f87e19b1",
3069
- "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "e420e354",
3089
+ "enforceSanctionsRoot((bytes,uint256[]))": "16e3d729",
3090
+ "getBoundData((bytes,uint256[]))": "98e73ac3",
3091
+ "getDisclosedData((bytes,uint256[]),bool)": "f3757ad4",
3092
+ "isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "c3fa6f22",
3093
+ "isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "2e5ce77f",
3094
+ "isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "818694f1",
3095
+ "isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "d4932b4e",
3096
+ "isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": "cf515d37",
3097
+ "isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": "ff203707",
3098
+ "isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "b8bd4879",
3099
+ "isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "c1b77162",
3100
+ "isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "9c1a81a3",
3101
+ "isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "1fac4345",
3102
+ "isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": "311a335c",
3103
+ "isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "320d3b55",
3104
+ "isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "ac20d678",
3105
+ "isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "ca4051f2",
3106
+ "isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "ddd8f8e3",
3107
+ "isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "8e2e2e62",
3108
+ "isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": "3d6ed975",
3109
+ "isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": "8b2ec611",
3110
+ "isFaceMatchVerified(uint8,uint8,(bytes,uint256[]))": "106a2f6d",
3111
+ "isIssuingCountryIn(string[],(bytes,uint256[]))": "7e5a88f3",
3112
+ "isIssuingCountryOut(string[],(bytes,uint256[]))": "5b7ab929",
3113
+ "isNationalityIn(string[],(bytes,uint256[]))": "46b758a0",
3114
+ "isNationalityOut(string[],(bytes,uint256[]))": "d39a5cf9",
3070
3115
  "paused()": "5c975abb",
3071
3116
  "removeVerifiers(bytes32[])": "8d6937b8",
3072
3117
  "rootRegistry()": "b96b161c",
3073
3118
  "setPaused(bool)": "16c38b3c",
3074
3119
  "transferAdmin(address)": "75829def",
3075
3120
  "updateRootRegistry(address)": "18677f2a",
3076
- "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": "d7bf616a",
3121
+ "verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))": "ec8e0729",
3077
3122
  "verifyScopes(bytes32[],string,string)": "847755e3",
3078
3123
  "vkeyHashToVerifier(bytes32)": "8163f231"
3079
3124
  },
3080
- 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":"enum FaceMatchMode","name":"faceMatchMode","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":"isFaceMatchVerified","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":"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"}},"isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"params":{"faceMatchMode":"The FaceMatch mode expected to be used in the verification","params":"The proof verification parameters"},"returns":{"_0":"True if the proof is tied to a valid FaceMatch verification, 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"},"isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))":{"notice":"Checks if the proof is tied to a FaceMatch verification"},"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":"0xedfdbd23c885320a6400c29a47cfd2e359fa67feaa7e72eb576a36ab47757126","license":"Apache-2.0","urls":["bzz-raw://752ce1099ed498206732837c776e1f364cb89a18356601f92c8c23c5b176a2cb","dweb:/ipfs/QmdnGyvFCHvtm2FVAAYUoTRRXUC1nLWXjz3pkHpAnM9rfn"]},"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":"0xfcf678bb8fead1820159845e47c2efefdca16452ab2f30b1704efc13253512eb","license":"Apache-2.0","urls":["bzz-raw://aa83383e296a2b748c093b017e12719aeb1897ca3a677f3def76929951440111","dweb:/ipfs/QmYSCdnm5EuQwrF2mnpRVtTLg4uPH1uUJQxYKyJtjEwq3y"]},"src/StringUtils.sol":{"keccak256":"0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1","license":"Apache-2.0","urls":["bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342","dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"]},"src/Types.sol":{"keccak256":"0x96820d882e9fbdfe5b8d28992a59c4df49733c39fa811282f42b6550fa0d4fe9","license":"Apache-2.0","urls":["bzz-raw://c1cc625bfa759185e433b71f5fc22eef47236f57d217354d180beef91077dcc1","dweb:/ipfs/QmXh6MDGjMx7AL4FjstCEtqNLHp9sCExw5CEzFpD8orYh2"]},"src/ZKPassportVerifier.sol":{"keccak256":"0xcb976ea606732493b4497f5f12e2c6296f397735b1286a8bb1477e7cde195e43","license":"Apache-2.0","urls":["bzz-raw://d186a469d3e30743ddbb719a1ecf71c9787359b2a8287e86c9ac294a17e6db38","dweb:/ipfs/QmSxzqPo33R3EhPzm8fF4k4ShUSp58Nr7qzBVadHWBXxMr"]},"src/ultra-honk-verifiers/OuterCount4.sol":{"keccak256":"0xc0b2358f1cb49d10ab783b6ccf321e8bde6eb8ce70efe325fdf49987f1688b94","license":"Apache-2.0","urls":["bzz-raw://c5ddd3b3c3e2522e766c5ab95d2559ce4e79fe54e9aeb50b1c995ad1d8ed18ee","dweb:/ipfs/Qmcu7WhWMk3TPxb3HuwEPiXF95F6eD8KmJ12RXxFBdCYgM"]}},"version":1}',
3125
+ 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":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"enforceSanctionsRoot","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","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":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","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":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeAbove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"minAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeAboveOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeBelow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxAge","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","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":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"age","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isAgeEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","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":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isBirthdateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateAfter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"minDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateAfterOrEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateBefore","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxDate","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","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":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateBetween","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"date","type":"uint256"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"name":"isExpiryDateEqual","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum FaceMatchMode","name":"faceMatchMode","type":"uint8"},{"internalType":"enum OS","name":"os","type":"uint8"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isFaceMatchVerified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isIssuingCountryIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isIssuingCountryOut","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"}],"name":"isNationalityIn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string[]","name":"countryList","type":"string[]"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","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":[{"components":[{"internalType":"bytes32","name":"vkeyHash","type":"bytes32"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"bytes32[]","name":"publicInputs","type":"bytes32[]"}],"internalType":"struct ProofVerificationData","name":"proofVerificationData","type":"tuple"},{"components":[{"internalType":"bytes","name":"committedInputs","type":"bytes"},{"internalType":"uint256[]","name":"committedInputCounts","type":"uint256[]"}],"internalType":"struct Commitments","name":"commitments","type":"tuple"},{"components":[{"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 ServiceConfig","name":"serviceConfig","type":"tuple"}],"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((bytes,uint256[]))":{"params":{"commitments":"The commitments"}},"getBoundData((bytes,uint256[]))":{"params":{"commitments":"The commitments"},"returns":{"boundData":"The data bound to the proof"}},"getDisclosedData((bytes,uint256[]),bool)":{"params":{"commitments":"The commitments","isIDCard":"Whether the proof is an ID card"},"returns":{"disclosedData":"The data disclosed by the proof"}},"isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minAge":"The age must be above this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is above the given age, false otherwise"}},"isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minAge":"The age must be above or equal to this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is above or equal to the given age, false otherwise"}},"isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxAge":"The age must be below this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is below the given age, false otherwise"}},"isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxAge":"The age must be below or equal to this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is below or equal to the given age, false otherwise"}},"isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxAge":"The age must be less than or equal to this age","minAge":"The age must be greater than or equal to this age","serviceConfig":"The service config"},"returns":{"_0":"True if the age is in the given range, false otherwise"}},"isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"age":"The age must be equal to this age","commitments":"The commitments","serviceConfig":"The service config"},"returns":{"_0":"True if the age is equal to the given age, false otherwise"}},"isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The birthdate must be after this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is after the given date, false otherwise"}},"isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The birthdate must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is after or equal to the given date, false otherwise"}},"isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is before the given date, false otherwise"}},"isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is before or equal to the given date, false otherwise"}},"isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The birthdate must be before or equal to this date","minDate":"The birthdate must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is between the given dates, false otherwise"}},"isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","date":"The birthdate must be equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the birthdate is equal to the given date, false otherwise"}},"isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The expiry date must be after this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is after the given date, false otherwise"}},"isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","minDate":"The expiry date must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is after or equal to the given date, false otherwise"}},"isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is before the given date, false otherwise"}},"isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is before or equal to the given date, false otherwise"}},"isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","maxDate":"The expiry date must be before or equal to this date","minDate":"The expiry date must be after or equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is between the given dates, false otherwise"}},"isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"params":{"commitments":"The commitments","date":"The expiry date must be equal to this date","serviceConfig":"The service config"},"returns":{"_0":"True if the expiry date is equal to the given date, false otherwise"}},"isFaceMatchVerified(uint8,uint8,(bytes,uint256[]))":{"params":{"commitments":"The commitments","faceMatchMode":"The FaceMatch mode expected to be used in the verification","os":"The operating system on which the proof should have been generated (Any (0), iOS (1), Android (2))"},"returns":{"_0":"True if the proof is tied to a valid FaceMatch verification, false otherwise"}},"isIssuingCountryIn(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof)"},"returns":{"_0":"True if the issuing country is in the list of countries, false otherwise"}},"isIssuingCountryOut(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","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"},"returns":{"_0":"True if the issuing country is not in the list of countries, false otherwise"}},"isNationalityIn(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","countryList":"The list of countries (needs to match exactly the list of countries in the proof)"},"returns":{"_0":"True if the nationality is in the list of countries, false otherwise"}},"isNationalityOut(string[],(bytes,uint256[]))":{"params":{"commitments":"The commitments","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"},"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((bytes,uint256[]))":{"notice":"Enforces that the proof checks against the expected sanction list(s)"},"getBoundData((bytes,uint256[]))":{"notice":"Gets the data bound to the proof"},"getDisclosedData((bytes,uint256[]),bool)":{"notice":"Gets the data disclosed by the proof"},"isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is above the given age"},"isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is above or equal to the given age"},"isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is below the given age"},"isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is below or equal to the given age"},"isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is in the given range"},"isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the age is equal to the given age"},"isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is after the given date"},"isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is after or equal to the given date"},"isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is before the given date"},"isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is before or equal to the given date"},"isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is between the given dates"},"isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the birthdate is equal to the given date"},"isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is after the given date"},"isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is after or equal to the given date"},"isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is before the given date"},"isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is before or equal to the given date"},"isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is between the given dates"},"isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))":{"notice":"Checks if the expiry date is equal to the given date"},"isFaceMatchVerified(uint8,uint8,(bytes,uint256[]))":{"notice":"Checks if the proof is tied to a FaceMatch verification"},"isIssuingCountryIn(string[],(bytes,uint256[]))":{"notice":"Checks if the issuing country is in the list of countries"},"isIssuingCountryOut(string[],(bytes,uint256[]))":{"notice":"Checks if the issuing country is not in the list of countries"},"isNationalityIn(string[],(bytes,uint256[]))":{"notice":"Checks if the nationality is in the list of countries"},"isNationalityOut(string[],(bytes,uint256[]))":{"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":"0x6f011f7c9038b4552283dd9801d5686ad4047ad6c281cf0a8620bfec503a9060","license":"Apache-2.0","urls":["bzz-raw://d4052ca894163688d25d78d297f86dd1c562cfd4e9de7253f2c1da30796a538c","dweb:/ipfs/QmbMJ9gCMsqo22f6ih8Sk3MTxCwBJfPEFAMbYoBVXMydAW"]},"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":"0xca3a90807b75bff710d97a53c65838a19a87d0bc96c3e1f7a7caa2eb831ef373","license":"Apache-2.0","urls":["bzz-raw://7e1360632f22afd864807ae616cd29c80f90142f2065a131dc996758b9388650","dweb:/ipfs/QmSaRNmHoZs8pLKgfrgBhe9oMrNX82huzDXq1K5TvTwWad"]},"src/StringUtils.sol":{"keccak256":"0x0174454c28003f489bcdf636c93ccb512d80f3dbdca7485e11b51cf2c8ebfff1","license":"Apache-2.0","urls":["bzz-raw://92ea71064b8199c9a05cbe279cf42adaaa7b29604d960a84754d3d997b1c2342","dweb:/ipfs/QmcsrqRJ2YZABCZHzS782RqKmWEegSK1LCmTTjJ94gdh5q"]},"src/Types.sol":{"keccak256":"0x1cb492c099b71287da0349afef0c72c430e2476ad7373a0ea1456e7145207a06","license":"Apache-2.0","urls":["bzz-raw://a158753948b82917aa802c4b475a1ffb4b5f09b2a86ebcb64db11437ab297047","dweb:/ipfs/QmPgGhT59MzcG4TA5PmKjzaoNMZ4VRmcLJH6w5LkWQYjxV"]},"src/ZKPassportVerifier.sol":{"keccak256":"0x12322e58cc69dcc634b07dca3715b81b08aeb1618bcbfcf3de9edbe120f08de9","license":"Apache-2.0","urls":["bzz-raw://769194840e10dd878e1fcac248d386ba6cdb8e0fd96915111133c7f122265bf2","dweb:/ipfs/QmR5ML1N26F8bPMZd2GgSKrGxtUfbLtpKp4dN1FbBMXDNG"]},"src/ultra-honk-verifiers/OuterCount4.sol":{"keccak256":"0xc0b2358f1cb49d10ab783b6ccf321e8bde6eb8ce70efe325fdf49987f1688b94","license":"Apache-2.0","urls":["bzz-raw://c5ddd3b3c3e2522e766c5ab95d2559ce4e79fe54e9aeb50b1c995ad1d8ed18ee","dweb:/ipfs/Qmcu7WhWMk3TPxb3HuwEPiXF95F6eD8KmJ12RXxFBdCYgM"]}},"version":1}',
3081
3126
  metadata: {
3082
3127
  compiler: { version: "0.8.29+commit.ab55807c" },
3083
3128
  language: "Solidity",
@@ -3210,23 +3255,12 @@ var ZKPassportVerifier_default = {
3210
3255
  {
3211
3256
  inputs: [
3212
3257
  {
3213
- internalType: "struct ProofVerificationParams",
3214
- name: "params",
3258
+ internalType: "struct Commitments",
3259
+ name: "commitments",
3215
3260
  type: "tuple",
3216
3261
  components: [
3217
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3218
- { internalType: "bytes", name: "proof", type: "bytes" },
3219
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3220
3262
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3221
- {
3222
- internalType: "uint256[]",
3223
- name: "committedInputCounts",
3224
- type: "uint256[]"
3225
- },
3226
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3227
- { internalType: "string", name: "domain", type: "string" },
3228
- { internalType: "string", name: "scope", type: "string" },
3229
- { internalType: "bool", name: "devMode", type: "bool" }
3263
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3230
3264
  ]
3231
3265
  }
3232
3266
  ],
@@ -3237,23 +3271,12 @@ var ZKPassportVerifier_default = {
3237
3271
  {
3238
3272
  inputs: [
3239
3273
  {
3240
- internalType: "struct ProofVerificationParams",
3241
- name: "params",
3274
+ internalType: "struct Commitments",
3275
+ name: "commitments",
3242
3276
  type: "tuple",
3243
3277
  components: [
3244
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3245
- { internalType: "bytes", name: "proof", type: "bytes" },
3246
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3247
3278
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3248
- {
3249
- internalType: "uint256[]",
3250
- name: "committedInputCounts",
3251
- type: "uint256[]"
3252
- },
3253
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3254
- { internalType: "string", name: "domain", type: "string" },
3255
- { internalType: "string", name: "scope", type: "string" },
3256
- { internalType: "bool", name: "devMode", type: "bool" }
3279
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3257
3280
  ]
3258
3281
  }
3259
3282
  ],
@@ -3276,23 +3299,12 @@ var ZKPassportVerifier_default = {
3276
3299
  {
3277
3300
  inputs: [
3278
3301
  {
3279
- internalType: "struct ProofVerificationParams",
3280
- name: "params",
3302
+ internalType: "struct Commitments",
3303
+ name: "commitments",
3281
3304
  type: "tuple",
3282
3305
  components: [
3283
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3284
- { internalType: "bytes", name: "proof", type: "bytes" },
3285
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3286
3306
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3287
- {
3288
- internalType: "uint256[]",
3289
- name: "committedInputCounts",
3290
- type: "uint256[]"
3291
- },
3292
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3293
- { internalType: "string", name: "domain", type: "string" },
3294
- { internalType: "string", name: "scope", type: "string" },
3295
- { internalType: "bool", name: "devMode", type: "bool" }
3307
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3296
3308
  ]
3297
3309
  },
3298
3310
  { internalType: "bool", name: "isIDCard", type: "bool" }
@@ -3322,19 +3334,19 @@ var ZKPassportVerifier_default = {
3322
3334
  inputs: [
3323
3335
  { internalType: "uint8", name: "minAge", type: "uint8" },
3324
3336
  {
3325
- internalType: "struct ProofVerificationParams",
3326
- name: "params",
3337
+ internalType: "struct Commitments",
3338
+ name: "commitments",
3327
3339
  type: "tuple",
3328
3340
  components: [
3329
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3330
- { internalType: "bytes", name: "proof", type: "bytes" },
3331
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3332
3341
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3333
- {
3334
- internalType: "uint256[]",
3335
- name: "committedInputCounts",
3336
- type: "uint256[]"
3337
- },
3342
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3343
+ ]
3344
+ },
3345
+ {
3346
+ internalType: "struct ServiceConfig",
3347
+ name: "serviceConfig",
3348
+ type: "tuple",
3349
+ components: [
3338
3350
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3339
3351
  { internalType: "string", name: "domain", type: "string" },
3340
3352
  { internalType: "string", name: "scope", type: "string" },
@@ -3351,19 +3363,19 @@ var ZKPassportVerifier_default = {
3351
3363
  inputs: [
3352
3364
  { internalType: "uint8", name: "minAge", type: "uint8" },
3353
3365
  {
3354
- internalType: "struct ProofVerificationParams",
3355
- name: "params",
3366
+ internalType: "struct Commitments",
3367
+ name: "commitments",
3356
3368
  type: "tuple",
3357
3369
  components: [
3358
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3359
- { internalType: "bytes", name: "proof", type: "bytes" },
3360
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3361
3370
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3362
- {
3363
- internalType: "uint256[]",
3364
- name: "committedInputCounts",
3365
- type: "uint256[]"
3366
- },
3371
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3372
+ ]
3373
+ },
3374
+ {
3375
+ internalType: "struct ServiceConfig",
3376
+ name: "serviceConfig",
3377
+ type: "tuple",
3378
+ components: [
3367
3379
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3368
3380
  { internalType: "string", name: "domain", type: "string" },
3369
3381
  { internalType: "string", name: "scope", type: "string" },
@@ -3380,19 +3392,19 @@ var ZKPassportVerifier_default = {
3380
3392
  inputs: [
3381
3393
  { internalType: "uint8", name: "maxAge", type: "uint8" },
3382
3394
  {
3383
- internalType: "struct ProofVerificationParams",
3384
- name: "params",
3395
+ internalType: "struct Commitments",
3396
+ name: "commitments",
3385
3397
  type: "tuple",
3386
3398
  components: [
3387
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3388
- { internalType: "bytes", name: "proof", type: "bytes" },
3389
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3390
3399
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3391
- {
3392
- internalType: "uint256[]",
3393
- name: "committedInputCounts",
3394
- type: "uint256[]"
3395
- },
3400
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3401
+ ]
3402
+ },
3403
+ {
3404
+ internalType: "struct ServiceConfig",
3405
+ name: "serviceConfig",
3406
+ type: "tuple",
3407
+ components: [
3396
3408
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3397
3409
  { internalType: "string", name: "domain", type: "string" },
3398
3410
  { internalType: "string", name: "scope", type: "string" },
@@ -3409,19 +3421,19 @@ var ZKPassportVerifier_default = {
3409
3421
  inputs: [
3410
3422
  { internalType: "uint8", name: "maxAge", type: "uint8" },
3411
3423
  {
3412
- internalType: "struct ProofVerificationParams",
3413
- name: "params",
3424
+ internalType: "struct Commitments",
3425
+ name: "commitments",
3414
3426
  type: "tuple",
3415
3427
  components: [
3416
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3417
- { internalType: "bytes", name: "proof", type: "bytes" },
3418
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3419
3428
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3420
- {
3421
- internalType: "uint256[]",
3422
- name: "committedInputCounts",
3423
- type: "uint256[]"
3424
- },
3429
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3430
+ ]
3431
+ },
3432
+ {
3433
+ internalType: "struct ServiceConfig",
3434
+ name: "serviceConfig",
3435
+ type: "tuple",
3436
+ components: [
3425
3437
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3426
3438
  { internalType: "string", name: "domain", type: "string" },
3427
3439
  { internalType: "string", name: "scope", type: "string" },
@@ -3439,19 +3451,19 @@ var ZKPassportVerifier_default = {
3439
3451
  { internalType: "uint8", name: "minAge", type: "uint8" },
3440
3452
  { internalType: "uint8", name: "maxAge", type: "uint8" },
3441
3453
  {
3442
- internalType: "struct ProofVerificationParams",
3443
- name: "params",
3454
+ internalType: "struct Commitments",
3455
+ name: "commitments",
3444
3456
  type: "tuple",
3445
3457
  components: [
3446
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3447
- { internalType: "bytes", name: "proof", type: "bytes" },
3448
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3449
3458
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3450
- {
3451
- internalType: "uint256[]",
3452
- name: "committedInputCounts",
3453
- type: "uint256[]"
3454
- },
3459
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3460
+ ]
3461
+ },
3462
+ {
3463
+ internalType: "struct ServiceConfig",
3464
+ name: "serviceConfig",
3465
+ type: "tuple",
3466
+ components: [
3455
3467
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3456
3468
  { internalType: "string", name: "domain", type: "string" },
3457
3469
  { internalType: "string", name: "scope", type: "string" },
@@ -3468,19 +3480,19 @@ var ZKPassportVerifier_default = {
3468
3480
  inputs: [
3469
3481
  { internalType: "uint8", name: "age", type: "uint8" },
3470
3482
  {
3471
- internalType: "struct ProofVerificationParams",
3472
- name: "params",
3483
+ internalType: "struct Commitments",
3484
+ name: "commitments",
3473
3485
  type: "tuple",
3474
3486
  components: [
3475
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3476
- { internalType: "bytes", name: "proof", type: "bytes" },
3477
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3478
3487
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3479
- {
3480
- internalType: "uint256[]",
3481
- name: "committedInputCounts",
3482
- type: "uint256[]"
3483
- },
3488
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3489
+ ]
3490
+ },
3491
+ {
3492
+ internalType: "struct ServiceConfig",
3493
+ name: "serviceConfig",
3494
+ type: "tuple",
3495
+ components: [
3484
3496
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3485
3497
  { internalType: "string", name: "domain", type: "string" },
3486
3498
  { internalType: "string", name: "scope", type: "string" },
@@ -3497,19 +3509,19 @@ var ZKPassportVerifier_default = {
3497
3509
  inputs: [
3498
3510
  { internalType: "uint256", name: "minDate", type: "uint256" },
3499
3511
  {
3500
- internalType: "struct ProofVerificationParams",
3501
- name: "params",
3512
+ internalType: "struct Commitments",
3513
+ name: "commitments",
3502
3514
  type: "tuple",
3503
3515
  components: [
3504
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3505
- { internalType: "bytes", name: "proof", type: "bytes" },
3506
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3507
3516
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3508
- {
3509
- internalType: "uint256[]",
3510
- name: "committedInputCounts",
3511
- type: "uint256[]"
3512
- },
3517
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3518
+ ]
3519
+ },
3520
+ {
3521
+ internalType: "struct ServiceConfig",
3522
+ name: "serviceConfig",
3523
+ type: "tuple",
3524
+ components: [
3513
3525
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3514
3526
  { internalType: "string", name: "domain", type: "string" },
3515
3527
  { internalType: "string", name: "scope", type: "string" },
@@ -3526,19 +3538,19 @@ var ZKPassportVerifier_default = {
3526
3538
  inputs: [
3527
3539
  { internalType: "uint256", name: "minDate", type: "uint256" },
3528
3540
  {
3529
- internalType: "struct ProofVerificationParams",
3530
- name: "params",
3541
+ internalType: "struct Commitments",
3542
+ name: "commitments",
3531
3543
  type: "tuple",
3532
3544
  components: [
3533
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3534
- { internalType: "bytes", name: "proof", type: "bytes" },
3535
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3536
3545
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3537
- {
3538
- internalType: "uint256[]",
3539
- name: "committedInputCounts",
3540
- type: "uint256[]"
3541
- },
3546
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3547
+ ]
3548
+ },
3549
+ {
3550
+ internalType: "struct ServiceConfig",
3551
+ name: "serviceConfig",
3552
+ type: "tuple",
3553
+ components: [
3542
3554
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3543
3555
  { internalType: "string", name: "domain", type: "string" },
3544
3556
  { internalType: "string", name: "scope", type: "string" },
@@ -3555,19 +3567,19 @@ var ZKPassportVerifier_default = {
3555
3567
  inputs: [
3556
3568
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3557
3569
  {
3558
- internalType: "struct ProofVerificationParams",
3559
- name: "params",
3570
+ internalType: "struct Commitments",
3571
+ name: "commitments",
3560
3572
  type: "tuple",
3561
3573
  components: [
3562
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3563
- { internalType: "bytes", name: "proof", type: "bytes" },
3564
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3565
3574
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3566
- {
3567
- internalType: "uint256[]",
3568
- name: "committedInputCounts",
3569
- type: "uint256[]"
3570
- },
3575
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3576
+ ]
3577
+ },
3578
+ {
3579
+ internalType: "struct ServiceConfig",
3580
+ name: "serviceConfig",
3581
+ type: "tuple",
3582
+ components: [
3571
3583
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3572
3584
  { internalType: "string", name: "domain", type: "string" },
3573
3585
  { internalType: "string", name: "scope", type: "string" },
@@ -3584,19 +3596,19 @@ var ZKPassportVerifier_default = {
3584
3596
  inputs: [
3585
3597
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3586
3598
  {
3587
- internalType: "struct ProofVerificationParams",
3588
- name: "params",
3599
+ internalType: "struct Commitments",
3600
+ name: "commitments",
3589
3601
  type: "tuple",
3590
3602
  components: [
3591
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3592
- { internalType: "bytes", name: "proof", type: "bytes" },
3593
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3594
3603
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3595
- {
3596
- internalType: "uint256[]",
3597
- name: "committedInputCounts",
3598
- type: "uint256[]"
3599
- },
3604
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3605
+ ]
3606
+ },
3607
+ {
3608
+ internalType: "struct ServiceConfig",
3609
+ name: "serviceConfig",
3610
+ type: "tuple",
3611
+ components: [
3600
3612
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3601
3613
  { internalType: "string", name: "domain", type: "string" },
3602
3614
  { internalType: "string", name: "scope", type: "string" },
@@ -3614,19 +3626,19 @@ var ZKPassportVerifier_default = {
3614
3626
  { internalType: "uint256", name: "minDate", type: "uint256" },
3615
3627
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3616
3628
  {
3617
- internalType: "struct ProofVerificationParams",
3618
- name: "params",
3629
+ internalType: "struct Commitments",
3630
+ name: "commitments",
3619
3631
  type: "tuple",
3620
3632
  components: [
3621
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3622
- { internalType: "bytes", name: "proof", type: "bytes" },
3623
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3624
3633
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3625
- {
3626
- internalType: "uint256[]",
3627
- name: "committedInputCounts",
3628
- type: "uint256[]"
3629
- },
3634
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3635
+ ]
3636
+ },
3637
+ {
3638
+ internalType: "struct ServiceConfig",
3639
+ name: "serviceConfig",
3640
+ type: "tuple",
3641
+ components: [
3630
3642
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3631
3643
  { internalType: "string", name: "domain", type: "string" },
3632
3644
  { internalType: "string", name: "scope", type: "string" },
@@ -3643,19 +3655,19 @@ var ZKPassportVerifier_default = {
3643
3655
  inputs: [
3644
3656
  { internalType: "uint256", name: "date", type: "uint256" },
3645
3657
  {
3646
- internalType: "struct ProofVerificationParams",
3647
- name: "params",
3658
+ internalType: "struct Commitments",
3659
+ name: "commitments",
3648
3660
  type: "tuple",
3649
3661
  components: [
3650
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3651
- { internalType: "bytes", name: "proof", type: "bytes" },
3652
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3653
3662
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3654
- {
3655
- internalType: "uint256[]",
3656
- name: "committedInputCounts",
3657
- type: "uint256[]"
3658
- },
3663
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3664
+ ]
3665
+ },
3666
+ {
3667
+ internalType: "struct ServiceConfig",
3668
+ name: "serviceConfig",
3669
+ type: "tuple",
3670
+ components: [
3659
3671
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3660
3672
  { internalType: "string", name: "domain", type: "string" },
3661
3673
  { internalType: "string", name: "scope", type: "string" },
@@ -3672,19 +3684,19 @@ var ZKPassportVerifier_default = {
3672
3684
  inputs: [
3673
3685
  { internalType: "uint256", name: "minDate", type: "uint256" },
3674
3686
  {
3675
- internalType: "struct ProofVerificationParams",
3676
- name: "params",
3687
+ internalType: "struct Commitments",
3688
+ name: "commitments",
3677
3689
  type: "tuple",
3678
3690
  components: [
3679
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3680
- { internalType: "bytes", name: "proof", type: "bytes" },
3681
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3682
3691
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3683
- {
3684
- internalType: "uint256[]",
3685
- name: "committedInputCounts",
3686
- type: "uint256[]"
3687
- },
3692
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3693
+ ]
3694
+ },
3695
+ {
3696
+ internalType: "struct ServiceConfig",
3697
+ name: "serviceConfig",
3698
+ type: "tuple",
3699
+ components: [
3688
3700
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3689
3701
  { internalType: "string", name: "domain", type: "string" },
3690
3702
  { internalType: "string", name: "scope", type: "string" },
@@ -3701,19 +3713,19 @@ var ZKPassportVerifier_default = {
3701
3713
  inputs: [
3702
3714
  { internalType: "uint256", name: "minDate", type: "uint256" },
3703
3715
  {
3704
- internalType: "struct ProofVerificationParams",
3705
- name: "params",
3716
+ internalType: "struct Commitments",
3717
+ name: "commitments",
3706
3718
  type: "tuple",
3707
3719
  components: [
3708
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3709
- { internalType: "bytes", name: "proof", type: "bytes" },
3710
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3711
3720
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3712
- {
3713
- internalType: "uint256[]",
3714
- name: "committedInputCounts",
3715
- type: "uint256[]"
3716
- },
3721
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3722
+ ]
3723
+ },
3724
+ {
3725
+ internalType: "struct ServiceConfig",
3726
+ name: "serviceConfig",
3727
+ type: "tuple",
3728
+ components: [
3717
3729
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3718
3730
  { internalType: "string", name: "domain", type: "string" },
3719
3731
  { internalType: "string", name: "scope", type: "string" },
@@ -3730,19 +3742,19 @@ var ZKPassportVerifier_default = {
3730
3742
  inputs: [
3731
3743
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3732
3744
  {
3733
- internalType: "struct ProofVerificationParams",
3734
- name: "params",
3745
+ internalType: "struct Commitments",
3746
+ name: "commitments",
3735
3747
  type: "tuple",
3736
3748
  components: [
3737
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3738
- { internalType: "bytes", name: "proof", type: "bytes" },
3739
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3740
3749
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3741
- {
3742
- internalType: "uint256[]",
3743
- name: "committedInputCounts",
3744
- type: "uint256[]"
3745
- },
3750
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3751
+ ]
3752
+ },
3753
+ {
3754
+ internalType: "struct ServiceConfig",
3755
+ name: "serviceConfig",
3756
+ type: "tuple",
3757
+ components: [
3746
3758
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3747
3759
  { internalType: "string", name: "domain", type: "string" },
3748
3760
  { internalType: "string", name: "scope", type: "string" },
@@ -3759,19 +3771,19 @@ var ZKPassportVerifier_default = {
3759
3771
  inputs: [
3760
3772
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3761
3773
  {
3762
- internalType: "struct ProofVerificationParams",
3763
- name: "params",
3774
+ internalType: "struct Commitments",
3775
+ name: "commitments",
3764
3776
  type: "tuple",
3765
3777
  components: [
3766
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3767
- { internalType: "bytes", name: "proof", type: "bytes" },
3768
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3769
3778
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3770
- {
3771
- internalType: "uint256[]",
3772
- name: "committedInputCounts",
3773
- type: "uint256[]"
3774
- },
3779
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3780
+ ]
3781
+ },
3782
+ {
3783
+ internalType: "struct ServiceConfig",
3784
+ name: "serviceConfig",
3785
+ type: "tuple",
3786
+ components: [
3775
3787
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3776
3788
  { internalType: "string", name: "domain", type: "string" },
3777
3789
  { internalType: "string", name: "scope", type: "string" },
@@ -3789,19 +3801,19 @@ var ZKPassportVerifier_default = {
3789
3801
  { internalType: "uint256", name: "minDate", type: "uint256" },
3790
3802
  { internalType: "uint256", name: "maxDate", type: "uint256" },
3791
3803
  {
3792
- internalType: "struct ProofVerificationParams",
3793
- name: "params",
3804
+ internalType: "struct Commitments",
3805
+ name: "commitments",
3794
3806
  type: "tuple",
3795
3807
  components: [
3796
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3797
- { internalType: "bytes", name: "proof", type: "bytes" },
3798
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3799
3808
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3800
- {
3801
- internalType: "uint256[]",
3802
- name: "committedInputCounts",
3803
- type: "uint256[]"
3804
- },
3809
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3810
+ ]
3811
+ },
3812
+ {
3813
+ internalType: "struct ServiceConfig",
3814
+ name: "serviceConfig",
3815
+ type: "tuple",
3816
+ components: [
3805
3817
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3806
3818
  { internalType: "string", name: "domain", type: "string" },
3807
3819
  { internalType: "string", name: "scope", type: "string" },
@@ -3818,19 +3830,19 @@ var ZKPassportVerifier_default = {
3818
3830
  inputs: [
3819
3831
  { internalType: "uint256", name: "date", type: "uint256" },
3820
3832
  {
3821
- internalType: "struct ProofVerificationParams",
3822
- name: "params",
3833
+ internalType: "struct Commitments",
3834
+ name: "commitments",
3823
3835
  type: "tuple",
3824
3836
  components: [
3825
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3826
- { internalType: "bytes", name: "proof", type: "bytes" },
3827
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3828
3837
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3829
- {
3830
- internalType: "uint256[]",
3831
- name: "committedInputCounts",
3832
- type: "uint256[]"
3833
- },
3838
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3839
+ ]
3840
+ },
3841
+ {
3842
+ internalType: "struct ServiceConfig",
3843
+ name: "serviceConfig",
3844
+ type: "tuple",
3845
+ components: [
3834
3846
  { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3835
3847
  { internalType: "string", name: "domain", type: "string" },
3836
3848
  { internalType: "string", name: "scope", type: "string" },
@@ -3846,24 +3858,14 @@ var ZKPassportVerifier_default = {
3846
3858
  {
3847
3859
  inputs: [
3848
3860
  { internalType: "enum FaceMatchMode", name: "faceMatchMode", type: "uint8" },
3861
+ { internalType: "enum OS", name: "os", type: "uint8" },
3849
3862
  {
3850
- internalType: "struct ProofVerificationParams",
3851
- name: "params",
3863
+ internalType: "struct Commitments",
3864
+ name: "commitments",
3852
3865
  type: "tuple",
3853
3866
  components: [
3854
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3855
- { internalType: "bytes", name: "proof", type: "bytes" },
3856
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3857
3867
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3858
- {
3859
- internalType: "uint256[]",
3860
- name: "committedInputCounts",
3861
- type: "uint256[]"
3862
- },
3863
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3864
- { internalType: "string", name: "domain", type: "string" },
3865
- { internalType: "string", name: "scope", type: "string" },
3866
- { internalType: "bool", name: "devMode", type: "bool" }
3868
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3867
3869
  ]
3868
3870
  }
3869
3871
  ],
@@ -3876,23 +3878,12 @@ var ZKPassportVerifier_default = {
3876
3878
  inputs: [
3877
3879
  { internalType: "string[]", name: "countryList", type: "string[]" },
3878
3880
  {
3879
- internalType: "struct ProofVerificationParams",
3880
- name: "params",
3881
+ internalType: "struct Commitments",
3882
+ name: "commitments",
3881
3883
  type: "tuple",
3882
3884
  components: [
3883
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3884
- { internalType: "bytes", name: "proof", type: "bytes" },
3885
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3886
3885
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3887
- {
3888
- internalType: "uint256[]",
3889
- name: "committedInputCounts",
3890
- type: "uint256[]"
3891
- },
3892
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3893
- { internalType: "string", name: "domain", type: "string" },
3894
- { internalType: "string", name: "scope", type: "string" },
3895
- { internalType: "bool", name: "devMode", type: "bool" }
3886
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3896
3887
  ]
3897
3888
  }
3898
3889
  ],
@@ -3905,23 +3896,12 @@ var ZKPassportVerifier_default = {
3905
3896
  inputs: [
3906
3897
  { internalType: "string[]", name: "countryList", type: "string[]" },
3907
3898
  {
3908
- internalType: "struct ProofVerificationParams",
3909
- name: "params",
3899
+ internalType: "struct Commitments",
3900
+ name: "commitments",
3910
3901
  type: "tuple",
3911
3902
  components: [
3912
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3913
- { internalType: "bytes", name: "proof", type: "bytes" },
3914
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3915
3903
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3916
- {
3917
- internalType: "uint256[]",
3918
- name: "committedInputCounts",
3919
- type: "uint256[]"
3920
- },
3921
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3922
- { internalType: "string", name: "domain", type: "string" },
3923
- { internalType: "string", name: "scope", type: "string" },
3924
- { internalType: "bool", name: "devMode", type: "bool" }
3904
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3925
3905
  ]
3926
3906
  }
3927
3907
  ],
@@ -3934,23 +3914,12 @@ var ZKPassportVerifier_default = {
3934
3914
  inputs: [
3935
3915
  { internalType: "string[]", name: "countryList", type: "string[]" },
3936
3916
  {
3937
- internalType: "struct ProofVerificationParams",
3938
- name: "params",
3917
+ internalType: "struct Commitments",
3918
+ name: "commitments",
3939
3919
  type: "tuple",
3940
3920
  components: [
3941
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3942
- { internalType: "bytes", name: "proof", type: "bytes" },
3943
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3944
3921
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3945
- {
3946
- internalType: "uint256[]",
3947
- name: "committedInputCounts",
3948
- type: "uint256[]"
3949
- },
3950
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3951
- { internalType: "string", name: "domain", type: "string" },
3952
- { internalType: "string", name: "scope", type: "string" },
3953
- { internalType: "bool", name: "devMode", type: "bool" }
3922
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3954
3923
  ]
3955
3924
  }
3956
3925
  ],
@@ -3963,23 +3932,12 @@ var ZKPassportVerifier_default = {
3963
3932
  inputs: [
3964
3933
  { internalType: "string[]", name: "countryList", type: "string[]" },
3965
3934
  {
3966
- internalType: "struct ProofVerificationParams",
3967
- name: "params",
3935
+ internalType: "struct Commitments",
3936
+ name: "commitments",
3968
3937
  type: "tuple",
3969
3938
  components: [
3970
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
3971
- { internalType: "bytes", name: "proof", type: "bytes" },
3972
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
3973
3939
  { internalType: "bytes", name: "committedInputs", type: "bytes" },
3974
- {
3975
- internalType: "uint256[]",
3976
- name: "committedInputCounts",
3977
- type: "uint256[]"
3978
- },
3979
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
3980
- { internalType: "string", name: "domain", type: "string" },
3981
- { internalType: "string", name: "scope", type: "string" },
3982
- { internalType: "bool", name: "devMode", type: "bool" }
3940
+ { internalType: "uint256[]", name: "committedInputCounts", type: "uint256[]" }
3983
3941
  ]
3984
3942
  }
3985
3943
  ],
@@ -4033,19 +3991,44 @@ var ZKPassportVerifier_default = {
4033
3991
  name: "params",
4034
3992
  type: "tuple",
4035
3993
  components: [
4036
- { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
4037
- { internalType: "bytes", name: "proof", type: "bytes" },
4038
- { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" },
4039
- { internalType: "bytes", name: "committedInputs", type: "bytes" },
4040
3994
  {
4041
- internalType: "uint256[]",
4042
- name: "committedInputCounts",
4043
- type: "uint256[]"
3995
+ internalType: "struct ProofVerificationData",
3996
+ name: "proofVerificationData",
3997
+ type: "tuple",
3998
+ components: [
3999
+ { internalType: "bytes32", name: "vkeyHash", type: "bytes32" },
4000
+ { internalType: "bytes", name: "proof", type: "bytes" },
4001
+ { internalType: "bytes32[]", name: "publicInputs", type: "bytes32[]" }
4002
+ ]
4044
4003
  },
4045
- { internalType: "uint256", name: "validityPeriodInSeconds", type: "uint256" },
4046
- { internalType: "string", name: "domain", type: "string" },
4047
- { internalType: "string", name: "scope", type: "string" },
4048
- { internalType: "bool", name: "devMode", type: "bool" }
4004
+ {
4005
+ internalType: "struct Commitments",
4006
+ name: "commitments",
4007
+ type: "tuple",
4008
+ components: [
4009
+ { internalType: "bytes", name: "committedInputs", type: "bytes" },
4010
+ {
4011
+ internalType: "uint256[]",
4012
+ name: "committedInputCounts",
4013
+ type: "uint256[]"
4014
+ }
4015
+ ]
4016
+ },
4017
+ {
4018
+ internalType: "struct ServiceConfig",
4019
+ name: "serviceConfig",
4020
+ type: "tuple",
4021
+ components: [
4022
+ {
4023
+ internalType: "uint256",
4024
+ name: "validityPeriodInSeconds",
4025
+ type: "uint256"
4026
+ },
4027
+ { internalType: "string", name: "domain", type: "string" },
4028
+ { internalType: "string", name: "scope", type: "string" },
4029
+ { internalType: "bool", name: "devMode", type: "bool" }
4030
+ ]
4031
+ }
4049
4032
  ]
4050
4033
  }
4051
4034
  ],
@@ -4080,211 +4063,230 @@ var ZKPassportVerifier_default = {
4080
4063
  kind: "dev",
4081
4064
  methods: {
4082
4065
  constructor: { details: "Constructor" },
4083
- "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4084
- params: { params: "The proof verification parameters" }
4066
+ "enforceSanctionsRoot((bytes,uint256[]))": {
4067
+ params: { commitments: "The commitments" }
4085
4068
  },
4086
- "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4087
- params: { params: "The proof verification parameters" },
4069
+ "getBoundData((bytes,uint256[]))": {
4070
+ params: { commitments: "The commitments" },
4088
4071
  returns: { boundData: "The data bound to the proof" }
4089
4072
  },
4090
- "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
4073
+ "getDisclosedData((bytes,uint256[]),bool)": {
4091
4074
  params: {
4092
- isIDCard: "Whether the proof is an ID card",
4093
- params: "The proof verification parameters"
4075
+ commitments: "The commitments",
4076
+ isIDCard: "Whether the proof is an ID card"
4094
4077
  },
4095
4078
  returns: { disclosedData: "The data disclosed by the proof" }
4096
4079
  },
4097
- "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4080
+ "isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4098
4081
  params: {
4082
+ commitments: "The commitments",
4099
4083
  minAge: "The age must be above this age",
4100
- params: "The proof verification parameters"
4084
+ serviceConfig: "The service config"
4101
4085
  },
4102
4086
  returns: { _0: "True if the age is above the given age, false otherwise" }
4103
4087
  },
4104
- "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4088
+ "isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4105
4089
  params: {
4090
+ commitments: "The commitments",
4106
4091
  minAge: "The age must be above or equal to this age",
4107
- params: "The proof verification parameters"
4092
+ serviceConfig: "The service config"
4108
4093
  },
4109
4094
  returns: {
4110
4095
  _0: "True if the age is above or equal to the given age, false otherwise"
4111
4096
  }
4112
4097
  },
4113
- "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4098
+ "isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4114
4099
  params: {
4100
+ commitments: "The commitments",
4115
4101
  maxAge: "The age must be below this age",
4116
- params: "The proof verification parameters"
4102
+ serviceConfig: "The service config"
4117
4103
  },
4118
4104
  returns: { _0: "True if the age is below the given age, false otherwise" }
4119
4105
  },
4120
- "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4106
+ "isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4121
4107
  params: {
4108
+ commitments: "The commitments",
4122
4109
  maxAge: "The age must be below or equal to this age",
4123
- params: "The proof verification parameters"
4110
+ serviceConfig: "The service config"
4124
4111
  },
4125
4112
  returns: {
4126
4113
  _0: "True if the age is below or equal to the given age, false otherwise"
4127
4114
  }
4128
4115
  },
4129
- "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4116
+ "isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4130
4117
  params: {
4118
+ commitments: "The commitments",
4131
4119
  maxAge: "The age must be less than or equal to this age",
4132
4120
  minAge: "The age must be greater than or equal to this age",
4133
- params: "The proof verification parameters"
4121
+ serviceConfig: "The service config"
4134
4122
  },
4135
4123
  returns: { _0: "True if the age is in the given range, false otherwise" }
4136
4124
  },
4137
- "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4125
+ "isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4138
4126
  params: {
4139
4127
  age: "The age must be equal to this age",
4140
- params: "The proof verification parameters"
4128
+ commitments: "The commitments",
4129
+ serviceConfig: "The service config"
4141
4130
  },
4142
4131
  returns: { _0: "True if the age is equal to the given age, false otherwise" }
4143
4132
  },
4144
- "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4133
+ "isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4145
4134
  params: {
4135
+ commitments: "The commitments",
4146
4136
  minDate: "The birthdate must be after this date",
4147
- params: "The proof verification parameters"
4137
+ serviceConfig: "The service config"
4148
4138
  },
4149
4139
  returns: { _0: "True if the birthdate is after the given date, false otherwise" }
4150
4140
  },
4151
- "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4141
+ "isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4152
4142
  params: {
4143
+ commitments: "The commitments",
4153
4144
  minDate: "The birthdate must be after or equal to this date",
4154
- params: "The proof verification parameters"
4145
+ serviceConfig: "The service config"
4155
4146
  },
4156
4147
  returns: {
4157
4148
  _0: "True if the birthdate is after or equal to the given date, false otherwise"
4158
4149
  }
4159
4150
  },
4160
- "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4151
+ "isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4161
4152
  params: {
4153
+ commitments: "The commitments",
4162
4154
  maxDate: "The birthdate must be before this date",
4163
- params: "The proof verification parameters"
4155
+ serviceConfig: "The service config"
4164
4156
  },
4165
4157
  returns: { _0: "True if the birthdate is before the given date, false otherwise" }
4166
4158
  },
4167
- "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4159
+ "isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4168
4160
  params: {
4161
+ commitments: "The commitments",
4169
4162
  maxDate: "The birthdate must be before or equal to this date",
4170
- params: "The proof verification parameters"
4163
+ serviceConfig: "The service config"
4171
4164
  },
4172
4165
  returns: {
4173
4166
  _0: "True if the birthdate is before or equal to the given date, false otherwise"
4174
4167
  }
4175
4168
  },
4176
- "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4169
+ "isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4177
4170
  params: {
4171
+ commitments: "The commitments",
4178
4172
  maxDate: "The birthdate must be before or equal to this date",
4179
4173
  minDate: "The birthdate must be after or equal to this date",
4180
- params: "The proof verification parameters"
4174
+ serviceConfig: "The service config"
4181
4175
  },
4182
4176
  returns: { _0: "True if the birthdate is between the given dates, false otherwise" }
4183
4177
  },
4184
- "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4178
+ "isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4185
4179
  params: {
4180
+ commitments: "The commitments",
4186
4181
  date: "The birthdate must be equal to this date",
4187
- params: "The proof verification parameters"
4182
+ serviceConfig: "The service config"
4188
4183
  },
4189
4184
  returns: { _0: "True if the birthdate is equal to the given date, false otherwise" }
4190
4185
  },
4191
- "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4186
+ "isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4192
4187
  params: {
4188
+ commitments: "The commitments",
4193
4189
  minDate: "The expiry date must be after this date",
4194
- params: "The proof verification parameters"
4190
+ serviceConfig: "The service config"
4195
4191
  },
4196
4192
  returns: { _0: "True if the expiry date is after the given date, false otherwise" }
4197
4193
  },
4198
- "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4194
+ "isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4199
4195
  params: {
4196
+ commitments: "The commitments",
4200
4197
  minDate: "The expiry date must be after or equal to this date",
4201
- params: "The proof verification parameters"
4198
+ serviceConfig: "The service config"
4202
4199
  },
4203
4200
  returns: {
4204
4201
  _0: "True if the expiry date is after or equal to the given date, false otherwise"
4205
4202
  }
4206
4203
  },
4207
- "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4204
+ "isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4208
4205
  params: {
4206
+ commitments: "The commitments",
4209
4207
  maxDate: "The expiry date must be before this date",
4210
- params: "The proof verification parameters"
4208
+ serviceConfig: "The service config"
4211
4209
  },
4212
4210
  returns: { _0: "True if the expiry date is before the given date, false otherwise" }
4213
4211
  },
4214
- "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4212
+ "isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4215
4213
  params: {
4214
+ commitments: "The commitments",
4216
4215
  maxDate: "The expiry date must be before or equal to this date",
4217
- params: "The proof verification parameters"
4216
+ serviceConfig: "The service config"
4218
4217
  },
4219
4218
  returns: {
4220
4219
  _0: "True if the expiry date is before or equal to the given date, false otherwise"
4221
4220
  }
4222
4221
  },
4223
- "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4222
+ "isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4224
4223
  params: {
4224
+ commitments: "The commitments",
4225
4225
  maxDate: "The expiry date must be before or equal to this date",
4226
4226
  minDate: "The expiry date must be after or equal to this date",
4227
- params: "The proof verification parameters"
4227
+ serviceConfig: "The service config"
4228
4228
  },
4229
4229
  returns: {
4230
4230
  _0: "True if the expiry date is between the given dates, false otherwise"
4231
4231
  }
4232
4232
  },
4233
- "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4233
+ "isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4234
4234
  params: {
4235
+ commitments: "The commitments",
4235
4236
  date: "The expiry date must be equal to this date",
4236
- params: "The proof verification parameters"
4237
+ serviceConfig: "The service config"
4237
4238
  },
4238
4239
  returns: {
4239
4240
  _0: "True if the expiry date is equal to the given date, false otherwise"
4240
4241
  }
4241
4242
  },
4242
- "isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4243
+ "isFaceMatchVerified(uint8,uint8,(bytes,uint256[]))": {
4243
4244
  params: {
4245
+ commitments: "The commitments",
4244
4246
  faceMatchMode: "The FaceMatch mode expected to be used in the verification",
4245
- params: "The proof verification parameters"
4247
+ os: "The operating system on which the proof should have been generated (Any (0), iOS (1), Android (2))"
4246
4248
  },
4247
4249
  returns: {
4248
4250
  _0: "True if the proof is tied to a valid FaceMatch verification, false otherwise"
4249
4251
  }
4250
4252
  },
4251
- "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4253
+ "isIssuingCountryIn(string[],(bytes,uint256[]))": {
4252
4254
  params: {
4253
- countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
4254
- params: "The proof verification parameters"
4255
+ commitments: "The commitments",
4256
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof)"
4255
4257
  },
4256
4258
  returns: {
4257
4259
  _0: "True if the issuing country is in the list of countries, false otherwise"
4258
4260
  }
4259
4261
  },
4260
- "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4262
+ "isIssuingCountryOut(string[],(bytes,uint256[]))": {
4261
4263
  params: {
4262
- 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",
4263
- params: "The proof verification parameters"
4264
+ commitments: "The commitments",
4265
+ 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"
4264
4266
  },
4265
4267
  returns: {
4266
4268
  _0: "True if the issuing country is not in the list of countries, false otherwise"
4267
4269
  }
4268
4270
  },
4269
- "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4271
+ "isNationalityIn(string[],(bytes,uint256[]))": {
4270
4272
  params: {
4271
- countryList: "The list of countries (needs to match exactly the list of countries in the proof)",
4272
- params: "The proof verification parameters"
4273
+ commitments: "The commitments",
4274
+ countryList: "The list of countries (needs to match exactly the list of countries in the proof)"
4273
4275
  },
4274
4276
  returns: {
4275
4277
  _0: "True if the nationality is in the list of countries, false otherwise"
4276
4278
  }
4277
4279
  },
4278
- "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4280
+ "isNationalityOut(string[],(bytes,uint256[]))": {
4279
4281
  params: {
4280
- 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",
4281
- params: "The proof verification parameters"
4282
+ commitments: "The commitments",
4283
+ 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"
4282
4284
  },
4283
4285
  returns: {
4284
4286
  _0: "True if the nationality is not in the list of countries, false otherwise"
4285
4287
  }
4286
4288
  },
4287
- "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4289
+ "verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))": {
4288
4290
  params: { params: "The proof verification parameters" },
4289
4291
  returns: {
4290
4292
  isValid: "True if the proof is valid, false otherwise",
@@ -4307,85 +4309,83 @@ var ZKPassportVerifier_default = {
4307
4309
  userdoc: {
4308
4310
  kind: "user",
4309
4311
  methods: {
4310
- "enforceSanctionsRoot((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4312
+ "enforceSanctionsRoot((bytes,uint256[]))": {
4311
4313
  notice: "Enforces that the proof checks against the expected sanction list(s)"
4312
4314
  },
4313
- "getBoundData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4314
- notice: "Gets the data bound to the proof"
4315
- },
4316
- "getDisclosedData((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool),bool)": {
4315
+ "getBoundData((bytes,uint256[]))": { notice: "Gets the data bound to the proof" },
4316
+ "getDisclosedData((bytes,uint256[]),bool)": {
4317
4317
  notice: "Gets the data disclosed by the proof"
4318
4318
  },
4319
- "isAgeAbove(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4319
+ "isAgeAbove(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4320
4320
  notice: "Checks if the age is above the given age"
4321
4321
  },
4322
- "isAgeAboveOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4322
+ "isAgeAboveOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4323
4323
  notice: "Checks if the age is above or equal to the given age"
4324
4324
  },
4325
- "isAgeBelow(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4325
+ "isAgeBelow(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4326
4326
  notice: "Checks if the age is below the given age"
4327
4327
  },
4328
- "isAgeBelowOrEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4328
+ "isAgeBelowOrEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4329
4329
  notice: "Checks if the age is below or equal to the given age"
4330
4330
  },
4331
- "isAgeBetween(uint8,uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4331
+ "isAgeBetween(uint8,uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4332
4332
  notice: "Checks if the age is in the given range"
4333
4333
  },
4334
- "isAgeEqual(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4334
+ "isAgeEqual(uint8,(bytes,uint256[]),(uint256,string,string,bool))": {
4335
4335
  notice: "Checks if the age is equal to the given age"
4336
4336
  },
4337
- "isBirthdateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4337
+ "isBirthdateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4338
4338
  notice: "Checks if the birthdate is after the given date"
4339
4339
  },
4340
- "isBirthdateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4340
+ "isBirthdateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4341
4341
  notice: "Checks if the birthdate is after or equal to the given date"
4342
4342
  },
4343
- "isBirthdateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4343
+ "isBirthdateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4344
4344
  notice: "Checks if the birthdate is before the given date"
4345
4345
  },
4346
- "isBirthdateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4346
+ "isBirthdateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4347
4347
  notice: "Checks if the birthdate is before or equal to the given date"
4348
4348
  },
4349
- "isBirthdateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4349
+ "isBirthdateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4350
4350
  notice: "Checks if the birthdate is between the given dates"
4351
4351
  },
4352
- "isBirthdateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4352
+ "isBirthdateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4353
4353
  notice: "Checks if the birthdate is equal to the given date"
4354
4354
  },
4355
- "isExpiryDateAfter(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4355
+ "isExpiryDateAfter(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4356
4356
  notice: "Checks if the expiry date is after the given date"
4357
4357
  },
4358
- "isExpiryDateAfterOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4358
+ "isExpiryDateAfterOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4359
4359
  notice: "Checks if the expiry date is after or equal to the given date"
4360
4360
  },
4361
- "isExpiryDateBefore(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4361
+ "isExpiryDateBefore(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4362
4362
  notice: "Checks if the expiry date is before the given date"
4363
4363
  },
4364
- "isExpiryDateBeforeOrEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4364
+ "isExpiryDateBeforeOrEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4365
4365
  notice: "Checks if the expiry date is before or equal to the given date"
4366
4366
  },
4367
- "isExpiryDateBetween(uint256,uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4367
+ "isExpiryDateBetween(uint256,uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4368
4368
  notice: "Checks if the expiry date is between the given dates"
4369
4369
  },
4370
- "isExpiryDateEqual(uint256,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4370
+ "isExpiryDateEqual(uint256,(bytes,uint256[]),(uint256,string,string,bool))": {
4371
4371
  notice: "Checks if the expiry date is equal to the given date"
4372
4372
  },
4373
- "isFaceMatchVerified(uint8,(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4373
+ "isFaceMatchVerified(uint8,uint8,(bytes,uint256[]))": {
4374
4374
  notice: "Checks if the proof is tied to a FaceMatch verification"
4375
4375
  },
4376
- "isIssuingCountryIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4376
+ "isIssuingCountryIn(string[],(bytes,uint256[]))": {
4377
4377
  notice: "Checks if the issuing country is in the list of countries"
4378
4378
  },
4379
- "isIssuingCountryOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4379
+ "isIssuingCountryOut(string[],(bytes,uint256[]))": {
4380
4380
  notice: "Checks if the issuing country is not in the list of countries"
4381
4381
  },
4382
- "isNationalityIn(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4382
+ "isNationalityIn(string[],(bytes,uint256[]))": {
4383
4383
  notice: "Checks if the nationality is in the list of countries"
4384
4384
  },
4385
- "isNationalityOut(string[],(bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4385
+ "isNationalityOut(string[],(bytes,uint256[]))": {
4386
4386
  notice: "Checks if the nationality is not in the list of countries"
4387
4387
  },
4388
- "verifyProof((bytes32,bytes,bytes32[],bytes,uint256[],uint256,string,string,bool))": {
4388
+ "verifyProof(((bytes32,bytes,bytes32[]),(bytes,uint256[]),(uint256,string,string,bool)))": {
4389
4389
  notice: "Verifies a proof from ZKPassport"
4390
4390
  },
4391
4391
  "verifyScopes(bytes32[],string,string)": {
@@ -4405,10 +4405,10 @@ var ZKPassportVerifier_default = {
4405
4405
  },
4406
4406
  sources: {
4407
4407
  "src/Constants.sol": {
4408
- keccak256: "0xedfdbd23c885320a6400c29a47cfd2e359fa67feaa7e72eb576a36ab47757126",
4408
+ keccak256: "0x6f011f7c9038b4552283dd9801d5686ad4047ad6c281cf0a8620bfec503a9060",
4409
4409
  urls: [
4410
- "bzz-raw://752ce1099ed498206732837c776e1f364cb89a18356601f92c8c23c5b176a2cb",
4411
- "dweb:/ipfs/QmdnGyvFCHvtm2FVAAYUoTRRXUC1nLWXjz3pkHpAnM9rfn"
4410
+ "bzz-raw://d4052ca894163688d25d78d297f86dd1c562cfd4e9de7253f2c1da30796a538c",
4411
+ "dweb:/ipfs/QmbMJ9gCMsqo22f6ih8Sk3MTxCwBJfPEFAMbYoBVXMydAW"
4412
4412
  ],
4413
4413
  license: "Apache-2.0"
4414
4414
  },
@@ -4429,10 +4429,10 @@ var ZKPassportVerifier_default = {
4429
4429
  license: "MIT"
4430
4430
  },
4431
4431
  "src/InputsExtractor.sol": {
4432
- keccak256: "0xfcf678bb8fead1820159845e47c2efefdca16452ab2f30b1704efc13253512eb",
4432
+ keccak256: "0xca3a90807b75bff710d97a53c65838a19a87d0bc96c3e1f7a7caa2eb831ef373",
4433
4433
  urls: [
4434
- "bzz-raw://aa83383e296a2b748c093b017e12719aeb1897ca3a677f3def76929951440111",
4435
- "dweb:/ipfs/QmYSCdnm5EuQwrF2mnpRVtTLg4uPH1uUJQxYKyJtjEwq3y"
4434
+ "bzz-raw://7e1360632f22afd864807ae616cd29c80f90142f2065a131dc996758b9388650",
4435
+ "dweb:/ipfs/QmSaRNmHoZs8pLKgfrgBhe9oMrNX82huzDXq1K5TvTwWad"
4436
4436
  ],
4437
4437
  license: "Apache-2.0"
4438
4438
  },
@@ -4445,18 +4445,18 @@ var ZKPassportVerifier_default = {
4445
4445
  license: "Apache-2.0"
4446
4446
  },
4447
4447
  "src/Types.sol": {
4448
- keccak256: "0x96820d882e9fbdfe5b8d28992a59c4df49733c39fa811282f42b6550fa0d4fe9",
4448
+ keccak256: "0x1cb492c099b71287da0349afef0c72c430e2476ad7373a0ea1456e7145207a06",
4449
4449
  urls: [
4450
- "bzz-raw://c1cc625bfa759185e433b71f5fc22eef47236f57d217354d180beef91077dcc1",
4451
- "dweb:/ipfs/QmXh6MDGjMx7AL4FjstCEtqNLHp9sCExw5CEzFpD8orYh2"
4450
+ "bzz-raw://a158753948b82917aa802c4b475a1ffb4b5f09b2a86ebcb64db11437ab297047",
4451
+ "dweb:/ipfs/QmPgGhT59MzcG4TA5PmKjzaoNMZ4VRmcLJH6w5LkWQYjxV"
4452
4452
  ],
4453
4453
  license: "Apache-2.0"
4454
4454
  },
4455
4455
  "src/ZKPassportVerifier.sol": {
4456
- keccak256: "0xcb976ea606732493b4497f5f12e2c6296f397735b1286a8bb1477e7cde195e43",
4456
+ keccak256: "0x12322e58cc69dcc634b07dca3715b81b08aeb1618bcbfcf3de9edbe120f08de9",
4457
4457
  urls: [
4458
- "bzz-raw://d186a469d3e30743ddbb719a1ecf71c9787359b2a8287e86c9ac294a17e6db38",
4459
- "dweb:/ipfs/QmSxzqPo33R3EhPzm8fF4k4ShUSp58Nr7qzBVadHWBXxMr"
4458
+ "bzz-raw://769194840e10dd878e1fcac248d386ba6cdb8e0fd96915111133c7f122265bf2",
4459
+ "dweb:/ipfs/QmR5ML1N26F8bPMZd2GgSKrGxtUfbLtpKp4dN1FbBMXDNG"
4460
4460
  ],
4461
4461
  license: "Apache-2.0"
4462
4462
  },
@@ -4484,7 +4484,7 @@ var SolidityVerifier = class {
4484
4484
  if (network === "ethereum_sepolia") {
4485
4485
  return {
4486
4486
  ...baseConfig,
4487
- address: "0xf7480fd0A9289c062C52532f11D31e0b7A30ABe3"
4487
+ address: "0xf36cdd408d28fe57Ee7060951098a84F72945705"
4488
4488
  };
4489
4489
  } else if (network === "local_anvil") {
4490
4490
  return {
@@ -4561,13 +4561,13 @@ var SolidityVerifier = class {
4561
4561
  } else if (circuitName === "exclusion_check_sanctions_evm") {
4562
4562
  const value = proof.committedInputs[circuitName];
4563
4563
  compressedCommittedInputs2 = import_utils2.ProofType.SANCTIONS_EXCLUSION.toString(16).padStart(2, "0") + Array.from((0, import_utils2.numberToBytesBE)(BigInt(value.rootHash), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
4564
- } else if (circuitName === "facematch_evm") {
4564
+ } else if (circuitName.startsWith("facematch") && circuitName.endsWith("_evm")) {
4565
4565
  const value = proof.committedInputs[circuitName];
4566
4566
  compressedCommittedInputs2 += import_utils2.ProofType.FACEMATCH.toString(16).padStart(2, "0");
4567
4567
  compressedCommittedInputs2 += Array.from((0, import_utils2.numberToBytesBE)(BigInt(value.rootKeyLeaf), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
4568
4568
  compressedCommittedInputs2 += value.environment === "development" ? "00" : "01";
4569
4569
  compressedCommittedInputs2 += Array.from((0, import_utils2.numberToBytesBE)(BigInt(value.appId), 32)).map((x) => x.toString(16).padStart(2, "0")).join("");
4570
- compressedCommittedInputs2 += "01";
4570
+ compressedCommittedInputs2 += value.mode === "regular" ? "01" : "02";
4571
4571
  } else {
4572
4572
  throw new Error(`Unsupported circuit for EVM verification: ${circuitName}`);
4573
4573
  }
@@ -4603,16 +4603,22 @@ var SolidityVerifier = class {
4603
4603
  }
4604
4604
  }
4605
4605
  const params = {
4606
- // Make sure the vkeyHash is 32 bytes
4607
- vkeyHash: `0x${proof.vkeyHash.replace("0x", "").padStart(64, "0")}`,
4608
- proof: `0x${proofData.proof.join("")}`,
4609
- publicInputs: proofData.publicInputs,
4610
- committedInputs: `0x${compressedCommittedInputs}`,
4611
- committedInputCounts: committedInputCountsArray,
4612
- validityPeriodInSeconds,
4613
- domain,
4614
- scope: scope ?? "",
4615
- devMode
4606
+ proofVerificationData: {
4607
+ // Make sure the vkeyHash is 32 bytes
4608
+ vkeyHash: `0x${proof.vkeyHash.replace("0x", "").padStart(64, "0")}`,
4609
+ proof: `0x${proofData.proof.join("")}`,
4610
+ publicInputs: proofData.publicInputs
4611
+ },
4612
+ commitments: {
4613
+ committedInputs: `0x${compressedCommittedInputs}`,
4614
+ committedInputCounts: committedInputCountsArray
4615
+ },
4616
+ serviceConfig: {
4617
+ validityPeriodInSeconds,
4618
+ domain,
4619
+ scope: scope ?? "",
4620
+ devMode
4621
+ }
4616
4622
  };
4617
4623
  return params;
4618
4624
  }