signify-ts 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/README.md +101 -5
  2. package/dist/buffer-polyfill.d.ts +1 -0
  3. package/dist/exports.d.ts +40 -0
  4. package/dist/index.d.ts +4 -1
  5. package/dist/keri/app/aiding.d.ts +138 -0
  6. package/dist/keri/app/clienting.d.ts +182 -0
  7. package/dist/keri/app/contacting.d.ts +93 -0
  8. package/dist/keri/app/controller.d.ts +49 -0
  9. package/dist/keri/app/coring.d.ts +121 -0
  10. package/dist/keri/app/credentialing.d.ts +239 -0
  11. package/dist/keri/app/escrowing.d.ts +19 -0
  12. package/dist/keri/app/exchanging.d.ts +60 -0
  13. package/dist/keri/app/grouping.d.ts +44 -0
  14. package/dist/keri/app/habery.d.ts +48 -0
  15. package/dist/keri/app/notifying.d.ts +34 -0
  16. package/dist/keri/core/authing.d.ts +10 -0
  17. package/dist/keri/core/bexter.d.ts +7 -0
  18. package/dist/keri/core/cigar.d.ts +8 -8
  19. package/dist/keri/core/cipher.d.ts +5 -5
  20. package/dist/keri/core/core.d.ts +59 -68
  21. package/dist/keri/core/counter.d.ts +43 -0
  22. package/dist/keri/core/decrypter.d.ts +10 -10
  23. package/dist/keri/core/diger.d.ts +21 -21
  24. package/dist/keri/core/encrypter.d.ts +9 -9
  25. package/dist/keri/core/eventing.d.ts +54 -0
  26. package/dist/keri/core/httping.d.ts +44 -0
  27. package/dist/keri/core/indexer.d.ts +98 -88
  28. package/dist/keri/core/keeping.d.ts +103 -1
  29. package/dist/keri/core/kering.d.ts +5 -5
  30. package/dist/keri/core/manager.d.ts +174 -151
  31. package/dist/keri/core/matter.d.ts +116 -47
  32. package/dist/keri/core/number.d.ts +7 -0
  33. package/dist/keri/core/pather.d.ts +7 -0
  34. package/dist/keri/core/prefixer.d.ts +15 -0
  35. package/dist/keri/core/saider.d.ts +23 -0
  36. package/dist/keri/core/salter.d.ts +23 -0
  37. package/dist/keri/core/seqner.d.ts +15 -0
  38. package/dist/keri/core/serder.d.ts +31 -0
  39. package/dist/keri/core/siger.d.ts +18 -18
  40. package/dist/keri/core/signer.d.ts +34 -34
  41. package/dist/keri/core/tholder.d.ts +29 -0
  42. package/dist/keri/core/utils.d.ts +20 -14
  43. package/dist/keri/core/vdring.d.ts +16 -0
  44. package/dist/keri/core/verfer.d.ts +13 -0
  45. package/dist/keri/end/ending.d.ts +13 -0
  46. package/dist/math.d.ts +1 -0
  47. package/dist/ready.d.ts +1 -0
  48. package/dist/signify-ts.cjs +7835 -0
  49. package/dist/signify-ts.cjs.development.js +9493 -5
  50. package/dist/signify-ts.cjs.development.js.map +1 -1
  51. package/dist/signify-ts.cjs.map +7 -0
  52. package/dist/signify-ts.cjs.production.min.js +1 -1
  53. package/dist/signify-ts.cjs.production.min.js.map +1 -1
  54. package/dist/signify-ts.esm.js +9341 -5
  55. package/dist/signify-ts.esm.js.map +1 -1
  56. package/dist/signify-ts.mjs +7811 -0
  57. package/dist/signify-ts.mjs.map +7 -0
  58. package/package.json +51 -49
  59. package/src/buffer-polyfill.ts +5 -0
  60. package/src/exports.ts +44 -0
  61. package/src/index.ts +4 -6
  62. package/src/keri/app/aiding.ts +493 -0
  63. package/src/keri/app/clienting.ts +492 -0
  64. package/src/keri/app/contacting.ts +188 -0
  65. package/src/keri/app/controller.ts +372 -0
  66. package/src/keri/app/coring.ts +225 -0
  67. package/src/keri/app/credentialing.ts +820 -0
  68. package/src/keri/app/escrowing.ts +34 -0
  69. package/src/keri/app/exchanging.ts +220 -0
  70. package/src/keri/app/grouping.ts +90 -0
  71. package/src/keri/app/habery.ts +185 -0
  72. package/src/keri/app/notifying.ts +69 -0
  73. package/src/keri/core/authing.ts +117 -0
  74. package/src/keri/core/bexter.ts +138 -0
  75. package/src/keri/core/cigar.ts +11 -12
  76. package/src/keri/core/cipher.ts +23 -14
  77. package/src/keri/core/core.ts +249 -97
  78. package/src/keri/core/counter.ts +273 -0
  79. package/src/keri/core/decrypter.ts +48 -34
  80. package/src/keri/core/diger.ts +25 -24
  81. package/src/keri/core/encrypter.ts +37 -27
  82. package/src/keri/core/eventing.ts +581 -0
  83. package/src/keri/core/httping.ts +209 -0
  84. package/src/keri/core/indexer.ts +314 -211
  85. package/src/keri/core/keeping.ts +679 -4
  86. package/src/keri/core/kering.ts +4 -6
  87. package/src/keri/core/manager.ts +759 -450
  88. package/src/keri/core/matter.ts +404 -135
  89. package/src/keri/core/number.ts +66 -0
  90. package/src/keri/core/pather.ts +98 -0
  91. package/src/keri/core/prefixer.ts +233 -0
  92. package/src/keri/core/saider.ts +186 -0
  93. package/src/keri/core/salter.ts +76 -41
  94. package/src/keri/core/seqner.ts +46 -0
  95. package/src/keri/core/serder.ts +163 -0
  96. package/src/keri/core/siger.ts +19 -18
  97. package/src/keri/core/signer.ts +74 -53
  98. package/src/keri/core/tholder.ts +218 -0
  99. package/src/keri/core/utils.ts +120 -45
  100. package/src/keri/core/vdring.ts +94 -0
  101. package/src/keri/core/verfer.ts +25 -11
  102. package/src/keri/end/ending.ts +170 -0
  103. package/src/math.ts +3 -0
  104. package/src/ready.ts +5 -0
  105. package/src/keri/core/tsconfig.json +0 -100
@@ -1 +1 @@
1
- {"version":3,"file":"signify-ts.cjs.development.js","sources":["../src/index.ts"],"sourcesContent":["export const sum = (a: number, b: number) => {\n if ('development' === process.env.NODE_ENV) {\n console.log('boop');\n }\n return a + b;\n};\n"],"names":["sum","a","b","console","log"],"mappings":";;;;IAAaA,GAAG,GAAG,SAANA,GAAG,CAAIC,CAAS,EAAEC,CAAS;EACM;IAC1CC,OAAO,CAACC,GAAG,CAAC,MAAM,CAAC;;EAErB,OAAOH,CAAC,GAAGC,CAAC;AACd;;;;"}
1
+ {"version":3,"file":"signify-ts.cjs.development.js","sources":["../src/keri/core/kering.ts","../src/keri/core/core.ts","../src/keri/core/matter.ts","../src/keri/core/verfer.ts","../src/keri/core/cigar.ts","../src/keri/core/indexer.ts","../src/keri/core/siger.ts","../src/keri/core/signer.ts","../src/keri/core/salter.ts","../src/keri/core/decrypter.ts","../src/keri/core/cipher.ts","../src/keri/core/utils.ts","../src/keri/core/encrypter.ts","../src/keri/core/diger.ts","../src/keri/core/manager.ts","../src/keri/core/number.ts","../src/keri/core/tholder.ts","../src/keri/core/serder.ts","../src/keri/core/prefixer.ts","../src/keri/core/saider.ts","../src/keri/core/counter.ts","../src/keri/core/seqner.ts","../src/keri/core/eventing.ts","../src/keri/app/habery.ts","../src/keri/app/controller.ts","../src/keri/core/httping.ts","../src/keri/app/aiding.ts","../src/keri/end/ending.ts","../src/keri/core/authing.ts","../src/keri/core/keeping.ts","../src/keri/app/contacting.ts","../src/keri/app/coring.ts","../src/keri/core/vdring.ts","../src/keri/app/credentialing.ts","../src/keri/app/notifying.ts","../src/keri/app/escrowing.ts","../src/keri/app/grouping.ts","../src/keri/core/bexter.ts","../src/keri/core/pather.ts","../src/keri/app/exchanging.ts","../src/keri/app/clienting.ts","../src/index.ts"],"sourcesContent":["export class EmptyMaterialError {\n private readonly _err: Error;\n constructor(err: string) {\n this._err = new Error(err);\n }\n\n get err() {\n return this._err;\n }\n}\n","// import {TextEncoder, TextDecoder} from 'util'\nimport { TextEncoder, TextDecoder } from 'text-encoding';\nexport enum Serials {\n JSON = 'JSON',\n}\n\nexport enum Ident {\n KERI = 'KERI',\n ACDC = 'ACDC',\n}\n\nexport class Version {\n public major: number;\n public minor: number;\n\n constructor(major: number = 1, minor: number = 0) {\n this.major = major;\n this.minor = minor;\n }\n}\n\nexport const Versionage = new Version();\n\nexport const Ilks = {\n icp: 'icp',\n rot: 'rot',\n ixn: 'ixn',\n dip: 'dip',\n drt: 'drt',\n rct: 'rct',\n vrc: 'vrc',\n rpy: 'rpy',\n exn: 'exn',\n vcp: 'vcp',\n iss: 'iss',\n rev: 'rev',\n};\n\nexport const IcpLabels = [\n 'v',\n 'i',\n 's',\n 't',\n 'kt',\n 'k',\n 'n',\n 'bt',\n 'b',\n 'c',\n 'a',\n];\n\nexport const DipLabels = [\n 'v',\n 'i',\n 's',\n 't',\n 'kt',\n 'k',\n 'n',\n 'bt',\n 'b',\n 'c',\n 'a',\n 'di',\n];\n\nexport const RotLabels = [\n 'v',\n 'i',\n 's',\n 't',\n 'p',\n 'kt',\n 'k',\n 'n',\n 'bt',\n 'br',\n 'ba',\n 'a',\n];\nexport const DrtLabels = [\n 'v',\n 'i',\n 's',\n 't',\n 'p',\n 'kt',\n 'k',\n 'n',\n 'bt',\n 'br',\n 'ba',\n 'a',\n];\nexport const IxnLabels = ['v', 'i', 's', 't', 'p', 'a'];\n\nexport const KsnLabels = [\n 'v',\n 'i',\n 's',\n 't',\n 'p',\n 'd',\n 'f',\n 'dt',\n 'et',\n 'kt',\n 'k',\n 'n',\n 'bt',\n 'b',\n 'c',\n 'ee',\n 'di',\n 'r',\n];\n\nexport const RpyLabels = ['v', 't', 'd', 'dt', 'r', 'a'];\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\n\nexport const VERFULLSIZE = 17;\nexport const MINSNIFFSIZE = 12 + VERFULLSIZE;\nexport const MINSIGSIZE = 4;\n\n// const version_pattern = 'KERI(?P<major>[0-9a-f])(?P<minor>[0-9a-f])\n// (?P<kind>[A-Z]{4})(?P<size>[0-9a-f]{6})'\n// const version_pattern1 = `KERI\\(\\?P<major>\\[0\\-9a\\-f\\]\\)\\(\\?P<minor>\\[0\\-9a\\-f\\]\\)\\\n// (\\?P<kind>\\[A\\-Z\\]\\{4\\}\\)\\(\\?P<size>\\[0\\-9a\\-f\\]\\{6\\}\\)_`\n\nexport const VEREX = '(KERI|ACDC)([0-9a-f])([0-9a-f])([A-Z]{4})([0-9a-f]{6})_';\n\nexport interface Dict<TValue> {\n [id: string]: TValue;\n}\n\n// Regex pattern matching\n\n/**\n * @description This function is use to deversify the version\n * Here we will use regex to to validate and extract serialization kind,size and version\n * @param {string} versionString version string\n * @return {Object} contaning prototol (KERI or ACDC), kind of serialization like cbor,json,mgpk\n * version = version of object ,size = raw size integer\n */\nexport function deversify(\n versionString: string\n): [Ident, Serials, Version, string] {\n let kind;\n let size;\n let proto;\n const version = Versionage;\n\n // we need to identify how to match the buffers pattern ,like we do regex matching for strings\n const re = new RegExp(VEREX);\n\n const match = re.exec(versionString);\n\n if (match) {\n [proto, version.major, version.minor, kind, size] = [\n match[1],\n +match[2],\n +match[3],\n match[4],\n match[5],\n ];\n if (!Object.values(Serials).includes(kind as Serials)) {\n throw new Error(`Invalid serialization kind = ${kind}`);\n }\n if (!Object.values(Ident).includes(proto as Ident)) {\n throw new Error(`Invalid serialization kind = ${kind}`);\n }\n\n let ta = kind as keyof typeof Serials;\n kind = Serials[ta];\n let pa = proto as keyof typeof Ident;\n proto = Ident[pa];\n\n return [proto, kind, version, size];\n }\n throw new Error(`Invalid version string = ${versionString}`);\n}\n\nexport function versify(\n ident: Ident = Ident.KERI,\n version?: Version,\n kind: Serials = Serials.JSON,\n size: number = 0\n) {\n version = version == undefined ? Versionage : version;\n\n return `${ident}${version.major.toString(\n 16\n )}${version.minor.toString()}${kind}${size.toString(16).padStart(6, '0')}_`;\n}\n\nexport const B64ChrByIdx = new Map<number, string>([\n [0, 'A'],\n [1, 'B'],\n [2, 'C'],\n [3, 'D'],\n [4, 'E'],\n [5, 'F'],\n [6, 'G'],\n [7, 'H'],\n [8, 'I'],\n [9, 'J'],\n [10, 'K'],\n [11, 'L'],\n [12, 'M'],\n [13, 'N'],\n [14, 'O'],\n [15, 'P'],\n [16, 'Q'],\n [17, 'R'],\n [18, 'S'],\n [19, 'T'],\n [20, 'U'],\n [21, 'V'],\n [22, 'W'],\n [23, 'X'],\n [24, 'Y'],\n [25, 'Z'],\n [26, 'a'],\n [27, 'b'],\n [28, 'c'],\n [29, 'd'],\n [30, 'e'],\n [31, 'f'],\n [32, 'g'],\n [33, 'h'],\n [34, 'i'],\n [35, 'j'],\n [36, 'k'],\n [37, 'l'],\n [38, 'm'],\n [39, 'n'],\n [40, 'o'],\n [41, 'p'],\n [42, 'q'],\n [43, 'r'],\n [44, 's'],\n [45, 't'],\n [46, 'u'],\n [47, 'v'],\n [48, 'w'],\n [49, 'x'],\n [50, 'y'],\n [51, 'z'],\n [52, '0'],\n [53, '1'],\n [54, '2'],\n [55, '3'],\n [56, '4'],\n [57, '5'],\n [58, '6'],\n [59, '7'],\n [60, '8'],\n [61, '9'],\n [62, '-'],\n [63, '_'],\n]);\n\nexport const B64IdxByChr = new Map<string, number>(\n Array.from(B64ChrByIdx, (entry) => [entry[1], entry[0]])\n);\n\nexport function intToB64(i: number, l = 1): string {\n let out = '';\n while (l != 0) {\n out = B64ChrByIdx.get(i % 64) + out;\n i = Math.floor(i / 64);\n if (i == 0) {\n break;\n }\n }\n\n let x = l - out.length;\n for (let i = 0; i < x; i++) {\n out = 'A' + out;\n }\n\n return out;\n}\n\nexport function intToB64b(n: number, l: number = 1): Uint8Array {\n let s = intToB64(n, l);\n return b(s);\n}\n\nexport function b64ToInt(s: string): number {\n if (s.length == 0) {\n throw new Error('Empty string, conversion undefined.');\n }\n\n let i = 0;\n let rev = s.split('').reverse();\n rev.forEach((c: string, e: number) => {\n i |= B64IdxByChr.get(c)! << (e * 6);\n });\n\n return i;\n}\n\nexport function b(s?: string): Uint8Array {\n return encoder.encode(s);\n}\n\nexport function d(u?: Uint8Array): string {\n return decoder.decode(u);\n}\n\nexport function concat(one: Uint8Array, two: Uint8Array): Uint8Array {\n let out = new Uint8Array(one.length + two.length);\n out.set(one);\n out.set(two, one.length);\n return out;\n}\n\nexport function readInt(array: Uint8Array) {\n let value = 0;\n for (let i = 0; i < array.length; i++) {\n value = value * 256 + array[i];\n }\n return value;\n}\n","import { EmptyMaterialError } from './kering';\n\nimport { intToB64, readInt } from './core';\nimport Base64 from 'urlsafe-base64';\nimport { b, d } from './core';\nimport { Buffer } from 'buffer';\n\nexport class Codex {\n has(prop: string): boolean {\n let m = new Map(Array.from(Object.entries(this), (v) => [v[1], v[0]]));\n return m.has(prop);\n }\n}\n\nexport class MatterCodex extends Codex {\n Ed25519_Seed: string = 'A'; // Ed25519 256 bit random seed for private key\n Ed25519N: string = 'B'; // Ed25519 verification key non-transferable, basic derivation.\n X25519: string = 'C'; // X25519 public encryption key, converted from Ed25519 or Ed25519N.\n Ed25519: string = 'D'; // Ed25519 verification key basic derivation\n Blake3_256: string = 'E'; // Blake3 256 bit digest self-addressing derivation.\n SHA3_256: string = 'H'; // SHA3 256 bit digest self-addressing derivation.\n SHA2_256: string = 'I'; // SHA2 256 bit digest self-addressing derivation.\n ECDSA_256k1_Seed: string = 'J'; // ECDSA secp256k1 256 bit random Seed for private key\n X25519_Private: string = 'O'; // X25519 private decryption key converted from Ed25519\n X25519_Cipher_Seed: string = 'P'; // X25519 124 char b64 Cipher of 44 char qb64 Seed\n ECDSA_256r1_Seed: string = 'Q'; // ECDSA secp256r1 256 bit random Seed for private key\n Salt_128: string = '0A'; // 128 bit random salt or 128 bit number (see Huge)\n Ed25519_Sig: string = '0B'; // Ed25519 signature.\n ECDSA_256k1_Sig: string = '0C'; // ECDSA secp256k1 signature.\n ECDSA_256r1_Sig: string = '0I'; // ECDSA secp256r1 signature.\n StrB64_L0: string = '4A'; // String Base64 Only Lead Size 0\n StrB64_L1: string = '5A'; // String Base64 Only Lead Size 1\n StrB64_L2: string = '6A'; // String Base64 Only Lead Size 2\n ECDSA_256k1N: string = '1AAA'; // ECDSA secp256k1 verification key non-transferable, basic derivation.\n ECDSA_256k1: string = '1AAB'; // ECDSA public verification or encryption key, basic derivation\n X25519_Cipher_Salt: string = '1AAH'; // X25519 100 char b64 Cipher of 24 char qb64 Salt\n ECDSA_256r1N: string = '1AAI'; // ECDSA secp256r1 verification key non-transferable, basic derivation.\n ECDSA_256r1: string = '1AAJ'; // ECDSA secp256r1 verification or encryption key, basic derivation\n StrB64_Big_L0: string = '7AAA'; // String Base64 Only Big Lead Size 0\n StrB64_Big_L1: string = '8AAA'; // String Base64 Only Big Lead Size 1\n StrB64_Big_L2: string = '9AAA'; // String Base64 Only Big Lead Size 2\n}\n\nexport const MtrDex = new MatterCodex();\n\nexport class NonTransCodex extends Codex {\n Ed25519N: string = 'B'; // Ed25519 verification key non-transferable, basic derivation.\n ECDSA_256k1N: string = '1AAA'; // ECDSA secp256k1 verification key non-transferable, basic derivation.\n Ed448N: string = '1AAC'; // Ed448 non-transferable prefix public signing verification key. Basic derivation.\n ECDSA_256r1N: string = '1AAI'; // ECDSA secp256r1 verification key non-transferable, basic derivation.\n}\n\nexport const NonTransDex = new NonTransCodex();\n\nexport class DigiCodex extends Codex {\n Blake3_256: string = 'E'; // Blake3 256 bit digest self-addressing derivation.\n Blake2b_256: string = 'F'; // Blake2b 256 bit digest self-addressing derivation.\n Blake2s_256: string = 'G'; // Blake2s 256 bit digest self-addressing derivation.\n SHA3_256: string = 'H'; // SHA3 256 bit digest self-addressing derivation.\n SHA2_256: string = 'I'; // SHA2 256 bit digest self-addressing derivation.\n Blake3_512: string = '0D'; // Blake3 512 bit digest self-addressing derivation.\n Blake2b_512: string = '0E'; // Blake2b 512 bit digest self-addressing derivation.\n SHA3_512: string = '0F'; // SHA3 512 bit digest self-addressing derivation.\n SHA2_512: string = '0G'; // SHA2 512 bit digest self-addressing derivation.\n}\n\nexport const DigiDex = new DigiCodex();\n\nexport class NumCodex extends Codex {\n Short: string = 'M'; // Short 2 byte b2 number\n Long: string = '0H'; // Long 4 byte b2 number\n Big: string = 'N'; // Big 8 byte b2 number\n Huge: string = '0A'; // Huge 16 byte b2 number (same as Salt_128)\n}\n\nexport const NumDex = new NumCodex();\n\nexport class BexCodex extends Codex {\n StrB64_L0: string = '4A'; // String Base64 Only Leader Size 0\n StrB64_L1: string = '5A'; // String Base64 Only Leader Size 1\n StrB64_L2: string = '6A'; // String Base64 Only Leader Size 2\n StrB64_Big_L0: string = '7AAA'; // String Base64 Only Big Leader Size 0\n StrB64_Big_L1: string = '8AAA'; // String Base64 Only Big Leader Size 1\n StrB64_Big_L2: string = '9AAA'; // String Base64 Only Big Leader Size 2\n}\n\nexport const BexDex = new BexCodex();\n\nclass SmallVarRawSizeCodex extends Codex {\n Lead0: string = '4'; // First Selector Character for all ls == 0 codes\n Lead1: string = '5'; // First Selector Character for all ls == 1 codes\n Lead2: string = '6'; // First Selector Character for all ls == 2 codes\n}\n\nexport const SmallVrzDex = new SmallVarRawSizeCodex();\n\nclass LargeVarRawSizeCodex extends Codex {\n Lead0_Big: string = '7'; // First Selector Character for all ls == 0 codes\n Lead1_Big: string = '8'; // First Selector Character for all ls == 1 codes\n Lead2_Big: string = '9'; // First Selector Character for all ls == 2 codes\n}\n\nexport const LargeVrzDex = new LargeVarRawSizeCodex();\n\nexport class Sizage {\n public hs: number;\n public ss: number;\n public ls?: number;\n public fs?: number;\n\n constructor(hs: number, ss: number, fs?: number, ls?: number) {\n this.hs = hs;\n this.ss = ss;\n this.fs = fs;\n this.ls = ls!;\n }\n}\n\nexport interface MatterArgs {\n raw?: Uint8Array | undefined;\n code?: string;\n qb64b?: Uint8Array | undefined;\n qb64?: string;\n qb2?: Uint8Array | undefined;\n rize?: number;\n}\n\nexport class Matter {\n static Sizes = new Map(\n Object.entries({\n A: new Sizage(1, 0, 44, 0),\n B: new Sizage(1, 0, 44, 0),\n C: new Sizage(1, 0, 44, 0),\n D: new Sizage(1, 0, 44, 0),\n E: new Sizage(1, 0, 44, 0),\n F: new Sizage(1, 0, 44, 0),\n G: new Sizage(1, 0, 44, 0),\n H: new Sizage(1, 0, 44, 0),\n I: new Sizage(1, 0, 44, 0),\n J: new Sizage(1, 0, 44, 0),\n K: new Sizage(1, 0, 76, 0),\n L: new Sizage(1, 0, 76, 0),\n M: new Sizage(1, 0, 4, 0),\n N: new Sizage(1, 0, 12, 0),\n O: new Sizage(1, 0, 44, 0),\n P: new Sizage(1, 0, 124, 0),\n Q: new Sizage(1, 0, 44, 0),\n '0A': new Sizage(2, 0, 24, 0),\n '0B': new Sizage(2, 0, 88, 0),\n '0C': new Sizage(2, 0, 88, 0),\n '0D': new Sizage(2, 0, 88, 0),\n '0E': new Sizage(2, 0, 88, 0),\n '0F': new Sizage(2, 0, 88, 0),\n '0G': new Sizage(2, 0, 88, 0),\n '0H': new Sizage(2, 0, 8, 0),\n '0I': new Sizage(2, 0, 88, 0),\n '1AAA': new Sizage(4, 0, 48, 0),\n '1AAB': new Sizage(4, 0, 48, 0),\n '1AAC': new Sizage(4, 0, 80, 0),\n '1AAD': new Sizage(4, 0, 80, 0),\n '1AAE': new Sizage(4, 0, 56, 0),\n '1AAF': new Sizage(4, 0, 8, 0),\n '1AAG': new Sizage(4, 0, 36, 0),\n '1AAH': new Sizage(4, 0, 100, 0),\n '1AAI': new Sizage(4, 0, 48, 0),\n '1AAJ': new Sizage(4, 0, 48, 0),\n '2AAA': new Sizage(4, 0, 8, 1),\n '3AAA': new Sizage(4, 0, 8, 2),\n '4A': new Sizage(2, 2, undefined, 0),\n '5A': new Sizage(2, 2, undefined, 1),\n '6A': new Sizage(2, 2, undefined, 2),\n '7AAA': new Sizage(4, 4, undefined, 0),\n '8AAA': new Sizage(4, 4, undefined, 1),\n '9AAA': new Sizage(4, 4, undefined, 2),\n '4B': new Sizage(2, 2, undefined, 0),\n '5B': new Sizage(2, 2, undefined, 1),\n '6B': new Sizage(2, 2, undefined, 2),\n '7AAB': new Sizage(4, 4, undefined, 0),\n '8AAB': new Sizage(4, 4, undefined, 1),\n '9AAB': new Sizage(4, 4, undefined, 2),\n })\n );\n\n static Hards = new Map<string, number>([\n ['A', 1],\n ['B', 1],\n ['C', 1],\n ['D', 1],\n ['E', 1],\n ['F', 1],\n ['G', 1],\n ['H', 1],\n ['I', 1],\n ['J', 1],\n ['K', 1],\n ['L', 1],\n ['M', 1],\n ['N', 1],\n ['O', 1],\n ['P', 1],\n ['Q', 1],\n ['R', 1],\n ['S', 1],\n ['T', 1],\n ['U', 1],\n ['V', 1],\n ['W', 1],\n ['X', 1],\n ['Y', 1],\n ['Z', 1],\n ['a', 1],\n ['b', 1],\n ['c', 1],\n ['d', 1],\n ['e', 1],\n ['f', 1],\n ['g', 1],\n ['h', 1],\n ['i', 1],\n ['j', 1],\n ['k', 1],\n ['l', 1],\n ['m', 1],\n ['n', 1],\n ['o', 1],\n ['p', 1],\n ['q', 1],\n ['r', 1],\n ['s', 1],\n ['t', 1],\n ['u', 1],\n ['v', 1],\n ['w', 1],\n ['x', 1],\n ['y', 1],\n ['z', 1],\n ['0', 2],\n ['1', 4],\n ['2', 4],\n ['3', 4],\n ['4', 2],\n ['5', 2],\n ['6', 2],\n ['7', 4],\n ['8', 4],\n ['9', 4],\n ]);\n\n private _code: string = '';\n private _size: number = -1;\n private _raw: Uint8Array = new Uint8Array(0);\n\n constructor({\n raw,\n code = MtrDex.Ed25519N,\n qb64b,\n qb64,\n qb2,\n rize,\n }: MatterArgs) {\n let size = -1;\n if (raw != undefined) {\n if (code.length == 0) {\n throw new Error(\n 'Improper initialization need either (raw and code) or qb64b or qb64 or qb2.'\n );\n }\n\n if (SmallVrzDex.has(code[0]) || LargeVrzDex.has(code[0])) {\n if (rize !== undefined) {\n if (rize < 0)\n throw new Error(\n `missing var raw size for code=${code}`\n );\n } else {\n rize = raw.length;\n }\n\n let ls = (3 - (rize % 3)) % 3; // calc actual lead (pad) size\n size = Math.floor((rize + ls) / 3); // calculate value of size in triplets\n if (SmallVrzDex.has(code[0])) {\n if (size <= 64 ** 2 - 1) {\n let hs = 2;\n let s = Object.values(SmallVrzDex)[ls];\n code = `${s}${code.substring(1, hs)}`;\n } else if (size <= 64 ** 4 - 1) {\n let hs = 4;\n let s = Object.values(LargeVrzDex)[ls];\n code = `${s}${'AAAA'.substring(0, hs - 2)}${code[1]}`;\n } else {\n throw new Error(\n `Unsupported raw size for code=${code}`\n );\n }\n } else {\n if (size <= 64 ** 4 - 1) {\n let hs = 4;\n let s = Object.values(LargeVrzDex)[ls];\n code = `${s}${code.substring(1, hs)}`;\n } else {\n throw new Error(\n `Unsupported raw size for code=${code}`\n );\n }\n }\n } else {\n let sizage = Matter.Sizes.get(code);\n if (sizage!.fs == -1) {\n // invalid\n throw new Error(`Unsupported variable size code=${code}`);\n }\n\n rize = Matter._rawSize(code);\n }\n raw = raw.slice(0, rize); // copy only exact size from raw stream\n if (raw.length != rize) {\n // forbids shorter\n throw new Error(\n `Not enougth raw bytes for code=${code} expected ${rize} got ${raw.length}.`\n );\n }\n\n this._code = code; // hard value part of code\n this._size = size; // soft value part of code in int\n this._raw = raw; // crypto ops require bytes not bytearray\n } else if (qb64 !== undefined) {\n this._exfil(qb64);\n } else if (qb64b !== undefined) {\n let qb64 = d(qb64b);\n this._exfil(qb64);\n } else if (qb2 !== undefined) {\n this._bexfil(qb2);\n } else {\n throw new EmptyMaterialError('EmptyMaterialError');\n }\n }\n\n get code(): string {\n return this._code;\n }\n\n get size() {\n return this._size;\n }\n\n get raw(): Uint8Array {\n return this._raw;\n }\n\n get qb64() {\n return this._infil();\n }\n\n get qb64b() {\n return b(this.qb64);\n }\n\n get transferable(): boolean {\n return !NonTransDex.has(this.code);\n }\n\n get digestive(): boolean {\n return DigiDex.has(this.code);\n }\n\n static _rawSize(code: string) {\n let sizage = this.Sizes.get(code); // get sizes\n let cs = sizage!.hs + sizage!.ss; // both hard + soft code size\n if (sizage!.fs === -1) {\n throw Error(`Non-fixed raw size code ${code}.`);\n }\n\n return Math.floor(((sizage!.fs! - cs) * 3) / 4) - sizage!.ls!;\n }\n\n static _leadSize(code: string) {\n let sizage = this.Sizes.get(code);\n return sizage!.ls;\n }\n\n get both() {\n let sizage = Matter.Sizes.get(this.code);\n return `${this.code}${intToB64(this.size, sizage!.ss)}`;\n }\n\n private _infil() {\n let code = this.code;\n let size = this.size;\n let raw = this.raw;\n\n let ps = (3 - (raw.length % 3)) % 3; // pad size chars or lead size bytes\n let sizage = Matter.Sizes.get(code);\n\n if (sizage!.fs === undefined) {\n // Variable size code, NOT SUPPORTED\n let cs = sizage!.hs + sizage!.ss;\n if (cs % 4) {\n throw new Error(\n `Whole code size not multiple of 4 for variable length material. cs=${cs}`\n );\n }\n if (size < 0 || size > 64 ** sizage!.ss - 1) {\n throw new Error(`Invalid size=${size} for code=${code}.`);\n }\n\n let both = `${code}${intToB64(size, sizage!.ss)}`;\n if (both.length % 4 !== ps - sizage!.ls!) {\n throw new Error(\n `Invalid code=${both} for converted raw pad size=${ps}.`\n );\n }\n\n let bytes = new Uint8Array(sizage!.ls! + raw.length);\n for (let i = 0; i < sizage!.ls!; i++) {\n bytes[i] = 0;\n }\n for (let i = 0; i < raw.length; i++) {\n let odx = i + ps;\n bytes[odx] = raw[i];\n }\n\n return both + Base64.encode(Buffer.from(bytes));\n } else {\n let both = code;\n let cs = both.length;\n if (cs % 4 != ps - sizage!.ls!) {\n // adjusted pad given lead bytes\n throw new Error(\n `Invalid code=${both} for converted raw pad size=${ps}, ${raw.length}.`\n );\n }\n // prepad, convert, and replace upfront\n // when fixed and ls != 0 then cs % 4 is zero and ps==ls\n // otherwise fixed and ls == 0 then cs % 4 == ps\n let bytes = new Uint8Array(ps + raw.length);\n for (let i = 0; i < ps; i++) {\n bytes[i] = 0;\n }\n for (let i = 0; i < raw.length; i++) {\n let odx = i + ps;\n bytes[odx] = raw[i];\n }\n\n return both + Base64.encode(Buffer.from(bytes)).slice(cs % 4);\n }\n }\n\n private _exfil(qb64: string) {\n if (qb64.length == 0) {\n throw new Error('Empty Material');\n }\n\n let first = qb64[0];\n if (!Array.from(Matter.Hards.keys()).includes(first)) {\n throw new Error(`Unexpected code ${first}`);\n }\n\n let hs = Matter.Hards.get(first);\n if (qb64.length < hs!) {\n throw new Error(`Shortage Error`);\n }\n\n let hard = qb64.slice(0, hs);\n if (!Array.from(Matter.Sizes.keys()).includes(hard)) {\n throw new Error(`Unsupported code ${hard}`);\n }\n\n let sizage = Matter.Sizes.get(hard);\n let cs = sizage!.hs + sizage!.ss;\n let size = -1;\n if (sizage!.fs == -1) {\n // Variable size code, Not supported\n throw new Error('Variable size codes not supported yet');\n } else {\n size = sizage!.fs!;\n }\n\n if (qb64.length < sizage!.fs!) {\n throw new Error(`Need ${sizage!.fs! - qb64.length} more chars.`);\n }\n\n qb64 = qb64.slice(0, sizage!.fs);\n let ps = cs % 4;\n let pbs = 2 * (ps == 0 ? sizage!.ls! : ps);\n let raw;\n if (ps != 0) {\n let base = new Array(ps + 1).join('A') + qb64.slice(cs);\n let paw = Base64.decode(base); // decode base to leave prepadded raw\n let pi = readInt(paw.subarray(0, ps)); // prepad as int\n if (pi & (2 ** pbs - 1)) {\n // masked pad bits non-zero\n throw new Error(\n `Non zeroed prepad bits = {pi & (2 ** pbs - 1 ):<06b} in {qb64b[cs:cs+1]}.`\n );\n }\n raw = paw.subarray(ps); // strip off ps prepad paw bytes\n } else {\n let base = qb64.slice(cs);\n let paw = Base64.decode(base);\n let li = readInt(paw.subarray(0, sizage!.ls));\n if (li != 0) {\n if (li == 1) {\n throw new Error(`Non zeroed lead byte = 0x{li:02x}.`);\n } else {\n throw new Error(`Non zeroed lead bytes = 0x{li:04x}`);\n }\n }\n raw = paw.subarray(sizage!.ls);\n }\n\n this._code = hard; // hard only\n this._size = size;\n this._raw = Uint8Array.from(raw); // ensure bytes so immutable and for crypto ops\n }\n\n private _bexfil(qb2: Uint8Array) {\n throw new Error(`qb2 not yet supported: ${qb2}`);\n }\n}\n","export {};\nimport libsodium from 'libsodium-wrappers-sumo';\nimport { Matter, MatterArgs, MtrDex } from './matter';\nimport secp256r1 from 'ecdsa-secp256r1';\n\n/**\n * @description Verfer :sublclass of Matter,helps to verify signature of serialization\n * using .raw as verifier key and .code as signature cypher suite\n */\nexport class Verfer extends Matter {\n private readonly _verify: (sig: any, ser: any, key: any) => boolean;\n constructor({ raw, code, qb64, qb64b, qb2 }: MatterArgs) {\n super({ raw, code, qb64, qb64b, qb2 });\n\n if (Array.from([MtrDex.Ed25519N, MtrDex.Ed25519]).includes(this.code)) {\n this._verify = this._ed25519;\n } else if (\n Array.from([MtrDex.ECDSA_256r1N, MtrDex.ECDSA_256r1]).includes(\n this.code\n )\n ) {\n this._verify = this._secp256r1;\n } else {\n throw new Error(`Unsupported code = ${this.code} for verifier.`);\n }\n }\n\n verify(sig: any, ser: any) {\n return this._verify(sig, ser, this.raw);\n }\n\n _ed25519(sig: any, ser: any, key: any) {\n try {\n return libsodium.crypto_sign_verify_detached(sig, ser, key);\n } catch (error) {\n throw new Error(error as string);\n }\n }\n _secp256r1(sig: any, ser: any, key: any) {\n try {\n const publicKey = secp256r1.fromCompressedPublicKey(key);\n return publicKey.verify(ser, sig);\n } catch (error) {\n throw new Error(error as string);\n }\n }\n}\n","import { Verfer } from './verfer';\nimport { Matter, MatterArgs } from './matter';\n\nexport class Cigar extends Matter {\n private _verfer: Verfer | undefined;\n constructor({ raw, code, qb64, qb64b, qb2 }: MatterArgs, verfer?: Verfer) {\n super({ raw, code, qb64, qb64b, qb2 });\n this._verfer = verfer;\n }\n\n get verfer(): Verfer | undefined {\n return this._verfer;\n }\n\n set verfer(verfer: Verfer | undefined) {\n this._verfer = verfer;\n }\n}\n","import { EmptyMaterialError } from './kering';\nimport { b, b64ToInt, d, intToB64, readInt } from './core';\nimport Base64 from 'urlsafe-base64';\nimport { Buffer } from 'buffer';\n\nexport class IndexerCodex {\n Ed25519_Sig: string = 'A'; // Ed25519 sig appears same in both lists if any.\n Ed25519_Crt_Sig: string = 'B'; // Ed25519 sig appears in current list only.\n ECDSA_256k1_Sig: string = 'C'; // ECDSA secp256k1 sig appears same in both lists if any.\n ECDSA_256k1_Crt_Sig: string = 'D'; // ECDSA secp256k1 sig appears in current list.\n ECDSA_256r1_Sig: string = 'E'; // ECDSA secp256r1 sig appears same in both lists if any.\n ECDSA_256r1_Crt_Sig: string = 'F'; // ECDSA secp256r1 sig appears in current list.\n Ed448_Sig: string = '0A'; // Ed448 signature appears in both lists.\n Ed448_Crt_Sig: string = '0B'; // Ed448 signature appears in current list only.\n Ed25519_Big_Sig: string = '2A'; // Ed25519 sig appears in both lists.\n Ed25519_Big_Crt_Sig: string = '2B'; // Ed25519 sig appears in current list only.\n ECDSA_256k1_Big_Sig: string = '2C'; // ECDSA secp256k1 sig appears in both lists.\n ECDSA_256k1_Big_Crt_Sig: string = '2D'; // ECDSA secp256k1 sig appears in current list only.\n ECDSA_256r1_Big_Sig: string = '2E'; // ECDSA secp256r1 sig appears in both lists.\n ECDSA_256r1_Big_Crt_Sig: string = '2F'; // ECDSA secp256r1 sig appears in current list only.\n Ed448_Big_Sig: string = '3A'; // Ed448 signature appears in both lists.\n Ed448_Big_Crt_Sig: string = '3B'; // Ed448 signature appears in current list only.\n}\n\nexport const IdrDex = new IndexerCodex();\n\nexport class IndexedSigCodex {\n Ed25519_Sig: string = 'A'; // Ed25519 sig appears same in both lists if any.\n Ed25519_Crt_Sig: string = 'B'; // Ed25519 sig appears in current list only.\n ECDSA_256k1_Sig: string = 'C'; // ECDSA secp256k1 sig appears same in both lists if any.\n ECDSA_256k1_Crt_Sig: string = 'D'; // ECDSA secp256k1 sig appears in current list.\n ECDSA_256r1_Sig: string = 'E'; // ECDSA secp256r1 sig appears same in both lists if any.\n ECDSA_256r1_Crt_Sig: string = 'F'; // ECDSA secp256r1 sig appears in current list.\n Ed448_Sig: string = '0A'; // Ed448 signature appears in both lists.\n Ed448_Crt_Sig: string = '0B'; // Ed448 signature appears in current list only.\n Ed25519_Big_Sig: string = '2A'; // Ed25519 sig appears in both lists.\n Ed25519_Big_Crt_Sig: string = '2B'; // Ed25519 sig appears in current list only.\n ECDSA_256k1_Big_Sig: string = '2C'; // ECDSA secp256k1 sig appears in both lists.\n ECDSA_256k1_Big_Crt_Sig: string = '2D'; // ECDSA secp256k1 sig appears in current list only.\n ECDSA_256r1_Big_Sig: string = '2E'; // ECDSA secp256r1 sig appears in both lists.\n ECDSA_256r1_Big_Crt_Sig: string = '2F'; // ECDSA secp256r1 sig appears in current list only.\n Ed448_Big_Sig: string = '3A'; // Ed448 signature appears in both lists.\n Ed448_Big_Crt_Sig: string = '3B'; // Ed448 signature appears in current list only.\n\n has(prop: string): boolean {\n let m = new Map(Array.from(Object.entries(this), (v) => [v[1], v[0]]));\n return m.has(prop);\n }\n}\n\nexport const IdxSigDex = new IndexedSigCodex();\n\nexport class IndexedCurrentSigCodex {\n Ed25519_Crt_Sig: string = 'B'; // Ed25519 sig appears in current list only.\n ECDSA_256k1_Crt_Sig: string = 'D'; // ECDSA secp256k1 sig appears in current list only.\n ECDSA_256r1_Crt_Sig: string = 'F'; // ECDSA secp256r1 sig appears in current list.\n Ed448_Crt_Sig: string = '0B'; // Ed448 signature appears in current list only.\n Ed25519_Big_Crt_Sig: string = '2B'; // Ed25519 sig appears in current list only.\n ECDSA_256k1_Big_Crt_Sig: string = '2D'; // ECDSA secp256k1 sig appears in current list only.\n ECDSA_256r1_Big_Crt_Sig: string = '2F'; // ECDSA secp256r1 sig appears in current list only.\n Ed448_Big_Crt_Sig: string = '3B'; // Ed448 signature appears in current list only.\n\n has(prop: string): boolean {\n let m = new Map(Array.from(Object.entries(this), (v) => [v[1], v[0]]));\n return m.has(prop);\n }\n}\n\nexport const IdxCrtSigDex = new IndexedCurrentSigCodex();\n\nexport class IndexedBothSigCodex {\n Ed25519_Sig: string = 'A'; // Ed25519 sig appears same in both lists if any.\n ECDSA_256k1_Sig: string = 'C'; // ECDSA secp256k1 sig appears same in both lists if any.\n Ed448_Sig: string = '0A'; // Ed448 signature appears in both lists.\n Ed25519_Big_Sig: string = '2A'; // Ed25519 sig appears in both listsy.\n ECDSA_256k1_Big_Sig: string = '2C'; // ECDSA secp256k1 sig appears in both lists.\n Ed448_Big_Sig: string = '3A'; // Ed448 signature appears in both lists.\n\n has(prop: string): boolean {\n let m = new Map(Array.from(Object.entries(this), (v) => [v[1], v[0]]));\n return m.has(prop);\n }\n}\n\nexport const IdxBthSigDex = new IndexedBothSigCodex();\n\nexport class Xizage {\n public hs: number;\n public ss: number;\n public os: number;\n public fs?: number;\n public ls: number;\n\n constructor(hs: number, ss: number, os: number, fs?: number, ls?: number) {\n this.hs = hs;\n this.ss = ss;\n this.os = os;\n this.fs = fs;\n this.ls = ls!;\n }\n}\n\nexport interface IndexerArgs {\n raw?: Uint8Array | undefined;\n code?: string | undefined;\n index?: number;\n ondex?: number;\n qb64b?: Uint8Array | undefined;\n qb64?: string | undefined;\n qb2?: Uint8Array | undefined;\n}\n\nexport class Indexer {\n public Codex = IdrDex;\n\n static Hards = new Map<string, number>([\n ['A', 1],\n ['B', 1],\n ['C', 1],\n ['D', 1],\n ['E', 1],\n ['F', 1],\n ['G', 1],\n ['H', 1],\n ['I', 1],\n ['J', 1],\n ['K', 1],\n ['L', 1],\n ['M', 1],\n ['N', 1],\n ['O', 1],\n ['P', 1],\n ['Q', 1],\n ['R', 1],\n ['S', 1],\n ['T', 1],\n ['U', 1],\n ['V', 1],\n ['W', 1],\n ['X', 1],\n ['Y', 1],\n ['Z', 1],\n ['a', 1],\n ['b', 1],\n ['c', 1],\n ['d', 1],\n ['e', 1],\n ['f', 1],\n ['g', 1],\n ['h', 1],\n ['i', 1],\n ['j', 1],\n ['k', 1],\n ['l', 1],\n ['m', 1],\n ['n', 1],\n ['o', 1],\n ['p', 1],\n ['q', 1],\n ['r', 1],\n ['s', 1],\n ['t', 1],\n ['u', 1],\n ['v', 1],\n ['w', 1],\n ['x', 1],\n ['y', 1],\n ['z', 1],\n ['0', 2],\n ['1', 2],\n ['2', 2],\n ['3', 2],\n ['4', 2],\n ]);\n\n static Sizes = new Map(\n Object.entries({\n A: new Xizage(1, 1, 0, 88, 0),\n B: new Xizage(1, 1, 0, 88, 0),\n C: new Xizage(1, 1, 0, 88, 0),\n D: new Xizage(1, 1, 0, 88, 0),\n E: new Xizage(1, 1, 0, 88, 0),\n F: new Xizage(1, 1, 0, 88, 0),\n '0A': new Xizage(2, 2, 1, 156, 0),\n '0B': new Xizage(2, 2, 1, 156, 0),\n\n '2A': new Xizage(2, 4, 2, 92, 0),\n '2B': new Xizage(2, 4, 2, 92, 0),\n '2C': new Xizage(2, 4, 2, 92, 0),\n '2D': new Xizage(2, 4, 2, 92, 0),\n '2E': new Xizage(2, 4, 2, 92, 0),\n '2F': new Xizage(2, 4, 2, 92, 0),\n\n '3A': new Xizage(2, 6, 3, 160, 0),\n '3B': new Xizage(2, 6, 3, 160, 0),\n\n '0z': new Xizage(2, 2, 0, undefined, 0),\n '1z': new Xizage(2, 2, 1, 76, 1),\n '4z': new Xizage(2, 6, 3, 80, 1),\n })\n );\n\n private _code: string = '';\n private _index: number = -1;\n private _ondex: number | undefined;\n private _raw: Uint8Array = new Uint8Array(0);\n\n constructor({\n raw = undefined,\n code = IdrDex.Ed25519_Sig,\n index = 0,\n ondex = undefined,\n qb64b = undefined,\n qb64 = undefined,\n qb2 = undefined,\n }: IndexerArgs) {\n if (raw != undefined) {\n if (code == undefined) {\n throw new EmptyMaterialError(\n `Improper initialization need either (raw and code) or qb64b or qb64 or qb2.`\n );\n }\n\n if (!Indexer.Sizes.has(code)) {\n throw new Error(`Unsupported code=${code}.`);\n }\n\n let xizage = Indexer.Sizes.get(code)!;\n let os = xizage.os;\n let fs = xizage.fs;\n let cs = xizage.hs + xizage.ss;\n let ms = xizage.ss - xizage.os;\n\n if (!Number.isInteger(index) || index < 0 || index > 64 ** ms - 1) {\n throw new Error(`Invalid index=${index} for code=${code}.`);\n }\n\n if (\n ondex != undefined &&\n xizage.os != 0 &&\n !(ondex >= 0 && ondex <= 64 ** os - 1)\n ) {\n throw new Error(`Invalid ondex=${ondex} for code=${code}.`);\n }\n\n if (IdxCrtSigDex.has(code) && ondex != undefined) {\n throw new Error(`Non None ondex=${ondex} for code=${code}.`);\n }\n\n if (IdxBthSigDex.has(code)) {\n if (ondex == undefined) {\n ondex = index;\n } else {\n if (ondex != index && os == 0) {\n throw new Error(\n `Non matching ondex=${ondex} and index=${index} for code=${code}.`\n );\n }\n }\n }\n\n if (fs == undefined) {\n throw new Error('variable length unsupported');\n }\n // TODO: Don't support this code\n // if not fs: # compute fs from index\n // if cs % 4:\n // raise InvalidCodeSizeError(f\"Whole code size not multiple of 4 for \"\n // f\"variable length material. cs={cs}.\")\n // if os != 0:\n // raise InvalidCodeSizeError(f\"Non-zero other index size for \"\n // f\"variable length material. os={os}.\")\n // fs = (index * 4) + cs\n let rawsize = Math.floor(((fs - cs) * 3) / 4);\n raw = raw.slice(0, rawsize);\n\n if (raw.length != rawsize) {\n throw new Error(\n `Not enougth raw bytes for code=${code} and index=${index} ,expected ${rawsize} got ${raw.length}.`\n );\n }\n\n this._code = code;\n this._index = index;\n this._ondex = ondex;\n this._raw = raw;\n } else if (qb64b != undefined) {\n let qb64 = d(qb64b);\n this._exfil(qb64);\n } else if (qb64 != undefined) {\n this._exfil(qb64);\n } else if (qb2 != undefined) {\n this._bexfil(qb2);\n } else {\n throw new EmptyMaterialError(\n `Improper initialization need either (raw and code and index) or qb64b or qb64 or qb2.`\n );\n }\n }\n\n private _bexfil(qb2: Uint8Array) {\n throw new Error(`qb2 not yet supported: ${qb2}`);\n }\n\n public static _rawSize(code: string) {\n let xizage = Indexer.Sizes.get(code)!;\n return Math.floor(xizage.fs! - ((xizage.hs + xizage.ss) * 3) / 4);\n }\n\n get code(): string {\n return this._code;\n }\n\n get raw(): Uint8Array {\n return this._raw;\n }\n\n get index(): number {\n return this._index;\n }\n\n get ondex(): number | undefined {\n return this._ondex;\n }\n\n get qb64(): string {\n return this._infil();\n }\n\n get qb64b() {\n return b(this.qb64);\n }\n\n private _infil(): string {\n let code = this.code;\n let index = this.index;\n let ondex = this.ondex;\n let raw = this.raw;\n\n let ps = (3 - (raw.length % 3)) % 3;\n let xizage = Indexer.Sizes.get(code)!;\n let cs = xizage.hs + xizage.ss;\n let ms = xizage.ss - xizage.os;\n\n // TODO: don't support this code\n // if not fs: # compute fs from index\n // if cs % 4:\n // raise InvalidCodeSizeError(f\"Whole code size not multiple of 4 for \"\n // f\"variable length material. cs={cs}.\")\n // if os != 0:\n // raise InvalidCodeSizeError(f\"Non-zero other index size for \"\n // f\"variable length material. os={os}.\")\n // fs = (index * 4) + cs\n\n if (index < 0 || index > 64 ** ms - 1) {\n throw new Error(`Invalid index=${index} for code=${code}.`);\n }\n\n if (\n ondex != undefined &&\n xizage.os != 0 &&\n !(ondex >= 0 && ondex <= 64 ** xizage.os - 1)\n ) {\n throw new Error(\n `Invalid ondex=${ondex} for os=${xizage.os} and code=${code}.`\n );\n }\n\n let both = `${code}${intToB64(index, ms)}${intToB64(\n ondex == undefined ? 0 : ondex,\n xizage.os\n )}`;\n\n if (both.length != cs) {\n throw new Error(\n `Mismatch code size = ${cs} with table = ${both.length}.`\n );\n }\n\n if (cs % 4 != ps - xizage.ls) {\n throw new Error(\n `Invalid code=${both} for converted raw pad size=${ps}.`\n );\n }\n\n let bytes = new Uint8Array(ps + raw.length);\n for (let i = 0; i < ps; i++) {\n bytes[i] = 0;\n }\n for (let i = 0; i < raw.length; i++) {\n let odx = i + ps;\n bytes[odx] = raw[i];\n }\n\n let full =\n both + Base64.encode(Buffer.from(bytes)).slice(ps - xizage.ls);\n if (full.length != xizage.fs) {\n throw new Error(`Invalid code=${both} for raw size=${raw.length}.`);\n }\n\n return full;\n }\n\n _exfil(qb64: string) {\n if (qb64.length == 0) {\n throw new Error('Empty Material');\n }\n\n let first = qb64[0];\n if (!Array.from(Indexer.Hards.keys()).includes(first)) {\n throw new Error(`Unexpected code ${first}`);\n }\n\n let hs = Indexer.Hards.get(first)!;\n if (qb64.length < hs) {\n throw new Error(`Need ${hs - qb64.length} more characters.`);\n }\n\n let hard = qb64.slice(0, hs);\n if (!Array.from(Indexer.Sizes.keys()).includes(hard)) {\n throw new Error(`Unsupported code ${hard}`);\n }\n\n let xizage = Indexer.Sizes.get(hard)!;\n let cs = xizage.hs + xizage.ss; // both hard + soft code size\n let ms = xizage.ss - xizage.os;\n\n if (qb64.length < cs) {\n throw new Error(`Need ${cs - qb64.length} more characters.`);\n }\n\n let sindex = qb64.slice(hs, hs + ms);\n let index = b64ToInt(sindex);\n\n let sondex = qb64.slice(hs + ms, hs + ms + xizage.os);\n let ondex;\n if (IdxCrtSigDex.has(hard)) {\n ondex = xizage.os != 0 ? b64ToInt(sondex) : undefined;\n if (ondex != 0 && ondex != undefined) {\n throw new Error(`Invalid ondex=${ondex} for code=${hard}.`);\n } else {\n ondex = undefined;\n }\n } else {\n ondex = xizage.os != 0 ? b64ToInt(sondex) : index;\n }\n\n if (xizage.fs == undefined) {\n throw new Error('variable length not supported');\n }\n // TODO: support variable length\n // if not fs: # compute fs from index which means variable length\n // if cs % 4:\n // raise ValidationError(f\"Whole code size not multiple of 4 for \"\n // f\"variable length material. cs={cs}.\")\n // if os != 0:\n // raise ValidationError(f\"Non-zero other index size for \"\n // f\"variable length material. os={os}.\")\n // fs = (index * 4) + cs\n\n if (qb64.length < xizage.fs) {\n throw new Error(`Need ${xizage.fs - qb64.length} more chars.`);\n }\n\n qb64 = qb64.slice(0, xizage.fs);\n let ps = cs % 4;\n let pbs = 2 * ps != 0 ? ps : xizage.ls;\n let raw;\n if (ps != 0) {\n let base = new Array(ps + 1).join('A') + qb64.slice(cs);\n let paw = Base64.decode(base); // decode base to leave prepadded raw\n let pi = readInt(paw.slice(0, ps)); // prepad as int\n if (pi & (2 ** pbs - 1)) {\n // masked pad bits non-zero\n throw new Error(\n `Non zeroed prepad bits = {pi & (2 ** pbs - 1 ):<06b} in {qb64b[cs:cs+1]}.`\n );\n }\n raw = paw.slice(ps); // strip off ps prepad paw bytes\n } else {\n let base = qb64.slice(cs);\n let paw = Base64.decode(base);\n let li = readInt(paw.slice(0, xizage!.ls));\n if (li != 0) {\n if (li == 1) {\n throw new Error(`Non zeroed lead byte = 0x{li:02x}.`);\n } else {\n throw new Error(`Non zeroed lead bytes = 0x{li:04x}`);\n }\n }\n raw = paw.slice(xizage!.ls);\n }\n\n if (raw.length != Math.floor(((qb64.length - cs) * 3) / 4)) {\n throw new Error(`Improperly qualified material = ${qb64}`);\n }\n\n this._code = hard;\n this._index = index;\n this._ondex = ondex;\n this._raw = new Uint8Array(raw); // must be bytes for crpto opts and immutable not bytearray\n }\n}\n","import { IdxSigDex, Indexer, IndexerArgs } from './indexer';\nimport { Verfer } from './verfer';\n\n/**\n Siger is subclass of Indexer, indexed signature material,\n Adds .verfer property which is instance of Verfer that provides\n associated signature verifier.\n\n See Indexer for inherited attributes and properties:\n\n Attributes:\n\n Properties:\n .verfer is Verfer object instance\n\n Methods:\n **/\n\nexport class Siger extends Indexer {\n private _verfer?: Verfer;\n constructor(\n { raw, code, index, ondex, qb64, qb64b, qb2 }: IndexerArgs,\n verfer?: Verfer\n ) {\n super({ raw, code, index, ondex, qb64, qb64b, qb2 });\n\n if (!IdxSigDex.has(this.code)) {\n throw new Error(`Invalid code = ${this.code} for Siger.`);\n }\n this._verfer = verfer;\n }\n\n get verfer(): Verfer | undefined {\n return this._verfer;\n }\n\n set verfer(verfer: Verfer | undefined) {\n this._verfer = verfer;\n }\n}\n","import { EmptyMaterialError } from './kering';\n\nexport {};\nimport libsodium from 'libsodium-wrappers-sumo';\nimport { Matter } from './matter';\nimport { MtrDex } from './matter';\nimport { Verfer } from './verfer';\nimport { Cigar } from './cigar';\nimport { Siger } from './siger';\nimport { IdrDex } from './indexer';\nimport { Buffer } from 'buffer';\n\n/**\n * @description Signer is Matter subclass with method to create signature of serialization\n * It will use .raw as signing (private) key seed\n * .code as cipher suite for signing and new property .verfer whose property\n * .raw is public key for signing.\n * If not provided .verfer is generated from private key seed using .code\n as cipher suite for creating key-pair.\n */\ninterface SignerArgs {\n raw?: Uint8Array | undefined;\n code?: string;\n qb64b?: Uint8Array | undefined;\n qb64?: string;\n qb2?: Uint8Array | undefined;\n transferable?: boolean;\n}\n\nexport class Signer extends Matter {\n private readonly _sign: Function;\n private readonly _verfer: Verfer;\n\n constructor({\n raw,\n code = MtrDex.Ed25519_Seed,\n qb64,\n qb64b,\n qb2,\n transferable = true,\n }: SignerArgs) {\n try {\n super({ raw, code, qb64, qb64b, qb2 });\n } catch (e) {\n if (e instanceof EmptyMaterialError) {\n if (code == MtrDex.Ed25519_Seed) {\n let raw = libsodium.randombytes_buf(\n libsodium.crypto_sign_SEEDBYTES\n );\n super({ raw, code, qb64, qb64b, qb2 });\n } else {\n throw new Error(`Unsupported signer code = ${code}.`);\n }\n } else {\n throw e;\n }\n }\n let verfer;\n if (this.code == MtrDex.Ed25519_Seed) {\n this._sign = this._ed25519;\n const keypair = libsodium.crypto_sign_seed_keypair(this.raw);\n verfer = new Verfer({\n raw: keypair.publicKey,\n code: transferable ? MtrDex.Ed25519 : MtrDex.Ed25519N,\n });\n } else {\n throw new Error(`Unsupported signer code = ${this.code}.`);\n }\n\n this._verfer = verfer;\n }\n\n /**\n * @description Property verfer:\n Returns Verfer instance\n Assumes ._verfer is correctly assigned\n */\n get verfer(): Verfer {\n return this._verfer;\n }\n\n sign(\n ser: Uint8Array,\n index: number | null = null,\n only: boolean = false,\n ondex: number | undefined = undefined\n ): Siger | Cigar {\n return this._sign(ser, this.raw, this.verfer, index, only, ondex);\n }\n\n _ed25519(\n ser: Uint8Array,\n seed: Uint8Array,\n verfer: Verfer,\n index: number | null,\n only: boolean = false,\n ondex: number | undefined\n ) {\n let sig = libsodium.crypto_sign_detached(\n ser,\n Buffer.concat([seed, verfer.raw])\n );\n\n if (index == null) {\n return new Cigar({ raw: sig, code: MtrDex.Ed25519_Sig }, verfer);\n } else {\n let code;\n if (only) {\n ondex = undefined;\n if (index <= 63) {\n code = IdrDex.Ed25519_Crt_Sig;\n } else {\n code = IdrDex.Ed25519_Big_Crt_Sig;\n }\n } else {\n if (ondex == undefined) {\n ondex = index;\n }\n\n if (ondex == index && index <= 63)\n // both same and small\n code = IdrDex.Ed25519_Sig; // use small both same\n // otherwise big or both not same so use big both\n else code = IdrDex.Ed25519_Big_Sig; // use use big both\n }\n\n return new Siger(\n { raw: sig, code: code, index: index, ondex: ondex },\n verfer\n );\n }\n }\n}\n","import { Signer } from './signer';\n\nimport { Matter, MtrDex } from './matter';\nimport { EmptyMaterialError } from './kering';\nimport libsodium from 'libsodium-wrappers-sumo';\n\nexport enum Tier {\n low = 'low',\n med = 'med',\n high = 'high',\n}\n\ninterface SalterArgs {\n raw?: Uint8Array | undefined;\n code?: string;\n tier?: Tier;\n qb64b?: Uint8Array | undefined;\n qb64?: string;\n qb2?: Uint8Array | undefined;\n}\nexport class Salter extends Matter {\n private readonly _tier: Tier | null;\n\n constructor({\n raw,\n code = MtrDex.Salt_128,\n tier = Tier.low,\n qb64,\n qb64b,\n qb2,\n }: SalterArgs) {\n try {\n super({ raw, code, qb64, qb64b, qb2 });\n } catch (e) {\n if (e instanceof EmptyMaterialError) {\n if (code == MtrDex.Salt_128) {\n let salt = libsodium.randombytes_buf(\n libsodium.crypto_pwhash_SALTBYTES\n );\n super({ raw: salt, code: code });\n } else {\n throw new Error(\n 'invalid code for Salter, only Salt_128 accepted'\n );\n }\n } else {\n throw e;\n }\n }\n\n if (this.code != MtrDex.Salt_128) {\n throw new Error('invalid code for Salter, only Salt_128 accepted');\n }\n\n this._tier = tier !== null ? tier : Tier.low;\n }\n\n private stretch(\n size: number = 32,\n path: string = '',\n tier: Tier | null = null,\n temp: boolean = false\n ): Uint8Array {\n tier = tier == null ? this.tier : tier;\n\n let opslimit: number, memlimit: number;\n\n // Harcoded values based on keripy\n if (temp) {\n opslimit = 1; //libsodium.crypto_pwhash_OPSLIMIT_MIN\n memlimit = 8192; //libsodium.crypto_pwhash_MEMLIMIT_MIN\n } else {\n switch (tier) {\n case Tier.low:\n opslimit = 2; //libsodium.crypto_pwhash_OPSLIMIT_INTERACTIVE\n memlimit = 67108864; //libsodium.crypto_pwhash_MEMLIMIT_INTERACTIVE\n break;\n case Tier.med:\n opslimit = 3; //libsodium.crypto_pwhash_OPSLIMIT_MODERATE\n memlimit = 268435456; //libsodium.crypto_pwhash_MEMLIMIT_MODERATE\n break;\n case Tier.high:\n opslimit = 4; //libsodium.crypto_pwhash_OPSLIMIT_SENSITIVE\n memlimit = 1073741824; //libsodium.crypto_pwhash_MEMLIMIT_SENSITIVE\n break;\n default:\n throw new Error(`Unsupported security tier = ${tier}.`);\n }\n }\n\n return libsodium.crypto_pwhash(\n size,\n path,\n this.raw,\n opslimit,\n memlimit,\n libsodium.crypto_pwhash_ALG_ARGON2ID13\n );\n }\n\n signer(\n code: string = MtrDex.Ed25519_Seed,\n transferable: boolean = true,\n path: string = '',\n tier: Tier | null = null,\n temp: boolean = false\n ): Signer {\n let seed = this.stretch(Matter._rawSize(code), path, tier, temp);\n\n return new Signer({\n raw: seed,\n code: code,\n transferable: transferable,\n });\n }\n\n get tier(): Tier | null {\n return this._tier;\n }\n}\n","import libsodium from 'libsodium-wrappers-sumo';\n\nimport { Matter, MatterArgs, MtrDex } from './matter';\nimport { Signer } from './signer';\nimport { Cipher } from './cipher';\nimport { EmptyMaterialError } from './kering';\nimport { Salter } from './salter';\n\nexport class Decrypter extends Matter {\n private readonly _decrypt: any;\n constructor(\n { raw, code = MtrDex.X25519_Private, qb64, qb64b, qb2 }: MatterArgs,\n seed: Uint8Array | undefined = undefined\n ) {\n try {\n super({ raw, code, qb64, qb64b, qb2 });\n } catch (e) {\n if (e instanceof EmptyMaterialError) {\n if (seed != undefined) {\n let signer = new Signer({ qb64b: seed });\n if (signer.code != MtrDex.Ed25519_Seed) {\n throw new Error(\n `Unsupported signing seed derivation code ${signer.code}`\n );\n }\n let sigkey = new Uint8Array(\n signer.raw.length + signer.verfer.raw.length\n );\n sigkey.set(signer.raw);\n sigkey.set(signer.verfer.raw, signer.raw.length);\n raw =\n libsodium.crypto_sign_ed25519_sk_to_curve25519(sigkey);\n super({ raw, code, qb64, qb64b, qb2 });\n } else {\n throw e;\n }\n } else {\n throw e;\n }\n }\n\n if (this.code == MtrDex.X25519_Private) {\n this._decrypt = this._x25519;\n } else {\n throw new Error(`Unsupported decrypter code = ${this.code}.`);\n }\n }\n\n decrypt(\n ser: Uint8Array | null = null,\n cipher: Cipher | null = null,\n transferable: boolean = false\n ) {\n if (ser == null && cipher == null) {\n throw new EmptyMaterialError('Neither ser or cipher were provided');\n }\n\n if (ser != null) {\n cipher = new Cipher({ qb64b: ser });\n }\n\n return this._decrypt(cipher, this.raw, transferable);\n }\n\n _x25519(cipher: Cipher, prikey: Uint8Array, transferable: boolean = false) {\n let pubkey = libsodium.crypto_scalarmult_base(prikey);\n let plain = libsodium.crypto_box_seal_open(cipher.raw, pubkey, prikey);\n if (cipher.code == MtrDex.X25519_Cipher_Salt) {\n return new Salter({ qb64b: plain });\n } else if (cipher.code == MtrDex.X25519_Cipher_Seed) {\n return new Signer({ qb64b: plain, transferable: transferable });\n } else {\n throw new Error(`Unsupported cipher text code == ${cipher.code}`);\n }\n }\n}\n","import { Matter, MatterArgs, MtrDex } from './matter';\nimport { Decrypter } from './decrypter';\n\nexport class Cipher extends Matter {\n constructor({ raw, code, qb64, qb64b, qb2 }: MatterArgs) {\n if (raw != undefined && code == undefined) {\n if (raw.length == Matter._rawSize(MtrDex.X25519_Cipher_Salt)) {\n code = MtrDex.X25519_Cipher_Salt;\n } else if (\n raw.length == Matter._rawSize(MtrDex.X25519_Cipher_Seed)\n ) {\n code = MtrDex.X25519_Cipher_Salt;\n }\n }\n super({ raw: raw, code: code, qb64b: qb64b, qb64: qb64, qb2: qb2 });\n\n if (\n !Array.from([\n MtrDex.X25519_Cipher_Salt,\n MtrDex.X25519_Cipher_Seed,\n ]).includes(this.code)\n ) {\n throw new Error(`Unsupported Cipher code == ${this.code}`);\n }\n }\n\n decrypt(\n prikey: Uint8Array | undefined = undefined,\n seed: Uint8Array | undefined = undefined\n ) {\n let decrypter = new Decrypter({ qb64b: prikey }, seed);\n return decrypter.decrypt(this.qb64b);\n }\n}\n","export function pad(n: any, width = 3, z = 0) {\n return (String(z).repeat(width) + String(n)).slice(String(n).length);\n}\n\n/**\n * @description Returns list of depth first recursively extracted values from elements of\n key event dict ked whose flabels are in lables list\n\n * @param {*} ked ked is key event dict\n * @param {*} labels labels is list of element labels in ked from which to extract values\n */\nexport function extractValues(ked: any, labels: any) {\n let values = [];\n for (let label of labels) {\n values = extractElementValues(ked[label], values);\n }\n\n return values;\n}\n\nexport function arrayEquals(ar1: Uint8Array, ar2: Uint8Array) {\n return (\n ar1.length === ar2.length &&\n ar1.every((val, index) => val === ar2[index])\n );\n}\n\n/**\n * @description Recusive depth first search that recursively extracts value(s) from element\n and appends to values list\n Assumes that extracted values are str\n\n * @param {*} element\n * @param {*} values\n */\n\nfunction extractElementValues(element: any, values: any) {\n let data = [];\n\n try {\n if (element instanceof Array && !(typeof element == 'string')) {\n for (let k in element) extractElementValues(element[k], values);\n } else if (typeof element == 'string') {\n values.push(element);\n }\n data = values;\n } catch (error) {\n throw new Error(error as string);\n }\n\n return data;\n}\n\n/**\n * @description Returns True if obj is non-string iterable, False otherwise\n\n * @param {*} obj\n */\n\n// function nonStringIterable(obj) {\n// obj instanceof (String)\n// return instanceof(obj, (str, bytes)) && instanceof(obj, Iterable))\n// }\n\nexport function nowUTC(): Date {\n return new Date();\n}\n\nexport function range(start: number, stop: number, step: number) {\n if (typeof stop == 'undefined') {\n // one param defined\n stop = start;\n start = 0;\n }\n\n if (typeof step == 'undefined') {\n step = 1;\n }\n\n if ((step > 0 && start >= stop) || (step < 0 && start <= stop)) {\n return [];\n }\n\n let result = new Array<number>();\n for (let i: number = start; step > 0 ? i < stop : i > stop; i += step) {\n result.push(i);\n }\n\n return result;\n}\n\nexport function intToBytes(value: number, length: number): Uint8Array {\n const byteArray = new Uint8Array(length); // Assuming a 4-byte integer (32 bits)\n\n for (let index = 0; index < byteArray.length; index++) {\n let byte = value & 0xff;\n byteArray[index] = byte;\n value = (value - byte) / 256;\n }\n\n return byteArray;\n}\n\nexport function bytesToInt(ar: Uint8Array): number {\n let value = 0;\n for (let i = ar.length - 1; i >= 0; i--) {\n value = value * 256 + ar[i];\n }\n\n return value;\n}\n","import libsodium from 'libsodium-wrappers-sumo';\n\nimport { Matter, MatterArgs, MtrDex } from './matter';\nimport { Verfer } from './verfer';\nimport { Signer } from './signer';\nimport { Cipher } from './cipher';\nimport { arrayEquals } from './utils';\n\nexport class Encrypter extends Matter {\n private _encrypt: any;\n constructor(\n { raw, code = MtrDex.X25519, qb64, qb64b, qb2 }: MatterArgs,\n verkey: Uint8Array | null = null\n ) {\n if (raw == undefined && verkey != null) {\n let verfer = new Verfer({ qb64b: verkey });\n if (\n !Array.from([MtrDex.Ed25519N, MtrDex.Ed25519]).includes(\n verfer.code\n )\n ) {\n throw new Error(\n `Unsupported verkey derivation code = ${verfer.code}.`\n );\n }\n raw = libsodium.crypto_sign_ed25519_pk_to_curve25519(verfer.raw);\n }\n\n super({ raw, code, qb64, qb64b, qb2 });\n\n if (this.code == MtrDex.X25519) {\n this._encrypt = this._x25519;\n } else {\n throw new Error(`Unsupported encrypter code = ${this.code}.`);\n }\n }\n\n verifySeed(seed: Uint8Array) {\n let signer = new Signer({ qb64b: seed });\n let keypair = libsodium.crypto_sign_seed_keypair(signer.raw);\n let pubkey = libsodium.crypto_sign_ed25519_pk_to_curve25519(\n keypair.publicKey\n );\n return arrayEquals(pubkey, this.raw);\n }\n\n encrypt(ser: Uint8Array | null = null, matter: Matter | null = null) {\n if (ser == null && matter == null) {\n throw new Error('Neither ser nor matter are provided.');\n }\n\n if (ser != null) {\n matter = new Matter({ qb64b: ser });\n }\n\n let code;\n if (matter!.code == MtrDex.Salt_128) {\n code = MtrDex.X25519_Cipher_Salt;\n } else {\n code = MtrDex.X25519_Cipher_Seed;\n }\n\n return this._encrypt(matter!.qb64, this.raw, code);\n }\n\n _x25519(ser: Uint8Array, pubkey: Uint8Array, code: string) {\n let raw = libsodium.crypto_box_seal(ser, pubkey);\n return new Cipher({ raw: raw, code: code });\n }\n}\n","import { createHash } from 'blake3';\n\nimport { Matter, MatterArgs, MtrDex } from './matter';\n\n/**\n * @description : Diger is subset of Matter and is used to verify the digest of serialization\n * It uses .raw : as digest\n * .code as digest algorithm\n *\n */\n\nexport class Diger extends Matter {\n private readonly _verify: any;\n\n // This constructor will assign digest verification function to ._verify\n constructor(\n { raw, code = MtrDex.Blake3_256, qb64, qb64b, qb2 }: MatterArgs,\n ser: Uint8Array | null = null\n ) {\n try {\n super({ raw, code, qb64, qb64b, qb2 });\n } catch (error) {\n if (ser == null) {\n throw error;\n }\n\n if (code === MtrDex.Blake3_256) {\n const hasher = createHash();\n const dig = hasher.update(ser).digest('');\n super({ raw: dig, code: code });\n } else {\n throw new Error(`Unsupported code = ${code} for digester.`);\n }\n }\n\n if (code === MtrDex.Blake3_256) {\n this._verify = this.blake3_256;\n } else {\n throw new Error(`Unsupported code = ${code} for digester.`);\n }\n }\n\n /**\n *\n * @param {Uint8Array} ser serialization bytes\n * @description This method will return true if digest of bytes serialization ser matches .raw\n * using .raw as reference digest for ._verify digest algorithm determined\n by .code\n */\n verify(ser: Uint8Array): boolean {\n return this._verify(ser, this.raw);\n }\n\n compare(ser: Uint8Array, dig: any = null, diger: Diger | null = null) {\n if (dig != null) {\n if (dig.toString() == this.qb64) {\n return true;\n }\n\n diger = new Diger({ qb64b: dig });\n } else if (diger != null) {\n if (diger.qb64b == this.qb64b) {\n return true;\n }\n } else {\n throw new Error('Both dig and diger may not be None.');\n }\n\n if (diger.code == this.code) {\n return false;\n }\n\n return diger.verify(ser) && this.verify(ser);\n }\n\n blake3_256(ser: Uint8Array, dig: any) {\n const hasher = createHash();\n let digest = hasher.update(ser).digest('');\n return digest.toString() === dig.toString();\n }\n}\n","import { Encrypter } from './encrypter';\nimport { Decrypter } from './decrypter';\nimport { Salter, Tier } from './salter';\nimport { Signer } from './signer';\nimport { Verfer } from './verfer';\nimport { MtrDex } from './matter';\nimport { Diger } from './diger';\nimport { Cigar } from './cigar';\nimport { Siger } from './siger';\nimport { b } from './core';\n\nexport enum Algos {\n randy = 'randy',\n salty = 'salty',\n group = 'group',\n extern = 'extern',\n}\n\nclass PubLot {\n public pubs: Array<string> = new Array<string>(); // list qb64 public keys.\n public ridx: number = 0; // index of rotation (est event) that uses public key set\n public kidx: number = 0; // index of key in sequence of public keys\n public dt: string = ''; // datetime ISO8601 when key set created\n}\n\nclass PreSit {\n public old: PubLot = new PubLot(); //previous publot\n public new: PubLot = new PubLot(); //newly current publot\n public nxt: PubLot = new PubLot(); //next public publot\n}\n\nclass PrePrm {\n public pidx: number = 0; // prefix index for this keypair sequence\n public algo: Algos = Algos.salty; // salty default uses indices and salt to create new key pairs\n public salt: string = ''; // empty salt used for salty algo.\n public stem: string = ''; // default unique path stem for salty algo\n public tier: string = ''; // security tier for stretch index salty algo\n}\n\nclass PubSet {\n pubs: Array<string> = new Array<string>(); // list qb64 public keys.\n}\n\nclass PubPath {\n path: string = '';\n code: string = '';\n tier: string = Tier.high;\n temp: boolean = false;\n}\n\nclass Keys {\n private readonly _signers: Array<Signer>;\n private readonly _paths?: Array<string>;\n\n constructor(signers: Array<Signer>, paths?: Array<string>) {\n this._signers = signers;\n if (paths != undefined) {\n if (signers.length != paths.length) {\n throw new Error(\n 'If paths are provided, they must be the same length as signers'\n );\n }\n }\n this._paths = paths;\n }\n\n get paths(): Array<string> | undefined {\n return this._paths;\n }\n\n get signers(): Array<Signer> {\n return this._signers;\n }\n}\n\nexport interface Creator {\n create(\n codes: Array<string> | undefined,\n count: number,\n code: string,\n transferable: boolean,\n pidx: number,\n ridx: number,\n kidx: number,\n temp: boolean\n ): Keys;\n salt: string;\n stem: string;\n tier: Tier;\n}\n\nexport class RandyCreator implements Creator {\n create(\n codes: Array<string> | undefined = undefined,\n count: number = 1,\n code: string = MtrDex.Ed25519_Seed,\n transferable: boolean = true\n ): Keys {\n let signers = new Array<Signer>();\n if (codes == undefined) {\n codes = new Array(count).fill(code);\n }\n\n codes.forEach(function (code) {\n signers.push(\n new Signer({ code: code, transferable: transferable })\n );\n });\n\n return new Keys(signers);\n }\n\n get salt(): string {\n return '';\n }\n\n get stem(): string {\n return '';\n }\n\n get tier(): Tier {\n return '' as Tier;\n }\n}\n\nexport class SaltyCreator implements Creator {\n public salter: Salter;\n private readonly _stem: string;\n constructor(\n salt: string | undefined = undefined,\n tier: Tier | undefined = undefined,\n stem: string | undefined = undefined\n ) {\n this.salter = new Salter({ qb64: salt, tier: tier });\n this._stem = stem == undefined ? '' : stem;\n }\n\n get salt(): string {\n return this.salter.qb64;\n }\n\n get stem(): string {\n return this._stem;\n }\n\n get tier(): Tier {\n return this.salter.tier!;\n }\n\n create(\n codes: Array<string> | undefined = undefined,\n count: number = 1,\n code: string = MtrDex.Ed25519_Seed,\n transferable: boolean = true,\n pidx: number = 0,\n ridx: number = 0,\n kidx: number = 0,\n temp: boolean = false\n ): Keys {\n let signers = new Array<Signer>();\n let paths = new Array<string>();\n\n if (codes == undefined) {\n codes = new Array<string>(count).fill(code);\n }\n\n codes.forEach((code, idx) => {\n // Previuos definition of path\n // let path = this.stem + pidx.toString(16) + ridx.toString(16) + (kidx+idx).toString(16)\n let path =\n this.stem == ''\n ? pidx.toString(16)\n : this.stem + ridx.toString(16) + (kidx + idx).toString(16);\n\n signers.push(\n this.salter.signer(code, transferable, path, this.tier, temp)\n );\n paths.push(path);\n });\n\n return new Keys(signers, paths);\n }\n}\n\nexport class Creatory {\n private readonly _make: any;\n constructor(algo: Algos = Algos.salty) {\n switch (algo) {\n case Algos.randy:\n this._make = this._makeRandy;\n break;\n case Algos.salty:\n this._make = this._makeSalty;\n break;\n default:\n throw new Error(`unsupported algo=${algo}`);\n }\n }\n\n make(...args: any[]): Creator {\n return this._make(...args);\n }\n\n _makeRandy(): Creator {\n return new RandyCreator();\n }\n\n _makeSalty(...args: any[]): Creator {\n return new SaltyCreator(...args);\n }\n}\n\nexport function openManager(passcode: string, salt?: string) {\n if (passcode.length < 21) {\n throw new Error('Bran (passcode seed material) too short.');\n }\n\n let bran = MtrDex.Salt_128 + 'A' + passcode.substring(0, 21); // qb64 salt for seed\n let signer = new Salter({ qb64: bran }).signer(MtrDex.Ed25519_Seed, false);\n let seed = signer.qb64;\n let aeid = signer.verfer.qb64; // lest it remove encryption\n\n let algo;\n\n let salter = salt != undefined ? new Salter({ qb64: salt }) : undefined;\n if (salt != undefined) {\n algo = Algos.salty;\n } else {\n algo = Algos.randy;\n }\n\n return new Manager({ seed: seed, aeid: aeid, algo: algo, salter: salter });\n}\n\nexport interface ManagerArgs {\n ks?: KeyStore | undefined;\n seed?: string | undefined;\n aeid?: string | undefined;\n pidx?: number | undefined;\n algo?: Algos | undefined;\n salter?: Salter | undefined;\n tier?: string | undefined;\n}\n\nexport interface ManagerInceptArgs {\n icodes?: any | undefined;\n icount?: number;\n icode?: string;\n ncodes?: any | undefined;\n ncount?: number;\n ncode?: string;\n dcode?: string;\n algo?: Algos | undefined;\n salt?: string | undefined;\n stem?: string | undefined;\n tier?: string | undefined;\n rooted?: boolean;\n transferable?: boolean;\n temp?: boolean;\n}\n\ninterface RotateArgs {\n pre: string;\n ncodes?: any | undefined;\n ncount?: number;\n ncode?: string;\n dcode?: string;\n transferable?: boolean;\n temp?: boolean;\n erase?: boolean;\n}\n\ninterface SignArgs {\n ser: Uint8Array;\n pubs?: Array<string> | undefined;\n verfers?: Array<Verfer> | undefined;\n indexed?: boolean;\n indices?: Array<number> | undefined;\n ondices?: Array<number> | undefined;\n}\n\nexport class Manager {\n private _seed?: string;\n private _salt?: string;\n private _encrypter: Encrypter | undefined;\n private _decrypter: Decrypter | undefined;\n private readonly _ks: KeyStore;\n\n constructor({ ks, seed, aeid, pidx, algo, salter, tier }: ManagerArgs) {\n this._ks = ks == undefined ? new Keeper() : ks;\n this._seed = seed;\n this._encrypter = undefined;\n this._decrypter = undefined;\n\n aeid = aeid == undefined ? undefined : aeid;\n pidx = pidx == undefined ? 0 : pidx;\n algo = algo == undefined ? Algos.salty : algo;\n\n let salt = salter?.qb64;\n\n tier = tier == undefined ? Tier.low : tier;\n\n if (this.pidx == undefined) {\n this.pidx = pidx;\n }\n\n if (this.algo == undefined) {\n this.algo = algo;\n }\n\n if (this.salt == undefined) {\n this.salt = salt;\n }\n\n if (this.tier == undefined) {\n this.tier = tier;\n }\n\n if (this.aeid == undefined) {\n this.updateAeid(aeid, this._seed);\n }\n }\n\n get ks(): KeyStore {\n return this._ks;\n }\n\n get encrypter(): Encrypter | undefined {\n return this._encrypter;\n }\n\n get decrypter(): Decrypter | undefined {\n return this._decrypter;\n }\n\n get seed(): string | undefined {\n return this._seed;\n }\n\n get aeid(): string | undefined {\n return this.ks.getGbls('aeid');\n }\n\n get pidx(): number | undefined {\n let pidx = this.ks.getGbls('pidx');\n if (pidx != undefined) {\n return parseInt(pidx, 16);\n }\n return undefined;\n }\n\n set pidx(pidx: number | undefined) {\n this.ks.pinGbls('pidx', pidx!.toString(16));\n }\n\n get salt(): string | undefined {\n if (this._decrypter == undefined) {\n return this._salt;\n } else {\n let salt = this.ks.getGbls('salt');\n return this._decrypter.decrypt(b(salt)).qb64;\n }\n }\n\n set salt(salt: string | undefined) {\n if (this._encrypter == undefined) {\n this._salt = salt;\n } else {\n salt = this._encrypter.encrypt(b(salt)).qb64;\n this.ks.pinGbls('salt', salt!);\n }\n }\n\n get tier(): string | undefined {\n return this.ks.getGbls('tier');\n }\n\n set tier(tier: string | undefined) {\n this.ks.pinGbls('tier', tier!);\n }\n\n get algo(): Algos | undefined {\n let a = this.ks.getGbls('algo');\n let ta = a as keyof typeof Algos;\n return Algos[ta];\n }\n\n set algo(algo: Algos | undefined) {\n this.ks.pinGbls('algo', algo! as string);\n }\n\n private updateAeid(aeid: string | undefined, seed?: string) {\n if (this.aeid != undefined) {\n let seed = b(this._seed);\n if (this._seed == undefined || !this._encrypter?.verifySeed(seed)) {\n throw new Error(`Last seed missing or provided last seed \"\n \"not associated with last aeid=${this.aeid}.`);\n }\n }\n\n if (aeid != '' && aeid != undefined) {\n if (aeid != this.aeid) {\n this._encrypter = new Encrypter({}, b(aeid));\n if (seed == undefined || !this._encrypter.verifySeed(b(seed))) {\n throw new Error(`Seed missing or provided seed not associated\"\n \" with provided aeid=${aeid}.`);\n }\n }\n } else if (this.algo == Algos.randy) {\n // Unlike KERIpy, we don't support unencrypted secrets\n throw new Error(\n 'Invalid Manager configuration, encryption must be used with Randy key creation.'\n );\n } else {\n this._encrypter = undefined;\n }\n\n let salt = this.salt;\n if (salt != undefined) {\n this.salt = salt;\n }\n\n if (this._decrypter != undefined) {\n for (const [keys, data] of this.ks.prmsElements()) {\n if (data.salt != undefined) {\n let salter = this._decrypter.decrypt(b(data.salt));\n data.salt =\n this._encrypter == undefined\n ? salter.qb64\n : this._encrypter.encrypt(null, salter);\n this.ks.pinPrms(keys, data);\n }\n }\n\n for (const [pubKey, signer] of this.ks.prisElements(\n this._decrypter\n )) {\n this.ks.pinPris(pubKey, signer, this._encrypter!);\n }\n }\n\n this.ks.pinGbls('aeid', aeid!); // set aeid in db\n this._seed = seed; // set .seed in memory\n\n // update .decrypter\n this._decrypter =\n seed != undefined ? new Decrypter({}, b(seed)) : undefined;\n }\n\n incept({\n icodes = undefined,\n icount = 1,\n icode = MtrDex.Ed25519_Seed,\n ncodes = undefined,\n ncount = 1,\n ncode = MtrDex.Ed25519_Seed,\n dcode = MtrDex.Blake3_256,\n algo = undefined,\n salt = undefined,\n stem = undefined,\n tier = undefined,\n rooted = true,\n transferable = true,\n temp = false,\n }: ManagerInceptArgs): [Array<Verfer>, Array<Diger>] {\n if (rooted && algo == undefined) {\n algo = this.algo;\n }\n if (rooted && salt == undefined) {\n salt = this.salt;\n }\n if (rooted && tier == undefined) {\n tier = this.tier;\n }\n\n let pidx = this.pidx!;\n let ridx = 0;\n let kidx = 0;\n\n let creator = new Creatory(algo).make(salt, tier, stem);\n\n if (icodes == undefined) {\n if (icount < 0) {\n throw new Error(`Invalid icount=${icount} must be >= 0.`);\n }\n\n icodes = new Array<string>(icount).fill(icode);\n }\n\n let ikeys = creator.create(\n icodes,\n 0,\n MtrDex.Ed25519_Seed,\n transferable,\n pidx,\n ridx,\n kidx,\n temp\n );\n let verfers = Array.from(\n ikeys.signers,\n (signer: Signer) => signer.verfer\n );\n\n if (ncodes == undefined) {\n if (ncount < 0) {\n throw new Error(`Invalid ncount=${ncount} must be >= 0.`);\n }\n\n ncodes = new Array<string>(ncount).fill(ncode);\n }\n\n let nkeys = creator.create(\n ncodes,\n 0,\n MtrDex.Ed25519_Seed,\n transferable,\n pidx,\n ridx + 1,\n kidx + icodes.length,\n temp\n );\n\n let digers = Array.from(\n nkeys.signers,\n (signer: Signer) => new Diger({ code: dcode }, signer.verfer.qb64b)\n );\n\n let pp = new PrePrm();\n pp.pidx = pidx!;\n pp.algo = algo!;\n pp.salt =\n creator.salt.length == 0 || this.encrypter == undefined\n ? ''\n : this.encrypter.encrypt(b(creator.salt)).qb64;\n pp.stem = creator.stem;\n pp.tier = creator.tier;\n\n let dt = new Date().toString();\n let nw = new PubLot();\n nw.pubs = Array.from(verfers, (verfer: Verfer) => verfer.qb64);\n nw.ridx = ridx;\n nw.kidx = kidx;\n nw.dt = dt;\n\n let nt = new PubLot();\n nt.pubs = Array.from(\n nkeys.signers,\n (signer: Signer) => signer.verfer.qb64\n );\n nt.ridx = ridx + 1;\n nt.kidx = kidx + icodes.length;\n nt.dt = dt;\n\n let ps = new PreSit();\n ps.new = nw;\n ps.nxt = nt;\n\n let pre = verfers[0].qb64;\n if (!this.ks.putPres(pre, verfers[0].qb64b)) {\n throw new Error(`Already incepted pre=${pre}.`);\n }\n\n if (!this.ks.putPrms(pre, pp)) {\n throw new Error(`Already incepted prm for pre=${pre}.`);\n }\n\n this.pidx = pidx! + 1;\n\n if (!this.ks.putSits(pre, ps)) {\n throw new Error(`Already incepted sit for pre=${pre}.`);\n }\n\n if (this.encrypter != undefined) {\n // Only store encrypted keys if we have an encrypter, otherwise regenerate\n ikeys.signers.forEach((signer: Signer) => {\n this.ks.putPris(signer.verfer.qb64, signer, this.encrypter!);\n });\n\n nkeys.signers.forEach((signer: Signer) => {\n this.ks.putPris(signer.verfer.qb64, signer, this.encrypter!);\n });\n } else if (\n this._encrypter == undefined &&\n ikeys.paths != undefined &&\n nkeys.paths != undefined\n ) {\n ikeys.paths.forEach((path: string, idx: number) => {\n let signer = ikeys.signers[idx];\n let ppt = new PubPath();\n ppt.path = path;\n ppt.code = icodes[idx];\n ppt.tier = pp.tier;\n ppt.temp = temp;\n this.ks.putPths(signer.verfer.qb64, ppt);\n });\n nkeys.paths.forEach((path: string, idx: number) => {\n let signer = nkeys.signers[idx];\n let ppt = new PubPath();\n ppt.path = path;\n ppt.code = ncodes[idx];\n ppt.tier = pp.tier;\n ppt.temp = temp;\n this.ks.putPths(signer.verfer.qb64, ppt);\n });\n } else {\n throw new Error(\n 'invalid configuration, randy keys without encryption'\n );\n }\n\n let pubSet = new PubSet();\n pubSet.pubs = ps.new.pubs;\n this.ks.putPubs(riKey(pre, ridx), pubSet);\n\n let nxtPubSet = new PubSet();\n nxtPubSet.pubs = ps.nxt.pubs;\n this.ks.putPubs(riKey(pre, ridx + 1), nxtPubSet);\n\n return [verfers, digers];\n }\n\n move(old: string, gnu: string) {\n if (old == gnu) {\n return;\n }\n\n if (this.ks.getPres(old) == undefined) {\n throw new Error(`Nonexistent old pre=${old}, nothing to assign.`);\n }\n\n if (this.ks.getPres(gnu) != undefined) {\n throw new Error(`Preexistent new pre=${gnu} may not clobber.`);\n }\n\n let oldprm = this.ks.getPrms(old);\n if (oldprm == undefined) {\n throw new Error(\n `Nonexistent old prm for pre=${old}, nothing to move.`\n );\n }\n\n if (this.ks.getPrms(gnu) != undefined) {\n throw new Error(\n `Preexistent new prm for pre=${gnu} may not clobber.`\n );\n }\n\n let oldsit = this.ks.getSits(old);\n if (oldsit == undefined) {\n throw new Error(\n `Nonexistent old sit for pre=${old}, nothing to move.`\n );\n }\n\n if (this.ks.getSits(gnu) != undefined) {\n throw new Error(\n `Preexistent new sit for pre=${gnu} may not clobber.`\n );\n }\n\n if (!this.ks.putPrms(gnu, oldprm)) {\n throw new Error(\n `Failed moving prm from old pre=${old} to new pre=${gnu}.`\n );\n } else {\n this.ks.remPrms(old);\n }\n\n if (!this.ks.putSits(gnu, oldsit)) {\n throw new Error(\n `Failed moving sit from old pre=${old} to new pre=${gnu}.`\n );\n } else {\n this.ks.remSits(old);\n }\n\n let i = 0;\n while (true) {\n let pl = this.ks.getPubs(riKey(old, i));\n if (pl == undefined) {\n break;\n }\n\n if (!this.ks.putPubs(riKey(gnu, i), pl)) {\n throw new Error(\n `Failed moving pubs at pre=${old} ri=${i} to new pre=${gnu}`\n );\n }\n i = i + 1;\n }\n\n if (!this.ks.pinPres(old, b(gnu))) {\n throw new Error(\n `Failed assiging new pre=${gnu} to old pre=${old}.`\n );\n }\n\n if (!this.ks.putPres(gnu, b(gnu))) {\n throw new Error(`Failed assiging new pre=${gnu}.`);\n }\n }\n\n rotate({\n pre,\n ncodes = undefined,\n ncount = 1,\n ncode = MtrDex.Ed25519_Seed,\n dcode = MtrDex.Blake3_256,\n transferable = true,\n temp = false,\n erase = true,\n }: RotateArgs): [Array<Verfer>, Array<Diger>] {\n let pp = this.ks.getPrms(pre);\n if (pp == undefined) {\n throw new Error(`Attempt to rotate nonexistent pre=${pre}.`);\n }\n\n let ps = this.ks.getSits(pre);\n if (ps == undefined) {\n throw new Error(`Attempt to rotate nonexistent pre=${pre}.`);\n }\n\n if (ps.nxt.pubs == undefined || ps.nxt.pubs.length == 0) {\n throw new Error(`Attempt to rotate nontransferable pre=${pre}.`);\n }\n\n let old = ps.old;\n ps.old = ps.new;\n ps.new = ps.nxt;\n\n if (this.aeid != undefined && this.decrypter == undefined) {\n throw new Error(\n 'Unauthorized decryption attempt. Aeid but no decrypter.'\n );\n }\n\n let verfers = new Array<Verfer>();\n ps.new.pubs.forEach((pub) => {\n if (this.decrypter != undefined) {\n let signer = this.ks.getPris(pub, this.decrypter);\n if (signer == undefined) {\n throw new Error(`Missing prikey in db for pubkey=${pub}`);\n }\n verfers.push(signer.verfer);\n } else {\n // Should we regenerate from salt here since this.decryptor is undefined\n verfers.push(new Verfer({ qb64: pub }));\n }\n });\n\n let salt = pp.salt;\n if (salt != undefined && salt != '') {\n // If you provded a Salt for an AID but don't have encryption, pitch a fit\n if (this.decrypter == undefined) {\n throw new Error(\n 'Invalid configuration: AID salt with no encryption'\n );\n }\n salt = this.decrypter.decrypt(b(salt)).qb64;\n } else {\n salt = this.salt!;\n }\n\n let creator = new Creatory(pp.algo).make(salt, pp.tier, pp.stem);\n\n if (ncodes == undefined) {\n if (ncount < 0) {\n throw new Error(`Invalid count=${ncount} must be >= 0`);\n }\n ncodes = new Array<string>(ncount).fill(ncode);\n }\n\n let pidx = pp.pidx;\n let ridx = ps.new.ridx + 1;\n let kidx = ps.nxt.kidx + ps.new.pubs.length;\n\n let keys = creator.create(\n ncodes,\n 0,\n '',\n transferable,\n pidx,\n ridx,\n kidx,\n temp\n );\n let digers = Array.from(\n keys.signers,\n (signer: Signer) => new Diger({ code: dcode }, signer.verfer.qb64b)\n );\n\n let dt = new Date().toString();\n ps.nxt = new PubLot();\n ps.nxt.pubs = Array.from(\n keys.signers,\n (signer: Signer) => signer.verfer.qb64\n );\n ps.nxt.ridx = ridx;\n ps.nxt.kidx = kidx;\n ps.nxt.dt = dt;\n\n if (!this.ks.pinSits(pre, ps)) {\n throw new Error(`Problem updating pubsit db for pre=${pre}.`);\n }\n\n if (this.encrypter != undefined) {\n // Only store encrypted keys if we have an encrypter, otherwise regenerate\n keys.signers.forEach((signer: Signer) => {\n this.ks.putPris(signer.verfer.qb64, signer, this.encrypter!);\n });\n } else if (this._encrypter == undefined && keys.paths != undefined) {\n keys.paths.forEach((path: string, idx: number) => {\n let signer = keys.signers[idx];\n let ppt = new PubPath();\n ppt.path = path;\n ppt.tier = pp!.tier;\n ppt.temp = temp;\n this.ks.putPths(signer.verfer.qb64, ppt);\n });\n } else {\n throw new Error(\n 'invalid configuration, randy keys without encryption'\n );\n }\n\n let newPs = new PubSet();\n newPs.pubs = ps.nxt.pubs;\n this.ks.putPubs(riKey(pre, ps.nxt.ridx), newPs);\n\n if (erase) {\n old.pubs.forEach((pub) => {\n this.ks.remPris(pub);\n });\n }\n\n return [verfers, digers];\n }\n\n sign({\n ser,\n pubs = undefined,\n verfers = undefined,\n indexed = true,\n indices = undefined,\n ondices = undefined,\n }: SignArgs) {\n let signers = new Array<Signer>();\n\n if (pubs == undefined && verfers == undefined) {\n throw new Error('pubs or verfers required');\n }\n\n if (pubs != undefined) {\n if (this.aeid != undefined && this.decrypter == undefined) {\n throw new Error(\n 'Unauthorized decryption attempt. Aeid but no decrypter.'\n );\n }\n\n pubs.forEach((pub) => {\n //If no decrypter then get SaltyState and regenerate prikey\n if (this.decrypter != undefined) {\n let signer = this.ks.getPris(pub, this.decrypter);\n if (signer == undefined) {\n throw new Error(\n `Missing prikey in db for pubkey=${pub}`\n );\n }\n signers.push(signer);\n } else {\n let verfer = new Verfer({ qb64: pub });\n let ppt = this.ks.getPths(pub);\n if (ppt == undefined) {\n throw new Error(\n `Missing prikey in db for pubkey=${pub}`\n );\n }\n let salter = new Salter({ qb64: this.salt });\n signers.push(\n salter.signer(\n ppt.code,\n verfer.transferable,\n ppt.path,\n ppt.tier as Tier,\n ppt.temp\n )\n );\n }\n });\n } else {\n verfers!.forEach((verfer: Verfer) => {\n if (this.decrypter != undefined) {\n let signer = this.ks.getPris(verfer.qb64, this.decrypter);\n if (signer == undefined) {\n throw new Error(\n `Missing prikey in db for pubkey=${verfer.qb64}`\n );\n }\n signers.push(signer);\n } else {\n let ppt = this.ks.getPths(verfer.qb64);\n if (ppt == undefined) {\n throw new Error(\n `Missing prikey in db for pubkey=${verfer.qb64}`\n );\n }\n let salter = new Salter({ qb64: this.salt });\n signers.push(\n salter.signer(\n ppt.code,\n verfer.transferable,\n ppt.path,\n ppt.tier as Tier,\n ppt.temp\n )\n );\n }\n });\n }\n\n if (indices != undefined && indices.length != signers.length) {\n throw new Error(\n `Mismatch indices length=${indices.length} and resultant signers length=${signers.length}`\n );\n }\n\n if (ondices != undefined && ondices.length != signers.length) {\n throw new Error(\n `Mismatch ondices length=${ondices.length} and resultant signers length=${signers.length}`\n );\n }\n\n if (indexed) {\n let sigers = new Array<Siger>();\n signers.forEach((signer, idx) => {\n let i;\n if (indices != undefined) {\n i = indices[idx];\n if (i < 0) {\n throw new Error(\n `Invalid signing index = ${i}, not whole number.`\n );\n }\n } else {\n i = idx;\n }\n\n let o;\n if (ondices != undefined) {\n o = ondices[idx];\n if (o <= 0) {\n throw new Error(\n `Invalid other signing index = {o}, not None or not whole number.`\n );\n }\n } else {\n o = i;\n }\n\n let only = o == undefined;\n sigers.push(signer.sign(ser, i, only, o) as Siger);\n });\n return sigers;\n } else {\n let cigars = new Array<Cigar>();\n signers.forEach((signer: Signer) => {\n cigars.push(signer.sign(ser) as Cigar);\n });\n\n return cigars;\n }\n }\n}\n\nexport function riKey(pre: string, ridx: number) {\n return pre + '.' + ridx.toString(16).padStart(32, '0');\n}\n\nexport interface KeyStore {\n getGbls(key: string): string | undefined;\n pinGbls(key: string, val: string): void;\n\n prmsElements(): Array<[string, PrePrm]>;\n getPrms(keys: string): PrePrm | undefined;\n pinPrms(keys: string, data: PrePrm): void;\n putPrms(keys: string, data: PrePrm): boolean;\n remPrms(keys: string): boolean;\n\n prisElements(decrypter: Decrypter): Array<[string, Signer]>;\n getPris(keys: string, decrypter: Decrypter): Signer | undefined;\n pinPris(keys: string, data: Signer, encrypter: Encrypter): void;\n putPris(pubKey: string, signer: Signer, encrypter: Encrypter): boolean;\n remPris(pubKey: string): void;\n\n getPths(pubKey: string): PubPath | undefined;\n putPths(pubKey: string, val: PubPath): boolean;\n pinPths(pubKey: string, val: PubPath): boolean;\n\n getPres(pre: string): Uint8Array | undefined;\n putPres(pre: string, val: Uint8Array): boolean;\n pinPres(pre: string, val: Uint8Array): boolean;\n\n getSits(keys: string): PreSit | undefined;\n putSits(pre: string, val: PreSit): boolean;\n pinSits(pre: string, val: PreSit): boolean;\n remSits(keys: string): boolean;\n\n getPubs(keys: string): PubSet | undefined;\n putPubs(keys: string, data: PubSet): boolean;\n}\n\n/*\n In memory test implementation of Keeper key store\n*/\n\nclass Keeper implements KeyStore {\n private readonly _gbls: Map<string, string>;\n private readonly _pris: Map<string, Uint8Array>;\n private readonly _pths: Map<string, PubPath>;\n private readonly _pres: Map<string, Uint8Array>;\n private readonly _prms: Map<string, PrePrm>;\n private readonly _sits: Map<string, PreSit>;\n private readonly _pubs: Map<string, PubSet>;\n\n constructor() {\n this._gbls = new Map<string, string>();\n this._pris = new Map<string, Uint8Array>();\n this._pths = new Map<string, PubPath>();\n this._pres = new Map<string, Uint8Array>();\n this._prms = new Map<string, PrePrm>();\n this._sits = new Map<string, PreSit>();\n this._pubs = new Map<string, PubSet>();\n }\n\n getGbls(key: string): string | undefined {\n return this._gbls.get(key);\n }\n\n pinGbls(key: string, val: string): void {\n this._gbls.set(key, val);\n }\n\n prmsElements(): Array<[string, PrePrm]> {\n let out = new Array<[string, PrePrm]>();\n this._prms.forEach((value, key) => {\n out.push([key, value]);\n });\n\n return out;\n }\n\n getPrms(keys: string): PrePrm | undefined {\n return this._prms.get(keys);\n }\n\n pinPrms(keys: string, data: PrePrm): void {\n this._prms.set(keys, data);\n }\n\n putPrms(keys: string, data: PrePrm): boolean {\n if (this._prms.has(keys)) {\n return false;\n }\n this._prms.set(keys, data);\n return true;\n }\n\n remPrms(keys: string): boolean {\n return this._prms.delete(keys);\n }\n\n prisElements(decrypter: Decrypter): Array<[string, Signer]> {\n let out = new Array<[string, Signer]>();\n this._pris.forEach(function (val, pubKey) {\n let verfer = new Verfer({ qb64: pubKey });\n let signer = decrypter.decrypt(val, null, verfer.transferable);\n out.push([pubKey, signer]);\n });\n return out;\n }\n\n pinPris(pubKey: string, signer: Signer, encrypter: Encrypter): void {\n let cipher = encrypter.encrypt(null, signer);\n this._pris.set(pubKey, cipher.qb64b);\n }\n\n putPris(pubKey: string, signer: Signer, encrypter: Encrypter): boolean {\n if (this._pris.has(pubKey)) {\n return false;\n }\n let cipher = encrypter.encrypt(null, signer);\n this._pris.set(pubKey, cipher.qb64b);\n return true;\n }\n\n getPris(pubKey: string, decrypter: Decrypter): Signer | undefined {\n let val = this._pris.get(pubKey);\n if (val == undefined) {\n return undefined;\n }\n let verfer = new Verfer({ qb64: pubKey });\n\n return decrypter.decrypt(val, null, verfer.transferable);\n }\n\n pinPths(pubKey: string, val: PubPath): boolean {\n this._pths.set(pubKey, val);\n return true;\n }\n\n putPths(pubKey: string, val: PubPath): boolean {\n if (this._pths.has(pubKey)) {\n return false;\n }\n\n this._pths.set(pubKey, val);\n return true;\n }\n\n getPths(pubKey: string): PubPath | undefined {\n return this._pths.get(pubKey);\n }\n\n remPris(pubKey: string): void {\n this._pris.delete(pubKey);\n }\n\n getPres(pre: string): Uint8Array | undefined {\n return this._pres.get(pre);\n }\n\n pinPres(pre: string, val: Uint8Array): boolean {\n this._pres.set(pre, val);\n return true;\n }\n\n putPres(pre: string, val: Uint8Array): boolean {\n if (this._pres.has(pre)) {\n return false;\n }\n\n this._pres.set(pre, val);\n return true;\n }\n\n getSits(keys: string): PreSit | undefined {\n return this._sits.get(keys);\n }\n\n putSits(pre: string, val: PreSit): boolean {\n if (this._sits.has(pre)) {\n return false;\n }\n\n this._sits.set(pre, val);\n return true;\n }\n\n pinSits(pre: string, val: PreSit): boolean {\n this._sits.set(pre, val);\n return true;\n }\n\n remSits(keys: string): boolean {\n return this._sits.delete(keys);\n }\n\n getPubs(keys: string): PubSet | undefined {\n return this._pubs.get(keys);\n }\n\n putPubs(keys: string, data: PubSet): boolean {\n if (this._pubs.has(keys)) {\n return false;\n }\n this._pubs.set(keys, data);\n return true;\n }\n}\n","import { Matter, MatterArgs, NumDex } from './matter';\nimport { bytesToInt, intToBytes } from './utils';\n\nexport class CesrNumber extends Matter {\n constructor(\n { raw, code, qb64b, qb64, qb2 }: MatterArgs,\n num?: number | string,\n numh?: string\n ) {\n let _num;\n if (\n raw == undefined &&\n qb64 == undefined &&\n qb64b == undefined &&\n qb2 == undefined\n ) {\n if (typeof num == 'number') {\n _num = num;\n } else if (numh != undefined) {\n _num = parseInt(numh, 16);\n } else {\n _num = 0;\n }\n }\n\n if (_num == undefined) {\n throw new Error('Invalid whole number');\n }\n\n if (_num <= 256 ** 2 - 1) {\n // make short version of code\n code = NumDex.Short;\n } else if (_num <= 256 ** 4 - 1) {\n // make long version of code\n code = code = NumDex.Long;\n } else if (_num <= 256 ** 8 - 1) {\n // make big version of code\n code = code = NumDex.Big;\n } else if (_num <= 256 ** 16 - 1) {\n // make huge version of code\n code = code = NumDex.Huge;\n } else {\n throw new Error('Invalid num = {num}, too large to encode.');\n }\n\n raw = intToBytes(_num, Matter._rawSize(code));\n\n super({ raw, code, qb64b, qb64, qb2 });\n\n if (!NumDex.has(this.code)) {\n throw new Error('Invalid code ' + code + ' for Number');\n }\n }\n\n get num(): number {\n return bytesToInt(this.raw);\n }\n\n get numh(): string {\n return this.num.toString(16);\n }\n\n get positive(): boolean {\n return this.num > 0;\n }\n}\n","import { BexDex, Matter, NumDex } from './matter';\nimport { CesrNumber } from './number';\nimport { Fraction } from 'mathjs';\nimport { math } from '../../index';\n\nexport class Tholder {\n private _weighted: boolean = false;\n private _thold: any = undefined;\n private _size: number = 0;\n private _number: CesrNumber | undefined = undefined;\n private _satisfy: any = undefined;\n\n // private _bexter: any\n\n constructor(kargs: { thold?: any; limen?: any; sith?: any }) {\n if (kargs.thold !== undefined) {\n this._processThold(kargs.thold);\n } else if (kargs.limen != undefined) {\n this._processLimen(kargs.limen);\n } else if (kargs.sith !== undefined) {\n this._processSith(kargs.sith);\n } else {\n throw new Error('Missing threshold expression');\n }\n }\n\n get weighted(): boolean {\n return this._weighted;\n }\n\n get thold(): any {\n return this._thold;\n }\n\n get size(): number {\n return this._size;\n }\n\n get limen(): any {\n return this._number?.qb64b;\n }\n\n get sith(): string {\n if (this.weighted) {\n let sith = this.thold.map((clause: Fraction[]) => {\n return clause.map((c) => {\n if (0 < Number(c) && Number(c) < 1) {\n return math.format(c, { fraction: 'ratio' });\n } else {\n return math.format(c, { fraction: 'decimal' });\n }\n });\n });\n if (sith.length == 1) {\n sith = sith[0];\n }\n\n return sith;\n } else {\n return this.thold.toString(16);\n }\n }\n\n get json(): string {\n return JSON.stringify(this.sith);\n }\n\n get num(): number | undefined {\n return this._weighted ? undefined : this._thold;\n }\n\n private _processThold(thold: number | Array<Array<Fraction>>) {\n if (typeof thold === 'number') {\n this._processUnweighted(thold);\n } else {\n this._processWeighted(thold);\n }\n }\n\n private _processLimen(limen: string) {\n let matter = new Matter({ qb64: limen });\n if (NumDex.has(matter.code)) {\n let number = new CesrNumber({ raw: matter.raw, code: matter.code });\n this._processUnweighted(number.num);\n } else if (BexDex.has(matter.code)) {\n // TODO: Implement Bexter\n } else {\n throw new Error('Invalid code for limen=' + matter.code);\n }\n }\n\n private _processSith(sith: string | number | Array<string>) {\n if (typeof sith == 'number') {\n this._processUnweighted(sith);\n } else if (typeof sith == 'string' && sith.indexOf('[') == -1) {\n this._processUnweighted(parseInt(sith, 16));\n } else {\n let _sith: any = sith;\n if (typeof sith == 'string') {\n _sith = JSON.parse(sith);\n }\n\n if (_sith.length == 0) {\n throw new Error('Empty weight list');\n }\n\n let mask = _sith.map((x: any) => {\n return typeof x !== 'string';\n });\n\n if (mask.length > 0 && !mask.every((x: boolean) => x)) {\n _sith = [_sith];\n }\n\n for (let c of _sith) {\n let mask = c.map((x: any) => {\n return typeof x === 'string';\n });\n if (mask.length > 0 && !mask.every((x: boolean) => x)) {\n throw new Error(\n 'Invalid sith, some weights in clause ' +\n mask +\n ' are non string'\n );\n }\n }\n\n let thold = this._processClauses(_sith);\n this._processWeighted(thold);\n }\n }\n\n private _processClauses(sith: Array<Array<string>>): Fraction[][] {\n let thold = new Array<Array<Fraction>>();\n sith.forEach((clause) => {\n thold.push(\n clause.map((w) => {\n return this.weight(w);\n })\n );\n });\n return thold;\n }\n\n private _processUnweighted(thold: number) {\n if (thold < 0) {\n throw new Error('Non-positive int threshold = {thold}.');\n }\n this._thold = thold;\n this._weighted = false;\n this._size = this._thold; // used to verify that keys list size is at least size\n this._satisfy = this._satisfy_numeric;\n this._number = new CesrNumber({}, thold);\n // this._bexter = undefined\n }\n\n private _processWeighted(thold: Array<Array<Fraction>>) {\n for (let clause of thold) {\n if (Number(math.sum(clause)) < 1) {\n throw new Error(\n 'Invalid sith clause: ' +\n thold +\n 'all clause weight sums must be >= 1'\n );\n }\n }\n\n this._thold = thold;\n this._weighted = true;\n this._size = thold.reduce((acc, currentValue) => {\n return acc + currentValue.length;\n }, 0);\n this._satisfy = this._satisfy_weighted;\n //TODO: created Bexter if needed\n }\n\n private weight(w: string): Fraction {\n return math.fraction(w);\n }\n\n private _satisfy_numeric(indices: any[]) {\n return this.thold > 0 && indices.length >= this.thold; // at least one\n }\n\n private _satisfy_weighted(indices: any) {\n if (indices.length === 0) {\n return false;\n }\n\n let indexes: Set<number> = new Set(indices.sort());\n let sats = new Array(indices.length).fill(false);\n for (let idx of indexes) {\n sats[idx] = true;\n }\n let wio = 0;\n for (let clause of this.thold) {\n let cw = 0;\n for (let w of clause) {\n if (sats[wio]) {\n cw += Number(w);\n }\n wio += 1;\n }\n if (cw < 1) {\n return false;\n }\n }\n\n return true;\n }\n\n public satisfy(indices: any): boolean {\n return this._satisfy(indices);\n }\n}\n","import { MtrDex } from './matter';\nimport {\n deversify,\n Dict,\n Ident,\n Serials,\n versify,\n Version,\n Versionage,\n} from './core';\nimport { Verfer } from './verfer';\nimport { Diger } from './diger';\n\nexport class Serder {\n private _kind: Serials;\n private _raw: string = '';\n private _ked: Dict<any> = {};\n private _ident: Ident = Ident.KERI;\n private _size: number = 0;\n private _version: Version = Versionage;\n private readonly _code: string;\n\n constructor(\n ked: Dict<any>,\n kind: Serials = Serials.JSON,\n code: string = MtrDex.Blake3_256\n ) {\n this._code = code;\n this._kind = kind;\n this.ked = ked;\n }\n\n set ked(ked: Dict<any>) {\n let [raw, ident, kind, kd, version] = this._exhale(ked, this._kind);\n let size = raw.length;\n this._raw = raw;\n this._ident = ident;\n this._ked = kd;\n this._kind = kind;\n this._size = size;\n this._version = version;\n }\n\n get pre(): string {\n return this._ked['i'];\n }\n\n get ked(): Dict<any> {\n return this._ked;\n }\n\n get code(): string {\n return this._code;\n }\n\n get raw(): string {\n return this._raw;\n }\n\n get kind(): Serials {\n return this._kind;\n }\n\n private _exhale(\n ked: Dict<any>,\n kind: Serials\n ): [string, Ident, Serials, Dict<any>, Version] {\n return sizeify(ked, kind);\n }\n\n get ident(): Ident {\n return this._ident;\n }\n\n get size(): number {\n return this._size;\n }\n\n get version(): Version {\n return this._version;\n }\n get verfers(): Verfer[] {\n let keys: any = [];\n if ('k' in this._ked) {\n // establishment event\n keys = this._ked['k'];\n } else {\n // non-establishment event\n keys = [];\n }\n // create a new Verfer for each key\n let verfers = [];\n for (let key of keys) {\n verfers.push(new Verfer({ qb64: key }));\n }\n return verfers;\n }\n\n get digers(): Diger[] {\n let keys: any = [];\n if ('n' in this._ked) {\n // establishment event\n keys = this._ked['n'];\n } else {\n // non-establishment event\n keys = [];\n }\n // create a new Verfer for each key\n let digers = [];\n for (let key of keys) {\n digers.push(new Diger({ qb64: key }));\n }\n return digers;\n }\n\n pretty() {\n return JSON.stringify(this._ked, undefined, 2);\n }\n}\n\nexport function dumps(ked: Object, kind: Serials.JSON): string {\n if (kind == Serials.JSON) {\n return JSON.stringify(ked);\n } else {\n throw new Error('unsupported event encoding');\n }\n}\n\nexport function sizeify(\n ked: Dict<any>,\n kind?: Serials\n): [string, Ident, Serials, Dict<any>, Version] {\n if (!('v' in ked)) {\n throw new Error('Missing or empty version string');\n }\n\n let [ident, knd, version] = deversify(ked['v'] as string);\n if (version != Versionage) {\n throw new Error(`unsupported version ${version.toString()}`);\n }\n\n if (kind == undefined) {\n kind = knd;\n }\n\n let raw = dumps(ked, kind);\n let size = raw.length;\n\n ked['v'] = versify(ident, version, kind, size);\n\n raw = dumps(ked, kind);\n\n return [raw, ident, kind, ked, version];\n}\n","import { Matter, MatterArgs, MtrDex } from './matter';\nimport { EmptyMaterialError } from './kering';\nimport { Dict, Ilks } from './core';\nimport { sizeify } from './serder';\nimport { Verfer } from './verfer';\n\nimport { createHash } from 'blake3';\n\nconst Dummy: string = '#';\n\nexport class Prefixer extends Matter {\n private readonly _derive: Function | undefined;\n private readonly _verify: Function | undefined;\n\n constructor({ raw, code, qb64b, qb64, qb2 }: MatterArgs, ked?: Dict<any>) {\n try {\n super({ raw, code, qb64b, qb64, qb2 });\n } catch (e) {\n if (e instanceof EmptyMaterialError) {\n if (ked == undefined || (code == undefined && !('i' in ked))) {\n throw e;\n }\n\n if (code == undefined) {\n super({ qb64: ked['i'], code: code });\n code = this.code;\n }\n\n let _derive;\n if (code == MtrDex.Ed25519N) {\n _derive = Prefixer._derive_ed25519N;\n } else if (code == MtrDex.Ed25519) {\n _derive = Prefixer._derive_ed25519;\n } else if (code == MtrDex.Blake3_256) {\n _derive = Prefixer._derive_blake3_256;\n } else {\n throw new Error(`Unsupported code = ${code} for prefixer.`);\n }\n\n [raw, code] = _derive(ked);\n super({ raw: raw, code: code });\n this._derive = _derive;\n } else {\n throw e;\n }\n }\n\n if (this.code == MtrDex.Ed25519N) {\n this._verify = this._verify_ed25519N;\n } else if (this.code == MtrDex.Ed25519) {\n this._verify = this._verify_ed25519;\n } else if (this.code == MtrDex.Blake3_256) {\n this._verify = this._verify_blake3_256;\n } else {\n throw new Error(`Unsupported code = ${code} for prefixer.`);\n }\n }\n\n derive(ked: Dict<any>): [Uint8Array, string] {\n if (ked['i'] != Ilks.icp) {\n throw new Error(\n `Non-incepting ilk ${ked['i']} for prefix derivation`\n );\n }\n return this._derive!(ked);\n }\n\n verify(ked: Dict<any>, prefixed: boolean = false): boolean {\n if (ked['i'] != Ilks.icp) {\n throw new Error(\n `Non-incepting ilk ${ked['i']} for prefix derivation`\n );\n }\n return this._verify!(ked, this.qb64, prefixed);\n }\n\n static _derive_ed25519N(ked: Dict<any>): [Uint8Array, string] {\n let verfer;\n let keys = ked['k'];\n if (keys.length != 1) {\n throw new Error(\n `Basic derivation needs at most 1 key got ${keys.length} keys instead`\n );\n }\n try {\n verfer = new Verfer({ qb64: keys[0] });\n } catch (e) {\n throw new Error(`Error extracting public key = ${e}`);\n }\n\n if (!(verfer.code in [MtrDex.Ed25519N])) {\n throw new Error(`Mismatch derivation code = ${verfer.code}`);\n }\n\n let next = 'n' in ked ? ked['n'] : [];\n if (verfer.code == MtrDex.Ed25519N && next.length > 0) {\n throw new Error(\n `Non-empty nxt = ${next} for non-transferable code = ${verfer.code}`\n );\n }\n\n let backers = 'b' in ked ? ked['b'] : [];\n if (verfer.code == MtrDex.Ed25519N && backers.length > 0) {\n throw new Error(\n `Non-empty b =${backers} for non-transferable code = ${verfer.code}`\n );\n }\n\n let anchor = 'a' in ked ? ked['a'] : [];\n if (verfer.code == MtrDex.Ed25519N && anchor.length > 0) {\n throw new Error(\n `Non-empty a = ${verfer.code} for non-transferable code = ${verfer.code}`\n );\n }\n\n return [verfer.raw, verfer.code];\n }\n\n static _derive_ed25519(ked: Dict<any>): [Uint8Array, string] {\n let verfer;\n let keys = ked['k'];\n if (keys.length != 1) {\n throw new Error(\n `Basic derivation needs at most 1 key got ${keys.length} keys instead`\n );\n }\n\n try {\n verfer = new Verfer({ qb64: keys[0] });\n } catch (e) {\n throw new Error(`Error extracting public key = ${e}`);\n }\n\n if (verfer.code in [MtrDex.Ed25519]) {\n throw new Error(`Mismatch derivation code = ${verfer.code}`);\n }\n\n return [verfer.raw, verfer.code];\n }\n\n static _derive_blake3_256(ked: Dict<any>): [Uint8Array, string] {\n let kd = ked;\n let ilk = ked['t'];\n if (![Ilks.icp, Ilks.dip, Ilks.vcp, Ilks.dip].includes(ilk)) {\n throw new Error(`Invalid ilk = ${ilk} to derive pre.`);\n }\n\n kd['i'] = ''.padStart(Matter.Sizes.get(MtrDex.Blake3_256)!.fs!, Dummy);\n kd['d'] = ked['i'];\n let [raw] = sizeify(ked);\n const hasher = createHash();\n const dig = hasher.update(raw).digest('');\n return [dig, MtrDex.Blake3_256];\n }\n\n _verify_ed25519N(\n ked: Dict<any>,\n pre: string,\n prefixed: boolean = false\n ): boolean {\n try {\n let keys = ked['k'];\n if (keys.length != 1) {\n return false;\n }\n\n if (keys[0] != pre) {\n return false;\n }\n\n if (prefixed && ked['i'] != pre) {\n return false;\n }\n\n let next = 'n' in ked ? ked['n'] : [];\n if (next.length > 0) {\n // must be empty\n return false;\n }\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n _verify_ed25519(\n ked: Dict<any>,\n pre: string,\n prefixed: boolean = false\n ): boolean {\n try {\n let keys = ked['k'];\n if (keys.length != 1) {\n return false;\n }\n\n if (keys[0] != pre) {\n return false;\n }\n\n if (prefixed && ked['i'] != pre) {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n _verify_blake3_256(\n ked: Dict<any>,\n pre: string,\n prefixed: boolean = false\n ): boolean {\n try {\n let [raw] = Prefixer._derive_blake3_256(ked);\n let crymat = new Matter({ raw: raw, code: MtrDex.Blake3_256 });\n if (crymat.qb64 != pre) {\n return false;\n }\n\n if (prefixed && ked['i'] != pre) {\n return false;\n }\n } catch (e) {\n return false;\n }\n return true;\n }\n}\n","import { DigiDex, Matter, MatterArgs, MtrDex } from './matter';\nimport { deversify, Dict, Serials } from './core';\nimport { EmptyMaterialError } from './kering';\nimport { dumps, sizeify } from './serder';\n\nimport { createHash } from 'blake3';\n\nconst Dummy = '#';\n\nexport enum Ids {\n d = 'd',\n}\n\nclass Digestage {\n public klas: any = undefined;\n public size: number | undefined = 0;\n public length: number | undefined = 0;\n constructor(klas: any, size?: number, length?: number) {\n this.klas = klas;\n this.size = size;\n this.length = length;\n }\n}\n\nexport class Saider extends Matter {\n static Digests = new Map<string, Digestage>([\n [\n MtrDex.Blake3_256,\n new Digestage(Saider._derive_blake3_256, undefined, undefined),\n ],\n ]);\n\n constructor(\n { raw, code, qb64b, qb64, qb2 }: MatterArgs,\n sad?: Dict<any>,\n kind?: Serials,\n label: string = Ids.d\n ) {\n try {\n super({ raw, code, qb64b, qb64, qb2 });\n } catch (e) {\n if (e instanceof EmptyMaterialError) {\n if (sad == undefined || !(label in sad)) {\n throw e;\n }\n\n if (code == undefined) {\n if (sad[label] != '') {\n super({ qb64: sad[label], code: code });\n code = this.code;\n } else {\n code = MtrDex.Blake3_256;\n }\n }\n\n if (!DigiDex.has(code)) {\n throw new Error(`Unsupported digest code = ${code}`);\n }\n\n [raw] = Saider._derive({ ...sad }, code, kind, label);\n super({ raw: raw, code: code });\n } else {\n throw e;\n }\n }\n\n if (!this.digestive) {\n throw new Error(`Unsupported digest code = ${this.code}.`);\n }\n }\n\n static _derive_blake3_256(\n ser: Uint8Array,\n _digest_size: number,\n _length: number\n ) {\n const hasher = createHash();\n return hasher.update(ser).digest('');\n }\n\n private static _derive(\n sad: Dict<any>,\n code: string,\n kind: Serials | undefined,\n label: string\n ): [Uint8Array, Dict<any>] {\n if (!DigiDex.has(code) || !Saider.Digests.has(code)) {\n throw new Error(`Unsupported digest code = ${code}.`);\n }\n\n sad = { ...sad };\n sad[label] = ''.padStart(Matter.Sizes.get(code)!.fs!, Dummy);\n if ('v' in sad) {\n [, , kind, sad] = sizeify(sad, kind);\n }\n\n let ser = { ...sad };\n\n let digestage = Saider.Digests.get(code);\n\n let cpa = Saider._serialze(ser, kind);\n let args: any[] = [];\n if (digestage!.size != undefined) {\n args.push(digestage!.size);\n }\n\n if (digestage!.length != undefined) {\n args.push(digestage!.length);\n }\n\n return [digestage!.klas(cpa, ...args), sad];\n }\n\n public derive(\n sad: Dict<any>,\n code: string,\n kind: Serials | undefined,\n label: string\n ): [Uint8Array, Dict<any>] {\n code = code != undefined ? code : this.code;\n return Saider._derive(sad, code, kind, label);\n }\n\n public verify(\n sad: Dict<any>,\n prefixed: boolean = false,\n versioned: boolean = false,\n kind?: Serials,\n label: string = Ids.d\n ): boolean {\n try {\n let [raw, dsad] = Saider._derive(sad, this.code, kind, label);\n let saider = new Saider({ raw: raw, code: this.code });\n if (this.qb64 != saider.qb64) {\n return false;\n }\n\n if ('v' in sad && versioned) {\n if (sad['v'] != dsad['v']) {\n return false;\n }\n }\n\n if (prefixed && sad[label] != this.qb64) {\n return false;\n }\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n private static _serialze(sad: Dict<any>, kind?: Serials): string {\n let knd = Serials.JSON;\n if ('v' in sad) {\n [, knd] = deversify(sad['v']);\n }\n\n if (kind == undefined) {\n kind = knd;\n }\n\n return dumps(sad, kind);\n }\n\n public static saidify(\n sad: Dict<any>,\n code: string = MtrDex.Blake3_256,\n kind: Serials = Serials.JSON,\n label: string = Ids.d\n ): [Saider, Dict<any>] {\n if (!(label in sad)) {\n throw new Error(`Missing id field labeled=${label} in sad.`);\n }\n let raw;\n [raw, sad] = Saider._derive(sad, code, kind, label);\n let saider = new Saider(\n { raw: raw, code: code },\n undefined,\n kind,\n label\n );\n sad[label] = saider.qb64;\n return [saider, sad];\n }\n}\n","import { Codex, Sizage } from './matter';\nimport { b, b64ToInt, d, intToB64 } from './core';\n\nexport interface CounterArgs {\n code?: string;\n count?: number;\n countB64?: string;\n qb64b?: Uint8Array;\n qb64?: string;\n qb2?: Uint8Array;\n strip?: boolean;\n}\n\nexport class CounterCodex extends Codex {\n public ControllerIdxSigs: string = '-A'; // Qualified Base64 Indexed Signature.\n public WitnessIdxSigs: string = '-B'; // Qualified Base64 Indexed Signature.\n public NonTransReceiptCouples: string = '-C'; // Composed Base64 Couple, pre+cig.\n public TransReceiptQuadruples: string = '-D'; // Composed Base64 Quadruple, pre+snu+dig+sig.\n public FirstSeenReplayCouples: string = '-E'; // Composed Base64 Couple, fnu+dts.\n public TransIdxSigGroups: string = '-F'; // Composed Base64 Group, pre+snu+dig+ControllerIdxSigs group.\n public SealSourceCouples: string = '-G'; // Composed Base64 couple, snu+dig of given delegators or issuers event\n public TransLastIdxSigGroups: string = '-H'; // Composed Base64 Group, pre+ControllerIdxSigs group.\n public SealSourceTriples: string = '-I'; // Composed Base64 triple, pre+snu+dig of anchoring source event\n public SadPathSig: string = '-J'; // Composed Base64 Group path+TransIdxSigGroup of SAID of content\n public SadPathSigGroup: string = '-K'; // Composed Base64 Group, root(path)+SaidPathCouples\n public PathedMaterialQuadlets: string = '-L'; // Composed Grouped Pathed Material Quadlet (4 char each)\n public AttachedMaterialQuadlets: string = '-V'; // Composed Grouped Attached Material Quadlet (4 char each)\n public BigAttachedMaterialQuadlets: string = '-0V'; // Composed Grouped Attached Material Quadlet (4 char each)\n public KERIProtocolStack: string = '--AAA'; // KERI ACDC Protocol Stack CESR Version\n}\n\nexport const CtrDex = new CounterCodex();\n\nexport class Counter {\n static Sizes = new Map(\n Object.entries({\n '-A': new Sizage(2, 2, 4, 0),\n '-B': new Sizage(2, 2, 4, 0),\n '-C': new Sizage(2, 2, 4, 0),\n '-D': new Sizage(2, 2, 4, 0),\n '-E': new Sizage(2, 2, 4, 0),\n '-F': new Sizage(2, 2, 4, 0),\n '-G': new Sizage(2, 2, 4, 0),\n '-H': new Sizage(2, 2, 4, 0),\n '-I': new Sizage(2, 2, 4, 0),\n '-J': new Sizage(2, 2, 4, 0),\n '-K': new Sizage(2, 2, 4, 0),\n '-L': new Sizage(2, 2, 4, 0),\n '-V': new Sizage(2, 2, 4, 0),\n '-0V': new Sizage(3, 5, 8, 0),\n '--AAA': new Sizage(5, 3, 8, 0),\n })\n );\n\n static Hards = new Map<string, number>([\n ['-A', 2],\n ['-B', 2],\n ['-C', 2],\n ['-D', 2],\n ['-E', 2],\n ['-F', 2],\n ['-G', 2],\n ['-H', 2],\n ['-I', 2],\n ['-J', 2],\n ['-K', 2],\n ['-L', 2],\n ['-M', 2],\n ['-N', 2],\n ['-O', 2],\n ['-P', 2],\n ['-Q', 2],\n ['-R', 2],\n ['-S', 2],\n ['-T', 2],\n ['-U', 2],\n ['-V', 2],\n ['-W', 2],\n ['-X', 2],\n ['-Y', 2],\n ['-Z', 2],\n ['-a', 2],\n ['-b', 2],\n ['-c', 2],\n ['-d', 2],\n ['-e', 2],\n ['-f', 2],\n ['-g', 2],\n ['-h', 2],\n ['-i', 2],\n ['-j', 2],\n ['-k', 2],\n ['-l', 2],\n ['-m', 2],\n ['-n', 2],\n ['-o', 2],\n ['-p', 2],\n ['-q', 2],\n ['-r', 2],\n ['-s', 2],\n ['-t', 2],\n ['-u', 2],\n ['-v', 2],\n ['-w', 2],\n ['-x', 2],\n ['-y', 2],\n ['-z', 2],\n ['-0', 3],\n ['--', 5],\n ]);\n\n private _code: string = '';\n private _count: number = -1;\n\n constructor({ code, count, countB64, qb64b, qb64, qb2 }: CounterArgs) {\n if (code != undefined) {\n if (!Counter.Sizes.has(code)) {\n throw new Error(`\"Unsupported code=${code}.`);\n }\n\n let sizage = Counter.Sizes.get(code)!;\n let cs = sizage.hs + sizage.ss;\n if (sizage.fs != cs || cs % 4 != 0) {\n throw new Error(\n `Whole code size not full size or not multiple of 4. cs=${cs} fs=${sizage.fs}.`\n );\n }\n\n if (count == undefined) {\n count = countB64 == undefined ? 1 : b64ToInt(countB64);\n }\n\n if (count < 0 || count > 64 ** sizage.ss - 1) {\n throw new Error(`Invalid count=${count} for code=${code}.`);\n }\n\n this._code = code;\n this._count = count;\n } else if (qb64b != undefined) {\n let qb64 = d(qb64b);\n this._exfil(qb64);\n } else if (qb64 != undefined) {\n this._exfil(qb64);\n } else if (qb2 != undefined) {\n } else {\n throw new Error(\n `Improper initialization need either (code and count) or qb64b or qb64 or qb2.`\n );\n }\n }\n\n get code(): string {\n return this._code;\n }\n\n get count() {\n return this._count;\n }\n\n get qb64() {\n return this._infil();\n }\n\n get qb64b() {\n return b(this.qb64);\n }\n\n countToB64(l?: number): string {\n if (l == undefined) {\n let sizage = Counter.Sizes.get(this.code)!;\n l = sizage.ss;\n }\n return intToB64(this.count, l);\n }\n\n static semVerToB64(\n version: string = '',\n major: number = 0,\n minor: number = 0,\n patch: number = 0\n ): string {\n let parts = [major, minor, patch];\n if (version != '') {\n let ssplits = version.split('.');\n let splits = ssplits.map((x) => {\n if (x == '') return 0;\n return parseInt(x);\n });\n\n let off = splits.length;\n let x = 3 - off;\n for (let i = 0; i < x; i++) {\n splits.push(parts[i + off]);\n }\n parts = splits;\n }\n\n parts.forEach((p) => {\n if (p < 0 || p > 63) {\n throw new Error(\n `Out of bounds semantic version. Part=${p} is < 0 or > 63.`\n );\n }\n });\n\n return parts\n .map((p) => {\n return intToB64(p, 1);\n })\n .join('');\n }\n\n private _infil(): string {\n let code = this.code;\n let count = this.count;\n\n let sizage = Counter.Sizes.get(code)!;\n let cs = sizage.hs + sizage.ss;\n if (sizage.fs != cs || cs % 4 != 0) {\n throw new Error(\n `Whole code size not full size or not multiple of 4. cs=${cs} fs=${sizage.fs}.`\n );\n }\n\n if (count < 0 || count > 64 ** sizage.ss - 1) {\n throw new Error(`Invalid count=${count} for code=${code}.`);\n }\n\n let both = `${code}${intToB64(count, sizage.ss)}`;\n\n if (both.length % 4) {\n throw new Error(\n `Invalid size = ${both.length} of ${both} not a multiple of 4.`\n );\n }\n\n return both;\n }\n\n private _exfil(qb64: string) {\n if (qb64.length == 0) {\n throw new Error('Empty Material');\n }\n\n let first = qb64.slice(0, 2);\n if (!Counter.Hards.has(first)) {\n throw new Error(`Unexpected code ${first}`);\n }\n\n let hs = Counter.Hards.get(first)!;\n if (qb64.length < hs) {\n throw new Error(`Need ${hs - qb64.length} more characters.`);\n }\n\n let hard = qb64.slice(0, hs);\n if (!Counter.Sizes.has(hard)) {\n throw new Error(`Unsupported code ${hard}`);\n }\n\n let sizage = Counter.Sizes.get(hard)!;\n let cs = sizage!.hs + sizage!.ss;\n\n if (qb64.length < cs) {\n throw new Error(`Need ${cs - qb64.length} more chars.`);\n }\n\n let scount = qb64.slice(sizage.hs, sizage.hs + sizage.ss);\n let count = b64ToInt(scount);\n\n this._code = hard;\n this._count = count;\n }\n}\n","import { Matter, MatterArgs, MtrDex } from './matter';\nimport { intToBytes, bytesToInt } from './utils';\n/**\n * @description Seqner: subclass of Matter, cryptographic material, for ordinal numbers\n * such as sequence numbers or first seen ordering numbers.\n * Seqner provides fully qualified format for ordinals (sequence numbers etc)\n * when provided as attached cryptographic material elements.\n */\nexport class Seqner extends Matter {\n constructor({\n raw,\n code = MtrDex.Salt_128,\n qb64,\n qb64b,\n qb2,\n sn,\n snh,\n ...kwa\n }: MatterArgs & { sn?: number; snh?: string }) {\n if (!raw && !qb64b && !qb64 && !qb2) {\n if (sn === undefined) {\n if (snh === undefined) {\n sn = 0;\n } else {\n sn = parseInt(snh, 16);\n }\n }\n\n raw = intToBytes(sn, Matter._rawSize(MtrDex.Salt_128));\n }\n\n super({ raw, code, qb64, qb64b, qb2, ...kwa });\n\n if (this.code !== MtrDex.Salt_128) {\n throw new Error(`Invalid code = ${this.code} for Seqner.`);\n }\n }\n\n get sn(): number {\n return bytesToInt(this.raw); //To check if other readUInt64 is needed\n }\n\n get snh(): string {\n return this.sn.toString(16);\n }\n}\n","import {\n b,\n concat,\n Dict,\n Ident,\n Ilks,\n Serials,\n versify,\n Version,\n Versionage,\n} from './core';\nimport { Tholder } from './tholder';\nimport { CesrNumber } from './number';\nimport { Prefixer } from './prefixer';\nimport { Serder } from './serder';\nimport { MtrDex, NonTransDex } from './matter';\nimport { Saider } from './saider';\nimport { Siger } from './siger';\nimport { Cigar } from './cigar';\nimport { Counter, CtrDex } from './counter';\nimport { Seqner } from './seqner';\nimport { TextEncoder } from 'util';\n\nlet MaxIntThold = 2 ** 32 - 1;\n\nexport interface RotateArgs {\n pre?: string;\n keys: Array<string>;\n dig?: string;\n ilk?: string;\n sn?: number;\n isith?: number | string | Array<string>;\n ndigs?: Array<string>;\n nsith?: number | string | Array<string>;\n toad?: number;\n wits?: Array<string>;\n cuts?: Array<string>;\n adds?: Array<string>;\n cnfg?: Array<string>;\n data?: Array<object>;\n version?: Version;\n kind?: Serials;\n size?: number;\n intive?: boolean;\n}\n\nexport function rotate({\n pre = undefined,\n keys,\n dig = undefined,\n ilk = Ilks.rot,\n sn = 1,\n isith = undefined,\n ndigs = undefined,\n nsith = undefined,\n wits = undefined,\n cuts = undefined,\n adds = undefined,\n toad = undefined,\n data = undefined,\n version = undefined,\n kind = undefined,\n intive = true,\n}: RotateArgs) {\n let vs = versify(Ident.KERI, version, kind, 0);\n let _ilk = ilk;\n if (_ilk != Ilks.rot && _ilk != Ilks.drt) {\n throw new Error(`Invalid ilk = ${ilk} for rot or drt.`);\n }\n\n let sner = Number(sn);\n if (sner < 1) {\n throw new Error(`Invalid sn = 0x${sner.toString()} for rot or drt.`);\n }\n let _isit: number;\n\n if (isith == undefined) {\n _isit = Math.max(1, Math.ceil(keys.length / 2));\n } else {\n _isit = isith as number;\n }\n\n let tholder = new Tholder({ sith: _isit });\n if (tholder.num != undefined && tholder.num < 1) {\n throw new Error(`Invalid sith = ${tholder.num} less than 1.`);\n }\n if (tholder.size > keys.length) {\n throw new Error(`Invalid sith = ${tholder.num} for keys = ${keys}`);\n }\n\n let _ndigs: Array<string>;\n\n if (ndigs === undefined) {\n _ndigs = [];\n } else {\n _ndigs = ndigs;\n }\n\n let _nsith;\n if (nsith === undefined) {\n _nsith = Math.max(1, Math.ceil(_ndigs.length / 2));\n } else {\n _nsith = nsith;\n }\n\n let ntholder = new Tholder({ sith: _nsith });\n if (ntholder.num != undefined && ntholder.num < 1) {\n throw new Error(`Invalid sith = ${ntholder.num} less than 1.`);\n }\n if (ntholder.size > _ndigs.length) {\n throw new Error(`Invalid sith = ${ntholder.num} for ndigs = ${ndigs}`);\n }\n\n let _wits: Array<string>;\n if (wits === undefined) {\n _wits = [];\n } else {\n _wits = wits;\n }\n let witset = new Set(_wits);\n if (witset.size != _wits.length) {\n throw new Error(`Invalid wits = ${wits}, has duplicates.`);\n }\n\n let _cuts: Array<string>;\n if (cuts === undefined) {\n _cuts = [];\n } else {\n _cuts = cuts;\n }\n let cutset = new Set(_cuts);\n if (cutset.size != _cuts.length) {\n throw new Error(`Invalid cuts = ${cuts}, has duplicates.`);\n }\n\n let _adds: Array<string>;\n if (adds === undefined) {\n _adds = [];\n } else {\n _adds = adds;\n }\n let addset = new Set(_adds);\n\n //non empty intersection of witset and addset\n let witaddset = new Set([...witset].filter((x) => addset.has(x)));\n if (witaddset.size > 0) {\n throw new Error(\n `Invalid member combination among wits = ${wits}, and adds = ${adds}.`\n );\n }\n\n // non empty intersection of cutset and addset\n let cutaddset = new Set([...cutset].filter((x) => addset.has(x)));\n if (cutaddset.size > 0) {\n throw new Error(\n `Invalid member combination among cuts = ${cuts}, and adds = ${adds}.`\n );\n }\n\n let newitsetdiff = new Set(_wits);\n _cuts.forEach(function (v) {\n newitsetdiff.delete(v);\n });\n let newitset = new Set(\n (function* () {\n yield* newitsetdiff;\n yield* addset;\n })()\n );\n\n if (newitset.size != witset.size - cutset.size + addset.size) {\n throw new Error(\n `Invalid member combination among wits = ${wits}, cuts = ${cuts}, and adds = ${adds}.`\n );\n }\n\n let _toad: number;\n\n if (toad === undefined) {\n if (newitset.size == 0) {\n _toad = 0;\n } else {\n _toad = ample(newitset.size);\n }\n } else {\n _toad = toad;\n }\n\n if (newitset.size > 0) {\n if (_toad < 1 || _toad > newitset.size) {\n throw new Error(`Invalid toad = ${_toad} for wit = ${wits}`);\n }\n } else {\n if (_toad != 0) {\n throw new Error(`Invalid toad = ${_toad} for wit = ${wits}`);\n }\n }\n let _ked = {\n v: vs,\n t: _ilk,\n d: '',\n i: pre,\n s: sner.toString(16),\n p: dig,\n kt:\n tholder.num &&\n intive &&\n tholder.num !== undefined &&\n tholder.num <= MaxIntThold\n ? tholder.num.toString(16)\n : tholder.sith,\n k: keys,\n nt:\n ntholder.num &&\n intive &&\n ntholder.num !== undefined &&\n ntholder.num <= MaxIntThold\n ? ntholder.num.toString(16)\n : ntholder.sith,\n n: _ndigs,\n bt:\n _toad && intive && _toad !== undefined && _toad <= MaxIntThold\n ? _toad\n : _toad.toString(16),\n br: cuts,\n ba: adds,\n a: data != undefined ? data : [],\n };\n let [, ked] = Saider.saidify(_ked);\n return new Serder(ked);\n}\n\nexport function ample(n: number, f?: number, weak = true) {\n n = Math.max(0, n); // no negatives\n let f1;\n if (f == undefined) {\n f1 = Math.max(1, Math.floor(Math.max(0, n - 1) / 3)); // least floor f subject to n >= 3*f+1\n\n let f2 = Math.max(1, Math.ceil(Math.max(0, n - 1) / 3)); // most Math.ceil f subject to n >= 3*f+1\n if (weak) {\n // try both fs to see which one has lowest m\n return Math.min(\n n,\n Math.ceil((n + f1 + 1) / 2),\n Math.ceil((n + f2 + 1) / 2)\n );\n } else {\n return Math.min(\n n,\n Math.max(0, n - f1, Math.ceil((n + f1 + 1) / 2))\n );\n }\n } else {\n f = Math.max(0, f);\n let m1 = Math.ceil((n + f + 1) / 2);\n let m2 = Math.max(0, n - f);\n if (m2 < m1 && n > 0) {\n throw new Error(`Invalid f=${f} is too big for n=${n}.`);\n }\n if (weak) {\n return Math.min(n, m1, m2);\n } else {\n return Math.min(n, Math.max(m1, m2));\n }\n }\n}\n\nexport interface InceptArgs {\n keys: Array<string>;\n isith?: number | string | Array<string>;\n ndigs?: Array<string>;\n nsith?: number | string | Array<string>;\n toad?: number | string;\n wits?: Array<string>;\n cnfg?: Array<string>;\n data?: Array<object>;\n version?: Version;\n kind?: Serials;\n code?: string;\n intive?: boolean;\n delpre?: string;\n}\n\nexport function incept({\n keys,\n isith,\n ndigs,\n nsith,\n toad,\n wits,\n cnfg,\n data,\n version = Versionage,\n kind = Serials.JSON,\n code,\n intive = false,\n delpre,\n}: InceptArgs) {\n let vs = versify(Ident.KERI, version, kind, 0);\n let ilk = delpre == undefined ? Ilks.icp : Ilks.dip;\n let sner = new CesrNumber({}, 0);\n\n if (isith == undefined) {\n isith = Math.max(1, Math.ceil(keys.length / 2));\n }\n\n let tholder = new Tholder({ sith: isith });\n if (tholder.num != undefined && tholder.num < 1) {\n throw new Error(`Invalid sith = ${tholder.num} less than 1.`);\n }\n if (tholder.size > keys.length) {\n throw new Error(`Invalid sith = ${tholder.num} for keys ${keys}`);\n }\n\n if (ndigs == undefined) {\n ndigs = new Array<string>();\n }\n\n if (nsith == undefined) {\n nsith = Math.max(0, Math.ceil(ndigs.length / 2));\n }\n\n let ntholder = new Tholder({ sith: nsith });\n if (ntholder.num != undefined && ntholder.num < 0) {\n throw new Error(`Invalid nsith = ${ntholder.num} less than 0.`);\n }\n if (ntholder.size > keys.length) {\n throw new Error(`Invalid nsith = ${ntholder.num} for keys ${ndigs}`);\n }\n\n wits = wits == undefined ? [] : wits;\n if (new Set(wits).size != wits.length) {\n throw new Error(`Invalid wits = ${wits}, has duplicates.`);\n }\n\n if (toad == undefined) {\n if (wits.length == 0) {\n toad = 0;\n } else {\n toad = ample(wits.length);\n }\n }\n\n let toader = new CesrNumber({}, toad);\n if (wits.length > 0) {\n if (toader.num < 1 || toader.num > wits.length) {\n throw new Error(`Invalid toad = ${toader.num} for wits = ${wits}`);\n }\n } else {\n if (toader.num != 0) {\n throw new Error(`Invalid toad = ${toader.num} for wits = ${wits}`);\n }\n }\n\n cnfg = cnfg == undefined ? new Array<string>() : cnfg;\n data = data == undefined ? new Array<object>() : data;\n\n let ked = {\n v: vs,\n t: ilk,\n d: '',\n i: '',\n s: sner.numh,\n kt: intive && tholder.num != undefined ? tholder.num : tholder.sith,\n k: keys,\n nt: intive && tholder.num != undefined ? ntholder.num : ntholder.sith,\n n: ndigs,\n bt: intive ? toader.num : toader.numh,\n b: wits,\n c: cnfg,\n a: data,\n } as Dict<any>;\n\n if (delpre != undefined) {\n ked['di'] = delpre;\n if (code == undefined) {\n code = MtrDex.Blake3_256;\n }\n }\n\n let prefixer;\n if (delpre == undefined && code == undefined && keys.length == 1) {\n prefixer = new Prefixer({ qb64: keys[0] });\n if (prefixer.digestive) {\n throw new Error(\n `Invalid code, digestive=${prefixer.code}, must be derived from ked.`\n );\n }\n } else {\n prefixer = new Prefixer({ code: code }, ked);\n if (delpre != undefined) {\n if (!prefixer.digestive) {\n throw new Error(\n `Invalid derivation code = ${prefixer.code} for delegation. Must be digestive`\n );\n }\n }\n }\n\n ked['i'] = prefixer.qb64;\n if (prefixer.digestive) {\n ked['d'] = prefixer.qb64;\n } else {\n [, ked] = Saider.saidify(ked);\n }\n\n return new Serder(ked);\n}\n\nexport function messagize(\n serder: Serder,\n sigers?: Array<Siger>,\n seal?: any,\n wigers?: Array<Cigar>,\n cigars?: Array<Cigar>,\n pipelined: boolean = false\n): Uint8Array {\n let msg = new Uint8Array(b(serder.raw));\n let atc = new Uint8Array();\n\n if (sigers == undefined && wigers == undefined && cigars == undefined) {\n throw new Error(\n `Missing attached signatures on message = ${serder.ked}.`\n );\n }\n\n if (sigers != undefined) {\n if (seal != undefined) {\n if (seal[0] == 'SealEvent') {\n atc = concat(\n atc,\n new Counter({ code: CtrDex.TransIdxSigGroups, count: 1 })\n .qb64b\n );\n atc = concat(atc, new TextEncoder().encode(seal[1].i));\n atc = concat(atc, new Seqner(seal[1].s).qb64b);\n atc = concat(atc, new TextEncoder().encode(seal[1].d));\n } else if (seal[0] == 'SealLast') {\n atc = concat(\n atc,\n new Counter({\n code: CtrDex.TransLastIdxSigGroups,\n count: 1,\n }).qb64b\n );\n atc = concat(atc, new TextEncoder().encode(seal[1].i));\n }\n }\n\n atc = concat(\n atc,\n new Counter({\n code: CtrDex.ControllerIdxSigs,\n count: sigers.length,\n }).qb64b\n );\n sigers.forEach((siger) => {\n atc = concat(atc, siger.qb64b);\n });\n }\n\n if (wigers != undefined) {\n atc = concat(\n atc,\n new Counter({\n code: CtrDex.ControllerIdxSigs,\n count: wigers.length,\n }).qb64b\n );\n\n wigers.forEach((wiger) => {\n if (wiger.verfer && !(wiger.verfer.code in NonTransDex)) {\n throw new Error(\n `Attempt to use tranferable prefix=${wiger.verfer.qb64} for receipt.`\n );\n }\n atc = concat(atc, wiger.qb64b);\n });\n }\n\n if (cigars != undefined) {\n atc = concat(\n atc,\n new Counter({\n code: CtrDex.ControllerIdxSigs,\n count: cigars.length,\n }).qb64b\n );\n\n cigars.forEach((cigar) => {\n if (cigar.verfer && !(cigar.verfer.code in NonTransDex)) {\n throw new Error(\n `Attempt to use tranferable prefix=${cigar.verfer.qb64} for receipt.`\n );\n }\n atc = concat(atc, cigar.qb64b);\n });\n }\n\n if (pipelined) {\n if (atc.length % 4 != 0) {\n throw new Error(\n `Invalid attachments size=${atc.length}, nonintegral quadlets.`\n );\n }\n msg = concat(\n msg,\n new Counter({\n code: CtrDex.AttachedMaterialQuadlets,\n count: Math.floor(atc.length / 4),\n }).qb64b\n );\n }\n msg = concat(msg, atc);\n return msg;\n}\n\ninterface InteractArgs {\n pre: String;\n dig: String;\n sn: number;\n data: Array<any>;\n version: Version | undefined;\n kind: Serials | undefined;\n}\n\nexport function interact(args: InteractArgs): Serder {\n let { pre, dig, sn, data, version, kind } = args;\n let vs = versify(Ident.KERI, version, kind, 0);\n let ilk = Ilks.ixn;\n let sner = new CesrNumber({}, sn);\n\n if (sner.num < 1) {\n throw new Error(`Invalid sn = 0x${sner.numh} for ixn.`);\n }\n\n data = data == undefined ? new Array<any>() : data;\n\n let ked = {\n v: vs,\n t: ilk,\n d: '',\n i: pre,\n s: sner.numh,\n p: dig,\n a: data,\n } as Dict<any>;\n\n [, ked] = Saider.saidify(ked);\n\n return new Serder(ked);\n}\n\nexport function reply(\n route: string = '',\n data: any | undefined,\n stamp: string | undefined,\n version: Version | undefined,\n kind: Serials = Serials.JSON\n) {\n const vs = versify(Ident.KERI, version, kind, 0);\n if (data == undefined) {\n data = {};\n }\n const _sad = {\n v: vs,\n t: Ilks.rpy,\n d: '',\n dt: stamp ?? new Date().toISOString().replace('Z', '000+00:00'),\n r: route,\n a: data,\n };\n const [, sad] = Saider.saidify(_sad);\n const saider = new Saider({ qb64: sad['d'] });\n\n if (!saider.verify(sad, true, true, kind, 'd'))\n throw new Error(`Invalid said = ${saider.qb64} for reply msg=${sad}.`);\n return new Serder(sad);\n}\n","import { Algos, Manager } from '../core/manager';\nimport { MtrDex } from '../core/matter';\nimport { Salter } from '../core/salter';\nimport { Verfer } from '../core/verfer';\nimport { Diger } from '../core/diger';\nimport { incept } from '../core/eventing';\nimport { Serder } from '../core/serder';\n\nexport class TraitCodex {\n EstOnly: string = 'EO'; // Only allow establishment events\n DoNotDelegate: string = 'DND'; // Dot not allow delegated identifiers\n NoBackers: string = 'NB'; // Do not allow backers\n}\n\nexport const TraitDex = new TraitCodex();\n\nexport interface HaberyArgs {\n name: string;\n passcode?: string;\n seed?: string | undefined;\n aeid?: string | undefined;\n pidx?: number | undefined;\n salt?: string | undefined;\n tier?: string | undefined;\n}\n\nexport interface MakeHabArgs {\n code?: string;\n transferable?: boolean;\n isith?: string;\n icount?: number;\n nsith?: string;\n ncount?: number;\n toad?: string | number;\n wits?: Array<string>;\n delpre?: string;\n estOnly?: boolean;\n DnD?: boolean;\n data?: any;\n}\n\nexport class Hab {\n public name: string;\n public serder: Serder;\n\n constructor(name: string, icp: Serder) {\n this.name = name;\n this.serder = icp;\n }\n\n get pre(): string {\n return this.serder.ked['i'];\n }\n}\n\nexport class Habery {\n private readonly _name: string;\n private readonly _mgr: Manager;\n private readonly _habs: Map<string, Hab> = new Map<string, Hab>();\n\n constructor({ name, passcode, seed, aeid, pidx, salt }: HaberyArgs) {\n this._name = name;\n if (passcode != undefined && seed == undefined) {\n if (passcode.length < 21) {\n throw new Error('Bran (passcode seed material) too short.');\n }\n\n let bran = MtrDex.Salt_128 + 'A' + passcode.substring(0, 21); // qb64 salt for seed\n let signer = new Salter({ qb64: bran }).signer(\n MtrDex.Ed25519_Seed,\n false\n );\n seed = signer.qb64;\n if (aeid == undefined) {\n aeid = signer.verfer.qb64; // lest it remove encryption\n }\n }\n let algo;\n let salter = salt != undefined ? new Salter({ qb64: salt }) : undefined;\n if (salt != undefined) {\n algo = Algos.salty;\n } else {\n algo = Algos.randy;\n }\n\n this._mgr = new Manager({\n seed: seed,\n aeid: aeid,\n pidx: pidx,\n algo: algo,\n salter: salter,\n });\n }\n\n get mgr(): Manager {\n return this._mgr;\n }\n\n get habs(): Array<Hab> {\n return Array.from(this._habs.values());\n }\n\n habByName(name: string): Hab | undefined {\n return this._habs.get(name);\n }\n\n makeHab(\n name: string,\n {\n code = MtrDex.Blake3_256,\n transferable = true,\n isith = undefined,\n icount = 1,\n nsith = undefined,\n ncount = undefined,\n toad = undefined,\n wits = undefined,\n delpre = undefined,\n estOnly = false,\n DnD = false,\n data = undefined,\n }: MakeHabArgs\n ): Hab {\n if (nsith == undefined) {\n nsith = isith;\n }\n if (ncount == undefined) {\n ncount = icount;\n }\n if (!transferable) {\n ncount = 0;\n nsith = '0';\n code = MtrDex.Ed25519N;\n }\n\n let [verfers, digers] = this._mgr.incept({\n icount: icount,\n ncount: ncount,\n stem: this.name,\n transferable: transferable,\n temp: false,\n });\n\n icount = verfers.length;\n ncount = digers != undefined ? digers.length : 0;\n if (isith == undefined) {\n isith = `${Math.max(1, Math.ceil(icount / 2)).toString(16)}`;\n }\n if (nsith == undefined) {\n nsith = `${Math.max(1, Math.ceil(ncount / 2)).toString(16)}`;\n }\n\n let cnfg = new Array<string>();\n if (estOnly) {\n cnfg.push(TraitDex.EstOnly);\n }\n if (DnD) {\n cnfg.push(TraitDex.DoNotDelegate);\n }\n\n let keys = Array.from(verfers, (verfer: Verfer) => verfer.qb64);\n let ndigs = Array.from(digers, (diger: Diger) => diger.qb64);\n\n const icp = incept({\n keys,\n isith,\n ndigs,\n nsith,\n toad,\n wits,\n cnfg,\n data,\n code,\n delpre,\n });\n const hab = new Hab(name, icp);\n this._habs.set(name, hab);\n return hab;\n }\n\n get name(): string {\n return this._name;\n }\n}\n","import { SaltyCreator } from '../core/manager';\nimport { Salter, Tier } from '../core/salter';\nimport { MtrDex } from '../core/matter';\nimport { Diger } from '../core/diger';\nimport { incept, rotate, interact } from '../core/eventing';\nimport { Serder } from '../core/serder';\nimport { Tholder } from '../core/tholder';\nimport { Ilks, b, Serials, Versionage } from '../core/core';\nimport { Verfer } from '../core/verfer';\nimport { Encrypter } from '../core/encrypter';\nimport { Decrypter } from '../core/decrypter';\nimport { Cipher } from '../core/cipher';\nimport { Seqner } from '../core/seqner';\nimport { CesrNumber } from '../core/number';\n\n/**\n * Agent is a custodial entity that can be used in conjuntion with a local Client to establish the\n * KERI \"signing at the edge\" semantic\n */\nexport class Agent {\n pre: string;\n anchor: string;\n verfer: Verfer | null;\n state: any | null;\n sn: number | undefined;\n said: string | undefined;\n\n constructor(agent: any) {\n this.pre = '';\n this.anchor = '';\n this.verfer = null;\n this.state = null;\n this.sn = 0;\n this.said = '';\n this.parse(agent);\n }\n\n private parse(agent: Agent) {\n let [state, verfer] = this.event(agent);\n\n this.sn = new CesrNumber({}, undefined, state['s']).num;\n this.said = state['d'];\n\n if (state['et'] !== Ilks.dip) {\n throw new Error(`invalid inception event type ${state['et']}`);\n }\n\n this.pre = state['i'];\n if (!state['di']) {\n throw new Error('no anchor to controller AID');\n }\n\n this.anchor = state['di'];\n\n this.verfer = verfer;\n this.state = state;\n }\n\n private event(evt: any): [any, Verfer, Diger] {\n if (evt['k'].length !== 1) {\n throw new Error(`agent inception event can only have one key`);\n }\n\n let verfer = new Verfer({ qb64: evt['k'][0] });\n\n if (evt['n'].length !== 1) {\n throw new Error(`agent inception event can only have one next key`);\n }\n\n let diger = new Diger({ qb64: evt['n'][0] });\n\n let tholder = new Tholder({ sith: evt['kt'] });\n if (tholder.num !== 1) {\n throw new Error(`invalid threshold ${tholder.num}, must be 1`);\n }\n\n let ntholder = new Tholder({ sith: evt['nt'] });\n if (ntholder.num !== 1) {\n throw new Error(\n `invalid next threshold ${ntholder.num}, must be 1`\n );\n }\n return [evt, verfer, diger];\n }\n}\n\n/**\n * Controller is responsible for managing signing keys for the client and agent. The client\n * signing key represents the Account for the client on the agent\n */\nexport class Controller {\n private bran: string;\n public stem: string;\n public tier: Tier;\n public ridx: number;\n public salter: any;\n public signer: any;\n private nsigner: any;\n public serder: Serder;\n private keys: string[];\n public ndigs: string[];\n\n constructor(\n bran: string,\n tier: Tier,\n ridx: number = 0,\n state: any | null = null\n ) {\n this.bran = MtrDex.Salt_128 + 'A' + bran.substring(0, 21); // qb64 salt for seed\n this.stem = 'signify:controller';\n this.tier = tier;\n this.ridx = ridx;\n\n this.salter = new Salter({ qb64: this.bran, tier: this.tier });\n\n let creator = new SaltyCreator(this.salter.qb64, this.tier, this.stem);\n\n this.signer = creator\n .create(\n undefined,\n 1,\n MtrDex.Ed25519_Seed,\n true,\n 0,\n this.ridx,\n 0,\n false\n )\n .signers.pop();\n this.nsigner = creator\n .create(\n undefined,\n 1,\n MtrDex.Ed25519_Seed,\n true,\n 0,\n this.ridx + 1,\n 0,\n false\n )\n .signers.pop();\n this.keys = [this.signer.verfer.qb64];\n this.ndigs = [\n new Diger({ code: MtrDex.Blake3_256 }, this.nsigner.verfer.qb64b)\n .qb64,\n ];\n\n if (state == null || state['ee']['s'] == 0) {\n this.serder = incept({\n keys: this.keys,\n isith: '1',\n nsith: '1',\n ndigs: this.ndigs,\n code: MtrDex.Blake3_256,\n toad: '0',\n wits: [],\n });\n } else {\n this.serder = new Serder(state['ee']);\n }\n }\n\n approveDelegation(_agent: Agent) {\n let seqner = new Seqner({ sn: _agent.sn });\n let anchor = { i: _agent.pre, s: seqner.snh, d: _agent.said };\n let sn = new CesrNumber({}, undefined, this.serder.ked['s']).num + 1;\n this.serder = interact({\n pre: this.serder.pre,\n dig: this.serder.ked['d'],\n sn: sn,\n data: [anchor],\n version: Versionage,\n kind: Serials.JSON,\n });\n return [this.signer.sign(this.serder.raw, 0).qb64];\n }\n\n get pre(): string {\n return this.serder.pre;\n }\n\n get event() {\n let siger = this.signer.sign(this.serder.raw, 0);\n return [this.serder, siger];\n }\n\n get verfers(): [] {\n return this.signer.verfer();\n }\n\n derive(state: any) {\n if (state != undefined && state['ee']['s'] === '0') {\n return incept({\n keys: this.keys,\n isith: '1',\n nsith: '1',\n ndigs: this.ndigs,\n code: MtrDex.Blake3_256,\n toad: '0',\n wits: [],\n });\n } else {\n return new Serder({ ked: state.controller['ee'] });\n }\n }\n\n rotate(bran: string, aids: Array<any>) {\n let nbran = MtrDex.Salt_128 + 'A' + bran.substring(0, 21); // qb64 salt for seed\n let nsalter = new Salter({ qb64: nbran, tier: this.tier });\n let nsigner = this.salter.signer(undefined, false);\n\n let creator = new SaltyCreator(this.salter.qb64, this.tier, this.stem);\n let signer = creator\n .create(\n undefined,\n 1,\n MtrDex.Ed25519_Seed,\n true,\n 0,\n this.ridx + 1,\n 0,\n false\n )\n .signers.pop();\n\n let ncreator = new SaltyCreator(nsalter.qb64, this.tier, this.stem);\n this.signer = ncreator\n .create(\n undefined,\n 1,\n MtrDex.Ed25519_Seed,\n true,\n 0,\n this.ridx,\n 0,\n false\n )\n .signers.pop();\n this.nsigner = ncreator\n .create(\n undefined,\n 1,\n MtrDex.Ed25519_Seed,\n true,\n 0,\n this.ridx + 1,\n 0,\n false\n )\n .signers.pop();\n\n this.keys = [this.signer.verfer.qb64, signer?.verfer.qb64];\n this.ndigs = [new Diger({}, this.nsigner.verfer.qb64b).qb64];\n\n let rot = rotate({\n pre: this.pre,\n keys: this.keys,\n dig: this.serder.ked['d'],\n isith: ['1', '0'],\n nsith: '1',\n ndigs: this.ndigs,\n });\n\n let sigs = [\n signer?.sign(b(rot.raw), 1, false, 0).qb64,\n this.signer.sign(rot.raw, 0).qb64,\n ];\n let encrypter = new Encrypter({}, b(nsigner.verfer.qb64));\n let decrypter = new Decrypter({}, nsigner.qb64b);\n let sxlt = encrypter.encrypt(b(this.bran)).qb64;\n\n let keys: Record<any, any> = {};\n\n for (let aid of aids) {\n let pre: string = aid['prefix'] as string;\n if ('salty' in aid) {\n console.log('salty aid to rotate');\n console.log(aid);\n let salty: any = aid['salty'];\n let cipher = new Cipher({ qb64: salty['sxlt'] });\n let dnxt = decrypter.decrypt(null, cipher).qb64;\n\n // Now we have the AID salt, use it to verify against the current public keys\n let acreator = new SaltyCreator(\n dnxt,\n salty['tier'],\n salty['stem']\n );\n let signers = acreator.create(\n salty['icodes'],\n undefined,\n MtrDex.Ed25519_Seed,\n salty['transferable'],\n salty['pidx'],\n 0,\n salty['kidx'],\n false\n );\n let _signers = [];\n for (let signer of signers.signers) {\n _signers.push(signer.verfer.qb64);\n }\n let pubs = aid['state']['k'];\n\n if (pubs.join(',') != _signers.join(',')) {\n throw new Error('Invalid Salty AID');\n }\n\n let asxlt = encrypter.encrypt(b(dnxt)).qb64;\n keys[pre] = {\n sxlt: asxlt,\n };\n } else if ('randy' in aid) {\n let randy = aid['randy'];\n let prxs = randy['prxs'];\n let nxts = randy['nxts'];\n\n let nprxs = [];\n let signers = [];\n for (let prx of prxs) {\n let cipher = new Cipher({ qb64: prx });\n let dsigner = decrypter.decrypt(null, cipher, true);\n signers.push(dsigner);\n nprxs.push(encrypter.encrypt(b(dsigner.qb64)).qb64);\n }\n let pubs = aid['state']['k'];\n let _signers = [];\n for (let signer of signers) {\n _signers.push(signer.verfer.qb64);\n }\n\n if (pubs.join(',') != _signers.join(',')) {\n throw new Error(\n `unable to rotate, validation of encrypted public keys ${pubs} failed`\n );\n }\n\n let nnxts = [];\n for (let nxt of nxts) {\n nnxts.push(this.recrypt(nxt, decrypter, encrypter));\n }\n\n keys[pre] = {\n prxs: nprxs,\n nxts: nnxts,\n };\n } else {\n throw new Error('invalid aid type ');\n }\n }\n\n let data = {\n rot: rot.ked,\n sigs: sigs,\n sxlt: sxlt,\n keys: keys,\n };\n return data;\n }\n\n recrypt(enc: string, decrypter: Decrypter, encrypter: Encrypter) {\n let cipher = new Cipher({ qb64: enc });\n let dnxt = decrypter.decrypt(null, cipher).qb64;\n return encrypter.encrypt(b(dnxt)).qb64;\n }\n}\n","import {\n serializeDictionary,\n Dictionary,\n parseDictionary,\n Item,\n Parameters,\n} from 'structured-headers';\nimport { Signer } from './signer';\nimport { b } from './core';\nimport { Cigar } from './cigar';\nimport { nowUTC } from './utils';\nimport { Siger } from './siger';\nimport Base64 from 'urlsafe-base64';\nimport { Buffer } from 'buffer';\n\nexport function normalize(header: string) {\n return header.trim();\n}\n\nexport interface SiginputArgs {\n name: string;\n method: string;\n path: string;\n headers: Headers;\n fields: Array<string>;\n expires?: number;\n nonce?: string;\n alg?: string;\n keyid?: string;\n context?: string;\n}\n\nexport function siginput(\n signer: Signer,\n {\n name,\n method,\n path,\n headers,\n fields,\n expires,\n nonce,\n alg,\n keyid,\n context,\n }: SiginputArgs\n): [Map<string, string>, Siger | Cigar] {\n let items = new Array<string>();\n let ifields = new Array<[string, Map<string, string>]>();\n\n fields.forEach((field) => {\n if (field.startsWith('@')) {\n switch (field) {\n case '@method':\n items.push(`\"${field}\": ${method}`);\n ifields.push([field, new Map()]);\n break;\n case '@path':\n items.push(`\"${field}\": ${path}`);\n ifields.push([field, new Map()]);\n break;\n }\n } else {\n if (!headers.has(field)) return;\n\n ifields.push([field, new Map()]);\n let value = normalize(headers.get(field)!);\n items.push(`\"${field}\": ${value}`);\n }\n });\n\n let nameParams = new Map<string, string | number>();\n let now = Math.floor(nowUTC().getTime() / 1000);\n nameParams.set('created', now);\n\n let values = [\n `(${ifields.map((field) => field[0]).join(' ')})`,\n `created=${now}`,\n ];\n if (expires != undefined) {\n values.push(`expires=${expires}`);\n nameParams.set('expires', expires);\n }\n if (nonce != undefined) {\n values.push(`nonce=${nonce}`);\n nameParams.set('nonce', nonce);\n }\n if (keyid != undefined) {\n values.push(`keyid=${keyid}`);\n nameParams.set('keyid', keyid);\n }\n if (context != undefined) {\n values.push(`context=${context}`);\n nameParams.set('context', context);\n }\n if (alg != undefined) {\n values.push(`alg=${alg}`);\n nameParams.set('alg', alg);\n }\n let sid = new Map([[name, [ifields, nameParams]]]);\n\n let params = values.join(';');\n items.push(`\"@signature-params: ${params}\"`);\n\n let ser = items.join('\\n');\n let sig = signer.sign(b(ser));\n\n return [\n new Map<string, string>([\n ['Signature-Input', `${serializeDictionary(sid as Dictionary)}`],\n ]),\n sig,\n ];\n}\n\nexport class Unqualified {\n private readonly _raw: Uint8Array;\n\n constructor(raw: Uint8Array) {\n this._raw = raw;\n }\n\n get qb64(): string {\n return Base64.encode(Buffer.from(this._raw));\n }\n\n get qb64b(): Uint8Array {\n return b(this.qb64);\n }\n}\n\nexport class Inputage {\n public name: any;\n public fields: any;\n public created: any;\n public expires: any;\n public nonce: any;\n public alg: any;\n public keyid: any;\n public context: any;\n}\n\nexport function desiginput(value: string): Array<Inputage> {\n let sid = parseDictionary(value);\n let siginputs = new Array<Inputage>();\n\n sid.forEach((value, key) => {\n let siginput = new Inputage();\n siginput.name = key;\n let list: Item[];\n let params;\n [list, params] = value as [Item[], Parameters];\n siginput.fields = list.map((item) => item[0]);\n\n if (!params.has('created')) {\n throw new Error(\n 'missing required `created` field from signature input'\n );\n }\n siginput.created = params.get('created');\n\n if (params.has('expires')) {\n siginput.expires = params.get('expires');\n }\n\n if (params.has('nonce')) {\n siginput.nonce = params.get('nonce');\n }\n\n if (params.has('alg')) {\n siginput.alg = params.get('alg');\n }\n\n if (params.has('keyid')) {\n siginput.keyid = params.get('keyid');\n }\n\n if (params.has('context')) {\n siginput.context = params.get('context');\n }\n\n siginputs.push(siginput);\n });\n\n return siginputs;\n}\n/** Parse start, end and total from HTTP Content-Range header value\n * @param {string|null} header - HTTP Range header value\n * @param {string} typ - type of range, e.g. \"aids\"\n * @returns {start: number, end: number, total: number} - object with start, end and total properties\n */\nexport function parseRangeHeaders(\n header: string | null,\n typ: string\n): { start: number; end: number; total: number } {\n if (header !== null) {\n let data = header.replace(`${typ} `, '');\n let values = data.split('/');\n let rng = values[0].split('-');\n\n return {\n start: parseInt(rng[0]),\n end: parseInt(rng[1]),\n total: parseInt(values[1]),\n };\n } else {\n return { start: 0, end: 0, total: 0 };\n }\n}\n","import { SignifyClient } from './clienting';\nimport { Tier } from '../core/salter';\nimport { Algos } from '../core/manager';\nimport { incept, interact, reply, rotate } from '../core/eventing';\nimport { b, Serials, Versionage } from '../core/core';\nimport { Tholder } from '../core/tholder';\nimport { MtrDex } from '../core/matter';\nimport { Serder } from '../core/serder';\nimport { parseRangeHeaders } from '../core/httping';\n\n/** Arguments required to create an identfier */\nexport interface CreateIdentiferArgs {\n transferable?: boolean;\n isith?: string | number | string[];\n nsith?: string | number | string[];\n wits?: string[];\n toad?: number;\n proxy?: string;\n delpre?: string;\n dcode?: string;\n data?: any;\n algo?: Algos;\n pre?: string;\n states?: any[];\n rstates?: any[];\n prxs?: any[];\n nxts?: any[];\n mhab?: any;\n keys?: any[];\n ndigs?: any[];\n bran?: string;\n count?: number;\n ncount?: number;\n tier?: Tier;\n extern_type?: string;\n extern?: any;\n}\n\n/** Arguments required to rotate an identfier */\nexport interface RotateIdentifierArgs {\n transferable?: boolean;\n nsith?: string | number | string[];\n toad?: number;\n cuts?: string[];\n adds?: string[];\n data?: Array<object>;\n ncode?: string;\n ncount?: number;\n ncodes?: string[];\n states?: any[];\n rstates?: any[];\n}\n\n/** Identifier */\nexport class Identifier {\n public client: SignifyClient;\n /**\n * Identifier\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * List managed identifiers\n * @async\n * @param {number} [start=0] Start index of list of notifications, defaults to 0\n * @param {number} [end=24] End index of list of notifications, defaults to 24\n * @returns {Promise<any>} A promise to the list of managed identifiers\n */\n async list(start: number = 0, end: number = 24): Promise<any> {\n let extraHeaders = new Headers();\n extraHeaders.append('Range', `aids=${start}-${end}`);\n\n let path = `/identifiers`;\n let data = null;\n let method = 'GET';\n let res = await this.client.fetch(path, method, data, extraHeaders);\n\n let cr = res.headers.get('content-range');\n let range = parseRangeHeaders(cr, 'aids');\n let aids = await res.json();\n\n return {\n start: range.start,\n end: range.end,\n total: range.total,\n aids: aids,\n };\n }\n\n /**\n * Get information for a managed identifier\n * @async\n * @param {string} name Name or alias of the identifier\n * @returns {Promise<any>} A promise to the identifier information\n */\n async get(name: string): Promise<any> {\n let path = `/identifiers/${name}`;\n let data = null;\n let method = 'GET';\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n\n /**\n * Create a managed identifier\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {CreateIdentiferArgs} [kargs] Optional parameters to create the identifier\n * @returns {EventResult} The inception result\n */\n async create(\n name: string,\n kargs: CreateIdentiferArgs = {}\n ): Promise<EventResult> {\n const algo = kargs.algo == undefined ? Algos.salty : kargs.algo;\n\n let transferable = kargs.transferable ?? true;\n let isith = kargs.isith ?? '1';\n let nsith = kargs.nsith ?? '1';\n let wits = kargs.wits ?? [];\n let toad = kargs.toad ?? 0;\n let dcode = kargs.dcode ?? MtrDex.Blake3_256;\n let proxy = kargs.proxy;\n let delpre = kargs.delpre;\n let data = kargs.data != undefined ? [kargs.data] : [];\n let pre = kargs.pre;\n let states = kargs.states;\n let rstates = kargs.rstates;\n let prxs = kargs.prxs;\n let nxts = kargs.nxts;\n let mhab = kargs.mhab;\n let _keys = kargs.keys;\n let _ndigs = kargs.ndigs;\n let bran = kargs.bran;\n let count = kargs.count;\n let ncount = kargs.ncount;\n let tier = kargs.tier;\n let extern_type = kargs.extern_type;\n let extern = kargs.extern;\n\n let xargs = {\n transferable: transferable,\n isith: isith,\n nsith: nsith,\n wits: wits,\n toad: toad,\n proxy: proxy,\n delpre: delpre,\n dcode: dcode,\n data: data,\n algo: algo,\n pre: pre,\n prxs: prxs,\n nxts: nxts,\n mhab: mhab,\n states: states,\n rstates: rstates,\n keys: _keys,\n ndigs: _ndigs,\n bran: bran,\n count: count,\n ncount: ncount,\n tier: tier,\n extern_type: extern_type,\n extern: extern,\n };\n\n let keeper = this.client.manager!.new(algo, this.client.pidx, xargs);\n let [keys, ndigs] = await keeper!.incept(transferable);\n wits = wits !== undefined ? wits : [];\n let serder: Serder | undefined = undefined;\n if (delpre == undefined) {\n serder = incept({\n keys: keys!,\n isith: isith,\n ndigs: ndigs,\n nsith: nsith,\n toad: toad,\n wits: wits,\n cnfg: [],\n data: data,\n version: Versionage,\n kind: Serials.JSON,\n code: dcode,\n intive: false,\n });\n } else {\n serder = incept({\n keys: keys!,\n isith: isith,\n ndigs: ndigs,\n nsith: nsith,\n toad: toad,\n wits: wits,\n cnfg: [],\n data: data,\n version: Versionage,\n kind: Serials.JSON,\n code: dcode,\n intive: false,\n delpre: delpre,\n });\n }\n\n let sigs = await keeper!.sign(b(serder.raw));\n var jsondata: any = {\n name: name,\n icp: serder.ked,\n sigs: sigs,\n proxy: proxy,\n smids:\n states != undefined\n ? states.map((state) => state.i)\n : undefined,\n rmids:\n rstates != undefined\n ? rstates.map((state) => state.i)\n : undefined,\n };\n jsondata[algo] = keeper.params();\n\n this.client.pidx = this.client.pidx + 1;\n let res = this.client.fetch('/identifiers', 'POST', jsondata);\n return new EventResult(serder, sigs, res);\n }\n\n /**\n * Generate an interaction event in a managed identifier\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {any} [data] Option data to be anchored in the interaction event\n * @returns {Promise<EventResult>} A promise to the interaction event result\n */\n async interact(name: string, data?: any): Promise<EventResult> {\n let hab = await this.get(name);\n let pre: string = hab.prefix;\n\n let state = hab.state;\n let sn = Number(state.s);\n let dig = state.d;\n\n data = Array.isArray(data) ? data : [data];\n\n data = Array.isArray(data) ? data : [data];\n\n let serder = interact({\n pre: pre,\n sn: sn + 1,\n data: data,\n dig: dig,\n version: undefined,\n kind: undefined,\n });\n let keeper = this.client!.manager!.get(hab);\n let sigs = await keeper.sign(b(serder.raw));\n\n let jsondata: any = {\n ixn: serder.ked,\n sigs: sigs,\n };\n jsondata[keeper.algo] = keeper.params();\n\n let res = this.client.fetch(\n '/identifiers/' + name + '?type=ixn',\n 'PUT',\n jsondata\n );\n return new EventResult(serder, sigs, res);\n }\n\n /**\n * Generate a rotation event in a managed identifier\n * @param {string} name Name or alias of the identifier\n * @param {RotateIdentifierArgs} [kargs] Optional parameters requiered to generate the rotation event\n * @returns {Promise<EventResult>} A promise to the rotation event result\n */\n async rotate(\n name: string,\n kargs: RotateIdentifierArgs = {}\n ): Promise<EventResult> {\n let transferable = kargs.transferable ?? true;\n let ncode = kargs.ncode ?? MtrDex.Ed25519_Seed;\n let ncount = kargs.ncount ?? 1;\n\n let hab = await this.get(name);\n let pre = hab.prefix;\n\n let state = hab.state;\n let count = state.k.length;\n let dig = state.d;\n let ridx = Number(state.s) + 1;\n let wits = state.b;\n let isith = state.kt;\n\n let nsith = kargs.nsith ?? isith;\n\n // if isith is None: # compute default from newly rotated verfers above\n if (isith == undefined)\n isith = `${Math.max(1, Math.ceil(count / 2)).toString(16)}`;\n\n // if nsith is None: # compute default from newly rotated digers above\n if (nsith == undefined)\n nsith = `${Math.max(1, Math.ceil(ncount / 2)).toString(16)}`;\n\n let cst = new Tholder({ sith: isith }).sith; // current signing threshold\n let nst = new Tholder({ sith: nsith }).sith; // next signing threshold\n\n // Regenerate next keys to sign rotation event\n let keeper = this.client.manager!.get(hab);\n // Create new keys for next digests\n let ncodes = kargs.ncodes ?? new Array(ncount).fill(ncode);\n\n let states = kargs.states == undefined ? [] : kargs.states;\n let rstates = kargs.rstates == undefined ? [] : kargs.rstates;\n let [keys, ndigs] = await keeper!.rotate(\n ncodes,\n transferable,\n states,\n rstates\n );\n\n let cuts = kargs.cuts ?? [];\n let adds = kargs.adds ?? [];\n let data = kargs.data != undefined ? [kargs.data] : [];\n let toad = kargs.toad;\n let serder = rotate({\n pre: pre,\n keys: keys,\n dig: dig,\n sn: ridx,\n isith: cst,\n nsith: nst,\n ndigs: ndigs,\n toad: toad,\n wits: wits,\n cuts: cuts,\n adds: adds,\n data: data,\n });\n\n let sigs = await keeper.sign(b(serder.raw));\n\n var jsondata: any = {\n rot: serder.ked,\n sigs: sigs,\n smids:\n states != undefined\n ? states.map((state) => state.i)\n : undefined,\n rmids:\n rstates != undefined\n ? rstates.map((state) => state.i)\n : undefined,\n };\n jsondata[keeper.algo] = keeper.params();\n\n let res = this.client.fetch('/identifiers/' + name, 'PUT', jsondata);\n return new EventResult(serder, sigs, res);\n }\n\n /**\n * Authorize an endpoint provider in a given role for a managed identifier\n * @remarks\n * Typically used to authorize the agent to be the endpoint provider for the identifier in the role of `agent`\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} role Authorized role for eid\n * @param {string} [eid] Optional qb64 of endpoint provider to be authorized\n * @param {string} [stamp=now] Optional date-time-stamp RFC-3339 profile of iso8601 datetime. Now is the default if not provided\n * @returns {Promise<EventResult>} A promise to the result of the authorization\n */\n async addEndRole(\n name: string,\n role: string,\n eid?: string,\n stamp?: string\n ): Promise<any> {\n const hab = await this.get(name);\n const pre = hab.prefix;\n\n const rpy = this.makeEndRole(pre, role, eid, stamp);\n const keeper = this.client.manager!.get(hab);\n const sigs = await keeper.sign(b(rpy.raw));\n\n const jsondata = {\n rpy: rpy.ked,\n sigs: sigs,\n };\n\n let res = this.client.fetch(\n '/identifiers/' + name + '/endroles',\n 'POST',\n jsondata\n );\n return new EventResult(rpy, sigs, res);\n }\n\n /**\n * Generate an /end/role/add reply message\n * @param {string} pre Prefix of the identifier\n * @param {string} role Authorized role for eid\n * @param {string} [eid] Optional qb64 of endpoint provider to be authorized\n * @param {string} [stamp=now] Optional date-time-stamp RFC-3339 profile of iso8601 datetime. Now is the default if not provided\n * @returns {Serder} The reply message\n */\n private makeEndRole(\n pre: string,\n role: string,\n eid?: string,\n stamp?: string\n ): Serder {\n const data: any = {\n cid: pre,\n role: role,\n };\n if (eid != undefined) {\n data.eid = eid;\n }\n const route = '/end/role/add';\n return reply(route, data, stamp, undefined, Serials.JSON);\n }\n\n /**\n * Get the members of a group identifier\n * @async\n * @param {string} name - Name or alias of the identifier\n * @returns {Promise<any>} - A promise to the list of members\n */\n async members(name: string): Promise<any> {\n let res = await this.client.fetch(\n '/identifiers/' + name + '/members',\n 'GET',\n undefined\n );\n return await res.json();\n }\n}\n\n/** Event Result */\nexport class EventResult {\n private readonly _serder: Serder;\n private readonly _sigs: string[];\n private readonly promise: Promise<Response>;\n\n constructor(serder: Serder, sigs: string[], promise: Promise<Response>) {\n this._serder = serder;\n this._sigs = sigs;\n this.promise = promise;\n }\n\n get serder() {\n return this._serder;\n }\n\n get sigs() {\n return this._sigs;\n }\n\n async op(): Promise<any> {\n let res = await this.promise;\n return await res.json();\n }\n}\n","import { Siger } from '../core/siger';\nimport { Cigar } from '../core/cigar';\n\nexport const FALSY = [false, 0, '?0', 'no', 'false', 'False', 'off'];\nexport const TRUTHY = [true, 1, '?1', 'yes', 'true', 'True', 'on'];\n\nexport class Signage {\n constructor(\n markers: any,\n indexed?: boolean,\n signer?: string,\n ordinal?: string,\n digest?: string,\n kind?: string\n ) {\n this.markers = markers;\n this.indexed = indexed;\n this.signer = signer;\n this.ordinal = ordinal;\n this.digest = digest;\n this.kind = kind;\n }\n public markers: any;\n public indexed: boolean | undefined = false;\n public signer: string | undefined;\n public ordinal: string | undefined;\n public digest: string | undefined;\n public kind: string | undefined;\n}\n\nexport function signature(signages: Array<Signage>): Headers {\n let values = new Array<string>();\n\n for (let signage of signages) {\n let markers: Array<Siger | Cigar>;\n let indexed = signage.indexed;\n let signer = signage.signer;\n let ordinal = signage.ordinal;\n let digest = signage.digest;\n let kind = signage.kind;\n let tags: Array<string>;\n\n if (signage.markers instanceof Map) {\n tags = Array.from(signage.markers.keys());\n markers = Array.from(signage.markers.values());\n } else {\n markers = signage.markers as Array<Siger | Cigar>;\n tags = new Array<string>();\n }\n\n if (indexed == undefined) {\n indexed = markers[0] instanceof Siger;\n }\n\n let items = new Array<string>();\n let tag = 'indexed';\n\n let val = indexed ? '?1' : '?0';\n items.push(`${tag}=\"${val}\"`);\n\n if (signer != undefined) {\n items.push(`signer=\"${signer}\"`);\n }\n if (ordinal != undefined) {\n items.push(`ordinal=\"${ordinal}\"`);\n }\n if (digest != undefined) {\n items.push(`digest=\"${digest}\"`);\n }\n if (kind != undefined) {\n items.push(`kind=\"${kind}\"`);\n }\n\n markers.forEach((marker, idx) => {\n let tag: string;\n if (tags != undefined && tags.length > idx) {\n tag = tags[idx];\n } else if (marker instanceof Siger) {\n if (!indexed)\n throw new Error(\n `Indexed signature marker ${marker} when indexed False.`\n );\n\n tag = marker.index.toString();\n } else {\n // Must be a Cigar\n if (indexed)\n throw new Error(\n `Unindexed signature marker ${marker} when indexed True.`\n );\n tag = marker.verfer!.qb64;\n }\n\n val = marker.qb64;\n items.push(`${tag}=\"${val}\"`);\n });\n\n values.push(items.join(';'));\n }\n\n return new Headers([['Signature', values.join(',')]]);\n}\n\nexport function designature(value: string) {\n let values = value.replace(' ', '').split(',');\n\n let signages = new Array<Signage>();\n values.forEach((val) => {\n let dict = new Map<string, string>();\n val.split(';').forEach((v) => {\n let splits = v.split('=', 2);\n dict.set(splits[0], splits[1].replaceAll('\"', ''));\n });\n\n if (!dict.has('indexed')) {\n throw new Error(\n 'Missing indexed field in Signature header signage.'\n );\n }\n let item = dict.get('indexed')!;\n let indexed = !FALSY.includes(item);\n dict.delete('indexed');\n\n let signer;\n if (dict.has('signer')) {\n signer = dict.get('signer') as string;\n dict.delete('signer');\n }\n\n let ordinal;\n if (dict.has('ordinal')) {\n ordinal = dict.get('ordinal') as string;\n dict.delete('ordinal');\n }\n\n let digest;\n if (dict.has('digest')) {\n digest = dict.get('digest') as string;\n dict.delete('digest');\n }\n\n let kind;\n if (dict.has('kind')) {\n kind = dict.get('kind') as string;\n dict.delete('kind');\n } else {\n kind = 'CESR';\n }\n\n let markers: Map<string, string | Siger | Cigar>;\n if (kind == 'CESR') {\n markers = new Map<string, Siger | Cigar>();\n dict.forEach((val, key) => {\n if (indexed) {\n markers.set(key, new Siger({ qb64: val as string }));\n } else {\n markers.set(key, new Cigar({ qb64: val as string }));\n }\n });\n } else {\n markers = dict;\n }\n\n signages.push(\n new Signage(markers, indexed, signer, ordinal, digest, kind)\n );\n });\n\n return signages;\n}\n","import { Signer } from './signer';\nimport { Verfer } from './verfer';\nimport { desiginput, normalize, siginput } from './httping';\nimport { Signage, signature, designature } from '../end/ending';\nimport { Cigar } from './cigar';\nimport { Siger } from './siger';\nexport class Authenticater {\n static DefaultFields = [\n '@method',\n '@path',\n 'signify-resource',\n 'signify-timestamp',\n ];\n private _verfer: Verfer;\n private readonly _csig: Signer;\n\n constructor(csig: Signer, verfer: Verfer) {\n this._csig = csig;\n this._verfer = verfer;\n }\n\n verify(headers: Headers, method: string, path: string): boolean {\n let siginput = headers.get('Signature-Input');\n if (siginput == null) {\n return false;\n }\n let signature = headers.get('Signature');\n if (signature == null) {\n return false;\n }\n let inputs = desiginput(siginput);\n inputs = inputs.filter((input) => input.name == 'signify');\n if (inputs.length == 0) {\n return false;\n }\n inputs.forEach((input) => {\n let items = new Array<string>();\n input.fields!.forEach((field: string) => {\n if (field.startsWith('@')) {\n if (field == '@method') {\n items.push(`\"${field}\": ${method}`);\n } else if (field == '@path') {\n items.push(`\"${field}\": ${path}`);\n }\n } else {\n if (headers.has(field)) {\n let value = normalize(headers.get(field) as string);\n items.push(`\"${field}\": ${value}`);\n }\n }\n });\n let values = new Array<string>();\n values.push(`(${input.fields!.join(' ')})`);\n values.push(`created=${input.created}`);\n if (input.expires != undefined) {\n values.push(`expires=${input.expires}`);\n }\n if (input.nonce != undefined) {\n values.push(`nonce=${input.nonce}`);\n }\n if (input.keyid != undefined) {\n values.push(`keyid=${input.keyid}`);\n }\n if (input.context != undefined) {\n values.push(`context=${input.context}`);\n }\n if (input.alg != undefined) {\n values.push(`alg=${input.alg}`);\n }\n let params = values.join(';');\n items.push(`\"@signature-params: ${params}\"`);\n let ser = items.join('\\n');\n let signage = designature(signature!);\n let cig = signage[0].markers.get(input.name);\n if (!this._verfer.verify(cig.raw, ser)) {\n throw new Error(`Signature for ${input.keyid} invalid.`);\n }\n });\n\n return true;\n }\n\n sign(\n headers: Headers,\n method: string,\n path: string,\n fields?: Array<string>\n ): Headers {\n if (fields == undefined) {\n fields = Authenticater.DefaultFields;\n }\n\n let [header, sig] = siginput(this._csig, {\n name: 'signify',\n method,\n path,\n headers,\n fields,\n alg: 'ed25519',\n keyid: this._csig.verfer.qb64,\n });\n\n header.forEach((value, key) => {\n headers.append(key, value);\n });\n\n let markers = new Map<string, Siger | Cigar>();\n markers.set('signify', sig);\n let signage = new Signage(markers, false);\n let signed = signature([signage]);\n signed.forEach((value, key) => {\n headers.append(key, value);\n });\n\n return headers;\n }\n}\n","import { Salter } from './salter';\nimport { Algos, SaltyCreator, RandyCreator } from './manager';\nimport { MtrDex } from './matter';\nimport { Tier } from './salter';\nimport { Encrypter } from '../core/encrypter';\nimport { Decrypter } from './decrypter';\nimport { b } from './core';\nimport { Cipher } from './cipher';\nimport { Diger } from './diger';\nimport { Prefixer } from './prefixer';\nimport { Signer } from './signer';\nimport { Siger } from './siger';\nimport { Cigar } from './cigar';\n\nexport {};\n\n/** External module definition */\nexport interface ExternalModule {\n type: string;\n name: string;\n module: any;\n}\n\nexport class KeyManager {\n private salter?: Salter;\n private modules?: any;\n\n constructor(salter: Salter, externalModules: ExternalModule[] = []) {\n this.salter = salter;\n this.modules = [];\n externalModules.forEach((mod) => {\n this.modules[mod.type] = mod.module;\n });\n }\n\n new(algo: Algos, pidx: number, kargs: any) {\n switch (algo) {\n case Algos.salty:\n return new SaltyKeeper(\n this.salter!,\n pidx,\n kargs['kidx'],\n kargs['tier'],\n kargs['transferable'],\n kargs['stem'],\n kargs['code'],\n kargs['count'],\n kargs['icodes'],\n kargs['ncode'],\n kargs['ncount'],\n kargs['ncodes'],\n kargs['dcode'],\n kargs['bran'],\n kargs['sxlt']\n );\n case Algos.randy:\n return new RandyKeeper(\n this.salter!,\n kargs['code'],\n kargs['count'],\n kargs['icodes'],\n kargs['transferable'],\n kargs['ncode'],\n kargs['ncount'],\n kargs['ncodes'],\n kargs['dcode'],\n kargs['prxs'],\n kargs['nxts']\n );\n case Algos.group:\n return new GroupKeeper(\n this,\n kargs['mhab'],\n kargs['states'],\n kargs['rstates'],\n kargs['keys'],\n kargs['ndigs']\n );\n case Algos.extern:\n let typ = kargs.extern_type;\n if (typ in this.modules) {\n let mod = new this.modules[typ](pidx, kargs);\n return mod;\n } else {\n throw new Error(`unsupported external module type ${typ}`);\n }\n default:\n throw new Error('Unknown algo');\n }\n }\n\n get(aid: any) {\n let pre = new Prefixer({ qb64: aid['prefix'] });\n if (Algos.salty in aid) {\n let kargs = aid[Algos.salty];\n return new SaltyKeeper(\n this.salter!,\n kargs['pidx'],\n kargs['kidx'],\n kargs['tier'],\n kargs['transferable'],\n kargs['stem'],\n kargs['code'],\n kargs['count'],\n kargs['icodes'],\n kargs['ncode'],\n kargs['ncount'],\n kargs['ncodes'],\n kargs['dcode'],\n kargs['bran'],\n kargs['sxlt']\n );\n } else if (Algos.randy in aid) {\n let kargs = aid[Algos.randy];\n return new RandyKeeper(\n this.salter!,\n kargs['code'],\n kargs['count'],\n kargs['icodes'],\n pre.transferable,\n kargs['ncode'],\n kargs['ncount'],\n kargs['ncodes'],\n kargs['dcode'],\n kargs['prxs'],\n kargs['nxts']\n );\n } else if (Algos.group in aid) {\n let kargs = aid[Algos.group];\n return new GroupKeeper(\n this,\n kargs['mhab'],\n kargs['states'],\n kargs['rstates'],\n kargs['keys'],\n kargs['ndigs']\n );\n } else if (Algos.extern in aid) {\n let kargs = aid[Algos.randy];\n let typ = kargs.extern_type;\n if (typ in this.modules) {\n let mod = new this.modules[typ](kargs['pidx'], kargs);\n return mod;\n } else {\n throw new Error(`unsupported external module type ${typ}`);\n }\n } else {\n throw new Error(`Algo not allowed yet`);\n }\n }\n}\n\nexport class SaltyKeeper {\n private aeid: string;\n private encrypter: Encrypter;\n private decrypter: Decrypter;\n private salter: Salter;\n private pidx: number;\n private kidx: number;\n private tier: Tier;\n private transferable: boolean;\n private stem: string | undefined;\n private code: string;\n private count: number;\n private icodes: string[] | undefined;\n private ncode: string;\n private ncount: number;\n private ncodes: string[] | undefined;\n private dcode: string | undefined;\n private sxlt: string | undefined;\n private bran: string | undefined;\n private creator: SaltyCreator;\n public algo: Algos = Algos.salty;\n public signers: Signer[];\n\n constructor(\n salter: Salter,\n pidx: number,\n kidx: number = 0,\n tier = Tier.low,\n transferable = false,\n stem = undefined,\n code = MtrDex.Ed25519_Seed,\n count = 1,\n icodes: string[] | undefined = undefined,\n ncode = MtrDex.Ed25519_Seed,\n ncount = 1,\n ncodes: string[] | undefined = undefined,\n dcode = MtrDex.Blake3_256,\n bran: string | undefined = undefined,\n sxlt = undefined\n ) {\n // # Salter is the entered passcode and used for enc/dec of salts for each AID\n this.salter = salter;\n let signer = this.salter.signer(undefined, (transferable = false));\n\n this.aeid = signer.verfer.qb64;\n\n this.encrypter = new Encrypter({}, b(this.aeid));\n this.decrypter = new Decrypter({}, signer.qb64b);\n\n this.code = code;\n this.ncode = ncode;\n this.tier = tier;\n this.icodes =\n icodes == undefined ? new Array<string>(count).fill(code) : icodes;\n this.ncodes =\n ncodes == undefined\n ? new Array<string>(ncount).fill(ncode)\n : ncodes;\n this.dcode = dcode;\n this.pidx = pidx;\n this.kidx = kidx;\n this.transferable = transferable;\n this.count = count;\n this.ncount = ncount;\n this.stem = stem == undefined ? 'signify:aid' : stem;\n\n if (bran != undefined) {\n this.bran = MtrDex.Salt_128 + 'A' + bran!.slice(0, 21);\n this.creator = new SaltyCreator(this.bran, this.tier, this.stem);\n this.sxlt = this.encrypter.encrypt(b(this.creator.salt)).qb64;\n } else if (sxlt == undefined) {\n this.creator = new SaltyCreator(undefined, this.tier, this.stem);\n this.sxlt = this.encrypter.encrypt(b(this.creator.salt)).qb64;\n } else {\n this.sxlt = sxlt;\n let ciph = new Cipher({ qb64: this.sxlt });\n this.creator = new SaltyCreator(\n this.decrypter.decrypt(null, ciph).qb64,\n (tier = tier),\n this.stem\n );\n }\n\n this.signers = this.creator.create(\n this.icodes,\n this.ncount,\n this.ncode,\n this.transferable,\n this.pidx,\n 0,\n this.kidx,\n false\n ).signers;\n }\n\n params() {\n // Get AID parameters to store externally\n\n return {\n sxlt: this.sxlt,\n pidx: this.pidx,\n kidx: this.kidx,\n stem: this.stem,\n tier: this.tier,\n icodes: this.icodes,\n ncodes: this.ncodes,\n dcode: this.dcode,\n transferable: this.transferable,\n };\n }\n\n incept(transferable: boolean) {\n // Create verfers and digers for inception event for AID represented by this Keeper\n\n // Args:\n // transferable (bool): True if the AID for this keeper can establish new keys\n\n // Returns:\n // verfers(list): qualified base64 of signing public keys\n // digers(list): qualified base64 of hash of rotation public keys\n\n this.transferable = transferable;\n this.kidx = 0;\n\n let signers = this.creator.create(\n this.icodes,\n this.count,\n this.code,\n this.transferable,\n this.pidx,\n 0,\n this.kidx,\n false\n );\n let verfers = signers.signers.map((signer) => signer.verfer.qb64);\n\n let nsigners = this.creator.create(\n this.ncodes,\n this.ncount,\n this.ncode,\n this.transferable,\n this.pidx,\n 0,\n this.icodes?.length,\n false\n );\n let digers = nsigners.signers.map(\n (nsigner) =>\n new Diger({ code: this.dcode }, nsigner.verfer.qb64b).qb64\n );\n\n return [verfers, digers];\n }\n\n rotate(ncodes: string[], transferable: boolean, ..._: any[]) {\n // Rotate and return verfers and digers for next rotation event for AID represented by this Keeper\n\n // Args:\n // ncodes (list):\n // transferable (bool): derivation codes for rotation key creation\n\n // Returns:\n // verfers(list): qualified base64 of signing public keys\n // digers(list): qualified base64 of hash of rotation public keys\n\n this.ncodes = ncodes;\n this.transferable = transferable;\n let signers = this.creator.create(\n this.ncodes,\n this.ncount,\n this.ncode,\n this.transferable,\n this.pidx,\n 0,\n this.kidx + this.icodes!.length,\n false\n );\n let verfers = signers.signers.map((signer) => signer.verfer.qb64);\n\n this.kidx = this.kidx! + this.icodes!.length;\n let nsigners = this.creator.create(\n this.ncodes,\n this.ncount,\n this.ncode,\n this.transferable,\n this.pidx,\n 0,\n this.kidx + this.icodes!.length,\n false\n );\n let digers = nsigners.signers.map(\n (nsigner) =>\n new Diger({ code: this.dcode }, nsigner.verfer.qb64b).qb64\n );\n\n return [verfers, digers];\n }\n\n sign(\n ser: Uint8Array,\n indexed = true,\n indices: number[] | undefined = undefined,\n ondices: number[] | undefined = undefined\n ) {\n let signers = this.creator.create(\n this.icodes,\n this.ncount,\n this.ncode,\n this.transferable,\n this.pidx,\n 0,\n this.kidx,\n false\n );\n\n if (indexed) {\n let sigers = [];\n let i = 0;\n for (const [j, signer] of signers.signers.entries()) {\n if (indices != undefined) {\n i = indices![j];\n if (typeof i != 'number' || i < 0) {\n throw new Error(\n `Invalid signing index = ${i}, not whole number.`\n );\n }\n } else {\n i = j;\n }\n let o = 0;\n if (ondices != undefined) {\n o = ondices![j];\n if (\n (o == undefined ||\n (typeof o == 'number' &&\n typeof o != 'number' &&\n o >= 0))!\n ) {\n throw new Error(\n `Invalid ondex = ${o}, not whole number.`\n );\n }\n } else {\n o = i;\n }\n sigers.push(\n signer.sign(ser, i, o == undefined ? true : false, o)\n );\n }\n return sigers.map((siger) => siger.qb64);\n } else {\n let cigars = [];\n for (const [_, signer] of signers.signers.entries()) {\n cigars.push(signer.sign(ser));\n }\n return cigars.map((cigar) => cigar.qb64);\n }\n }\n}\n\nexport class RandyKeeper {\n private salter: Salter;\n private code: string;\n private count: number;\n private icodes: string[] | undefined;\n private transferable: boolean;\n private ncount: number;\n private ncodes: string[] | undefined;\n private ncode: string;\n private dcode: string | undefined;\n private prxs: string[] | undefined;\n private nxts: string[] | undefined;\n private aeid: string;\n private encrypter: Encrypter;\n private decrypter: Decrypter;\n private creator: RandyCreator;\n public algo: Algos = Algos.randy;\n public signers: Signer[];\n\n constructor(\n salter: Salter,\n code = MtrDex.Ed25519_Seed,\n count = 1,\n icodes: string[] | undefined = undefined,\n transferable = false,\n ncode = MtrDex.Ed25519_Seed,\n ncount = 1,\n ncodes: string[],\n dcode = MtrDex.Blake3_256,\n prxs: string[] | undefined = undefined,\n nxts: string[] | undefined = undefined\n ) {\n this.salter = salter;\n this.icodes =\n icodes == undefined ? new Array<string>(count).fill(code) : icodes;\n this.ncodes =\n ncodes == undefined\n ? new Array<string>(ncount).fill(ncode)\n : ncodes;\n\n this.code = code;\n this.ncode = ncode;\n this.count = count;\n this.ncount = ncount;\n\n let signer = this.salter.signer(undefined, (transferable = false));\n this.aeid = signer.verfer.qb64;\n\n this.encrypter = new Encrypter({}, b(this.aeid));\n this.decrypter = new Decrypter({}, signer.qb64b);\n\n this.nxts = nxts ?? [];\n this.prxs = prxs ?? [];\n this.transferable = transferable;\n\n this.icodes = icodes;\n this.ncodes = ncodes;\n this.dcode = dcode;\n\n this.creator = new RandyCreator();\n\n this.signers = this.prxs.map((prx) =>\n this.decrypter.decrypt(\n new Cipher({ qb64: prx }).qb64b,\n undefined,\n this.transferable\n )\n );\n }\n\n params() {\n return {\n nxts: this.nxts,\n prxs: this.prxs,\n transferable: this.transferable,\n };\n }\n\n incept(transferable: boolean) {\n this.transferable = transferable;\n\n let signers = this.creator.create(\n this.icodes,\n this.count,\n this.code,\n this.transferable\n );\n this.prxs = signers.signers.map(\n (signer) => this.encrypter.encrypt(undefined, signer).qb64\n );\n\n let verfers = signers.signers.map((signer) => signer.verfer.qb64);\n\n let nsigners = this.creator.create(\n this.ncodes,\n this.ncount,\n this.ncode,\n this.transferable\n );\n\n this.nxts = nsigners.signers.map(\n (signer) => this.encrypter.encrypt(undefined, signer).qb64\n );\n\n let digers = nsigners.signers.map(\n (nsigner) =>\n new Diger({ code: this.dcode }, nsigner.verfer.qb64b).qb64\n );\n\n return [verfers, digers];\n }\n\n rotate(ncodes: string[], transferable: boolean, ..._: any[]) {\n this.ncodes = ncodes;\n this.transferable = transferable;\n this.prxs = this.nxts;\n\n let signers = this.nxts!.map((nxt) =>\n this.decrypter.decrypt(\n undefined,\n new Cipher({ qb64: nxt }),\n this.transferable\n )\n );\n let verfers = signers.map((signer) => signer.verfer.qb64);\n let nsigners = this.creator.create(\n this.ncodes,\n this.ncount,\n this.ncode,\n this.transferable\n );\n\n this.nxts = nsigners.signers.map(\n (signer) => this.encrypter.encrypt(undefined, signer).qb64\n );\n\n let digers = nsigners.signers.map(\n (nsigner) =>\n new Diger({ code: this.dcode }, nsigner.verfer.qb64b).qb64\n );\n\n return [verfers, digers];\n }\n\n sign(\n ser: Uint8Array,\n indexed = true,\n indices: number[] | undefined = undefined,\n ondices: number[] | undefined = undefined\n ) {\n let signers = this.prxs!.map((prx) =>\n this.decrypter.decrypt(\n new Cipher({ qb64: prx }).qb64b,\n undefined,\n this.transferable\n )\n );\n\n if (indexed) {\n let sigers = [];\n let i = 0;\n for (const [j, signer] of signers.entries()) {\n if (indices != undefined) {\n i = indices![j];\n if (typeof i != 'number' || i < 0) {\n throw new Error(\n `Invalid signing index = ${i}, not whole number.`\n );\n }\n } else {\n i = j;\n }\n let o = 0;\n if (ondices != undefined) {\n o = ondices![j];\n if (\n (o == undefined ||\n (typeof o == 'number' &&\n typeof o != 'number' &&\n o >= 0))!\n ) {\n throw new Error(\n `Invalid ondex = ${o}, not whole number.`\n );\n }\n } else {\n o = i;\n }\n sigers.push(\n signer.sign(ser, i, o == undefined ? true : false, o)\n );\n }\n return sigers.map((siger) => siger.qb64);\n } else {\n let cigars = [];\n for (const [_, signer] of signers.entries()) {\n cigars.push(signer.sign(ser));\n }\n return cigars.map((cigar) => cigar.qb64);\n }\n }\n}\nexport class GroupKeeper {\n private manager: KeyManager;\n private mhab: any;\n private gkeys: string[] | undefined;\n private gdigs: string[] | undefined;\n public algo: Algos = Algos.group;\n public signers: Signer[];\n\n constructor(\n manager: KeyManager,\n mhab = undefined,\n states: any[] | undefined = undefined,\n rstates: any[] | undefined = undefined,\n keys: any[] | undefined = undefined,\n ndigs: any[] | undefined = undefined\n ) {\n this.manager = manager;\n if (states != undefined) {\n keys = states.map((state) => state['k'][0]);\n }\n\n if (rstates != undefined) {\n ndigs = rstates.map((state) => state['n'][0]);\n }\n\n this.gkeys = keys;\n this.gdigs = ndigs;\n this.mhab = mhab;\n this.signers = [];\n }\n incept(..._: any) {\n return [this.gkeys, this.gdigs];\n }\n\n rotate(\n _ncodes: string[],\n _transferable: boolean,\n states: any[],\n rstates: any[],\n ..._: any\n ) {\n this.gkeys = states.map((state) => state['k'][0]);\n this.gdigs = rstates.map((state) => state['n'][0]);\n return [this.gkeys, this.gdigs];\n }\n\n async sign(\n ser: Uint8Array,\n indexed: boolean = true,\n _indices: number[] | undefined = undefined,\n _ondices: number[] | undefined = undefined\n ): Promise<Siger[] | Cigar[]> {\n let key = this.mhab['state']['k'][0];\n let ndig = this.mhab['state']['n'][0];\n\n let csi = this.gkeys!.indexOf(key);\n let pni = this.gdigs!.indexOf(ndig);\n let mkeeper = this.manager.get(this.mhab);\n\n return await mkeeper.sign(ser, indexed, [csi], [pni]);\n }\n\n params() {\n return {\n mhab: this.mhab,\n keys: this.gkeys,\n ndigs: this.gdigs,\n };\n }\n}\n","import { SignifyClient } from './clienting';\n\n/**\n * Contacts\n */\nexport class Contacts {\n client: SignifyClient;\n /**\n * Contacts\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * List contacts\n * @async\n * @param {string} [group] Optional group name to filter contacts\n * @param {string} [filterField] Optional field name to filter contacts\n * @param {string} [filterValue] Optional field value to filter contacts\n * @returns {Promise<any>} A promise to the list of contacts\n */\n async list(\n group?: string,\n filterField?: string,\n filterValue?: string\n ): Promise<any> {\n let params = new URLSearchParams();\n if (group !== undefined) {\n params.append('group', group);\n }\n if (filterField !== undefined && filterValue !== undefined) {\n params.append('filter_field', filterField);\n params.append('filter_value', filterValue);\n }\n\n let path = `/contacts` + '?' + params.toString();\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * Get a contact\n * @async\n * @param {string} pre Prefix of the contact\n * @returns {Promise<any>} A promise to the contact\n */\n async get(pre: string): Promise<any> {\n let path = `/contacts/` + pre;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * Add a contact\n * @async\n * @param {string} pre Prefix of the contact\n * @param {any} info Information about the contact\n * @returns {Promise<any>} A promise to the result of the addition\n */\n async add(pre: string, info: any): Promise<any> {\n let path = `/contacts/` + pre;\n let method = 'POST';\n\n let res = await this.client.fetch(path, method, info);\n return await res.json();\n }\n\n /**\n * Delete a contact\n * @async\n * @param {string} pre Prefix of the contact\n * @returns {Promise<any>} A promise to the result of the deletion\n */\n async delete(pre: string): Promise<any> {\n let path = `/contacts/` + pre;\n let method = 'DELETE';\n\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * Update a contact\n * @async\n * @param {string} pre Prefix of the contact\n * @param {any} info Updated information about the contact\n * @returns {Promise<any>} A promise to the result of the update\n */\n async update(pre: string, info: any): Promise<any> {\n let path = `/contacts/` + pre;\n let method = 'PUT';\n\n let res = await this.client.fetch(path, method, info);\n return await res.json();\n }\n}\n\n/**\n * Challenges\n */\nexport class Challenges {\n client: SignifyClient;\n /**\n * Challenges\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Generate a random challenge word list based on BIP39\n * @async\n * @param {number} strength Integer representing the strength of the challenge. Typically 128 or 256\n * @returns {Promise<any>} A promise to the list of random words\n */\n async generate(strength: number = 128): Promise<any> {\n let path = `/challenges?strength=${strength.toString()}`;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * Respond to a challenge by signing a message with the list of words\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} recipient Prefix of the recipient of the response\n * @param {Array<string>} words List of words to embed in the signed response\n * @returns {Promise<Response>} A promise to the result of the response\n */\n async respond(\n name: string,\n recipient: string,\n words: string[]\n ): Promise<Response> {\n let hab = await this.client.identifiers().get(name);\n let exchanges = this.client.exchanges();\n let resp = await exchanges.send(\n name,\n 'challenge',\n hab,\n '/challenge/response',\n { words: words },\n {},\n [recipient]\n );\n return resp;\n }\n\n /**\n * Ask Agent to verify a given sender signed the provided words\n * @param {string} name Name or alias of the identifier\n * @param {string} source Prefix of the identifier that was challenged\n * @param {Array<string>} words List of challenge words to check for\n * @returns {Promise<Response>} A promise to the result\n */\n async verify(\n name: string,\n source: string,\n words: string[]\n ): Promise<Response> {\n let path = `/challenges/${name}/verify/${source}`;\n let method = 'POST';\n let data = {\n words: words,\n };\n let res = await this.client.fetch(path, method, data);\n\n return await res.json();\n }\n\n /**\n * Mark challenge response as signed and accepted\n * @param {string} name Name or alias of the identifier\n * @param {string} source Prefix of the identifier that was challenged\n * @param {string} said qb64 AID of exn message representing the signed response\n * @returns {Promise<Response>} A promise to the result\n */\n async responded(\n name: string,\n source: string,\n said: string\n ): Promise<Response> {\n let path = `/challenges/${name}/verify/${source}`;\n let method = 'PUT';\n let data = {\n said: said,\n };\n let res = await this.client.fetch(path, method, data);\n return res;\n }\n}\n","import { SignifyClient } from './clienting';\nimport libsodium from 'libsodium-wrappers-sumo';\nimport { Salter } from '../core/salter';\nimport { Matter, MtrDex } from '../core/matter';\n\nexport function randomPasscode(): string {\n let raw = libsodium.randombytes_buf(16);\n let salter = new Salter({ raw: raw });\n\n return salter.qb64.substring(2);\n}\n\nexport function randomNonce(): string {\n let seed = libsodium.randombytes_buf(libsodium.crypto_sign_SEEDBYTES);\n let seedqb64 = new Matter({ raw: seed, code: MtrDex.Ed25519_Seed });\n return seedqb64.qb64;\n}\n\nexport class Oobis {\n public client: SignifyClient;\n /**\n * Oobis\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Get the OOBI(s) for a managed indentifier for a given role\n * @param {string} name Name or alias of the identifier\n * @param {string} role Authorized role\n * @returns {Promise<any>} A promise to the OOBI(s)\n */\n async get(name: string, role: string = 'agent'): Promise<any> {\n let path = `/identifiers/${name}/oobis?role=${role}`;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * Resolve an OOBI\n * @async\n * @param {string} oobi The OOBI to be resolver\n * @param {string} [alias] Optional name or alias to link the OOBI resolution to a contact\n * @returns {Promise<any>} A promise to the long-running operation\n */\n async resolve(oobi: string, alias?: string): Promise<any> {\n let path = `/oobis`;\n let data: any = {\n url: oobi,\n };\n if (alias !== undefined) {\n data.oobialias = alias;\n }\n let method = 'POST';\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n}\n\n/**\n * Operations\n * @remarks\n * Operations represent the status and result of long running tasks performed by KERIA agent\n */\nexport class Operations {\n public client: SignifyClient;\n /**\n * Operations\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Get operation status\n * @async\n * @param {string} name Name of the operation\n * @returns {Promise<any>} A promise to the status of the operation\n */\n async get(name: string): Promise<any> {\n let path = `/operations/${name}`;\n let data = null;\n let method = 'GET';\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n}\n\n/**\n * KeyEvents\n */\nexport class KeyEvents {\n public client: SignifyClient;\n /**\n * KeyEvents\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Retrieve key events for an identifier\n * @async\n * @param {string} pre Identifier prefix\n * @returns {Promise<any>} A promise to the key events\n */\n async get(pre: string): Promise<any> {\n let path = `/events?pre=${pre}`;\n let data = null;\n let method = 'GET';\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n}\n\n/**\n * KeyStates\n */\nexport class KeyStates {\n public client: SignifyClient;\n /**\n * KeyStates\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Retriene the key state for an identifier\n * @async\n * @param {string} pre Identifier prefix\n * @returns {Promise<any>} A promise to the key states\n */\n async get(pre: string): Promise<any> {\n let path = `/states?pre=${pre}`;\n let data = null;\n let method = 'GET';\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n\n /**\n * Retrieve the key state for a list of identifiers\n * @async\n * @param {Array<string>} pres List of identifier prefixes\n * @returns {Promise<any>} A promise to the key states\n */\n async list(pres: string[]): Promise<any> {\n let path = `/states?${pres.map((pre) => `pre=${pre}`).join('&')}`;\n let data = null;\n let method = 'GET';\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n\n /**\n * Query the key state of an identifier for a given sequence number or anchor SAID\n * @async\n * @param {string} pre Identifier prefix\n * @param {number} [sn] Optional sequence number\n * @param {string} [anchor] Optional anchor SAID\n * @returns {Promise<any>} A promise to the long-running operation\n */\n async query(pre: string, sn?: number, anchor?: string): Promise<any> {\n let path = `/queries`;\n let data: any = {\n pre: pre,\n };\n if (sn !== undefined) {\n data.sn = sn;\n }\n if (anchor !== undefined) {\n data.anchor = anchor;\n }\n\n let method = 'POST';\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n}\n","import { randomNonce } from '../app/coring';\nimport { TraitDex } from '../app/habery';\nimport {\n Serials,\n Versionage,\n Version,\n Ident,\n versify,\n Ilks,\n} from '../core/core';\nimport { ample } from './eventing';\nimport { MtrDex } from './matter';\nimport { Prefixer } from './prefixer';\nimport { Serder } from './serder';\n\nnamespace vdr {\n export interface VDRInceptArgs {\n pre: string;\n toad?: string | number | undefined;\n nonce?: string;\n baks?: string[];\n cnfg?: string[];\n version?: Version;\n kind?: Serials;\n code?: string;\n }\n\n export function incept({\n pre,\n toad,\n nonce = randomNonce(),\n baks = [],\n cnfg = [],\n version = Versionage,\n kind = Serials.JSON,\n code = MtrDex.Blake3_256,\n }: VDRInceptArgs): Serder {\n const vs = versify(Ident.KERI, version, kind, 0);\n let isn = 0;\n let ilk = Ilks.vcp;\n\n if (cnfg.includes(TraitDex.NoBackers) && baks.length > 0) {\n throw new Error(\n `${baks.length} backers specified for NB vcp, 0 allowed`\n );\n }\n\n if (new Set(baks).size < baks.length) {\n throw new Error(`Invalid baks ${baks} has duplicates`);\n }\n\n let _toad: number;\n if (toad === undefined) {\n if (baks.length === 0) {\n _toad = 0;\n } else {\n _toad = ample(baks.length);\n }\n } else {\n _toad = +toad;\n }\n\n if (baks.length > 0) {\n if (_toad < 1 || _toad > baks.length) {\n throw new Error(`Invalid toad ${_toad} for baks in ${baks}`);\n }\n } else {\n if (_toad != 0) {\n throw new Error(`Invalid toad ${_toad} for no baks`);\n }\n }\n\n let ked = {\n v: vs,\n t: ilk,\n d: '',\n i: '',\n ii: pre,\n s: '' + isn,\n c: cnfg,\n bt: '0',\n b: baks,\n n: nonce,\n };\n\n let prefixer = new Prefixer({ code }, ked);\n ked.i = prefixer.qb64;\n ked.d = prefixer.qb64;\n\n return new Serder(ked);\n }\n}\n\nexport { vdr };\n","import { SignifyClient } from './clienting';\nimport { Salter } from '../core/salter';\nimport { interact, messagize } from '../core/eventing';\nimport { vdr } from '../core/vdring';\nimport {\n b,\n Dict,\n Ident,\n Ilks,\n Serials,\n versify,\n Versionage,\n} from '../core/core';\nimport { Saider } from '../core/saider';\nimport { Serder } from '../core/serder';\nimport { Siger } from '../core/siger';\nimport { TextDecoder } from 'util';\nimport { TraitDex } from './habery';\n\n/** Types of credentials */\nexport class CredentialTypes {\n static issued = 'issued';\n static received = 'received';\n}\n\n/** Credential filter parameters */\nexport interface CredentialFilter {\n filter?: object;\n sort?: object[];\n skip?: number;\n limit?: number;\n}\n\nexport class CredentialResult {\n private readonly _acdc: any;\n private readonly _iserder: Serder;\n private readonly _anc: Serder;\n private readonly _sigs: string[];\n private readonly promise: Promise<Response>;\n\n constructor(\n acdc: Dict<any>,\n iserder: Serder,\n anc: Serder,\n sigs: any[],\n promise: Promise<Response>\n ) {\n this._acdc = acdc;\n this._iserder = iserder;\n this._anc = anc;\n this._sigs = sigs;\n this.promise = promise;\n }\n\n get acdc() {\n return this._acdc;\n }\n\n get iserder() {\n return this._iserder;\n }\n\n get anc() {\n return this._anc;\n }\n\n get sigs() {\n return this._sigs;\n }\n\n async op(): Promise<any> {\n let res = await this.promise;\n return await res.json();\n }\n}\n\n/**\n * Credentials\n */\nexport class Credentials {\n public client: SignifyClient;\n /**\n * Credentials\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * List credentials\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {CredentialFilter} [kargs] Optional parameters to filter the credentials\n * @returns {Promise<any>} A promise to the list of credentials\n */\n async list(kargs: CredentialFilter = {}): Promise<any> {\n let path = `/credentials/query`;\n let filtr = kargs.filter === undefined ? {} : kargs.filter;\n let sort = kargs.sort === undefined ? [] : kargs.sort;\n let limit = kargs.limit === undefined ? 25 : kargs.limit;\n let skip = kargs.skip === undefined ? 0 : kargs.skip;\n\n let data = {\n filter: filtr,\n sort: sort,\n skip: skip,\n limit: limit,\n };\n let method = 'POST';\n\n let res = await this.client.fetch(path, method, data, undefined);\n return await res.json();\n }\n\n /**\n * Get a credential\n * @async\n * @param {string} name - Name or alias of the identifier\n * @param {string} said - SAID of the credential\n * @param {boolean} [includeCESR=false] - Optional flag export the credential in CESR format\n * @returns {Promise<any>} A promise to the credential\n */\n async get(\n name: string,\n said: string,\n includeCESR: boolean = false\n ): Promise<any> {\n let path = `/identifiers/${name}/credentials/${said}`;\n let method = 'GET';\n let headers = includeCESR\n ? new Headers({ Accept: 'application/json+cesr' })\n : new Headers({ Accept: 'application/json' });\n let res = await this.client.fetch(path, method, null, headers);\n\n return includeCESR ? await res.text() : await res.json();\n }\n\n /**\n * Issue a credential\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} registy qb64 AID of credential registry\n * @param {string} schema SAID of the schema\n * @param {string} [recipient] Optional prefix of recipient identifier\n * @param {any} [credentialData] Optional credential data\n * @param {any} [rules] Optional credential rules\n * @param {any} [source] Optional credential sources\n * @param {string} [datetime] Optional datetime to set for the credential\n * @param {boolean} [priv=false] Flag to issue a credential with privacy preserving features\n * @returns {Promise<any>} A promise to the long-running operation\n */\n async issue(\n name: string,\n registy: string,\n schema: string,\n recipient?: string,\n credentialData?: any,\n rules?: any,\n source?: any,\n datetime?: string,\n priv: boolean = false\n ): Promise<any> {\n // Create Credential\n let hab = await this.client.identifiers().get(name);\n let pre: string = hab.prefix;\n\n const dt =\n datetime === undefined\n ? new Date().toISOString().replace('Z', '000+00:00')\n : datetime;\n\n const vsacdc = versify(Ident.ACDC, undefined, Serials.JSON, 0);\n const vs = versify(Ident.KERI, undefined, Serials.JSON, 0);\n\n let cred: any = {\n v: vsacdc,\n d: '',\n };\n let subject: any = {\n d: '',\n };\n if (priv) {\n cred.u = new Salter({});\n subject.u = new Salter({});\n }\n if (recipient != undefined) {\n subject.i = recipient;\n }\n subject.dt = dt;\n subject = { ...subject, ...credentialData };\n\n const [, a] = Saider.saidify(subject, undefined, undefined, 'd');\n\n cred = { ...cred, i: pre };\n cred.ri = registy;\n cred = { ...cred, ...{ s: schema }, ...{ a: a } };\n\n if (source !== undefined) {\n cred.e = source;\n }\n if (rules !== undefined) {\n cred.r = rules;\n }\n const [, vc] = Saider.saidify(cred);\n\n // Create iss\n let _iss = {\n v: vs,\n t: Ilks.iss,\n d: '',\n i: vc.d,\n s: '0',\n ri: registy,\n dt: dt,\n };\n\n let [, iss] = Saider.saidify(_iss);\n let iserder = new Serder(iss);\n\n // Create paths and sign\n let keeper = this.client!.manager!.get(hab);\n\n let state = hab.state;\n if (state.c !== undefined && state.c.includes('EO')) {\n var estOnly = true;\n } else {\n var estOnly = false;\n }\n let sn = Number(state.s);\n let dig = state.d;\n\n let data: any = [\n {\n i: iss.i,\n s: iss.s,\n d: iss.d,\n },\n ];\n\n // Create ixn\n let ixn = {};\n let anc: Serder;\n let sigs = [];\n if (estOnly) {\n // TODO implement rotation event\n throw new Error('Establishment only not implemented');\n } else {\n anc = interact({\n pre: pre,\n sn: sn + 1,\n data: data,\n dig: dig,\n version: undefined,\n kind: undefined,\n });\n sigs = await keeper.sign(b(anc.raw));\n ixn = anc.ked;\n }\n\n let res = this.issueFromEvents(hab, name, vc, iss, ixn, sigs);\n return new CredentialResult(vc, iserder, anc, sigs, res);\n }\n\n issueFromEvents(\n hab: Dict<any>,\n name: string,\n vc: Dict<any>,\n iss: Dict<any>,\n ixn: Dict<any>,\n sigs: any[]\n ) {\n let path = `/identifiers/${name}/credentials`;\n let method = 'POST';\n let body: any = {\n acdc: vc,\n iss: iss,\n ixn: ixn,\n sigs: sigs,\n };\n let keeper = this.client!.manager!.get(hab);\n body[keeper.algo] = keeper.params();\n\n let headers = new Headers({\n Accept: 'application/json+cesr',\n });\n return this.client.fetch(path, method, body, headers);\n }\n\n /**\n * Revoke credential\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} said SAID of the credential\n * @returns {Promise<any>} A promise to the long-running operation\n */\n async revoke(name: string, said: string): Promise<any> {\n let hab = await this.client.identifiers().get(name);\n let pre: string = hab.prefix;\n\n const vs = versify(Ident.KERI, undefined, Serials.JSON, 0);\n const dt = new Date().toISOString().replace('Z', '000+00:00');\n\n let cred = await this.get(name, said);\n\n // Create rev\n let _rev = {\n v: vs,\n t: Ilks.rev,\n d: '',\n i: said,\n s: '1',\n p: cred.status.d,\n ri: cred.sad.ri,\n dt: dt,\n };\n\n let [, rev] = Saider.saidify(_rev);\n\n // create ixn\n let ixn = {};\n let sigs = [];\n\n let state = hab.state;\n if (state.c !== undefined && state.c.includes('EO')) {\n var estOnly = true;\n } else {\n var estOnly = false;\n }\n\n let sn = Number(state.s);\n let dig = state.d;\n\n let data: any = [\n {\n i: rev.i,\n s: rev.s,\n d: rev.d,\n },\n ];\n if (estOnly) {\n // TODO implement rotation event\n throw new Error('Establishment only not implemented');\n } else {\n let serder = interact({\n pre: pre,\n sn: sn + 1,\n data: data,\n dig: dig,\n version: undefined,\n kind: undefined,\n });\n let keeper = this.client!.manager!.get(hab);\n sigs = await keeper.sign(b(serder.raw));\n ixn = serder.ked;\n }\n\n let body = {\n rev: rev,\n ixn: ixn,\n sigs: sigs,\n };\n\n let path = `/identifiers/${name}/credentials/${said}`;\n let method = 'DELETE';\n let headers = new Headers({\n Accept: 'application/json+cesr',\n });\n let res = await this.client.fetch(path, method, body, headers);\n return await res.json();\n }\n\n /**\n * Present a credential\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} said SAID of the credential\n * @param {string} recipient Identifier prefix of the receiver of the presentation\n * @param {boolean} [include=true] Flag to indicate whether to stream credential alongside presentation exchange message\n * @returns {Promise<string>} A promise to the long-running operation\n */\n async present(\n name: string,\n said: string,\n recipient: string,\n include: boolean = true\n ): Promise<string> {\n let hab = await this.client.identifiers().get(name);\n let pre: string = hab.prefix;\n\n let cred = await this.get(name, said);\n let data = {\n i: cred.sad.i,\n s: cred.sad.s,\n n: said,\n };\n\n const vs = versify(Ident.KERI, undefined, Serials.JSON, 0);\n\n const _sad = {\n v: vs,\n t: Ilks.exn,\n d: '',\n dt: new Date().toISOString().replace('Z', '000+00:00'),\n r: '/presentation',\n q: {},\n a: data,\n };\n const [, sad] = Saider.saidify(_sad);\n const exn = new Serder(sad);\n\n let keeper = this.client!.manager!.get(hab);\n\n let sig = keeper.sign(b(exn.raw), true);\n\n let siger = new Siger({ qb64: sig[0] });\n let seal = ['SealLast', { i: pre }];\n let ims = messagize(exn, [siger], seal, undefined, undefined, true);\n ims = ims.slice(JSON.stringify(exn.ked).length);\n\n let body = {\n exn: exn.ked,\n sig: new TextDecoder().decode(ims),\n recipient: recipient,\n include: include,\n };\n\n let path = `/identifiers/${name}/credentials/${said}/presentations`;\n let method = 'POST';\n let headers = new Headers({\n Accept: 'application/json+cesr',\n });\n let res = await this.client.fetch(path, method, body, headers);\n return await res.text();\n }\n\n /**\n * Request a presentation of a credential\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} recipient Identifier prefix of the receiver of the presentation\n * @param {string} schema SAID of the schema\n * @param {string} [issuer] Optional prefix of the issuer of the credential\n * @returns {Promise<string>} A promise to the long-running operation\n */\n async request(\n name: string,\n recipient: string,\n schema: string,\n issuer?: string\n ): Promise<string> {\n let hab = await this.client.identifiers().get(name);\n let pre: string = hab.prefix;\n\n let data: any = {\n s: schema,\n };\n if (issuer !== undefined) {\n data['i'] = issuer;\n }\n\n const vs = versify(Ident.KERI, undefined, Serials.JSON, 0);\n\n const _sad = {\n v: vs,\n t: Ilks.exn,\n d: '',\n dt: new Date().toISOString().replace('Z', '000+00:00'),\n r: '/presentation/request',\n q: {},\n a: data,\n };\n const [, sad] = Saider.saidify(_sad);\n const exn = new Serder(sad);\n\n let keeper = this.client!.manager!.get(hab);\n\n let sig = await keeper.sign(b(exn.raw), true);\n\n let siger = new Siger({ qb64: sig[0] });\n let seal = ['SealLast', { i: pre }];\n let ims = messagize(exn, [siger], seal, undefined, undefined, true);\n ims = ims.slice(JSON.stringify(exn.ked).length);\n\n let body = {\n exn: exn.ked,\n sig: new TextDecoder().decode(ims),\n recipient: recipient,\n };\n\n let path = `/identifiers/${name}/requests`;\n let method = 'POST';\n let headers = new Headers({\n Accept: 'application/json+cesr',\n });\n let res = await this.client.fetch(path, method, body, headers);\n return await res.text();\n }\n}\n\nexport interface CreateRegistryArgs {\n name: string;\n registryName: string;\n toad?: string | number | undefined;\n noBackers?: boolean;\n baks?: string[];\n nonce?: string;\n}\n\nexport class RegistryResult {\n private readonly _regser: any;\n private readonly _serder: Serder;\n private readonly _sigs: string[];\n private readonly promise: Promise<Response>;\n\n constructor(\n regser: Serder,\n serder: Serder,\n sigs: any[],\n promise: Promise<Response>\n ) {\n this._regser = regser;\n this._serder = serder;\n this._sigs = sigs;\n this.promise = promise;\n }\n\n get regser() {\n return this._regser;\n }\n\n get serder() {\n return this._serder;\n }\n\n get sigs() {\n return this._sigs;\n }\n\n async op(): Promise<any> {\n let res = await this.promise;\n return await res.json();\n }\n}\n\n/**\n * Registries\n */\nexport class Registries {\n public client: SignifyClient;\n /**\n * Registries\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * List registries\n * @async\n * @param {string} name Name or alias of the identifier\n * @returns {Promise<any>} A promise to the list of registries\n */\n async list(name: string): Promise<any> {\n let path = `/identifiers/${name}/registries`;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * Create a registry\n * @async\n * @param {CreateRegistryArgs}\n * @returns {Promise<[any, Serder, any[], object]> } A promise to the long-running operation\n */\n async create({\n name,\n registryName,\n noBackers = true,\n toad = 0,\n baks = [],\n nonce,\n }: CreateRegistryArgs): Promise<RegistryResult> {\n let hab = await this.client.identifiers().get(name);\n let pre: string = hab.prefix;\n\n let cnfg: string[] = [];\n if (noBackers) {\n cnfg.push(TraitDex.NoBackers);\n }\n\n let state = hab.state;\n let estOnly = state.c !== undefined && state.c.includes('EO');\n if (estOnly) {\n cnfg.push(TraitDex.EstOnly);\n }\n\n let regser = vdr.incept({ pre, baks, toad, nonce, cnfg });\n\n if (estOnly) {\n throw new Error('establishment only not implemented');\n } else {\n let state = hab.state;\n let sn = Number(state.s);\n let dig = state.d;\n\n let data: any = [\n {\n i: regser.pre,\n s: '0',\n d: regser.pre,\n },\n ];\n\n let serder = interact({\n pre: pre,\n sn: sn + 1,\n data: data,\n dig: dig,\n version: Versionage,\n kind: Serials.JSON,\n });\n let keeper = this.client.manager!.get(hab);\n let sigs = await keeper.sign(b(serder.raw));\n let res = this.createFromEvents(\n hab,\n name,\n registryName,\n regser.ked,\n serder.ked,\n sigs\n );\n return new RegistryResult(regser, serder, sigs, res);\n }\n }\n\n createFromEvents(\n hab: Dict<any>,\n name: string,\n registryName: string,\n vcp: Dict<any>,\n ixn: Dict<any>,\n sigs: any[]\n ) {\n let path = `/identifiers/${name}/registries`;\n let method = 'POST';\n\n let data: any = {\n name: registryName,\n vcp: vcp,\n ixn: ixn,\n sigs: sigs,\n };\n let keeper = this.client!.manager!.get(hab);\n data[keeper.algo] = keeper.params();\n\n return this.client.fetch(path, method, data);\n }\n}\n/**\n * Schemas\n */\nexport class Schemas {\n client: SignifyClient;\n /**\n * Schemas\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Get a schema\n * @async\n * @param {string} said SAID of the schema\n * @returns {Promise<any>} A promise to the schema\n */\n async get(said: string): Promise<any> {\n let path = `/schema/${said}`;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * List schemas\n * @async\n * @returns {Promise<any>} A promise to the list of schemas\n */\n async list(): Promise<any> {\n let path = `/schema`;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n}\n\n/**\n * Ipex\n */\n\nexport class Ipex {\n client: SignifyClient;\n /**\n * Schemas\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Create an IPEX grant EXN message\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} recp qb64 AID of recipient of the grant\n * @param {string} message accompany human readable description of the credential being issued\n * @param {Serder} acdc Credential\n * @param {Serder} iss TEL issuance event\n * @param {Serder} anc Anchoring event\n * @param {string} atc attachments for the anchoring event\n * @param {string} agree Option qb64 SAID of agree message this grant is responding to\n * @param {string} datetime Optional datetime to set for the credential\n * @returns {Promise<any>} A promise to the long-running operation\n */\n async grant(\n name: string,\n recp: string,\n message: string,\n acdc: Serder,\n iss: Serder,\n anc: Serder,\n atc: string,\n agree?: string,\n datetime?: string\n ): Promise<[Serder, string[], string]> {\n let hab = await this.client.identifiers().get(name);\n let data: any = {\n m: message,\n i: recp,\n };\n\n let embeds: any = {\n acdc: [acdc, ''],\n iss: [iss, ''],\n anc: [anc, atc],\n };\n\n return this.client\n .exchanges()\n .createExchangeMessage(\n hab,\n '/ipex/grant',\n data,\n embeds,\n undefined,\n datetime,\n agree\n );\n }\n\n /**\n * Create an IPEX admit EXN message\n * @async\n * @param {string} name Name or alias of the identifier\n * @param {string} message accompany human readable description of the credential being admitted\n * @param {string} grant qb64 SAID of grant message this admit is responding to\n * @param {string} datetime Optional datetime to set for the credential\n * @returns {Promise<[Serder, string[], string]>} A promise to the long-running operation\n */\n async admit(\n name: string,\n message: string,\n grant: string,\n datetime?: string\n ): Promise<[Serder, string[], string]> {\n let hab = await this.client.identifiers().get(name);\n let data: any = {\n m: message,\n };\n\n return this.client\n .exchanges()\n .createExchangeMessage(\n hab,\n '/ipex/admit',\n data,\n {},\n undefined,\n datetime,\n grant\n );\n }\n}\n","import { SignifyClient } from './clienting';\nimport { parseRangeHeaders } from '../core/httping';\n\n/**\n * Notifications\n */\nexport class Notifications {\n client: SignifyClient;\n\n /**\n * Notifications\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * List notifications\n * @async\n * @param {number} [start=0] Start index of list of notifications, defaults to 0\n * @param {number} [end=24] End index of list of notifications, defaults to 24\n * @returns {Promise<any>} A promise to the list of notifications\n */\n async list(start: number = 0, end: number = 24): Promise<any> {\n let extraHeaders = new Headers();\n extraHeaders.append('Range', `notes=${start}-${end}`);\n\n let path = `/notifications`;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null, extraHeaders);\n\n let cr = res.headers.get('content-range');\n let range = parseRangeHeaders(cr, 'notes');\n let notes = await res.json();\n\n return {\n start: range.start,\n end: range.end,\n total: range.total,\n notes: notes,\n };\n }\n\n /**\n * Mark a notification as read\n * @async\n * @param {string} said SAID of the notification\n * @returns {Promise<string>} A promise to the result of the marking\n */\n async mark(said: string): Promise<string> {\n let path = `/notifications/` + said;\n let method = 'PUT';\n let res = await this.client.fetch(path, method, null);\n return await res.text();\n }\n\n /**\n * Delete a notification\n * @async\n * @param {string} said SAID of the notification\n * @returns {Promise<any>} A promise to the result of the deletion\n */\n async delete(said: string): Promise<any> {\n let path = `/notifications/` + said;\n let method = 'DELETE';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n}\n","import { SignifyClient } from './clienting';\n\n/**\n * Escrows\n */\nexport class Escrows {\n client: SignifyClient;\n\n /**\n * Escrows\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * List replay messages\n * @async\n * @param {string} [route] Optional route in the replay message\n * @returns {Promise<any>} A promise to the list of replay messages\n */\n async listReply(route?: string): Promise<any> {\n let params = new URLSearchParams();\n if (route !== undefined) {\n params.append('route', route);\n }\n\n let path = `/escrows/rpy` + '?' + params.toString();\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n}\n","import { SignifyClient } from './clienting';\nimport { Dict } from '../core/core';\n\n/**\n * Groups\n */\nexport class Groups {\n client: SignifyClient;\n\n /**\n * Groups\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Get group request messages\n * @async\n * @param {string} [said] SAID of exn message to load\n * @returns {Promise<any>} A promise to the list of replay messages\n */\n async getRequest(said: string): Promise<any> {\n let path = `/multisig/request/` + said;\n let method = 'GET';\n let res = await this.client.fetch(path, method, null);\n return await res.json();\n }\n\n /**\n * Send multisig exn request messages to other group members\n * @async\n * @param {string} [name] human readable name of group AID\n * @param {Dict<any>} [exn] exn message to send to other members\n * @param {string[]} [sigs] signature of the participant over the exn\n * @param {string} [atc] additional attachments from embedded events in exn\n * @returns {Promise<any>} A promise to the list of replay messages\n */\n async sendRequest(\n name: string,\n exn: Dict<any>,\n sigs: string[],\n atc: string\n ): Promise<any> {\n let path = `/identifiers/${name}/multisig/request`;\n let method = 'POST';\n let data = {\n exn: exn,\n sigs: sigs,\n atc: atc,\n };\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n}\n","import { BexDex, Matter, MatterArgs, MtrDex } from './matter';\nimport { EmptyMaterialError } from './kering';\nimport Base64 from 'urlsafe-base64';\n\nconst B64REX = '^[A-Za-z0-9\\\\-_]*$';\nexport const Reb64 = new RegExp(B64REX);\n\n/*\n\n Bexter is subclass of Matter, cryptographic material, for variable length\n strings that only contain Base64 URL safe characters, i.e. Base64 text (bext).\n When created using the 'bext' paramaeter, the encoded matter in qb64 format\n in the text domain is more compact than would be the case if the string were\n passed in as raw bytes. The text is used as is to form the value part of the\n qb64 version not including the leader.\n\n Due to ambiguity that arises from pre-padding bext whose length is a multiple of\n three with one or more 'A' chars. Any bext that starts with an 'A' and whose length\n is either a multiple of 3 or 4 may not round trip. Bext with a leading 'A'\n whose length is a multiple of four may have the leading 'A' stripped when\n round tripping.\n\n Bexter(bext='ABBB').bext == 'BBB'\n Bexter(bext='BBB').bext == 'BBB'\n Bexter(bext='ABBB').qb64 == '4AABABBB' == Bexter(bext='BBB').qb64\n\n To avoid this problem, only use for applications of base 64 strings that\n never start with 'A'\n\n Examples: base64 text strings:\n\n bext = \"\"\n qb64 = '4AAA'\n\n bext = \"-\"\n qb64 = '6AABAAA-'\n\n bext = \"-A\"\n qb64 = '5AABAA-A'\n\n bext = \"-A-\"\n qb64 = '4AABA-A-'\n\n bext = \"-A-B\"\n qb64 = '4AAB-A-B'\n\n\n Example uses:\n CESR encoded paths for nested SADs and SAIDs\n CESR encoded fractionally weighted threshold expressions\n\n\n Attributes:\n\n Inherited Properties: (See Matter)\n .pad is int number of pad chars given raw\n\n .code is str derivation code to indicate cypher suite\n .raw is bytes crypto material only without code\n .index is int count of attached crypto material by context (receipts)\n .qb64 is str in Base64 fully qualified with derivation code + crypto mat\n .qb64b is bytes in Base64 fully qualified with derivation code + crypto mat\n .qb2 is bytes in binary with derivation code + crypto material\n .transferable is Boolean, True when transferable derivation code False otherwise\n\n Properties:\n .text is the Base64 text value, .qb64 with text code and leader removed.\n\n Hidden:\n ._pad is method to compute .pad property\n ._code is str value for .code property\n ._raw is bytes value for .raw property\n ._index is int value for .index property\n ._infil is method to compute fully qualified Base64 from .raw and .code\n ._exfil is method to extract .code and .raw from fully qualified Base64\n\n Methods:\n\n\n\n\n */\n\nexport class Bexter extends Matter {\n constructor(\n { raw, code = MtrDex.StrB64_L0, qb64b, qb64, qb2 }: MatterArgs,\n bext?: string\n ) {\n if (\n raw === undefined &&\n qb64b === undefined &&\n qb64 === undefined &&\n qb2 === undefined\n ) {\n if (bext === undefined)\n throw new EmptyMaterialError('Missing bext string.');\n\n let match = Reb64.exec(bext);\n if (!match) throw new Error('Invalid Base64.');\n\n raw = Bexter._rawify(bext);\n }\n\n super({ raw, code, qb64b, qb64, qb2 });\n\n if (!BexDex.has(this.code))\n throw new Error(`Invalid code = ${this.code} for Bexter.`);\n }\n\n static _rawify(bext: string): Uint8Array {\n let ts = bext.length % 4; // bext size mod 4\n let ws = (4 - ts) % 4; // pre conv wad size in chars\n let ls = (3 - ts) % 3; // post conv lead size in bytes\n let wad = new Array(ws);\n wad.fill('A');\n let base = wad.join('') + bext; // pre pad with wad of zeros in Base64 == 'A'\n let raw = Base64.decode(base); // [ls:] // convert and remove leader\n\n return Uint8Array.from(raw).subarray(ls); // raw binary equivalent of text\n }\n\n get bext(): string {\n let sizage = Matter.Sizes.get(this.code);\n let wad = Uint8Array.from(new Array(sizage?.ls).fill(0));\n let bext = Base64.encode(Buffer.from([...wad, ...this.raw]));\n\n let ws = 0;\n if (sizage?.ls === 0 && bext !== undefined) {\n if (bext[0] === 'A') {\n ws = 1;\n }\n } else {\n ws = (sizage?.ls! + 1) % 4;\n }\n\n return bext.substring(ws);\n }\n}\n","import { Bexter, Reb64 } from './bexter';\nimport { MatterArgs, MtrDex } from './matter';\nimport { EmptyMaterialError } from './kering';\n\n/*\n Pather is a subclass of Bexter that provides SAD Path language specific functionality\n for variable length strings that only contain Base64 URL safe characters. Pather allows\n the specification of SAD Paths as a list of field components which will be converted to the\n Base64 URL safe character representation.\n\n Additionally, Pather provides .rawify for extracting and serializing the content targeted by\n .path for a SAD, represented as an instance of Serder. Pather enforces Base64 URL character\n safety by leveraging the fact that SADs must have static field ordering. Any field label can\n be replaced by its field ordinal to allow for path specification and traversal for any field\n labels that contain non-Base64 URL safe characters.\n\n\n Examples: strings:\n path = []\n text = \"-\"\n qb64 = '6AABAAA-'\n\n path = [\"A\"]\n text = \"-A\"\n qb64 = '5AABAA-A'\n\n path = [\"A\", \"B\"]\n text = \"-A-B\"\n qb64 = '4AAB-A-B'\n\n path = [\"A\", 1, \"B\", 3]\n text = \"-A-1-B-3\"\n qb64 = '4AAC-A-1-B-3'\n\n */\n\nexport class Pather extends Bexter {\n constructor(\n { raw, code = MtrDex.StrB64_L0, qb64b, qb64, qb2 }: MatterArgs,\n bext?: string,\n path?: string[]\n ) {\n if (\n raw === undefined &&\n bext === undefined &&\n qb64b === undefined &&\n qb64 === undefined &&\n qb2 === undefined\n ) {\n if (path === undefined)\n throw new EmptyMaterialError('Missing bext string.');\n\n bext = Pather._bextify(path);\n }\n\n super({ raw, code, qb64b, qb64, qb2 }, bext);\n }\n\n // TODO: implement SAD access methods like resolve, root, strip, startswith and tail\n\n get path(): string[] {\n if (!this.bext.startsWith('-')) {\n throw new Error('invalid SAD ptr');\n }\n\n let path = this.bext;\n while (path.charAt(0) === '-') {\n path = path.substring(1);\n }\n\n let apath = path.split('-');\n if (apath[0] !== '') {\n return apath;\n } else {\n return [];\n }\n }\n\n static _bextify(path: any[]): string {\n let vath = [];\n for (const p of path) {\n let sp = '';\n if (typeof p === 'number') {\n sp = p.toString();\n } else {\n sp = p;\n }\n\n let match = Reb64.exec(sp);\n if (!match) {\n throw new Error(`\"Non Base64 path component = ${p}.`);\n }\n\n vath.push(sp);\n }\n return '-' + vath.join('-');\n }\n}\n","import { SignifyClient } from './clienting';\nimport { b, d, Dict, Ident, Ilks, Serials, versify } from '../core/core';\nimport { Serder } from '../core/serder';\nimport { nowUTC } from '../core/utils';\nimport { Pather } from '../core/pather';\nimport { Counter, CtrDex } from '../core/counter';\nimport { Saider } from '../core/saider';\n\n/**\n * Exchanges\n */\nexport class Exchanges {\n client: SignifyClient;\n\n /**\n * Exchanges\n * @param {SignifyClient} client\n */\n constructor(client: SignifyClient) {\n this.client = client;\n }\n\n /**\n * Create exn message\n * @async\n * @returns {Promise<any>} A promise to the list of replay messages\n * @param sender\n * @param route\n * @param payload\n * @param embeds\n * @param recipient\n * @param datetime\n * @param dig\n */\n async createExchangeMessage(\n sender: Dict<any>,\n route: string,\n payload: Dict<any>,\n embeds: Dict<any>,\n recipient?: string,\n datetime?: string,\n dig?: string\n ): Promise<[Serder, string[], string]> {\n let keeper = this.client.manager!.get(sender);\n let [exn, end] = exchange(\n route,\n payload,\n sender['prefix'],\n recipient,\n datetime,\n dig,\n undefined,\n embeds\n );\n\n let sigs = await keeper.sign(b(exn.raw));\n return [exn, sigs, d(end)];\n }\n\n /**\n * Send exn messages to list of recipients\n * @async\n * @returns {Promise<any>} A promise to the list of replay messages\n * @param name\n * @param topic\n * @param sender\n * @param route\n * @param payload\n * @param embeds\n * @param recipients\n */\n async send(\n name: string,\n topic: string,\n sender: Dict<any>,\n route: string,\n payload: Dict<any>,\n embeds: Dict<any>,\n recipients: string[]\n ): Promise<any> {\n let [exn, sigs, atc] = await this.createExchangeMessage(\n sender,\n route,\n payload,\n embeds\n );\n return await this.sendFromEvents(\n name,\n topic,\n exn,\n sigs,\n atc,\n recipients\n );\n }\n\n /**\n * Send exn messaget to list of recipients\n * @async\n * @returns {Promise<any>} A promise to the list of replay messages\n * @param name\n * @param topic\n * @param exn\n * @param sigs\n * @param atc\n * @param recipients\n */\n async sendFromEvents(\n name: string,\n topic: string,\n exn: Serder,\n sigs: string[],\n atc: string,\n recipients: string[]\n ): Promise<any> {\n let path = `/identifiers/${name}/exchanges`;\n let method = 'POST';\n let data: any = {\n tpc: topic,\n exn: exn.ked,\n sigs: sigs,\n atc: atc,\n rec: recipients,\n };\n\n let res = await this.client.fetch(path, method, data);\n return await res.json();\n }\n}\n\nexport function exchange(\n route: string,\n payload: Dict<any>,\n sender: string,\n recipient?: string,\n date?: string,\n dig?: string,\n modifiers?: Dict<any>,\n embeds?: Dict<any>\n): [Serder, Uint8Array] {\n const vs = versify(Ident.KERI, undefined, Serials.JSON, 0);\n const ilk = Ilks.exn;\n const dt =\n date !== undefined\n ? date\n : nowUTC().toISOString().replace('Z', '000+00:00');\n const p = dig !== undefined ? dig : '';\n const q = modifiers !== undefined ? modifiers : {};\n const ems = embeds != undefined ? embeds : {};\n\n let e = {} as Dict<any>;\n let end = '';\n Object.entries(ems).forEach(([key, value]) => {\n let serder = value[0];\n let atc = value[1];\n e[key] = serder.ked;\n\n if (atc == undefined) {\n return;\n }\n let pathed = '';\n let pather = new Pather({}, undefined, ['e', key]);\n pathed += pather.qb64;\n pathed += atc;\n\n let counter = new Counter({\n code: CtrDex.PathedMaterialQuadlets,\n count: Math.floor(pathed.length / 4),\n });\n end += counter.qb64;\n end += pathed;\n });\n\n if (Object.keys(e).length > 0) {\n e['d'] = '';\n [, e] = Saider.saidify(e);\n }\n\n const attrs = {} as Dict<any>;\n\n if (recipient !== undefined) {\n attrs['i'] = recipient;\n }\n\n let a = {\n ...attrs,\n ...payload,\n };\n\n let _ked = {\n v: vs,\n t: ilk,\n d: '',\n i: sender,\n p: p,\n dt: dt,\n r: route,\n q: q,\n a: a,\n e: e,\n };\n let [, ked] = Saider.saidify(_ked);\n\n let exn = new Serder(ked);\n\n return [exn, b(end)];\n}\n","import { Agent, Controller } from './controller';\nimport { Tier } from '../core/salter';\nimport { Authenticater } from '../core/authing';\nimport { ExternalModule, KeyManager } from '../core/keeping';\n\nimport { Identifier } from './aiding';\nimport { Contacts, Challenges } from './contacting';\nimport { Oobis, Operations, KeyEvents, KeyStates } from './coring';\nimport { Credentials, Ipex, Registries, Schemas } from './credentialing';\nimport { Notifications } from './notifying';\nimport { Escrows } from './escrowing';\nimport { Groups } from './grouping';\nimport { Exchanges } from './exchanging';\n\nconst DEFAULT_BOOT_URL = 'http://localhost:3903';\n\nclass State {\n agent: any | null;\n controller: any | null;\n ridx: number;\n pidx: number;\n\n constructor() {\n this.agent = null;\n this.controller = null;\n this.pidx = 0;\n this.ridx = 0;\n }\n}\n\n/** SignifyClient */\nexport class SignifyClient {\n public controller: Controller;\n public url: string;\n public bran: string;\n public pidx: number;\n public agent: Agent | null;\n public authn: Authenticater | null;\n public manager: KeyManager | null;\n public tier: Tier;\n public bootUrl: string;\n public exteralModules: ExternalModule[];\n\n /**\n * SignifyClient constructor\n * @param {string} url KERIA admin interface URL\n * @param {string} bran Base64 21 char string that is used as base material for seed of the client AID\n * @param {Tier} tier Security tier for generating keys of the client AID (high | mewdium | low)\n * @param {string} bootUrl KERIA boot interface URL\n * @param {ExternalModule[]} externalModules list of external modules to load\n */\n constructor(\n url: string,\n bran: string,\n tier: Tier = Tier.low,\n bootUrl: string = DEFAULT_BOOT_URL,\n externalModules: ExternalModule[] = []\n ) {\n this.url = url;\n if (bran.length < 21) {\n throw Error('bran must be 21 characters');\n }\n this.bran = bran;\n this.pidx = 0;\n this.controller = new Controller(bran, tier);\n this.authn = null;\n this.agent = null;\n this.manager = null;\n this.tier = tier;\n this.bootUrl = bootUrl;\n this.exteralModules = externalModules;\n }\n\n get data() {\n return [this.url, this.bran, this.pidx, this.authn];\n }\n\n /**\n * Boot a KERIA agent\n * @async\n * @returns {Promise<Response>} A promise to the result of the boot\n */\n async boot(): Promise<Response> {\n const [evt, sign] = this.controller?.event ?? [];\n const data = {\n icp: evt.ked,\n sig: sign.qb64,\n stem: this.controller?.stem,\n pidx: 1,\n tier: this.controller?.tier,\n };\n\n return await fetch(this.bootUrl + '/boot', {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n\n /**\n * Get state of the agent and the client\n * @async\n * @returns {Promise<Response>} A promise to the state\n */\n async state(): Promise<State> {\n const caid = this.controller?.pre;\n\n let res = await fetch(this.url + `/agent/${caid}`);\n if (res.status == 404) {\n throw new Error(`agent does not exist for controller ${caid}`);\n }\n\n const data = await res.json();\n let state = new State();\n state.agent = data.agent ?? {};\n state.controller = data.controller ?? {};\n state.ridx = data.ridx ?? 0;\n state.pidx = data.pidx ?? 0;\n return state;\n }\n\n /** Connect to a KERIA agent\n * @async\n */\n async connect() {\n const state = await this.state();\n this.pidx = state.pidx;\n //Create controller representing the local client AID\n this.controller = new Controller(\n this.bran,\n this.tier,\n 0,\n state.controller\n );\n this.controller.ridx = state.ridx !== undefined ? state.ridx : 0;\n // Create agent representing the AID of KERIA cloud agent\n this.agent = new Agent(state.agent);\n if (this.agent.anchor != this.controller.pre) {\n throw Error(\n 'commitment to controller AID missing in agent inception event'\n );\n }\n if (this.controller.serder.ked.s == 0) {\n await this.approveDelegation();\n }\n this.manager = new KeyManager(\n this.controller.salter,\n this.exteralModules\n );\n this.authn = new Authenticater(\n this.controller.signer,\n this.agent.verfer!\n );\n }\n\n /**\n * Fetch a resource from the KERIA agent\n * @async\n * @param {string} path Path to the resource\n * @param {string} method HTTP method\n * @param {any} data Data to be sent in the body of the resource\n * @param {Headers} [extraHeaders] Optional extra headers to be sent with the request\n * @returns {Promise<Response>} A promise to the result of the fetch\n */\n async fetch(\n path: string,\n method: string,\n data: any,\n extraHeaders?: Headers\n ): Promise<Response> {\n let headers = new Headers();\n let signed_headers = new Headers();\n let final_headers = new Headers();\n\n headers.set('Signify-Resource', this.controller.pre);\n headers.set(\n 'Signify-Timestamp',\n new Date().toISOString().replace('Z', '000+00:00')\n );\n headers.set('Content-Type', 'application/json');\n\n let _body = method == 'GET' ? null : JSON.stringify(data);\n if (_body !== null) {\n headers.set('Content-Length', String(_body.length));\n }\n if (this.authn) {\n signed_headers = this.authn.sign(\n headers,\n method,\n path.split('?')[0]\n );\n } else {\n throw new Error('client need to call connect first');\n }\n\n signed_headers.forEach((value, key) => {\n final_headers.set(key, value);\n });\n if (extraHeaders !== undefined) {\n extraHeaders.forEach((value, key) => {\n final_headers.append(key, value);\n });\n }\n let res = await fetch(this.url + path, {\n method: method,\n body: _body,\n headers: final_headers,\n });\n if (!res.ok) {\n const error = await res.text();\n throw new Error(error);\n }\n const isSameAgent =\n this.agent?.pre === res.headers.get('signify-resource');\n if (!isSameAgent) {\n throw new Error('message from a different remote agent');\n }\n\n const verification = this.authn.verify(\n res.headers,\n method,\n path.split('?')[0]\n );\n if (verification) {\n return res;\n } else {\n throw new Error('response verification failed');\n }\n }\n\n /**\n * Fetch a resource from from an external URL with headers signed by an AID\n * @async\n * @param {string} url URL of the resource\n * @param {string} path Path to the resource\n * @param {string} method HTTP method\n * @param {any} data Data to be sent in the body of the resource\n * @param {string} aidName Name or alias of the AID to be used for signing\n * @returns {Promise<Response>} A promise to the result of the fetch\n */\n async signedFetch(\n url: string,\n path: string,\n method: string,\n data: any,\n aidName: string\n ): Promise<Response> {\n const hab = await this.identifiers().get(aidName);\n const keeper = this.manager!.get(hab);\n\n const authenticator = new Authenticater(\n keeper.signers[0],\n keeper.signers[0].verfer\n );\n\n let headers = new Headers();\n headers.set('Signify-Resource', hab.prefix);\n headers.set(\n 'Signify-Timestamp',\n new Date().toISOString().replace('Z', '000+00:00')\n );\n\n if (data !== null) {\n headers.set('Content-Length', data.length);\n } else {\n headers.set('Content-Length', '0');\n }\n let signed_headers = authenticator.sign(\n headers,\n method,\n path.split('?')[0]\n );\n let _body = null;\n if (method != 'GET') {\n if (data instanceof FormData) {\n _body = data;\n // do not set the content type, let the browser do it\n // headers.set('Content-Type', 'multipart/form-data')\n } else {\n _body = JSON.stringify(data);\n headers.set('Content-Type', 'application/json');\n }\n } else {\n headers.set('Content-Type', 'application/json');\n }\n\n return await fetch(url + path, {\n method: method,\n body: _body,\n headers: signed_headers,\n });\n }\n\n /**\n * Approve the delegation of the client AID to the KERIA agent\n * @async\n * @returns {Promise<Response>} A promise to the result of the approval\n */\n async approveDelegation(): Promise<Response> {\n let sigs = this.controller.approveDelegation(this.agent!);\n\n let data = {\n ixn: this.controller.serder.ked,\n sigs: sigs,\n };\n\n return await fetch(\n this.url + '/agent/' + this.controller.pre + '?type=ixn',\n {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n }\n );\n }\n\n /**\n * Save old client passcode in KERIA agent\n * @async\n * @param {string} passcode Passcode to be saved\n * @returns {Promise<Response>} A promise to the result of the save\n */\n async saveOldPasscode(passcode: string): Promise<Response> {\n const caid = this.controller?.pre;\n const body = { salt: passcode };\n return await fetch(this.url + '/salt/' + caid, {\n method: 'PUT',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n\n /**\n * Delete a saved passcode from KERIA agent\n * @async\n * @returns {Promise<Response>} A promise to the result of the deletion\n */\n async deletePasscode(): Promise<Response> {\n const caid = this.controller?.pre;\n return await fetch(this.url + '/salt/' + caid, {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n\n /**\n * Rotate the client AID\n * @async\n * @param {string} nbran Base64 21 char string that is used as base material for the new seed\n * @param {Array<string>} aids List of managed AIDs to be rotated\n * @returns {Promise<Response>} A promise to the result of the rotation\n */\n async rotate(nbran: string, aids: string[]): Promise<Response> {\n let data = this.controller.rotate(nbran, aids);\n return await fetch(this.url + '/agent/' + this.controller.pre, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n\n /**\n * Get identifiers resource\n * @returns {Identifier}\n */\n identifiers(): Identifier {\n return new Identifier(this);\n }\n\n /**\n * Get OOBIs resource\n * @returns {Oobis}\n */\n oobis(): Oobis {\n return new Oobis(this);\n }\n\n /**\n * Get operations resource\n * @returns {Operations}\n */\n operations(): Operations {\n return new Operations(this);\n }\n\n /**\n * Get keyEvents resource\n * @returns {KeyEvents}\n */\n keyEvents(): KeyEvents {\n return new KeyEvents(this);\n }\n\n /**\n * Get keyStates resource\n * @returns {KeyStates}\n */\n keyStates(): KeyStates {\n return new KeyStates(this);\n }\n\n /**\n * Get credentials resource\n * @returns {Credentials}\n */\n credentials(): Credentials {\n return new Credentials(this);\n }\n\n /**\n * Get IPEX resource\n * @returns {Ipex}\n */\n ipex(): Ipex {\n return new Ipex(this);\n }\n\n /**\n * Get registries resource\n * @returns {Registries}\n */\n registries(): Registries {\n return new Registries(this);\n }\n\n /**\n * Get schemas resource\n * @returns {Schemas}\n */\n schemas(): Schemas {\n return new Schemas(this);\n }\n\n /**\n * Get challenges resource\n * @returns {Challenges}\n */\n challenges(): Challenges {\n return new Challenges(this);\n }\n\n /**\n * Get contacts resource\n * @returns {Contacts}\n */\n contacts(): Contacts {\n return new Contacts(this);\n }\n\n /**\n * Get notifications resource\n * @returns {Notifications}\n */\n notifications(): Notifications {\n return new Notifications(this);\n }\n\n /**\n * Get escrows resource\n * @returns {Escrows}\n */\n escrows(): Escrows {\n return new Escrows(this);\n }\n\n /**\n * Get groups resource\n * @returns {Groups}\n */\n groups(): Groups {\n return new Groups(this);\n }\n\n /**\n * Get exchange resource\n * @returns {Exchanges}\n */\n exchanges(): Exchanges {\n return new Exchanges(this);\n }\n}\n","import _sodium from 'libsodium-wrappers-sumo';\nimport { create, all } from 'mathjs';\n\nexport const ready: () => Promise<void> = async () => {\n try {\n let b3 = await import('blake3/browser-async');\n // @ts-ignore\n await b3.default(\n 'https://cdn.jsdelivr.net/npm/blake3@2.1.7/dist/wasm/web/blake3_js_bg.wasm'\n );\n await _sodium.ready;\n } catch (e) {\n await _sodium.ready;\n }\n};\n\nexport * from './keri/app/habery';\nexport * from './keri/app/controller';\n\nexport * from './keri/app/aiding';\nexport * from './keri/app/clienting';\nexport * from './keri/app/contacting';\nexport * from './keri/app/coring';\nexport * from './keri/app/credentialing';\nexport * from './keri/app/escrowing';\nexport * from './keri/app/exchanging';\nexport * from './keri/app/grouping';\nexport * from './keri/app/notifying';\n\nexport * from './keri/core/authing';\nexport * from './keri/core/cigar';\nexport * from './keri/core/cipher';\nexport * from './keri/core/core';\nexport * from './keri/core/counter';\nexport * from './keri/core/decrypter';\nexport * from './keri/core/diger';\nexport * from './keri/core/encrypter';\nexport * from './keri/core/eventing';\nexport * from './keri/core/httping';\nexport * from './keri/core/indexer';\nexport * from './keri/core/keeping';\nexport * from './keri/core/kering';\nexport * from './keri/core/manager';\nexport * from './keri/core/matter';\nexport * from './keri/core/number';\nexport * from './keri/core/prefixer';\nexport * from './keri/core/saider';\nexport * from './keri/core/salter';\nexport * from './keri/core/seqner';\nexport * from './keri/core/serder';\nexport * from './keri/core/siger';\nexport * from './keri/core/signer';\nexport * from './keri/core/tholder';\nexport * from './keri/core/utils';\nexport * from './keri/core/verfer';\n\nexport * from './keri/end/ending';\n\nexport { Algos } from './keri/core/manager';\n\nimport { Buffer } from 'buffer';\n\ntry {\n window.Buffer = Buffer;\n} catch (e) {}\n\nconst config = {};\nexport const math = create(all, config);\n"],"names":["EmptyMaterialError","err","_err","Error","_createClass","key","get","Serials","Ident","Version","major","minor","Versionage","Ilks","icp","rot","ixn","dip","drt","rct","vrc","rpy","exn","vcp","iss","rev","IcpLabels","DipLabels","RotLabels","DrtLabels","IxnLabels","KsnLabels","RpyLabels","encoder","TextEncoder","decoder","TextDecoder","VERFULLSIZE","MINSNIFFSIZE","MINSIGSIZE","VEREX","deversify","versionString","kind","size","proto","version","re","RegExp","match","exec","_ref","Object","values","includes","ta","pa","versify","ident","KERI","JSON","undefined","toString","padStart","B64ChrByIdx","Map","B64IdxByChr","Array","from","entry","intToB64","i","l","out","Math","floor","x","length","intToB64b","n","s","b","b64ToInt","split","reverse","forEach","c","e","encode","d","u","decode","concat","one","two","Uint8Array","set","readInt","array","value","Codex","_proto","prototype","has","prop","m","entries","v","MatterCodex","_Codex","_inheritsLoose","_this","MtrDex","NonTransCodex","_Codex2","_this2","NonTransDex","DigiCodex","_Codex3","_this3","DigiDex","NumCodex","_Codex4","_this4","NumDex","BexCodex","_Codex5","_this5","BexDex","SmallVarRawSizeCodex","_Codex6","_this6","SmallVrzDex","LargeVarRawSizeCodex","_Codex7","_this7","LargeVrzDex","Sizage","hs","ss","fs","ls","Matter","raw","_ref$code","code","Ed25519N","qb64b","qb64","qb2","rize","pow","substring","sizage","Sizes","_rawSize","slice","_code","_size","_raw","_exfil","_bexfil","cs","_leadSize","_proto2","_infil","ps","both","bytes","odx","Base64","Buffer","first","Hards","keys","hard","pbs","base","join","paw","pi","subarray","li","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","Verfer","_Matter","call","Ed25519","_verify","_ed25519","ECDSA_256r1N","ECDSA_256r1","_secp256r1","verify","sig","ser","libsodium","crypto_sign_verify_detached","error","publicKey","secp256r1","fromCompressedPublicKey","Cigar","verfer","_verfer","IndexerCodex","IdrDex","IndexedSigCodex","IdxSigDex","IndexedCurrentSigCodex","IdxCrtSigDex","IndexedBothSigCodex","_proto3","IdxBthSigDex","Xizage","os","Indexer","_ref$raw","Ed25519_Sig","_ref$index","index","_ref$ondex","ondex","_ref$qb64b","_ref$qb","_ref$qb2","xizage","ms","Number","isInteger","rawsize","_index","_ondex","_proto4","full","sindex","sondex","Siger","_Indexer","Signer","Ed25519_Seed","_ref$transferable","transferable","randombytes_buf","crypto_sign_SEEDBYTES","_sign","keypair","crypto_sign_seed_keypair","_assertThisInitialized","sign","only","seed","crypto_sign_detached","Ed25519_Crt_Sig","Ed25519_Big_Crt_Sig","Ed25519_Big_Sig","Tier","Salter","Salt_128","_ref$tier","tier","low","salt","crypto_pwhash_SALTBYTES","_tier","stretch","path","temp","opslimit","memlimit","med","high","crypto_pwhash","crypto_pwhash_ALG_ARGON2ID13","signer","Decrypter","X25519_Private","sigkey","crypto_sign_ed25519_sk_to_curve25519","_decrypt","_x25519","decrypt","cipher","Cipher","prikey","pubkey","crypto_scalarmult_base","plain","crypto_box_seal_open","X25519_Cipher_Salt","X25519_Cipher_Seed","decrypter","pad","width","z","String","repeat","extractValues","ked","labels","_iterator","_createForOfIteratorHelperLoose","_step","done","label","extractElementValues","arrayEquals","ar1","ar2","every","val","element","data","k","push","nowUTC","Date","range","start","stop","step","result","intToBytes","byteArray","byte","bytesToInt","ar","Encrypter","verkey","X25519","crypto_sign_ed25519_pk_to_curve25519","_encrypt","verifySeed","encrypt","matter","crypto_box_seal","Diger","Blake3_256","hasher","createHash","dig","update","digest","blake3_256","compare","diger","Algos","PubLot","PreSit","PrePrm","salty","PubSet","PubPath","Keys","signers","paths","_signers","_paths","RandyCreator","create","codes","count","fill","SaltyCreator","stem","salter","_stem","pidx","ridx","kidx","idx","Creatory","algo","randy","_make","_makeRandy","_makeSalty","make","apply","arguments","args","_len","_key","_construct","openManager","passcode","bran","aeid","Manager","ks","_ks","Keeper","_seed","_encrypter","_decrypter","updateAeid","_this$_encrypter","prmsElements","_step$value","pinPrms","_iterator2","prisElements","_step2","_step2$value","pubKey","pinPris","pinGbls","incept","_ref2","icodes","_ref2$icodes","_ref2$icount","icount","_ref2$icode","icode","_ref2$ncodes","ncodes","_ref2$ncount","ncount","_ref2$ncode","ncode","_ref2$dcode","dcode","_ref2$algo","_ref2$salt","_ref2$stem","_ref2$tier","_ref2$rooted","rooted","_ref2$transferable","_ref2$temp","creator","ikeys","verfers","nkeys","digers","pp","encrypter","dt","nw","pubs","nt","nxt","pre","putPres","putPrms","putSits","putPris","ppt","putPths","pubSet","putPubs","riKey","nxtPubSet","move","old","gnu","getPres","oldprm","getPrms","oldsit","getSits","remPrms","remSits","pl","getPubs","pinPres","rotate","_ref3","_ref3$ncodes","_ref3$ncount","_ref3$ncode","_ref3$dcode","_ref3$transferable","_ref3$temp","_ref3$erase","erase","pub","getPris","pinSits","newPs","remPris","_ref4","_ref4$pubs","_ref4$verfers","_ref4$indexed","indexed","_ref4$indices","indices","_ref4$ondices","ondices","getPths","sigers","o","cigars","getGbls","parseInt","_salt","a","_gbls","_pris","_pths","_pres","_prms","_sits","_pubs","_proto5","pinPths","CesrNumber","num","numh","_num","Short","Long","Big","Huge","Tholder","kargs","thold","_processThold","limen","_processLimen","sith","_processSith","_processUnweighted","_processWeighted","number","indexOf","_sith","parse","mask","map","_processClauses","clause","w","weight","_thold","_weighted","_satisfy","_satisfy_numeric","_number","math","sum","reduce","acc","currentValue","_satisfy_weighted","fraction","indexes","Set","sort","sats","_iterator3","_step3","wio","_iterator4","_step4","cw","_iterator5","_step5","satisfy","_this$_number","weighted","format","stringify","Serder","_kind","_exhale","sizeify","pretty","_ked","_this$_exhale","kd","_ident","_version","dumps","_deversify","knd","Dummy","Prefixer","_derive","_derive_ed25519N","_derive_ed25519","_derive_blake3_256","_derive2","_verify_ed25519N","_verify_ed25519","_verify_blake3_256","derive","prefixed","next","backers","anchor","ilk","_sizeify","_Prefixer$_derive_bla","crymat","Ids","Digestage","klas","Saider","sad","_Saider$_derive","_extends","digestive","_digest_size","_length","Digests","digestage","cpa","_serialze","versioned","_Saider$_derive2","dsad","saider","saidify","_Saider$_derive3","CounterCodex","CtrDex","Counter","countB64","_count","countToB64","semVerToB64","patch","parts","ssplits","splits","off","p","scount","Seqner","sn","snh","kwa","_objectWithoutPropertiesLoose","_excluded","MaxIntThold","_ref$pre","_ref$dig","_ref$ilk","_ref$sn","_ref$isith","isith","_ref$ndigs","ndigs","_ref$nsith","nsith","_ref$wits","wits","_ref$cuts","cuts","_ref$adds","adds","_ref$toad","toad","_ref$data","_ref$version","_ref$kind","_ref$intive","intive","vs","_ilk","sner","_isit","max","ceil","tholder","_ndigs","_nsith","ntholder","_wits","witset","_cuts","cutset","_adds","addset","witaddset","filter","cutaddset","newitsetdiff","newitset","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","delegateYield","_toad","ample","t","kt","bt","br","ba","_Saider$saidify","f","weak","f1","f2","min","m1","m2","cnfg","_ref2$version","_ref2$kind","_ref2$intive","delpre","toader","prefixer","_Saider$saidify2","messagize","serder","seal","wigers","pipelined","msg","atc","TransIdxSigGroups","TransLastIdxSigGroups","ControllerIdxSigs","siger","wiger","cigar","AttachedMaterialQuadlets","interact","_Saider$saidify3","reply","route","stamp","_sad","toISOString","replace","r","_Saider$saidify4","TraitCodex","TraitDex","Hab","name","Habery","_name","_mgr","habByName","_habs","makeHab","_ref2$code","_ref2$isith","_ref2$nsith","_ref2$toad","_ref2$wits","_ref2$delpre","_ref2$estOnly","estOnly","_ref2$DnD","DnD","_ref2$data","_this$_mgr$incept","EstOnly","DoNotDelegate","hab","Agent","agent","state","said","_this$event","event","evt","Controller","pop","nsigner","approveDelegation","_agent","seqner","controller","aids","nbran","nsalter","ncreator","sigs","sxlt","aid","console","log","dnxt","acreator","asxlt","prxs","nxts","nprxs","prx","dsigner","_i","_signers4","nnxts","recrypt","enc","normalize","header","trim","siginput","method","headers","fields","expires","nonce","alg","keyid","context","items","ifields","field","startsWith","nameParams","now","getTime","sid","params","serializeDictionary","Unqualified","Inputage","desiginput","parseDictionary","siginputs","list","item","created","parseRangeHeaders","typ","rng","end","total","Identifier","_list","_get","_create","_interact2","_rotate2","_addEndRole","_members","client","_x","_x2","_asyncToGenerator","extraHeaders","Headers","append","fetch","res","sent","cr","json","abrupt","_x3","_callee2","_callee2$","_context2","_x4","_x5","_callee3","_kargs$transferable","_kargs$isith","_kargs$nsith","_kargs$wits","_kargs$toad","_kargs$dcode","proxy","states","rstates","mhab","_keys","extern_type","extern","xargs","keeper","manager","_context3","_yield$keeper$incept","jsondata","smids","rmids","EventResult","_x6","_x7","_callee4","_callee4$","_context4","prefix","isArray","_x8","_x9","_callee5","_kargs$transferable2","_kargs$ncode","_kargs$ncount","_context5","_kargs$nsith2","cst","nst","_kargs$ncodes","_yield$keeper$rotate","_kargs$cuts","_kargs$adds","addEndRole","_x10","_x11","_x12","_x13","_callee6","role","eid","_callee6$","_context6","makeEndRole","cid","members","_x14","_callee7","_callee7$","_context7","_op","promise","_serder","_sigs","op","_callee8","_callee8$","_context8","FALSY","TRUTHY","Signage","markers","ordinal","signature","signages","_loop","signage","tags","tag","marker","designature","dict","replaceAll","Authenticater","csig","_csig","inputs","input","cig","DefaultFields","_siginput","signed","KeyManager","externalModules","modules","mod","type","module","_new","SaltyKeeper","RandyKeeper","group","GroupKeeper","ciph","nsigners","_this$icodes","j","_","_nxts","_prxs","_step3$value","_step4$value","gkeys","gdigs","_ncodes","_transferable","_indices","_ondices","ndig","csi","pni","mkeeper","Contacts","_add","_delete2","_update","filterField","filterValue","URLSearchParams","add","info","_callee3$","_delete","_callee5$","Challenges","_generate","_respond","_responded","generate","strength","respond","recipient","words","exchanges","resp","identifiers","send","_x15","_x16","source","responded","_x17","_x18","_x19","_callee9","_callee9$","_context9","randomPasscode","randomNonce","seedqb64","Oobis","_resolve","resolve","oobi","alias","url","oobialias","Operations","_get2","KeyEvents","_get3","KeyStates","_get4","_query","pres","query","vdr","_ref$nonce","_ref$baks","baks","_ref$cnfg","isn","NoBackers","ii","CredentialTypes","CredentialResult","acdc","iserder","anc","_acdc","_iserder","_anc","Credentials","_issue","_revoke","_present","_request","filtr","limit","skip","includeCESR","Accept","text","t0","issue","registy","schema","credentialData","rules","datetime","priv","vsacdc","ACDC","cred","subject","ri","vc","_iss","issueFromEvents","body","revoke","_rev","status","present","include","q","_Saider$saidify5","ims","request","_x20","_x21","_x22","_x23","issuer","_Saider$saidify6","RegistryResult","_op2","regser","_regser","Registries","_list2","_x24","_x25","_callee10","registryName","_ref$noBackers","noBackers","_state","_callee10$","_context10","createFromEvents","Schemas","_list3","_x26","_callee11","_callee11$","_context11","_callee12","_callee12$","_context12","Ipex","_grant","_admit","_proto6","grant","_x27","_x28","_x29","_x30","_x31","_x32","_x33","_x34","_x35","_callee13","recp","message","agree","embeds","_callee13$","_context13","createExchangeMessage","admit","_x36","_x37","_x38","_x39","_callee14","_callee14$","_context14","Notifications","_mark","notes","Escrows","_listReply","listReply","Groups","_getRequest","_sendRequest","getRequest","sendRequest","B64REX","Reb64","Bexter","bext","StrB64_L0","_rawify","ts","ws","wad","Pather","_Bexter","_bextify","vath","sp","charAt","apath","Exchanges","_createExchangeMessage","_send","_sendFromEvents","sender","payload","_exchange","exchange","topic","recipients","_yield$this$createExc","sendFromEvents","tpc","rec","date","modifiers","ems","pathed","pather","counter","PathedMaterialQuadlets","attrs","DEFAULT_BOOT_URL","State","SignifyClient","_boot","_connect","_signedFetch","_approveDelegation","_saveOldPasscode","_deletePasscode","_rotate","bootUrl","authn","exteralModules","boot","_this$controller$even","_this$controller","_this$controller2","_this$controller3","_this$controller4","_data$agent","_data$controller","_data$ridx","_data$pidx","caid","connect","_fetch","_this$agent","signed_headers","final_headers","_body","isSameAgent","verification","ok","signedFetch","aidName","authenticator","FormData","saveOldPasscode","_this$controller5","deletePasscode","_this$controller6","oobis","operations","keyEvents","keyStates","credentials","ipex","registries","schemas","challenges","contacts","notifications","escrows","groups","ready","b3","_sodium","window","config","all"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAaA,kBAAkB;EAE3B,SAAAA,mBAAYC,GAAW;IACnB,IAAI,CAACC,IAAI,GAAG,IAAIC,KAAK,CAACF,GAAG,CAAC;;EAC7BG,YAAA,CAAAJ,kBAAA;IAAAK,GAAA;IAAAC,GAAA,EAED,SAAAA;MACI,OAAO,IAAI,CAACJ,IAAI;;;EACnB,OAAAF,kBAAA;AAAA;;ACRL;AACA,AACA,WAAYO,OAAO;EACfA,wBAAa;AACjB,CAAC,EAFWA,eAAO,KAAPA,eAAO;AAInB,AAAA,WAAYC,KAAK;EACbA,sBAAa;EACbA,sBAAa;AACjB,CAAC,EAHWA,aAAK,KAALA,aAAK;AAKjB,IAAaC,OAAO,GAIhB,SAAAA,QAAYC,OAAmBC;MAAnBD;IAAAA,QAAgB,CAAC;;EAAA,IAAEC;IAAAA,QAAgB,CAAC;;EAC5C,IAAI,CAACD,KAAK,GAAGA,KAAK;EAClB,IAAI,CAACC,KAAK,GAAGA,KAAK;AACtB,CAAC;AAGL,IAAaC,UAAU,gBAAG,IAAIH,OAAO,EAAE;AAEvC,IAAaI,IAAI,GAAG;EAChBC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE,KAAK;EACVC,GAAG,EAAE;CACR;AAED,IAAaC,SAAS,GAAG,CACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,GAAG,CACN;AAED,IAAaC,SAAS,GAAG,CACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,CACP;AAED,IAAaC,SAAS,GAAG,CACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,CACN;AACD,IAAaC,SAAS,GAAG,CACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,CACN;AACD,IAAaC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAEvD,IAAaC,SAAS,GAAG,CACrB,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,GAAG,CACN;AAED,IAAaC,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;AAExD,IAAMC,OAAO,gBAAG,IAAIC,wBAAW,EAAE;AACjC,IAAMC,OAAO,gBAAG,IAAIC,wBAAW,EAAE;AAEjC,IAAaC,WAAW,GAAG,EAAE;AAC7B,IAAaC,YAAY,GAAG,EAAE,GAAGD,WAAW;AAC5C,IAAaE,UAAU,GAAG,CAAC;AAE3B;AACA;AACA;AACA;AAEA,IAAaC,KAAK,GAAG,yDAAyD;AAM9E;AAEA;;;;;;;AAOA,SAAgBC,SAASA,CACrBC,aAAqB;EAErB,IAAIC,IAAI;EACR,IAAIC,IAAI;EACR,IAAIC,KAAK;EACT,IAAMC,OAAO,GAAGlC,UAAU;;EAG1B,IAAMmC,EAAE,GAAG,IAAIC,MAAM,CAACR,KAAK,CAAC;EAE5B,IAAMS,KAAK,GAAGF,EAAE,CAACG,IAAI,CAACR,aAAa,CAAC;EAEpC,IAAIO,KAAK,EAAE;IAAA,IAAAE,IAAA,GAC6C,CAChDF,KAAK,CAAC,CAAC,CAAC,EACR,CAACA,KAAK,CAAC,CAAC,CAAC,EACT,CAACA,KAAK,CAAC,CAAC,CAAC,EACTA,KAAK,CAAC,CAAC,CAAC,EACRA,KAAK,CAAC,CAAC,CAAC,CACX;IANAJ,KAAK,GAAAM,IAAA;IAAEL,OAAO,CAACpC,KAAK,GAAAyC,IAAA;IAAEL,OAAO,CAACnC,KAAK,GAAAwC,IAAA;IAAER,IAAI,GAAAQ,IAAA;IAAEP,IAAI,GAAAO,IAAA;IAOhD,IAAI,CAACC,MAAM,CAACC,MAAM,CAAC9C,eAAO,CAAC,CAAC+C,QAAQ,CAACX,IAAe,CAAC,EAAE;MACnD,MAAM,IAAIxC,KAAK,mCAAiCwC,IAAM,CAAC;;IAE3D,IAAI,CAACS,MAAM,CAACC,MAAM,CAAC7C,aAAK,CAAC,CAAC8C,QAAQ,CAACT,KAAc,CAAC,EAAE;MAChD,MAAM,IAAI1C,KAAK,mCAAiCwC,IAAM,CAAC;;IAG3D,IAAIY,EAAE,GAAGZ,IAA4B;IACrCA,IAAI,GAAGpC,eAAO,CAACgD,EAAE,CAAC;IAClB,IAAIC,EAAE,GAAGX,KAA2B;IACpCA,KAAK,GAAGrC,aAAK,CAACgD,EAAE,CAAC;IAEjB,OAAO,CAACX,KAAK,EAAEF,IAAI,EAAEG,OAAO,EAAEF,IAAI,CAAC;;EAEvC,MAAM,IAAIzC,KAAK,+BAA6BuC,aAAe,CAAC;AAChE;AAEA,SAAgBe,OAAOA,CACnBC,OACAZ,OAAiB,EACjBH,MACAC;MAHAc;IAAAA,QAAelD,aAAK,CAACmD,IAAI;;EAAA,IAEzBhB;IAAAA,OAAgBpC,eAAO,CAACqD,IAAI;;EAAA,IAC5BhB;IAAAA,OAAe,CAAC;;EAEhBE,OAAO,GAAGA,OAAO,IAAIe,SAAS,GAAGjD,UAAU,GAAGkC,OAAO;EAErD,YAAUY,KAAK,GAAGZ,OAAO,CAACpC,KAAK,CAACoD,QAAQ,CACpC,EAAE,CACL,GAAGhB,OAAO,CAACnC,KAAK,CAACmD,QAAQ,EAAE,GAAGnB,IAAI,GAAGC,IAAI,CAACkB,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC5E;AAEA,IAAaC,WAAW,gBAAG,IAAIC,GAAG,CAAiB,CAC/C,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,CACZ,CAAC;AAEF,IAAaC,WAAW,gBAAG,IAAID,GAAG,eAC9BE,KAAK,CAACC,IAAI,CAACJ,WAAW,EAAE,UAACK,KAAK;EAAA,OAAK,CAACA,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;AAAA,EAAC,CAC3D;AAED,SAAgBC,QAAQA,CAACC,CAAS,EAAEC,CAAC;MAADA,CAAC;IAADA,CAAC,GAAG,CAAC;;EACrC,IAAIC,GAAG,GAAG,EAAE;EACZ,OAAOD,CAAC,IAAI,CAAC,EAAE;IACXC,GAAG,GAAGT,WAAW,CAAC1D,GAAG,CAACiE,CAAC,GAAG,EAAE,CAAC,GAAGE,GAAG;IACnCF,CAAC,GAAGG,IAAI,CAACC,KAAK,CAACJ,CAAC,GAAG,EAAE,CAAC;IACtB,IAAIA,CAAC,IAAI,CAAC,EAAE;MACR;;;EAIR,IAAIK,CAAC,GAAGJ,CAAC,GAAGC,GAAG,CAACI,MAAM;EACtB,KAAK,IAAIN,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGK,CAAC,EAAEL,EAAC,EAAE,EAAE;IACxBE,GAAG,GAAG,GAAG,GAAGA,GAAG;;EAGnB,OAAOA,GAAG;AACd;AAEA,SAAgBK,SAASA,CAACC,CAAS,EAAEP;MAAAA;IAAAA,IAAY,CAAC;;EAC9C,IAAIQ,CAAC,GAAGV,QAAQ,CAACS,CAAC,EAAEP,CAAC,CAAC;EACtB,OAAOS,CAAC,CAACD,CAAC,CAAC;AACf;AAEA,SAAgBE,QAAQA,CAACF,CAAS;EAC9B,IAAIA,CAAC,CAACH,MAAM,IAAI,CAAC,EAAE;IACf,MAAM,IAAI1E,KAAK,CAAC,qCAAqC,CAAC;;EAG1D,IAAIoE,CAAC,GAAG,CAAC;EACT,IAAI9C,GAAG,GAAGuD,CAAC,CAACG,KAAK,CAAC,EAAE,CAAC,CAACC,OAAO,EAAE;EAC/B3D,GAAG,CAAC4D,OAAO,CAAC,UAACC,CAAS,EAAEC,CAAS;IAC7BhB,CAAC,IAAIL,WAAW,CAAC5D,GAAG,CAACgF,CAAC,CAAE,IAAKC,CAAC,GAAG,CAAE;GACtC,CAAC;EAEF,OAAOhB,CAAC;AACZ;AAEA,SAAgBU,CAACA,CAACD,CAAU;EACxB,OAAO/C,OAAO,CAACuD,MAAM,CAACR,CAAC,CAAC;AAC5B;AAEA,SAAgBS,CAACA,CAACC,CAAc;EAC5B,OAAOvD,OAAO,CAACwD,MAAM,CAACD,CAAC,CAAC;AAC5B;AAEA,SAAgBE,MAAMA,CAACC,GAAe,EAAEC,GAAe;EACnD,IAAIrB,GAAG,GAAG,IAAIsB,UAAU,CAACF,GAAG,CAAChB,MAAM,GAAGiB,GAAG,CAACjB,MAAM,CAAC;EACjDJ,GAAG,CAACuB,GAAG,CAACH,GAAG,CAAC;EACZpB,GAAG,CAACuB,GAAG,CAACF,GAAG,EAAED,GAAG,CAAChB,MAAM,CAAC;EACxB,OAAOJ,GAAG;AACd;AAEA,SAAgBwB,OAAOA,CAACC,KAAiB;EACrC,IAAIC,KAAK,GAAG,CAAC;EACb,KAAK,IAAI5B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2B,KAAK,CAACrB,MAAM,EAAEN,CAAC,EAAE,EAAE;IACnC4B,KAAK,GAAGA,KAAK,GAAG,GAAG,GAAGD,KAAK,CAAC3B,CAAC,CAAC;;EAElC,OAAO4B,KAAK;AAChB;;IChUaC,KAAK;EAAA,SAAAA;EAAA,IAAAC,MAAA,GAAAD,KAAA,CAAAE,SAAA;EAAAD,MAAA,CACdE,GAAG,GAAH,SAAAA,IAAIC,IAAY;IACZ,IAAIC,CAAC,GAAG,IAAIxC,GAAG,CAACE,KAAK,CAACC,IAAI,CAAChB,MAAM,CAACsD,OAAO,CAAC,IAAI,CAAC,EAAE,UAACC,CAAC;MAAA,OAAK,CAACA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;MAAC,CAAC;IACtE,OAAOF,CAAC,CAACF,GAAG,CAACC,IAAI,CAAC;GACrB;EAAA,OAAAJ,KAAA;AAAA;AAGL,IAAaQ,WAAY,0BAAAC,MAAA;EAAAC,cAAA,CAAAF,WAAA,EAAAC,MAAA;EAAzB,SAAAD;;;IACIG,KAAA,aAAY,GAAW,GAAG,CAAC;IAC3BA,KAAA,SAAQ,GAAW,GAAG,CAAC;IACvBA,KAAA,OAAM,GAAW,GAAG,CAAC;IACrBA,KAAA,QAAO,GAAW,GAAG,CAAC;IACtBA,KAAA,WAAU,GAAW,GAAG,CAAC;IACzBA,KAAA,SAAQ,GAAW,GAAG,CAAC;IACvBA,KAAA,SAAQ,GAAW,GAAG,CAAC;IACvBA,KAAA,iBAAgB,GAAW,GAAG,CAAC;IAC/BA,KAAA,eAAc,GAAW,GAAG,CAAC;IAC7BA,KAAA,mBAAkB,GAAW,GAAG,CAAC;IACjCA,KAAA,iBAAgB,GAAW,GAAG,CAAC;IAC/BA,KAAA,SAAQ,GAAW,IAAI,CAAC;IACxBA,KAAA,YAAW,GAAW,IAAI,CAAC;IAC3BA,KAAA,gBAAe,GAAW,IAAI,CAAC;IAC/BA,KAAA,gBAAe,GAAW,IAAI,CAAC;IAC/BA,KAAA,UAAS,GAAW,IAAI,CAAC;IACzBA,KAAA,UAAS,GAAW,IAAI,CAAC;IACzBA,KAAA,UAAS,GAAW,IAAI,CAAC;IACzBA,KAAA,aAAY,GAAW,MAAM,CAAC;IAC9BA,KAAA,YAAW,GAAW,MAAM,CAAC;IAC7BA,KAAA,mBAAkB,GAAW,MAAM,CAAC;IACpCA,KAAA,aAAY,GAAW,MAAM,CAAC;IAC9BA,KAAA,YAAW,GAAW,MAAM,CAAC;IAC7BA,KAAA,cAAa,GAAW,MAAM,CAAC;IAC/BA,KAAA,cAAa,GAAW,MAAM,CAAC;IAC/BA,KAAA,cAAa,GAAW,MAAM,CAAC;IAAC,OAAAA,KAAA;;EACnC,OAAAH,WAAA;AAAA,EA3BgCR,KAAK;AA6BtC,IAAaY,MAAM,gBAAG,IAAIJ,WAAW,EAAE;AAEvC,IAAaK,aAAc,0BAAAC,OAAA;EAAAJ,cAAA,CAAAG,aAAA,EAAAC,OAAA;EAA3B,SAAAD;;;IACIE,MAAA,SAAQ,GAAW,GAAG,CAAC;IACvBA,MAAA,aAAY,GAAW,MAAM,CAAC;IAC9BA,MAAA,OAAM,GAAW,MAAM,CAAC;IACxBA,MAAA,aAAY,GAAW,MAAM,CAAC;IAAC,OAAAA,MAAA;;EAClC,OAAAF,aAAA;AAAA,EALkCb,KAAK;AAOxC,IAAagB,WAAW,gBAAG,IAAIH,aAAa,EAAE;AAE9C,IAAaI,SAAU,0BAAAC,OAAA;EAAAR,cAAA,CAAAO,SAAA,EAAAC,OAAA;EAAvB,SAAAD;;;IACIE,MAAA,WAAU,GAAW,GAAG,CAAC;IACzBA,MAAA,YAAW,GAAW,GAAG,CAAC;IAC1BA,MAAA,YAAW,GAAW,GAAG,CAAC;IAC1BA,MAAA,SAAQ,GAAW,GAAG,CAAC;IACvBA,MAAA,SAAQ,GAAW,GAAG,CAAC;IACvBA,MAAA,WAAU,GAAW,IAAI,CAAC;IAC1BA,MAAA,YAAW,GAAW,IAAI,CAAC;IAC3BA,MAAA,SAAQ,GAAW,IAAI,CAAC;IACxBA,MAAA,SAAQ,GAAW,IAAI,CAAC;IAAC,OAAAA,MAAA;;EAC5B,OAAAF,SAAA;AAAA,EAV8BjB,KAAK;AAYpC,IAAaoB,OAAO,gBAAG,IAAIH,SAAS,EAAE;AAEtC,IAAaI,QAAS,0BAAAC,OAAA;EAAAZ,cAAA,CAAAW,QAAA,EAAAC,OAAA;EAAtB,SAAAD;;;IACIE,MAAA,MAAK,GAAW,GAAG,CAAC;IACpBA,MAAA,KAAI,GAAW,IAAI,CAAC;IACpBA,MAAA,IAAG,GAAW,GAAG,CAAC;IAClBA,MAAA,KAAI,GAAW,IAAI,CAAC;IAAC,OAAAA,MAAA;;EACxB,OAAAF,QAAA;AAAA,EAL6BrB,KAAK;AAOnC,IAAawB,MAAM,gBAAG,IAAIH,QAAQ,EAAE;AAEpC,IAAaI,QAAS,0BAAAC,OAAA;EAAAhB,cAAA,CAAAe,QAAA,EAAAC,OAAA;EAAtB,SAAAD;;;IACIE,MAAA,UAAS,GAAW,IAAI,CAAC;IACzBA,MAAA,UAAS,GAAW,IAAI,CAAC;IACzBA,MAAA,UAAS,GAAW,IAAI,CAAC;IACzBA,MAAA,cAAa,GAAW,MAAM,CAAC;IAC/BA,MAAA,cAAa,GAAW,MAAM,CAAC;IAC/BA,MAAA,cAAa,GAAW,MAAM,CAAC;IAAC,OAAAA,MAAA;;EACnC,OAAAF,QAAA;AAAA,EAP6BzB,KAAK;AASnC,IAAa4B,MAAM,gBAAG,IAAIH,QAAQ,EAAE;AAAC,IAE/BI,oBAAqB,0BAAAC,OAAA;EAAApB,cAAA,CAAAmB,oBAAA,EAAAC,OAAA;EAA3B,SAAAD;;;IACIE,MAAA,MAAK,GAAW,GAAG,CAAC;IACpBA,MAAA,MAAK,GAAW,GAAG,CAAC;IACpBA,MAAA,MAAK,GAAW,GAAG,CAAC;IAAC,OAAAA,MAAA;;EACxB,OAAAF,oBAAA;AAAA,EAJkC7B,KAAK;AAMxC,IAAagC,WAAW,gBAAG,IAAIH,oBAAoB,EAAE;AAAC,IAEhDI,oBAAqB,0BAAAC,OAAA;EAAAxB,cAAA,CAAAuB,oBAAA,EAAAC,OAAA;EAA3B,SAAAD;;;IACIE,MAAA,UAAS,GAAW,GAAG,CAAC;IACxBA,MAAA,UAAS,GAAW,GAAG,CAAC;IACxBA,MAAA,UAAS,GAAW,GAAG,CAAC;IAAC,OAAAA,MAAA;;EAC5B,OAAAF,oBAAA;AAAA,EAJkCjC,KAAK;AAMxC,IAAaoC,WAAW,gBAAG,IAAIH,oBAAoB,EAAE;AAErD,IAAaI,MAAM,GAMf,SAAAA,OAAYC,EAAU,EAAEC,EAAU,EAAEC,EAAW,EAAEC,EAAW;EACxD,IAAI,CAACH,EAAE,GAAGA,EAAE;EACZ,IAAI,CAACC,EAAE,GAAGA,EAAE;EACZ,IAAI,CAACC,EAAE,GAAGA,EAAE;EACZ,IAAI,CAACC,EAAE,GAAGA,EAAG;AACjB,CAAC;AAYL,IAAaC,MAAM;EA6Hf,SAAAA,OAAA3F,IAAA;QACI4F,GAAG,GAAA5F,IAAA,CAAH4F,GAAG;MAAAC,SAAA,GAAA7F,IAAA,CACH8F,IAAI;MAAJA,IAAI,GAAAD,SAAA,cAAGhC,MAAM,CAACkC,QAAQ,GAAAF,SAAA;MACtBG,KAAK,GAAAhG,IAAA,CAALgG,KAAK;MACLC,IAAI,GAAAjG,IAAA,CAAJiG,IAAI;MACJC,GAAG,GAAAlG,IAAA,CAAHkG,GAAG;MACHC,IAAI,GAAAnG,IAAA,CAAJmG,IAAI;IAVA,UAAK,GAAW,EAAE;IAClB,UAAK,GAAW,CAAC,CAAC;IAClB,SAAI,GAAe,IAAIvD,UAAU,CAAC,CAAC,CAAC;IAUxC,IAAInD,IAAI,GAAG,CAAC,CAAC;IACb,IAAImG,GAAG,IAAIlF,SAAS,EAAE;MAClB,IAAIoF,IAAI,CAACpE,MAAM,IAAI,CAAC,EAAE;QAClB,MAAM,IAAI1E,KAAK,CACX,6EAA6E,CAChF;;MAGL,IAAIiI,WAAW,CAAC7B,GAAG,CAAC0C,IAAI,CAAC,CAAC,CAAC,CAAC,IAAIT,WAAW,CAACjC,GAAG,CAAC0C,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACtD,IAAIK,IAAI,KAAKzF,SAAS,EAAE;UACpB,IAAIyF,IAAI,GAAG,CAAC,EACR,MAAM,IAAInJ,KAAK,oCACsB8I,IAAM,CAC1C;SACR,MAAM;UACHK,IAAI,GAAGP,GAAG,CAAClE,MAAM;;QAGrB,IAAIgE,EAAE,GAAG,CAAC,CAAC,GAAIS,IAAI,GAAG,CAAE,IAAI,CAAC,CAAC;QAC9B1G,IAAI,GAAG8B,IAAI,CAACC,KAAK,CAAC,CAAC2E,IAAI,GAAGT,EAAE,IAAI,CAAC,CAAC,CAAC;QACnC,IAAIT,WAAW,CAAC7B,GAAG,CAAC0C,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1B,IAAIrG,IAAI,IAAI8B,IAAA,CAAA6E,GAAA,GAAE,EAAI,CAAC,IAAG,CAAC,EAAE;YACrB,IAAIb,EAAE,GAAG,CAAC;YACV,IAAI1D,CAAC,GAAG5B,MAAM,CAACC,MAAM,CAAC+E,WAAW,CAAC,CAACS,EAAE,CAAC;YACtCI,IAAI,QAAMjE,CAAC,GAAGiE,IAAI,CAACO,SAAS,CAAC,CAAC,EAAEd,EAAE,CAAG;WACxC,MAAM,IAAI9F,IAAI,IAAI8B,IAAA,CAAA6E,GAAA,GAAE,EAAI,CAAC,IAAG,CAAC,EAAE;YAC5B,IAAIb,GAAE,GAAG,CAAC;YACV,IAAI1D,EAAC,GAAG5B,MAAM,CAACC,MAAM,CAACmF,WAAW,CAAC,CAACK,EAAE,CAAC;YACtCI,IAAI,QAAMjE,EAAC,GAAG,MAAM,CAACwE,SAAS,CAAC,CAAC,EAAEd,GAAE,GAAG,CAAC,CAAC,GAAGO,IAAI,CAAC,CAAC,CAAG;WACxD,MAAM;YACH,MAAM,IAAI9I,KAAK,oCACsB8I,IAAM,CAC1C;;SAER,MAAM;UACH,IAAIrG,IAAI,IAAI8B,IAAA,CAAA6E,GAAA,GAAE,EAAI,CAAC,IAAG,CAAC,EAAE;YACrB,IAAIb,IAAE,GAAG,CAAC;YACV,IAAI1D,GAAC,GAAG5B,MAAM,CAACC,MAAM,CAACmF,WAAW,CAAC,CAACK,EAAE,CAAC;YACtCI,IAAI,QAAMjE,GAAC,GAAGiE,IAAI,CAACO,SAAS,CAAC,CAAC,EAAEd,IAAE,CAAG;WACxC,MAAM;YACH,MAAM,IAAIvI,KAAK,oCACsB8I,IAAM,CAC1C;;;OAGZ,MAAM;QACH,IAAIQ,MAAM,GAAGX,MAAM,CAACY,KAAK,CAACpJ,GAAG,CAAC2I,IAAI,CAAC;QACnC,IAAIQ,MAAO,CAACb,EAAE,IAAI,CAAC,CAAC,EAAE;;UAElB,MAAM,IAAIzI,KAAK,qCAAmC8I,IAAM,CAAC;;QAG7DK,IAAI,GAAGR,MAAM,CAACa,QAAQ,CAACV,IAAI,CAAC;;MAEhCF,GAAG,GAAGA,GAAG,CAACa,KAAK,CAAC,CAAC,EAAEN,IAAI,CAAC,CAAC;MACzB,IAAIP,GAAG,CAAClE,MAAM,IAAIyE,IAAI,EAAE;;QAEpB,MAAM,IAAInJ,KAAK,qCACuB8I,IAAI,kBAAaK,IAAI,aAAQP,GAAG,CAAClE,MAAM,MAAG,CAC/E;;MAGL,IAAI,CAACgF,KAAK,GAAGZ,IAAI,CAAC;MAClB,IAAI,CAACa,KAAK,GAAGlH,IAAI,CAAC;MAClB,IAAI,CAACmH,IAAI,GAAGhB,GAAG,CAAC;KACnB,MAAM,IAAIK,IAAI,KAAKvF,SAAS,EAAE;MAC3B,IAAI,CAACmG,MAAM,CAACZ,IAAI,CAAC;KACpB,MAAM,IAAID,KAAK,KAAKtF,SAAS,EAAE;MAC5B,IAAIuF,GAAI,GAAG3D,CAAC,CAAC0D,KAAK,CAAC;MACnB,IAAI,CAACa,MAAM,CAACZ,GAAI,CAAC;KACpB,MAAM,IAAIC,GAAG,KAAKxF,SAAS,EAAE;MAC1B,IAAI,CAACoG,OAAO,CAACZ,GAAG,CAAC;KACpB,MAAM;MACH,MAAM,IAAIrJ,kBAAkB,CAAC,oBAAoB,CAAC;;;EAEzD8I,MAAA,CA8BMa,QAAQ,GAAf,SAAAA,SAAgBV,IAAY;IACxB,IAAIQ,MAAM,GAAG,IAAI,CAACC,KAAK,CAACpJ,GAAG,CAAC2I,IAAI,CAAC,CAAC;IAClC,IAAIiB,EAAE,GAAGT,MAAO,CAACf,EAAE,GAAGe,MAAO,CAACd,EAAE,CAAC;IACjC,IAAIc,MAAO,CAACb,EAAE,KAAK,CAAC,CAAC,EAAE;MACnB,MAAMzI,KAAK,8BAA4B8I,IAAI,MAAG,CAAC;;IAGnD,OAAOvE,IAAI,CAACC,KAAK,CAAE,CAAC8E,MAAO,CAACb,EAAG,GAAGsB,EAAE,IAAI,CAAC,GAAI,CAAC,CAAC,GAAGT,MAAO,CAACZ,EAAG;GAChE;EAAAC,MAAA,CAEMqB,SAAS,GAAhB,SAAAA,UAAiBlB,IAAY;IACzB,IAAIQ,MAAM,GAAG,IAAI,CAACC,KAAK,CAACpJ,GAAG,CAAC2I,IAAI,CAAC;IACjC,OAAOQ,MAAO,CAACZ,EAAE;GACpB;EAAA,IAAAuB,OAAA,GAAAtB,MAAA,CAAAxC,SAAA;EAAA8D,OAAA,CAOOC,MAAM,GAAN,SAAAA;IACJ,IAAIpB,IAAI,GAAG,IAAI,CAACA,IAAI;IACpB,IAAIrG,IAAI,GAAG,IAAI,CAACA,IAAI;IACpB,IAAImG,GAAG,GAAG,IAAI,CAACA,GAAG;IAElB,IAAIuB,EAAE,GAAG,CAAC,CAAC,GAAIvB,GAAG,CAAClE,MAAM,GAAG,CAAE,IAAI,CAAC,CAAC;IACpC,IAAI4E,MAAM,GAAGX,MAAM,CAACY,KAAK,CAACpJ,GAAG,CAAC2I,IAAI,CAAC;IAEnC,IAAIQ,MAAO,CAACb,EAAE,KAAK/E,SAAS,EAAE;;MAE1B,IAAIqG,EAAE,GAAGT,MAAO,CAACf,EAAE,GAAGe,MAAO,CAACd,EAAE;MAChC,IAAIuB,EAAE,GAAG,CAAC,EAAE;QACR,MAAM,IAAI/J,KAAK,yEAC2D+J,EAAI,CAC7E;;MAEL,IAAItH,IAAI,GAAG,CAAC,IAAIA,IAAI,GAAG8B,IAAA,CAAA6E,GAAA,GAAE,EAAIE,MAAO,CAACd,EAAE,IAAG,CAAC,EAAE;QACzC,MAAM,IAAIxI,KAAK,mBAAiByC,IAAI,kBAAaqG,IAAI,MAAG,CAAC;;MAG7D,IAAIsB,IAAI,QAAMtB,IAAI,GAAG3E,QAAQ,CAAC1B,IAAI,EAAE6G,MAAO,CAACd,EAAE,CAAG;MACjD,IAAI4B,IAAI,CAAC1F,MAAM,GAAG,CAAC,KAAKyF,EAAE,GAAGb,MAAO,CAACZ,EAAG,EAAE;QACtC,MAAM,IAAI1I,KAAK,mBACKoK,IAAI,oCAA+BD,EAAE,MAAG,CAC3D;;MAGL,IAAIE,KAAK,GAAG,IAAIzE,UAAU,CAAC0D,MAAO,CAACZ,EAAG,GAAGE,GAAG,CAAClE,MAAM,CAAC;MACpD,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkF,MAAO,CAACZ,EAAG,EAAEtE,CAAC,EAAE,EAAE;QAClCiG,KAAK,CAACjG,CAAC,CAAC,GAAG,CAAC;;MAEhB,KAAK,IAAIA,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGwE,GAAG,CAAClE,MAAM,EAAEN,EAAC,EAAE,EAAE;QACjC,IAAIkG,GAAG,GAAGlG,EAAC,GAAG+F,EAAE;QAChBE,KAAK,CAACC,GAAG,CAAC,GAAG1B,GAAG,CAACxE,EAAC,CAAC;;MAGvB,OAAOgG,IAAI,GAAGG,MAAM,CAAClF,MAAM,CAACmF,aAAM,CAACvG,IAAI,CAACoG,KAAK,CAAC,CAAC;KAClD,MAAM;MACH,IAAID,KAAI,GAAGtB,IAAI;MACf,IAAIiB,GAAE,GAAGK,KAAI,CAAC1F,MAAM;MACpB,IAAIqF,GAAE,GAAG,CAAC,IAAII,EAAE,GAAGb,MAAO,CAACZ,EAAG,EAAE;;QAE5B,MAAM,IAAI1I,KAAK,mBACKoK,KAAI,oCAA+BD,EAAE,UAAKvB,GAAG,CAAClE,MAAM,MAAG,CAC1E;;;;;MAKL,IAAI2F,MAAK,GAAG,IAAIzE,UAAU,CAACuE,EAAE,GAAGvB,GAAG,CAAClE,MAAM,CAAC;MAC3C,KAAK,IAAIN,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG+F,EAAE,EAAE/F,GAAC,EAAE,EAAE;QACzBiG,MAAK,CAACjG,GAAC,CAAC,GAAG,CAAC;;MAEhB,KAAK,IAAIA,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAGwE,GAAG,CAAClE,MAAM,EAAEN,GAAC,EAAE,EAAE;QACjC,IAAIkG,IAAG,GAAGlG,GAAC,GAAG+F,EAAE;QAChBE,MAAK,CAACC,IAAG,CAAC,GAAG1B,GAAG,CAACxE,GAAC,CAAC;;MAGvB,OAAOgG,KAAI,GAAGG,MAAM,CAAClF,MAAM,CAACmF,aAAM,CAACvG,IAAI,CAACoG,MAAK,CAAC,CAAC,CAACZ,KAAK,CAACM,GAAE,GAAG,CAAC,CAAC;;GAEpE;EAAAE,OAAA,CAEOJ,MAAM,GAAN,SAAAA,OAAOZ,IAAY;IACvB,IAAIA,IAAI,CAACvE,MAAM,IAAI,CAAC,EAAE;MAClB,MAAM,IAAI1E,KAAK,CAAC,gBAAgB,CAAC;;IAGrC,IAAIyK,KAAK,GAAGxB,IAAI,CAAC,CAAC,CAAC;IACnB,IAAI,CAACjF,KAAK,CAACC,IAAI,CAAC0E,MAAM,CAAC+B,KAAK,CAACC,IAAI,EAAE,CAAC,CAACxH,QAAQ,CAACsH,KAAK,CAAC,EAAE;MAClD,MAAM,IAAIzK,KAAK,sBAAoByK,KAAO,CAAC;;IAG/C,IAAIlC,EAAE,GAAGI,MAAM,CAAC+B,KAAK,CAACvK,GAAG,CAACsK,KAAK,CAAC;IAChC,IAAIxB,IAAI,CAACvE,MAAM,GAAG6D,EAAG,EAAE;MACnB,MAAM,IAAIvI,KAAK,iBAAiB,CAAC;;IAGrC,IAAI4K,IAAI,GAAG3B,IAAI,CAACQ,KAAK,CAAC,CAAC,EAAElB,EAAE,CAAC;IAC5B,IAAI,CAACvE,KAAK,CAACC,IAAI,CAAC0E,MAAM,CAACY,KAAK,CAACoB,IAAI,EAAE,CAAC,CAACxH,QAAQ,CAACyH,IAAI,CAAC,EAAE;MACjD,MAAM,IAAI5K,KAAK,uBAAqB4K,IAAM,CAAC;;IAG/C,IAAItB,MAAM,GAAGX,MAAM,CAACY,KAAK,CAACpJ,GAAG,CAACyK,IAAI,CAAC;IACnC,IAAIb,EAAE,GAAGT,MAAO,CAACf,EAAE,GAAGe,MAAO,CAACd,EAAE;IAChC,IAAI/F,IAAI,GAAG,CAAC,CAAC;IACb,IAAI6G,MAAO,CAACb,EAAE,IAAI,CAAC,CAAC,EAAE;;MAElB,MAAM,IAAIzI,KAAK,CAAC,uCAAuC,CAAC;KAC3D,MAAM;MACHyC,IAAI,GAAG6G,MAAO,CAACb,EAAG;;IAGtB,IAAIQ,IAAI,CAACvE,MAAM,GAAG4E,MAAO,CAACb,EAAG,EAAE;MAC3B,MAAM,IAAIzI,KAAK,YAASsJ,MAAO,CAACb,EAAG,GAAGQ,IAAI,CAACvE,MAAM,kBAAc,CAAC;;IAGpEuE,IAAI,GAAGA,IAAI,CAACQ,KAAK,CAAC,CAAC,EAAEH,MAAO,CAACb,EAAE,CAAC;IAChC,IAAI0B,EAAE,GAAGJ,EAAE,GAAG,CAAC;IACf,IAAIc,GAAG,GAAG,CAAC,IAAIV,EAAE,IAAI,CAAC,GAAGb,MAAO,CAACZ,EAAG,GAAGyB,EAAE,CAAC;IAC1C,IAAIvB,GAAG;IACP,IAAIuB,EAAE,IAAI,CAAC,EAAE;MACT,IAAIW,IAAI,GAAG,IAAI9G,KAAK,CAACmG,EAAE,GAAG,CAAC,CAAC,CAACY,IAAI,CAAC,GAAG,CAAC,GAAG9B,IAAI,CAACQ,KAAK,CAACM,EAAE,CAAC;MACvD,IAAIiB,GAAG,GAAGT,MAAM,CAAC/E,MAAM,CAACsF,IAAI,CAAC,CAAC;MAC9B,IAAIG,EAAE,GAAGnF,OAAO,CAACkF,GAAG,CAACE,QAAQ,CAAC,CAAC,EAAEf,EAAE,CAAC,CAAC,CAAC;MACtC,IAAIc,EAAE,GAAI1G,IAAA,CAAA6E,GAAA,EAAC,EAAIyB,GAAG,IAAG,CAAE,EAAE;;QAErB,MAAM,IAAI7K,KAAK,4EACgE,CAC9E;;MAEL4I,GAAG,GAAGoC,GAAG,CAACE,QAAQ,CAACf,EAAE,CAAC,CAAC;KAC1B,MAAM;MACH,IAAIW,KAAI,GAAG7B,IAAI,CAACQ,KAAK,CAACM,EAAE,CAAC;MACzB,IAAIiB,IAAG,GAAGT,MAAM,CAAC/E,MAAM,CAACsF,KAAI,CAAC;MAC7B,IAAIK,EAAE,GAAGrF,OAAO,CAACkF,IAAG,CAACE,QAAQ,CAAC,CAAC,EAAE5B,MAAO,CAACZ,EAAE,CAAC,CAAC;MAC7C,IAAIyC,EAAE,IAAI,CAAC,EAAE;QACT,IAAIA,EAAE,IAAI,CAAC,EAAE;UACT,MAAM,IAAInL,KAAK,qCAAqC,CAAC;SACxD,MAAM;UACH,MAAM,IAAIA,KAAK,qCAAqC,CAAC;;;MAG7D4I,GAAG,GAAGoC,IAAG,CAACE,QAAQ,CAAC5B,MAAO,CAACZ,EAAE,CAAC;;IAGlC,IAAI,CAACgB,KAAK,GAAGkB,IAAI,CAAC;IAClB,IAAI,CAACjB,KAAK,GAAGlH,IAAI;IACjB,IAAI,CAACmH,IAAI,GAAGhE,UAAU,CAAC3B,IAAI,CAAC2E,GAAG,CAAC,CAAC;GACpC;EAAAqB,OAAA,CAEOH,OAAO,GAAP,SAAAA,QAAQZ,GAAe;IAC3B,MAAM,IAAIlJ,KAAK,6BAA2BkJ,GAAK,CAAC;GACnD;EAAAjJ,YAAA,CAAA0I,MAAA;IAAAzI,GAAA;IAAAC,GAAA,EApLD,SAAAA;MACI,OAAO,IAAI,CAACuJ,KAAK;;;IACpBxJ,GAAA;IAAAC,GAAA,EAED,SAAAA;MACI,OAAO,IAAI,CAACwJ,KAAK;;;IACpBzJ,GAAA;IAAAC,GAAA,EAED,SAAAA;MACI,OAAO,IAAI,CAACyJ,IAAI;;;IACnB1J,GAAA;IAAAC,GAAA,EAED,SAAAA;MACI,OAAO,IAAI,CAAC+J,MAAM,EAAE;;;IACvBhK,GAAA;IAAAC,GAAA,EAED,SAAAA;MACI,OAAO2E,CAAC,CAAC,IAAI,CAACmE,IAAI,CAAC;;;IACtB/I,GAAA;IAAAC,GAAA,EAED,SAAAA;MACI,OAAO,CAAC8G,WAAW,CAACb,GAAG,CAAC,IAAI,CAAC0C,IAAI,CAAC;;;IACrC5I,GAAA;IAAAC,GAAA,EAED,SAAAA;MACI,OAAOkH,OAAO,CAACjB,GAAG,CAAC,IAAI,CAAC0C,IAAI,CAAC;;;IAChC5I,GAAA;IAAAC,GAAA,EAiBD,SAAAA;MACI,IAAImJ,MAAM,GAAGX,MAAM,CAACY,KAAK,CAACpJ,GAAG,CAAC,IAAI,CAAC2I,IAAI,CAAC;MACxC,YAAU,IAAI,CAACA,IAAI,GAAG3E,QAAQ,CAAC,IAAI,CAAC1B,IAAI,EAAE6G,MAAO,CAACd,EAAE,CAAC;;;EACxD,OAAAG,MAAA;AAAA;AA/PMA,YAAK,gBAAG,IAAI7E,GAAG,eAClBb,MAAM,CAACsD,OAAO,CAAC;EACX6E,CAAC,eAAE,IAAI9C,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1B+C,CAAC,eAAE,IAAI/C,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BgD,CAAC,eAAE,IAAIhD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BiD,CAAC,eAAE,IAAIjD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BkD,CAAC,eAAE,IAAIlD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BmD,CAAC,eAAE,IAAInD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BoD,CAAC,eAAE,IAAIpD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BqD,CAAC,eAAE,IAAIrD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BsD,CAAC,eAAE,IAAItD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BuD,CAAC,eAAE,IAAIvD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1BwD,CAAC,eAAE,IAAIxD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1ByD,CAAC,eAAE,IAAIzD,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1B0D,CAAC,eAAE,IAAI1D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACzB2D,CAAC,eAAE,IAAI3D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1B4D,CAAC,eAAE,IAAI5D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1B6D,CAAC,eAAE,IAAI7D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAC3B8D,CAAC,eAAE,IAAI9D,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC1B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC5B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC7B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC9B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;EAChC,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;EAC/B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC9B,MAAM,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC9B,IAAI,eAAE,IAAIA,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACpC,IAAI,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACpC,IAAI,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACpC,MAAM,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACtC,MAAM,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACtC,MAAM,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACtC,IAAI,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACpC,IAAI,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACpC,IAAI,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACpC,MAAM,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACtC,MAAM,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC,CAAC;EACtC,MAAM,eAAE,IAAI4E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE5E,SAAS,EAAE,CAAC;CACxC,CAAC,CACL;AAEMiF,YAAK,gBAAG,IAAI7E,GAAG,CAAiB,CACnC,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAAC,CAAC,EACR,CAAC,GAAG,EAAE,CAA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"}