ox 1.1.0 → 1.1.2

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 (184) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/core/Engine.d.ts +43 -11
  3. package/dist/core/Engine.d.ts.map +1 -1
  4. package/dist/core/Engine.js +40 -10
  5. package/dist/core/Engine.js.map +1 -1
  6. package/dist/core/internal/engine.d.ts +8 -8
  7. package/dist/core/internal/engine.d.ts.map +1 -1
  8. package/dist/index.d.ts +5 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +5 -2
  11. package/dist/index.js.map +1 -1
  12. package/dist/node/Ed25519.d.ts +33 -0
  13. package/dist/node/Ed25519.d.ts.map +1 -0
  14. package/dist/node/Ed25519.js +67 -0
  15. package/dist/node/Ed25519.js.map +1 -0
  16. package/dist/node/Engine.d.ts +29 -16
  17. package/dist/node/Engine.d.ts.map +1 -1
  18. package/dist/node/Engine.js +38 -14
  19. package/dist/node/Engine.js.map +1 -1
  20. package/dist/node/Hash.d.ts +14 -16
  21. package/dist/node/Hash.d.ts.map +1 -1
  22. package/dist/node/Hash.js +14 -16
  23. package/dist/node/Hash.js.map +1 -1
  24. package/dist/node/Keystore.d.ts +36 -0
  25. package/dist/node/Keystore.d.ts.map +1 -0
  26. package/dist/node/Keystore.js +72 -0
  27. package/dist/node/Keystore.js.map +1 -0
  28. package/dist/node/Mnemonic.d.ts +35 -0
  29. package/dist/node/Mnemonic.d.ts.map +1 -0
  30. package/dist/node/Mnemonic.js +46 -0
  31. package/dist/node/Mnemonic.js.map +1 -0
  32. package/dist/node/P256.d.ts +32 -0
  33. package/dist/node/P256.d.ts.map +1 -0
  34. package/dist/node/P256.js +34 -0
  35. package/dist/node/P256.js.map +1 -0
  36. package/dist/node/X25519.d.ts +31 -0
  37. package/dist/node/X25519.d.ts.map +1 -0
  38. package/dist/node/X25519.js +71 -0
  39. package/dist/node/X25519.js.map +1 -0
  40. package/dist/node/index.d.ts +95 -8
  41. package/dist/node/index.d.ts.map +1 -1
  42. package/dist/node/index.js +95 -8
  43. package/dist/node/index.js.map +1 -1
  44. package/dist/wasm/Ed25519.d.ts +35 -0
  45. package/dist/wasm/Ed25519.d.ts.map +1 -0
  46. package/dist/wasm/Ed25519.js +88 -0
  47. package/dist/wasm/Ed25519.js.map +1 -0
  48. package/dist/wasm/Engine.d.ts +35 -26
  49. package/dist/wasm/Engine.d.ts.map +1 -1
  50. package/dist/wasm/Engine.js +44 -25
  51. package/dist/wasm/Engine.js.map +1 -1
  52. package/dist/wasm/Hash.d.ts +13 -19
  53. package/dist/wasm/Hash.d.ts.map +1 -1
  54. package/dist/wasm/Hash.js +21 -27
  55. package/dist/wasm/Hash.js.map +1 -1
  56. package/dist/wasm/Keystore.d.ts +37 -0
  57. package/dist/wasm/Keystore.d.ts.map +1 -0
  58. package/dist/wasm/Keystore.js +34 -0
  59. package/dist/wasm/Keystore.js.map +1 -0
  60. package/dist/wasm/Mnemonic.d.ts +33 -0
  61. package/dist/wasm/Mnemonic.d.ts.map +1 -0
  62. package/dist/wasm/Mnemonic.js +30 -0
  63. package/dist/wasm/Mnemonic.js.map +1 -0
  64. package/dist/wasm/X25519.d.ts +33 -0
  65. package/dist/wasm/X25519.d.ts.map +1 -0
  66. package/dist/wasm/X25519.js +53 -0
  67. package/dist/wasm/X25519.js.map +1 -0
  68. package/dist/wasm/index.d.ts +81 -12
  69. package/dist/wasm/index.d.ts.map +1 -1
  70. package/dist/wasm/index.js +81 -12
  71. package/dist/wasm/index.js.map +1 -1
  72. package/dist/wasm/internal/blake3.d.ts +11 -0
  73. package/dist/wasm/internal/blake3.d.ts.map +1 -0
  74. package/dist/wasm/internal/blake3.js +31 -0
  75. package/dist/wasm/internal/blake3.js.map +1 -0
  76. package/dist/wasm/internal/blake3.wasm.d.ts +3 -0
  77. package/dist/wasm/internal/blake3.wasm.d.ts.map +1 -0
  78. package/dist/wasm/internal/blake3.wasm.js +10 -0
  79. package/dist/wasm/internal/blake3.wasm.js.map +1 -0
  80. package/dist/wasm/internal/crypto25519.d.ts +16 -0
  81. package/dist/wasm/internal/crypto25519.d.ts.map +1 -0
  82. package/dist/wasm/internal/crypto25519.js +5 -0
  83. package/dist/wasm/internal/crypto25519.js.map +1 -0
  84. package/dist/wasm/internal/crypto25519.wasm.d.ts +3 -0
  85. package/dist/wasm/internal/crypto25519.wasm.d.ts.map +1 -0
  86. package/dist/wasm/internal/crypto25519.wasm.js +10 -0
  87. package/dist/wasm/internal/crypto25519.wasm.js.map +1 -0
  88. package/dist/wasm/internal/ed25519.d.ts +4 -0
  89. package/dist/wasm/internal/ed25519.d.ts.map +1 -0
  90. package/dist/wasm/internal/ed25519.js +21 -0
  91. package/dist/wasm/internal/ed25519.js.map +1 -0
  92. package/dist/wasm/internal/hashes.d.ts +12 -0
  93. package/dist/wasm/internal/hashes.d.ts.map +1 -0
  94. package/dist/wasm/internal/hashes.js +8 -0
  95. package/dist/wasm/internal/hashes.js.map +1 -0
  96. package/dist/wasm/internal/hashes.wasm.d.ts +4 -2
  97. package/dist/wasm/internal/hashes.wasm.d.ts.map +1 -1
  98. package/dist/wasm/internal/hashes.wasm.js +4 -2
  99. package/dist/wasm/internal/hashes.wasm.js.map +1 -1
  100. package/dist/wasm/internal/mnemonic.d.ts +4 -0
  101. package/dist/wasm/internal/mnemonic.d.ts.map +1 -0
  102. package/dist/wasm/internal/mnemonic.js +45 -0
  103. package/dist/wasm/internal/mnemonic.js.map +1 -0
  104. package/dist/wasm/internal/pbkdf2.d.ts +12 -0
  105. package/dist/wasm/internal/pbkdf2.d.ts.map +1 -0
  106. package/dist/wasm/internal/pbkdf2.js +51 -0
  107. package/dist/wasm/internal/pbkdf2.js.map +1 -0
  108. package/dist/wasm/internal/x25519.d.ts +4 -0
  109. package/dist/wasm/internal/x25519.d.ts.map +1 -0
  110. package/dist/wasm/internal/x25519.js +21 -0
  111. package/dist/wasm/internal/x25519.js.map +1 -0
  112. package/package.json +46 -1
  113. package/src/core/Engine.ts +84 -11
  114. package/src/core/_test/Engine.test-d.ts +56 -0
  115. package/src/core/_test/Engine.test.ts +95 -0
  116. package/src/core/_test/Hash.vectors.test.ts +8 -0
  117. package/src/core/internal/engine.ts +8 -8
  118. package/src/index.ts +5 -2
  119. package/src/node/Ed25519.ts +87 -0
  120. package/src/node/Engine.ts +79 -23
  121. package/src/node/Hash.ts +22 -27
  122. package/src/node/Keystore.ts +103 -0
  123. package/src/node/Mnemonic.ts +68 -0
  124. package/src/node/P256.ts +48 -0
  125. package/src/node/X25519.ts +93 -0
  126. package/src/node/_test/Curves.fuzz.ts +76 -0
  127. package/src/node/_test/Ed25519.test-d.ts +35 -0
  128. package/src/node/_test/Ed25519.test.ts +220 -0
  129. package/src/node/_test/Engine.test-d.ts +28 -0
  130. package/src/node/_test/Engine.test.ts +62 -22
  131. package/src/node/_test/Hash.test-d.ts +15 -9
  132. package/src/node/_test/Hash.test.ts +10 -11
  133. package/src/node/_test/Keystore.fuzz.ts +58 -0
  134. package/src/node/_test/Keystore.test-d.ts +43 -0
  135. package/src/node/_test/Keystore.test.ts +198 -0
  136. package/src/node/_test/Mnemonic.fuzz.ts +31 -0
  137. package/src/node/_test/Mnemonic.test-d.ts +21 -0
  138. package/src/node/_test/Mnemonic.test.ts +98 -0
  139. package/src/node/_test/P256.test-d.ts +29 -0
  140. package/src/node/_test/P256.test.ts +102 -0
  141. package/src/node/_test/X25519.test-d.ts +28 -0
  142. package/src/node/_test/X25519.test.ts +239 -0
  143. package/src/node/index.ts +100 -8
  144. package/src/version.ts +1 -1
  145. package/src/wasm/Ed25519.ts +114 -0
  146. package/src/wasm/Engine.ts +76 -31
  147. package/src/wasm/Hash.bench.ts +2 -2
  148. package/src/wasm/Hash.ts +29 -50
  149. package/src/wasm/Keystore.ts +48 -0
  150. package/src/wasm/Mnemonic.ts +44 -0
  151. package/src/wasm/X25519.ts +70 -0
  152. package/src/wasm/_test/Crypto25519.conformance.ts +57 -0
  153. package/src/wasm/_test/Crypto25519.fuzz.ts +187 -0
  154. package/src/wasm/_test/Ed25519.test-d.ts +28 -0
  155. package/src/wasm/_test/Ed25519.test.ts +168 -0
  156. package/src/wasm/_test/Ed25519.vectors.test.ts +73 -0
  157. package/src/wasm/_test/Engine.test-d.ts +28 -0
  158. package/src/wasm/_test/Engine.test.ts +59 -25
  159. package/src/wasm/_test/Hash.browser.test.ts +11 -7
  160. package/src/wasm/_test/Hash.fuzz.ts +58 -23
  161. package/src/wasm/_test/Hash.test-d.ts +15 -10
  162. package/src/wasm/_test/Hash.test.ts +148 -48
  163. package/src/wasm/_test/Hash.vectors.test.ts +15 -8
  164. package/src/wasm/_test/Keystore.browser.test.ts +42 -0
  165. package/src/wasm/_test/Keystore.fuzz.ts +113 -0
  166. package/src/wasm/_test/Keystore.test-d.ts +33 -0
  167. package/src/wasm/_test/Keystore.test.ts +192 -0
  168. package/src/wasm/_test/Keystore.vectors.test.ts +21 -0
  169. package/src/wasm/_test/Mnemonic.test-d.ts +17 -0
  170. package/src/wasm/_test/Mnemonic.test.ts +110 -0
  171. package/src/wasm/_test/X25519.test-d.ts +21 -0
  172. package/src/wasm/_test/X25519.test.ts +194 -0
  173. package/src/wasm/_test/fixtures.ts +4 -0
  174. package/src/wasm/index.ts +85 -12
  175. package/src/wasm/internal/blake3.ts +45 -0
  176. package/src/wasm/internal/blake3.wasm.ts +11 -0
  177. package/src/wasm/internal/crypto25519.ts +43 -0
  178. package/src/wasm/internal/crypto25519.wasm.ts +11 -0
  179. package/src/wasm/internal/ed25519.ts +31 -0
  180. package/src/wasm/internal/hashes.ts +29 -0
  181. package/src/wasm/internal/hashes.wasm.ts +5 -2
  182. package/src/wasm/internal/mnemonic.ts +56 -0
  183. package/src/wasm/internal/pbkdf2.ts +86 -0
  184. package/src/wasm/internal/x25519.ts +29 -0
@@ -0,0 +1,11 @@
1
+ // Generated by `pnpm wasm:build --target=crypto25519`. Do not edit.
2
+ //
3
+ // Compiled from wasm/src/crypto25519.c, wasm/vendor/monocypher/monocypher.c, wasm/vendor/monocypher/monocypher-ed25519.c, wasm/src/ox_rt.c
4
+ // with wasi-sdk 25.0 + binaryen 123.
5
+ //
6
+ // `pnpm wasm:check` rebuilds this file and fails if the bytes differ, so any
7
+ // change to the C or to `wasm/targets.ts` must be followed by `pnpm wasm:build`.
8
+
9
+ /** Base64-encoded WASM binary. */
10
+ export const wasmBase64 =
11
+ 'AGFzbQEAAAABQgpgAn9/AGADf39/AGACf38Bf2AEf39/fwBgBH9/f38Bf2AFf39/f38AYAN/f38Bf2AHf39/f39/fwBgAX8AYAABfwMkIwABAwEAAAADAAQCAQABBAUABQEAAAEGAAEAAgACAAcBCAkABQYBAQSAgAQGCAF/AUHwpQQLB7sBCgZtZW1vcnkCABZlZDI1NTE5X2dldF9wdWJsaWNfa2V5AAAMZWQyNTUxOV9zaWduAAIOZWQyNTUxOV92ZXJpZnkACRxlZDI1NTE5X3RvX21vbnRnb21lcnlfc2VjcmV0AAgVeDI1NTE5X2dldF9wdWJsaWNfa2V5ABQYeDI1NTE5X2dldF9zaGFyZWRfc2VjcmV0ABYQbW5lbW9uaWNfdG9fc2VlZAARCWhlYXBfYmFzZQAhBHplcm8AIgrr4AIj3AMBAX8jAEFAaiICJAAgAiABIAAQASACQQA6AAAgAkEAOgABIAJBADoAAiACQQA6AAMgAkEAOgAEIAJBADoABSACQQA6AAYgAkEAOgAHIAJBADoACCACQQA6AAkgAkEAOgAKIAJBADoACyACQQA6AAwgAkEAOgANIAJBADoADiACQQA6AA8gAkEAOgAQIAJBADoAESACQQA6ABIgAkEAOgATIAJBADoAFCACQQA6ABUgAkEAOgAWIAJBADoAFyACQQA6ABggAkEAOgAZIAJBADoAGiACQQA6ABsgAkEAOgAcIAJBADoAHSACQQA6AB4gAkEAOgAfIAJBADoAICACQQA6ACEgAkEAOgAiIAJBADoAIyACQQA6ACQgAkEAOgAlIAJBADoAJiACQQA6ACcgAkEAOgAoIAJBADoAKSACQQA6ACogAkEAOgArIAJBADoALCACQQA6AC0gAkEAOgAuIAJBADoALyACQQA6ADAgAkEAOgAxIAJBADoAMiACQQA6ADMgAkEAOgA0IAJBADoANSACQQA6ADYgAkEAOgA3IAJBADoAOCACQQA6ADkgAkEAOgA6IAJBADoAOyACQQA6ADwgAkEAOgA9IAJBADoAPiACQQA6AD8gAkFAayQAC4UPARp/IwBBoAJrIgMkACADIAItAAA6AAAgAyACLwABOwABIAMgAigAAzYAAyADIAItAAciBDoAByADIAItAAgiBToACCADIAItAAkiBjoACSADIAItAAoiBzoACiADIAItAAsiCDoACyADIAItAAwiCToADCADIAItAA0iCjoADSADIAItAA4iCzoADiADIAItAA8iDDoADyADIAItABAiDToAECADIAItABEiDjoAESADIAItABIiDzoAEiADIAItABMiEDoAEyADIAItABQiEToAFCADIAItABUiEjoAFSADIAItABYiEzoAFiADIAItABciFDoAFyADIAItABgiFToAGCADIAItABkiFjoAGSADIAItABoiFzoAGiADIAItABsiGDoAGyADIAItABwiGToAHCADIAItAB0iGjoAHSADIAItAB4iGzoAHiADIAItAB8iHDoAHyACQQA6AAAgAkEAOgABIAJBADoAAiACQQA6AAMgAkEAOgAEIAJBADoABSACQQA6AAYgAkEAOgAHIAJBADoACCACQQA6AAkgAkEAOgAKIAJBADoACyACQQA6AAwgAkEAOgANIAJBADoADiACQQA6AA8gAkEAOgAQIAJBADoAESACQQA6ABIgAkEAOgATIAJBADoAFCACQQA6ABUgAkEAOgAWIAJBADoAFyACQQA6ABggAkEAOgAZIAJBADoAGiACQQA6ABsgAkEAOgAcIAJBADoAHSACQQA6AB4gAkEAOgAfIAAgAy0AADoAACAAIAMtAAE6AAEgACADLQACOgACIAAgAy0AAzoAAyAAIAMtAAQ6AAQgACADLQAFOgAFIAAgHDoAHyAAIBs6AB4gACAaOgAdIAAgGToAHCAAIBg6ABsgACAXOgAaIAAgFjoAGSAAIBU6ABggACAUOgAXIAAgEzoAFiAAIBI6ABUgACAROgAUIAAgEDoAEyAAIA86ABIgACAOOgARIAAgDToAECAAIAw6AA8gACALOgAOIAAgCjoADSAAIAk6AAwgACAIOgALIAAgBzoACiAAIAY6AAkgACAFOgAIIAAgBDoAByAAIAMtAAY6AAYgA0EANgKYAiADQgA3A5ACIANCADcDiAIgA0L5wvibkaOz8NsANwOAASADQuv6htq/tfbBHzcDeCADQp/Y+dnCkdqCm383A3AgA0LRhZrv+s+Uh9EANwNoIANC8e30+KWn/aelfzcDYCADQqvw0/Sv7ry3PDcDWCADQrvOqqbY0Ouzu383A1AgA0KIkvOd/8z5hOoANwNIIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADQgA3A9gBIANCADcD0AEgA0IANwPIASADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwOYASADQgA3A5ABIANCADcDiAEgA0HIAGoiAiADQSAQAyACIAMQBCADIAMtAABB+AFxOgAAIAMgAy0AH0E/cUHAAHI6AB8gASADEAYgACABLQAAOgAgIAAgAS0AAToAISAAIAEtAAI6ACIgACABLQADOgAjIAAgAS0ABDoAJCAAIAEtAAU6ACUgACABLQAGOgAmIAAgAS0ABzoAJyAAIAEtAAg6ACggACABLQAJOgApIAAgAS0ACjoAKiAAIAEtAAs6ACsgACABLQAMOgAsIAAgAS0ADToALSAAIAEtAA46AC4gACABLQAPOgAvIAAgAS0AEDoAMCAAIAEtABE6ADEgACABLQASOgAyIAAgAS0AEzoAMyAAIAEtABQ6ADQgACABLQAVOgA1IAAgAS0AFjoANiAAIAEtABc6ADcgACABLQAYOgA4IAAgAS0AGToAOSAAIAEtABo6ADogACABLQAbOgA7IAAgAS0AHDoAPCAAIAEtAB06AD0gACABLQAeOgA+IAAgAS0AHzoAPyADQQA6AAAgA0EAOgABIANBADoAAiADQQA6AAMgA0EAOgAEIANBADoABSADQQA6AAYgA0EAOgAHIANBADoACCADQQA6AAkgA0EAOgAKIANBADoACyADQQA6AAwgA0EAOgANIANBADoADiADQQA6AA8gA0EAOgAQIANBADoAESADQQA6ABIgA0EAOgATIANBADoAFCADQQA6ABUgA0EAOgAWIANBADoAFyADQQA6ABggA0EAOgAZIANBADoAGiADQQA6ABsgA0EAOgAcIANBADoAHSADQQA6AB4gA0EAOgAfIANBADoAICADQQA6ACEgA0EAOgAiIANBADoAIyADQQA6ACQgA0EAOgAlIANBADoAJiADQQA6ACcgA0EAOgAoIANBADoAKSADQQA6ACogA0EAOgArIANBADoALCADQQA6AC0gA0EAOgAuIANBADoALyADQQA6ADAgA0EAOgAxIANBADoAMiADQQA6ADMgA0EAOgA0IANBADoANSADQQA6ADYgA0EAOgA3IANBADoAOCADQQA6ADkgA0EAOgA6IANBADoAOyADQQA6ADwgA0EAOgA9IANBADoAPiADQQA6AD8gA0GgAmokAAuSFAEFfyMAQaAEayIEJAAgBEEgaiIFIAQgABABIARBADYC2AMgBEIANwPQAyAEQgA3A8gDIARC+cL4m5Gjs/DbADcDwAIgBELr+obav7X2wR83A7gCIARCn9j52cKR2oKbfzcDsAIgBELRhZrv+s+Uh9EANwOoAiAEQvHt9Pilp/2npX83A6ACIARCq/DT9K/uvLc8NwOYAiAEQrvOqqbY0Ouzu383A5ACIARCiJLznf/M+YTqADcDiAIgBEIANwPAAyAEQgA3A7gDIARCADcDsAMgBEIANwOoAyAEQgA3A6ADIARCADcDmAMgBEIANwOQAyAEQgA3A4gDIARCADcDgAMgBEIANwP4AiAEQgA3A/ACIARCADcD6AIgBEIANwPgAiAEQgA3A9gCIARCADcD0AIgBEIANwPIAiAEQYgCaiIAIAVBIBADIAAgBEHAAWoiBxAEIAQgBC0AwAFB+AFxOgDAASAEIAQtAN8BQT9xQcAAcjoA3wEgBEEANgLYAyAEQgA3A9ADIARCADcDyAMgBEL5wvibkaOz8NsANwPAAiAEQuv6htq/tfbBHzcDuAIgBEKf2PnZwpHagpt/NwOwAiAEQtGFmu/6z5SH0QA3A6gCIARC8e30+KWn/aelfzcDoAIgBEKr8NP0r+68tzw3A5gCIARCu86qptjQ67O7fzcDkAIgBEKIkvOd/8z5hOoANwOIAiAEQgA3A8ADIARCADcDuAMgBEIANwOwAyAEQgA3A6gDIARCADcDoAMgBEIANwOYAyAEQgA3A5ADIARCADcDiAMgBEIANwOAAyAEQgA3A/gCIARCADcD8AIgBEIANwPoAiAEQgA3A+ACIARCADcD2AIgBEIANwPQAiAEQgA3A8gCIAAgBEHgAWpBIBADIAAgASACEAMgACAEQeADaiIFEAQgBEGgAWoiBiAFEAUgBEHgAGoiCCAGEAYgBEEANgLYAyAEQgA3A9ADIARCADcDyAMgBEL5wvibkaOz8NsANwPAAiAEQuv6htq/tfbBHzcDuAIgBEKf2PnZwpHagpt/NwOwAiAEQtGFmu/6z5SH0QA3A6gCIARC8e30+KWn/aelfzcDoAIgBEKr8NP0r+68tzw3A5gCIARCu86qptjQ67O7fzcDkAIgBEKIkvOd/8z5hOoANwOIAiAEQgA3A8ADIARCADcDuAMgBEIANwOwAyAEQgA3A6gDIARCADcDoAMgBEIANwOYAyAEQgA3A5ADIARCADcDiAMgBEIANwOAAyAEQgA3A/gCIARCADcD8AIgBEIANwPoAiAEQgA3A+ACIARCADcD2AIgBEIANwPQAiAEQgA3A8gCIAAgCEEgEAMgACAEQUBrQSAQAyAAIAEgAhADIAAgBRAEIARBgAFqIgAgBRAFIAMgBC0AYDoAACADIAQpAGE3AAEgAyAEKQBpNwAJIAMgBCkAcTcAESADIAQoAHk2ABkgAyAELwB9OwAdIAMgBC0AfzoAHyADQSBqIAAgByAGEAcgBEEAOgDAASAEQQA6AMEBIARBADoAwgEgBEEAOgDDASAEQQA6AMQBIARBADoAxQEgBEEAOgDGASAEQQA6AMcBIARBADoAyAEgBEEAOgDJASAEQQA6AMoBIARBADoAywEgBEEAOgDMASAEQQA6AM0BIARBADoAzgEgBEEAOgDPASAEQQA6ANABIARBADoA0QEgBEEAOgDSASAEQQA6ANMBIARBADoA1AEgBEEAOgDVASAEQQA6ANYBIARBADoA1wEgBEEAOgDYASAEQQA6ANkBIARBADoA2gEgBEEAOgDbASAEQQA6ANwBIARBADoA3QEgBEEAOgDeASAEQQA6AN8BIARBADoA4AEgBEEAOgDhASAEQQA6AOIBIARBADoA4wEgBEEAOgDkASAEQQA6AOUBIARBADoA5gEgBEEAOgDnASAEQQA6AOgBIARBADoA6QEgBEEAOgDqASAEQQA6AOsBIARBADoA7AEgBEEAOgDtASAEQQA6AO4BIARBADoA7wEgBEEAOgDwASAEQQA6APEBIARBADoA8gEgBEEAOgDzASAEQQA6APQBIARBADoA9QEgBEEAOgD2ASAEQQA6APcBIARBADoA+AEgBEEAOgD5ASAEQQA6APoBIARBADoA+wEgBEEAOgD8ASAEQQA6AP0BIARBADoA/gEgBEEAOgD/ASAEQQA6AKABIARBADoAoQEgBEEAOgCiASAEQQA6AKMBIARBADoApAEgBEEAOgClASAEQQA6AKYBIARBADoApwEgBEEAOgCoASAEQQA6AKkBIARBADoAqgEgBEEAOgCrASAEQQA6AKwBIARBADoArQEgBEEAOgCuASAEQQA6AK8BIARBADoAsAEgBEEAOgCxASAEQQA6ALIBIARBADoAswEgBEEAOgC0ASAEQQA6ALUBIARBADoAtgEgBEEAOgC3ASAEQQA6ALgBIARBADoAuQEgBEEAOgC6ASAEQQA6ALsBIARBADoAvAEgBEEAOgC9ASAEQQA6AL4BIARBADoAvwEgBEEAOgAgIARBADoAISAEQQA6ACIgBEEAOgAjIARBADoAJCAEQQA6ACUgBEEAOgAmIARBADoAJyAEQQA6ACggBEEAOgApIARBADoAKiAEQQA6ACsgBEEAOgAsIARBADoALSAEQQA6AC4gBEEAOgAvIARBADoAMCAEQQA6ADEgBEEAOgAyIARBADoAMyAEQQA6ADQgBEEAOgA1IARBADoANiAEQQA6ADcgBEEAOgA4IARBADoAOSAEQQA6ADogBEEAOgA7IARBADoAPCAEQQA6AD0gBEEAOgA+IARBADoAPyAEQQA6AEAgBEEAOgBBIARBADoAQiAEQQA6AEMgBEEAOgBEIARBADoARSAEQQA6AEYgBEEAOgBHIARBADoASCAEQQA6AEkgBEEAOgBKIARBADoASyAEQQA6AEwgBEEAOgBNIARBADoATiAEQQA6AE8gBEEAOgBQIARBADoAUSAEQQA6AFIgBEEAOgBTIARBADoAVCAEQQA6AFUgBEEAOgBWIARBADoAVyAEQQA6AFggBEEAOgBZIARBADoAWiAEQQA6AFsgBEEAOgBcIARBADoAXSAEQQA6AF4gBEEAOgBfIARBADoAACAEQQA6AAEgBEEAOgACIARBADoAAyAEQQA6AAQgBEEAOgAFIARBADoABiAEQQA6AAcgBEEAOgAIIARBADoACSAEQQA6AAogBEEAOgALIARBADoADCAEQQA6AA0gBEEAOgAOIARBADoADyAEQQA6ABAgBEEAOgARIARBADoAEiAEQQA6ABMgBEEAOgAUIARBADoAFSAEQQA6ABYgBEEAOgAXIARBADoAGCAEQQA6ABkgBEEAOgAaIARBADoAGyAEQQA6ABwgBEEAOgAdIARBADoAHiAEQQA6AB8gBEGgBGokAAusDAIBfgZ/AkAgAkUNACAAKALQASIFQQdxBEBBACAFa0EHcSIEIAIgAiAESxshBwJAIARFDQAgATEAACEDIAAgBUEBaiIENgLQASAAQUBrIgggBUF4cWoiBiAGKQMAIAMgBUF/c0EDdEE4ca2GhDcDACAHQQFGBEAgBCEFDAELIAExAAEhAyAAIAVBAmoiBjYC0AEgCCAEQXhxaiIJIAkpAwAgAyAEQX9zQQN0QThxrYaENwMAIAdBAkYEQCAGIQUMAQsgATEAAiEDIAAgBUEDaiIENgLQASAIIAZBeHFqIgkgCSkDACADIAZBf3NBA3RBOHGthoQ3AwAgB0EDRgRAIAQhBQwBCyABMQADIQMgACAFQQRqIgY2AtABIAggBEF4cWoiCSAJKQMAIAMgBEF/c0EDdEE4ca2GhDcDACAHQQRGBEAgBiEFDAELIAExAAQhAyAAIAVBBWoiBDYC0AEgCCAGQXhxaiIJIAkpAwAgAyAGQX9zQQN0QThxrYaENwMAIAdBBUYEQCAEIQUMAQsgATEABSEDIAAgBUEGaiIGNgLQASAIIARBeHFqIgkgCSkDACADIARBf3NBA3RBOHGthoQ3AwAgB0EGRgRAIAYhBQwBCyABMQAGIQMgACAFQQdqIgU2AtABIAggBkF4cWoiBCAEKQMAIAMgBkF/c0EDdEE4ca2GhDcDAAsgAiAHayECIAEgB2ohAQsgBUH/AHEEQEEAIQRBACAFa0H/AHEiBiACIAIgBksbIgZBCE8EQCAAIAVBeHFqQUBrIQcgBkF4cSEIA0AgBCAHaiABIARqKQAAIgNCOIYgA0KA/gODQiiGhCADQoCA/AeDQhiGIANCgICA+A+DQgiGhIQgA0IIiEKAgID4D4MgA0IYiEKAgPwHg4QgA0IoiEKA/gODIANCOIiEhIQ3AwAgCCAEQQhqIgRHDQALCyAAIAZB+ABxIgQgBWoiBTYC0AEgAiAEayECIAEgBGohAQsgBUGAAUYEQCAAIAApA8gBIgNCgAh8NwPIASADQoB4WgRAIAAgACkDwAFCAXw3A8ABCyAAECAgAEIANwO4ASAAQgA3A7ABIABCADcDqAEgAEIANwOgASAAQgA3A5gBIABCADcDkAEgAEIANwOIASAAQgA3A4ABIABCADcDeCAAQgA3A3AgAEIANwNoIABCADcDYCAAQgA3A1ggAEIANwNQIABCADcDSCAAQgA3A0AgAEEANgLQAUEAIQULIAJBgAFPBEAgAkEHdiEIIABBQGshBkEAIQcDQEEAIQQDQCAEIAZqIAEgBGopAAAiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhDcDACAEQQhqIgRBgAFHDQALIAAgACkDyAEiA0KACHw3A8gBIANCgHhaBEAgACAAKQPAAUIBfDcDwAELIAAQICAAQgA3A7gBIABCADcDsAEgAEIANwOoASAAQgA3A6ABIABCADcDmAEgAEIANwOQASAAQgA3A4gBIABCADcDgAEgAEIANwN4IABCADcDcCAAQgA3A2ggAEIANwNgIABCADcDWCAAQgA3A1AgAEIANwNIIAZCADcDAEEAIQUgAEEANgLQASABQYABaiEBIAggB0EBaiIHRw0ACwsgAkH/AHEiBkUNACAAQUBrIQkgBkEITwRAIAZBeHEhB0EAIQQDQCAEIAlqIAEgBGopAAAiA0I4hiADQoD+A4NCKIaEIANCgID8B4NCGIYgA0KAgID4D4NCCIaEhCADQgiIQoCAgPgPgyADQhiIQoCA/AeDhCADQiiIQoD+A4MgA0I4iISEhDcDACAHIARBCGoiBEcNAAsLIAAgAkH4AHEiByAFaiIENgLQASAGIAdGDQAgASAHaiEBIAJBA3RBwAdxIAVBA3RqIQhBAEEBIAYgB2siAiACQQFNG2shBQNAIAExAAAhAyAAIARBAWoiAjYC0AEgCSAEQXhxaiIEIAQpAwAgAyAIQX9zQThxrYaENwMAIAFBAWohASAIQQhqIQggAiEEIAVBAWoiBQ0ACwsLwAkCAn4CfyAAKALQASIERQRAIABCADcDuAEgAEIANwOwASAAQgA3A6gBIABCADcDoAEgAEIANwOYASAAQgA3A5ABIABCADcDiAEgAEIANwOAASAAQgA3A3ggAEIANwNwIABCADcDaCAAQgA3A2AgAEIANwNYIABCADcDUCAAQgA3A0ggAEIANwNACyAAIARBeHFqQUBrIgUgBSkDAEKAASAEQQN0IgVBf3NBOHGthoQ3AwAgACAAKQPIASIDIAWtfCICNwPIASACIANUBEAgACAAKQPAAUIBfDcDwAELIARB8ABPBEAgABAgIABCADcDqAEgAEIANwOgASAAQgA3A5gBIABCADcDkAEgAEIANwOIASAAQgA3A4ABIABCADcDeCAAQgA3A3AgAEIANwNoIABCADcDYCAAQgA3A1ggAEIANwNQIABCADcDSCAAQgA3A0AgACkDyAEhAgsgACACNwO4ASAAIAApA8ABNwOwASAAECAgASAAKQMAIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3AAAgASAAKQMIIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3AAggASAAKQMQIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3ABAgASAAKQMYIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3ABggASAAKQMgIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3ACAgASAAKQMoIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3ACggASAAKQMwIgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3ADAgASAAKQM4IgJCOIYgAkKA/gODQiiGhCACQoCA/AeDQhiGIAJCgICA+A+DQgiGhIQgAkIIiEKAgID4D4MgAkIYiEKAgPwHg4QgAkIoiEKA/gODIAJCOIiEhIQ3ADhBACEEA0AgACAEaiIBQQA6AAAgAUEBakEAOgAAIAFBAmpBADoAACABQQNqQQA6AAAgAUEEakEAOgAAIAFBBWpBADoAACABQQZqQQA6AAAgAUEHakEAOgAAIARBCGoiBEHYAUcNAAsLtAQBAX8jAEFAaiICJAAgAiABKAAANgIAIAIgASkABDcCBCACIAEpAAw3AgwgAiABKQAUNwIUIAIgASkAHDcCHCACIAEpACQ3AiQgAiABKQAsNwIsIAIgASkANDcCNCACIAEoADw2AjwgACACEB0gAkEAOgAAIAJBADoAASACQQA6AAIgAkEAOgADIAJBADoABCACQQA6AAUgAkEAOgAGIAJBADoAByACQQA6AAggAkEAOgAJIAJBADoACiACQQA6AAsgAkEAOgAMIAJBADoADSACQQA6AA4gAkEAOgAPIAJBADoAECACQQA6ABEgAkEAOgASIAJBADoAEyACQQA6ABQgAkEAOgAVIAJBADoAFiACQQA6ABcgAkEAOgAYIAJBADoAGSACQQA6ABogAkEAOgAbIAJBADoAHCACQQA6AB0gAkEAOgAeIAJBADoAHyACQQA6ACAgAkEAOgAhIAJBADoAIiACQQA6ACMgAkEAOgAkIAJBADoAJSACQQA6ACYgAkEAOgAnIAJBADoAKCACQQA6ACkgAkEAOgAqIAJBADoAKyACQQA6ACwgAkEAOgAtIAJBADoALiACQQA6AC8gAkEAOgAwIAJBADoAMSACQQA6ADIgAkEAOgAzIAJBADoANCACQQA6ADUgAkEAOgA2IAJBADoANyACQQA6ADggAkEAOgA5IAJBADoAOiACQQA6ADsgAkEAOgA8IAJBADoAPSACQQA6AD4gAkEAOgA/IAJBQGskAAuWDQEGfyMAQcAEayICJAAgAkGgBGoiAyABQaARQcAREAcgAkIANwK4AyACQgA3ArADIAJCADcCqAMgAkIANwKgAyACQgA3ApgDIAJCADcCkAMgAkIANwKIAyACQgA3AoADIAJCADcC+AIgAkIBNwLwAiACQgA3AugCIAJCADcC4AIgAkIANwLYAiACQgA3AtACIAJCATcCyAIgAkIANwKgASACQgA3ApgBIAJCADcCkAEgAkIANwKIASACQgA3AoABIAJCADcCeCACQgA3AnAgAkIANwJoIAJCADcCYCACQgE3AlggAkIANwJQIAJCADcCSCACQgA3AkAgAkIANwI4IAJCATcCMCACQgA3AiggAkIANwIgIAJCADcCGCACQgA3AhAgAkIANwIIIAJBCGoiASACQcgCaiIEIAJB8ANqIgUg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ASACQgA3A9ABIAJCADcDyAEgAkIANwPAASACQgA3A7gBIAJCADcDsAEgAkIANwOoASACQgA3A6ABIAJCADcDmAEgAkIANwOQASACQgA3A4gBIAJByABqIgMgAEEgEAMgAyACEAQgASACLQAAOgAAIAEgAikAATcAASABIAItAAk6AAkgASACKAEKNgAKIAEgAi8BDjsADiABIAItABA6ABAgASACKAARNgARIAEgAi8AFTsAFSABIAItABc6ABcgASACLQAYOgAYIAEgAi8AGTsAGSABIAIoABs2ABsgASABLQAAQfgBcToAACABIAItAB9BP3FBwAByOgAfIAJBADoAACACQQA6AAEgAkEAOgACIAJBADoAAyACQQA6AAQgAkEAOgAFIAJBADoABiACQQA6AAcgAkEAOgAIIAJBADoACSACQQA6AAogAkEAOgALIAJBADoADCACQQA6AA0gAkEAOgAOIAJBADoADyACQQA6ABAgAkEAOgARIAJBADoAEiACQQA6ABMgAkEAOgAUIAJBADoAFSACQQA6ABYgAkEAOgAXIAJBADoAGCACQQA6ABkgAkEAOgAaIAJBADoAGyACQQA6ABwgAkEAOgAdIAJBADoAHiACQQA6AB8gAkEAOgAgIAJBADoAISACQQA6ACIgAkEAOgAjIAJBADoAJCACQQA6ACUgAkEAOgAmIAJBADoAJyACQQA6ACggAkEAOgApIAJBADoAKiACQQA6ACsgAkEAOgAsIAJBADoALSACQQA6AC4gAkEAOgAvIAJBADoAMCACQQA6ADEgAkEAOgAyIAJBADoAMyACQQA6ADQgAkEAOgA1IAJBADoANiACQQA6ADcgAkEAOgA4IAJBADoAOSACQQA6ADogAkEAOgA7IAJBADoAPCACQQA6AD0gAkEAOgA+IAJBADoAPyACQaACaiQAC9kQAgN/CH4jAEHACGsiBCQAIARBADYC8AMgBEIANwPoAyAEQgA3A+ADIARC+cL4m5Gjs/DbADcD2AIgBELr+obav7X2wR83A9ACIARCn9j52cKR2oKbfzcDyAIgBELRhZrv+s+Uh9EANwPAAiAEQvHt9Pilp/2npX83A7gCIARCq/DT9K/uvLc8NwOwAiAEQrvOqqbY0Ouzu383A6gCIARCiJLznf/M+YTqADcDoAIgBEIANwPYAyAEQgA3A9ADIARCADcDyAMgBEIANwPAAyAEQgA3A7gDIARCADcDsAMgBEIANwOoAyAEQgA3A6ADIARCADcDmAMgBEIANwOQAyAEQgA3A4gDIARCADcDgAMgBEIANwP4AiAEQgA3A/ACIARCADcD6AIgBEIANwPgAiAEQaACaiIGIABBIBADIAYgA0EgEAMgBiABIAIQAyAGIARBoAdqIgIQBCAEIAIQBSAANQA8IQggADUAOCEJIAA1ADQhCiAANQAwIQsgADUALCEMIAA1ACghDSAANQAkIQ4gADUAICEHAkAgBEGABmoiASADEAoNACAEQeAEaiAAEAoNACAJIAogCyAMIA0gDiAHQpPYqJgKfEIgiHxC5bm2vwp8QiCIfEKpxqHoBXxCIIh8QqGMhNkOfEIgiHxC/////w98QiCIfEL/////D3xCIIh8Qv////8PfEIgiCAIfEKAgICAAVYNACAAQSBqIQUgAiABIARBgAFqIgAQCyAGIAEQDCAAIAIgBhANIARBwANqIAAQDEH9ASEAAn8CQAJAAkADQCAEIABBAWsiAUEDdmotAAAgAUEHcXZBAXENAyAEIABBAmsiAUEDdmotAAAgAUEHcXZBAXENASAEIABBA2siAUEDdmotAAAgAUEHcXZBAXENAiABIgBBAUsNAAtBAAwDCyAAQQJrDAILIABBA2sMAQsgAEEBawshACAEQf8BOgB+IARB//8DOwF8IAQgAEEBaiICOgB/Qf0BIQACfwJAAkACQANAIAUgAEEBayIBQQN2ai0AACABQQdxdkEBcQ0DIAUgAEECayIBQQN2ai0AACABQQdxdkEBcQ0BIAUgAEEDayIBQQN2ai0AACABQQdxdkEBcQ0CIAEiAEEBSw0AC0EADAMLIABBAmsMAgsgAEEDawwBCyAAQQFrCyEAIARB//8DOwF4IARCADcCmAcgBEIANwKQByAEQgA3AogHIARCADcCgAcgBEIANwL4BiAEQgA3AvAGIARCADcC6AYgBEIANwLgBiAEQgA3AtgGIARCATcC0AYgBEIANwLIBiAEQgA3AsAGIARCADcCuAYgBEIANwKwBiAEQgE3AqgGIARCADcCoAYgBEIANwKYBiAEQgA3ApAGIARCADcCiAYgBEIANwKABiAEQf8BOgB6IAQgAEEBaiIAOgB7IAJB/wFxIgEgAEH/AXEiACAAIAFJGyEDA0AgBEGABmoiASABIARBgAFqEAsgBEH8AGpBAyADIgAgBBAOIQMgBEH4AGpBBSAAIAUQDiECAkAgA0EASgRAIAEgASAEQaACaiADQQF2QaABbGoQDQwBCyADQQBODQAgBCAEQaACakEAIANrQQF2QaABbGoiASgCADYCyAcgBCABKQIENwLMByAEIAEpAgw3AtQHIAQgASkCFDcC3AcgBCABKQIcNwLkByAEIAEoAiQ2AuwHIAQgASkDKDcCoAcgBCABKQMwNwKoByAEIAEoAjg2ArAHIAQgASgCPDYCtAcgBCABKQNANwK4ByAEIAEpA0g3AsAHIAQgASkDUDcC8AcgBCABKQNYNwL4ByAEIAEpA2A3AoAIIAQgASkDaDcCiAggBCABKQNwNwKQCCAEQQAgASgCeGs2ApgIIARBACABKAJ8azYCnAggBEEAIAEoAoABazYCoAggBEEAIAEoAoQBazYCpAggBEEAIAEoAogBazYCqAggBEEAIAEoAowBazYCrAggBEEAIAEoApABazYCsAggBEEAIAEoApQBazYCtAggBEEAIAEoApgBazYCuAggBEEAIAEoApwBazYCvAggBEGABmoiASABIARBoAdqEA0LAkAgAkEASgRAIARBgAZqIgEgASACQQF2QfgAbEGgCGogBEHQAGogBEEgahAPDAELIAJBAE4NACAEQQAgAmtBAXZB+ABsIgFBwAhqKQMANwLoByAEIAFBuAhqKQMANwLgByAEIAFBsAhqKQMANwLYByAEIAFBqAhqKQMANwLQByAEIAFBoAhqKQMANwLIByAEIAFB6AhqKQMANwLAByAEIAFB4AhqKQMANwK4ByAEIAFB2AhqKQMANwKwByAEIAFB0AhqKQMANwKoByAEIAFByAhqKQMANwKgByAEQQAgAUGUCWooAgBrNgKUCCAEQQAgAUGQCWooAgBrNgKQCCAEQQAgAUGMCWooAgBrNgKMCCAEQQAgAUGICWooAgBrNgKICCAEQQAgAUGECWooAgBrNgKECCAEQQAgAUGACWooAgBrNgKACCAEQQAgAUH8CGooAgBrNgL8ByAEQQAgAUH4CGooAgBrNgL4ByAEQQAgAUH0CGooAgBrNgL0ByAEQQAgAUHwCGooAgBrNgLwByAEQYAGaiIBIAEgBEGgB2ogBEHQAGogBEEgahAPCyAAQQFrIQMgAEEASg0ACyAEQaAHaiIAIARB4ARqIgEQDCAEQYAGaiICIAIgABANIAIgAiABEAsgAiACIAEQCyACIAIgARALIARBgAFqIAIQECAEKQOYASAEKQOQASAEKQOIASAEKQOAAUIBhYSEhCIHQv////8PgyAHQiCIhEIBfUIgiKdBAXEhBQsgBEHACGokACAFC8oGAQ1/IwBBIGsiAiQAIABBKGoiBiABEBcgAEIANwJwIABCADcCaCAAQgA3AmAgAEIANwJYIABCATcCUCAAQfgAaiIDIAYQGSAAIANB8BAQGCAAIAAoAnggACgCUCIEazYCeCAAIAAoAnwgACgCVCIFazYCfCAAIAAoAoABIAAoAlgiB2s2AoABIAAgACgChAEgACgCXCIIazYChAEgACAAKAKIASAAKAJgIglrNgKIASAAIAAoAowBIAAoAmQiCms2AowBIAAgACgCkAEgACgCaCILazYCkAEgACAAKAKUASAAKAJsIgxrNgKUASAAIAAoApgBIAAoAnAiDWs2ApgBIAAgACgCnAEgACgCdCIOazYCnAEgACAEIAAoAgBqNgIAIAAgBSAAKAIEajYCBCAAIAcgACgCCGo2AgggACAIIAAoAgxqNgIMIAAgCSAAKAIQajYCECAAIAogACgCFGo2AhQgACALIAAoAhhqNgIYIAAgDCAAKAIcajYCHCAAIA0gACgCIGo2AiAgACAOIAAoAiRqNgIkIAAgAyAAEBgCQCAAIAAQGkUEQEF/IQQMAQsgACADIAAQGCACIAAQGyACLQAAQQAhBCACQQA6AAAgAkEAOgABIAJBADoAAiACQQA6AAMgAkEAOgAEIAJBADoABSACQQA6AAYgAkEAOgAHIAJBADoACCACQQA6AAkgAkEAOgAKIAJBADoACyACQQA6AAwgAkEAOgANIAJBADoADiACQQA6AA8gAkEAOgAQIAJBADoAESACQQA6ABIgAkEAOgATIAJBADoAFCACQQA6ABUgAkEAOgAWIAJBADoAFyACQQA6ABggAkEAOgAZIAJBADoAGiACQQA6ABsgAkEAOgAcIAJBADoAHSACQQA6AB4gAkEAOgAfQQFxIAEtAB9BB3ZGBEAgAEEAIAAoAgBrNgIAIABBACAAKAIEazYCBCAAQQAgACgCCGs2AgggAEEAIAAoAgxrNgIMIABBACAAKAIQazYCECAAQQAgACgCFGs2AhQgAEEAIAAoAhhrNgIYIABBACAAKAIcazYCHCAAQQAgACgCIGs2AiAgAEEAIAAoAiRrNgIkCyADIAAgBhAYCyACQSBqJAAgBAu6CgILfhl/IAIgARAZIAJBKGoiGiABQShqEBkgAkHQAGoiGyABQdAAahAZIAI0AmhCAYYgAjQCZEIBhiACNAJgQgGGIgZCgICAEHwiB0Iah3wiCEKAgIAIfCIJQhmHfCIDQoCAgBB8IQQgAiADIARCgICA4A+DfT4CaCACNAJYQgGGIAI0AlRCAYYgAjQCUEIBhiIKQoCAgBB8IgtCGod8IgxCgICACHwiDUIZh3wiBUKAgIAQfCEDIAIgBSADQoCAgOAPg30+AlggAjQCbEIBhiAEQhqHfCIFQoCAgAh8IQQgAiAFIARCgICA8A+DfT4CbCACNAJcQgGGIANCGod8IgVCgICACHwhAyACIAUgA0KAgIDwD4N9PgJcIAI0AnBCAYYgBEIZh3wiBUKAgIAQfCEEIAIgBSAEQoCAgOAPg30+AnAgAiAIIAlCgICA8A+DfSAGIAdCgICAYIN9IANCGYd8IgNCgICAEHwiBkIaiHw+AmQgAiADIAZCgICA4A+DfT4CYCACNAJ0QgGGIARCGod8IgNCgICACHwhBCACIAMgBEKAgIDwD4N9PgJ0IAIgDCANQoCAgPAPg30gCiALQoCAgGCDfSAEQhmHQhN+fCIEQoCAgBB8IgNCGoh8PgJUIAIgBCADQoCAgOAPg30+AlAgAiABKAIoIAEoAgBqNgJ4IAIgASgCLCABKAIEajYCfCACIAEoAjAgASgCCGo2AoABIAIgASgCNCABKAIMajYChAEgAiABKAI4IAEoAhBqNgKIASACIAEoAjwgASgCFGo2AowBIAIgASgCQCABKAIYajYCkAEgAiABKAJEIAEoAhxqNgKUASACIAEoAkggASgCIGo2ApgBIAIgASgCTCABKAIkajYCnAEgAEH4AGoiHCACQfgAaiIBEBkgAiACKAIAIhIgAigCKCIQaiIdNgJ4IAIgAigCBCITIAIoAiwiEWoiHjYCfCACIAIoAggiFCACKAIwIhVqIh82AoABIAIgAigCDCIWIAIoAjQiDmoiIDYChAEgAiACKAIQIhcgAigCOCIPaiIhNgKIASACIAIoAhQiGCACKAI8IhlqIiI2AowBIAIgAigCGCIjIAIoAkAiJGoiJTYCkAEgAiAZIBhrIhg2AjwgAiAPIBdrIhc2AjggAiAOIBZrIhY2AjQgAiAVIBRrIhQ2AjAgAiARIBNrIhM2AiwgAiAQIBJrIhI2AiggAiACKAJEIhAgAigCHCIRayIVNgJEIAIgAigCSCIOIAIoAiAiD2siGTYCSCACIBAgEWoiEDYClAEgAiAOIA9qIhE2ApgBIAIgAigCTCIOIAIoAiQiD2siJjYCTCACIA4gD2oiDjYCnAEgAiAkICNrIg82AkAgAiAAKAJ4IB1rNgIAIAIgACgCfCAeazYCBCACIAAoAoABIB9rNgIIIAIgACgChAEgIGs2AgwgAiAAKAKIASAhazYCECACIAAoAowBICJrNgIUIAIgACgCkAEgJWs2AhggAiAAKAKUASAQazYCHCACIAAoApgBIBFrNgIgIAIgACgCnAEgDms2AiQgAiACKAJQIBJrNgJQIAIgAigCVCATazYCVCACIAIoAlggFGs2AlggAiACKAJcIBZrNgJcIAIgAigCYCAXazYCYCACIAIoAmQgGGs2AmQgAiACKAJoIA9rNgJoIAIgAigCbCAVazYCbCACIAIoAnAgGWs2AnAgAiACKAJ0ICZrNgJ0IAAgAiAbEBggAEEoaiABIBoQGCAAQdAAaiAaIBsQGCAcIAIgARAYC7cDACAAIAEoAgAgASgCKGo2AgAgACABKAIEIAEoAixqNgIEIAAgASgCCCABKAIwajYCCCAAIAEoAgwgASgCNGo2AgwgACABKAIQIAEoAjhqNgIQIAAgASgCFCABKAI8ajYCFCAAIAEoAhggASgCQGo2AhggACABKAIcIAEoAkRqNgIcIAAgASgCICABKAJIajYCICAAIAEoAiQgASgCTGo2AiQgACABKAIoIAEoAgBrNgIoIAAgASgCLCABKAIEazYCLCAAIAEoAjAgASgCCGs2AjAgACABKAI0IAEoAgxrNgI0IAAgASgCOCABKAIQazYCOCAAIAEoAjwgASgCFGs2AjwgACABKAJAIAEoAhhrNgJAIAAgASgCRCABKAIcazYCRCAAIAEoAkggASgCIGs2AkggACABKAJMIAEoAiRrNgJMIAAgASgCUDYCUCAAIAEoAlQ2AlQgACABKAJYNgJYIAAgASgCXDYCXCAAIAEoAmA2AmAgACABKAJkNgJkIAAgASgCaDYCaCAAIAEoAmw2AmwgACABKAJwNgJwIAAgASgCdDYCdCAAQfgAaiABQfgAakGQEBAYC4kJARR/IwBB4ABrIgMkACADIAEoAgAiCyABKAIoIgRqNgIwIAMgASgCBCIFIAEoAiwiBmo2AjQgAyABKAIIIgcgASgCMCIIajYCOCADIAEoAgwiCSABKAI0IgpqNgI8IAMgASgCECIMIAEoAjgiDWo2AkAgAyABKAIUIg4gASgCPCIPajYCRCADIA8gDms2AhQgAyANIAxrNgIQIAMgCiAJazYCDCADIAggB2s2AgggAyAGIAVrNgIEIAMgBCALazYCACADIAEoAhgiCyABKAJAIgRqNgJIIAMgASgCHCIFIAEoAkQiBmo2AkwgAyABKAIgIgcgASgCSCIIajYCUCADIAEoAiQiCSABKAJMIgpqNgJUIAMgCiAJazYCJCADIAggB2s2AiAgAyAGIAVrNgIcIAMgBCALazYCGCADQTBqIgsgCyACEBggAyADIAJBKGoQGCAAIAMoAgAiBCADKAIwIgVqNgIoIAAgAygCBCIGIAMoAjQiB2o2AiwgACADKAIIIgggAygCOCIJajYCMCAAIAMoAgwiCiADKAI8IgxqNgI0IAAgAygCECINIAMoAkAiDmo2AjggACADKAIUIg8gAygCRCIQajYCPCAAIAMoAhgiESADKAJIIhJqNgJAIAAgAygCHCITIAMoAkwiFGo2AkQgACADKAIgIhUgAygCUCIWajYCSCAAIBAgD2s2AhQgACAOIA1rNgIQIAAgDCAKazYCDCAAIAkgCGs2AgggACAHIAZrNgIEIAAgBSAEazYCACAAIAMoAiQiBCADKAJUIgVqNgJMIAAgBSAEazYCJCAAIBYgFWs2AiAgACAUIBNrNgIcIAAgEiARazYCGCAAIAEoAlBBAXQ2AlAgACABKAJUQQF0NgJUIAAgASgCWEEBdDYCWCAAIAEoAlxBAXQ2AlwgACABKAJgQQF0NgJgIAAgASgCZEEBdDYCZCAAIAEoAmhBAXQ2AmggACABKAJsQQF0NgJsIAAgASgCcEEBdDYCcCAAIAEoAnRBAXQ2AnQgAEHQAGoiBCAEIAJB0ABqEBggAEH4AGoiBSABQfgAaiACQfgAahAYIAMgACgCeCIBIAAoAlAiAmo2AjAgAyAAKAJ8IgYgACgCVCIHajYCNCADIAAoAoABIgggACgCWCIJajYCOCADIAAoAoQBIgogACgCXCIMajYCPCADIAAoAogBIg0gACgCYCIOajYCQCADIAAoAowBIg8gACgCZCIQajYCRCADIBAgD2s2AhQgAyAOIA1rNgIQIAMgCSAIazYCCCADIAcgBms2AgQgAyACIAFrNgIAIAMgDCAKazYCDCADIAAoApABIgEgACgCaCICajYCSCADIAAoApQBIgYgACgCbCIHajYCTCADIAAoApgBIgggACgCcCIJajYCUCADIAAoApwBIgogACgCdCIMajYCVCADIAwgCms2AiQgAyAJIAhrNgIgIAMgByAGazYCHCADIAIgAWs2AhggBSAAIABBKGoiARAYIAAgACADEBggASABIAsQGCAEIAsgAxAYIANB4ABqJAALzAMBCH8gAC0AAyIHIAJGBEAgACACBH8gAyACQQFrIgZBA3ZqLQAAIAZBB3F2QQFxBUEACyADIAJBA3ZqLQAAIAJBB3F2QQFxIgRGBH8gB0EBawVBACAEIAJBAWoiBCABIAEgBEobIgZBAWsiBXRrIQQCQCAGQQJIDQAgAiAFayAGQQJGBH9BAAUgBUEBcSACIAZrIQkgBUF+cSEKQQAhAQNAIAQgASAJaiILQQFqIgVBAE4EfyADIAVBA3ZqLQAAIAVBB3F2QQFxBUEACyABdGogC0ECaiIEQQBOBH8gAyAEQQN2ai0AACAEQQdxdkEBcQVBAAsgAUEBanRqIQQgCiABQQJqIgFHDQALRQ0BIAZBA2tBfnFBAmoLIgFqIgVBAE4EfyADIAVBA3ZqLQAAIAVBB3F2QQFxBUEACyABdCAEaiEEC0EAIAIgBmsiAUEATgR/IAMgAUEDdmotAAAgAUEHcXZBAXEFQQALIARqIgNrIANxIgRBzAFxQQBHQQF0IARBqgFxQQBHciAEQfABcUEAR0ECdHIhBCAAIAMgBHU6AAIgACABIARqQQFqOwEAIAcgBmsLOgADCyACIAAuAQBGBH8gACwAAgVBAAsLqAkBAX8gAyABKAIAIAEoAihqNgIAIAMgASgCBCABKAIsajYCBCADIAEoAgggASgCMGo2AgggAyABKAIMIAEoAjRqNgIMIAMgASgCECABKAI4ajYCECADIAEoAhQgASgCPGo2AhQgAyABKAIYIAEoAkBqNgIYIAMgASgCHCABKAJEajYCHCADIAEoAiAgASgCSGo2AiAgAyABKAIkIAEoAkxqNgIkIAQgASgCKCABKAIAazYCACAEIAEoAiwgASgCBGs2AgQgBCABKAIwIAEoAghrNgIIIAQgASgCNCABKAIMazYCDCAEIAEoAjggASgCEGs2AhAgBCABKAI8IAEoAhRrNgIUIAQgASgCQCABKAIYazYCGCAEIAEoAkQgASgCHGs2AhwgBCABKAJIIAEoAiBrNgIgIAQgASgCTCABKAIkazYCJCADIAMgAhAYIAQgBCACQShqEBggACAEKAIAIAMoAgBqNgIoIAAgBCgCBCADKAIEajYCLCAAIAQoAgggAygCCGo2AjAgACAEKAIMIAMoAgxqNgI0IAAgBCgCECADKAIQajYCOCAAIAQoAhQgAygCFGo2AjwgACAEKAIYIAMoAhhqNgJAIAAgBCgCHCADKAIcajYCRCAAIAQoAiAgAygCIGo2AkggACAEKAIkIAMoAiRqNgJMIAAgAygCACAEKAIAazYCACAAIAMoAgQgBCgCBGs2AgQgACADKAIIIAQoAghrNgIIIAAgAygCDCAEKAIMazYCDCAAIAMoAhAgBCgCEGs2AhAgACADKAIUIAQoAhRrNgIUIAAgAygCGCAEKAIYazYCGCAAIAMoAhwgBCgCHGs2AhwgACADKAIgIAQoAiBrNgIgIAAgAygCJCAEKAIkazYCJCAAIAEoAlBBAXQ2AlAgACABKAJUQQF0NgJUIAAgASgCWEEBdDYCWCAAIAEoAlxBAXQ2AlwgACABKAJgQQF0NgJgIAAgASgCZEEBdDYCZCAAIAEoAmhBAXQ2AmggACABKAJsQQF0NgJsIAAgASgCcEEBdDYCcCAAIAEoAnRBAXQ2AnQgAEH4AGoiBSABQfgAaiACQdAAahAYIAMgACgCeCAAKAJQajYCACADIAAoAnwgACgCVGo2AgQgAyAAKAKAASAAKAJYajYCCCADIAAoAoQBIAAoAlxqNgIMIAMgACgCiAEgACgCYGo2AhAgAyAAKAKMASAAKAJkajYCFCADIAAoApABIAAoAmhqNgIYIAMgACgClAEgACgCbGo2AhwgAyAAKAKYASAAKAJwajYCICADIAAoApwBIAAoAnRqNgIkIAQgACgCUCAAKAJ4azYCACAEIAAoAlQgACgCfGs2AgQgBCAAKAJYIAAoAoABazYCCCAEIAAoAlwgACgChAFrNgIMIAQgACgCYCAAKAKIAWs2AhAgBCAAKAJkIAAoAowBazYCFCAEIAAoAmggACgCkAFrNgIYIAQgACgCbCAAKAKUAWs2AhwgBCAAKAJwIAAoApgBazYCICAEIAAoAnQgACgCnAFrNgIkIAUgACAAQShqIgEQGCAAIAAgBBAYIAEgASADEBggAEHQAGogAyAEEBgL7QsBBH8jAEGwAWsiAiQAIAJB4ABqIgMgAUHQAGoiBRAZIAMgAxAaGiADIAMQGSACQTBqIgQgAyAFEBggAkEAOgBgIAJBADoAYSACQQA6AGIgAkEAOgBjIAJBADoAZCACQQA6AGUgAkEAOgBmIAJBADoAZyACQQA6AGggAkEAOgBpIAJBADoAaiACQQA6AGsgAkEAOgBsIAJBADoAbSACQQA6AG4gAkEAOgBvIAJBADoAcCACQQA6AHEgAkEAOgByIAJBADoAcyACQQA6AHQgAkEAOgB1IAJBADoAdiACQQA6AHcgAkEAOgB4IAJBADoAeSACQQA6AHogAkEAOgB7IAJBADoAfCACQQA6AH0gAkEAOgB+IAJBADoAfyACQQA6AIABIAJBADoAgQEgAkEAOgCCASACQQA6AIMBIAJBADoAhAEgAkEAOgCFASACQQA6AIYBIAJBADoAhwEgAyABIAQQGCACIAFBKGogBBAYIAAgAhAbIAJBkAFqIAMQGyACLQCQASEBIAJBADoAkAEgAkEAOgCRASACQQA6AJIBIAJBADoAkwEgAkEAOgCUASACQQA6AJUBIAJBADoAlgEgAkEAOgCXASACQQA6AJgBIAJBADoAmQEgAkEAOgCaASACQQA6AJsBIAJBADoAnAEgAkEAOgCdASACQQA6AJ4BIAJBADoAnwEgAkEAOgCgASACQQA6AKEBIAJBADoAogEgAkEAOgCjASACQQA6AKQBIAJBADoApQEgAkEAOgCmASACQQA6AKcBIAJBADoAqAEgAkEAOgCpASACQQA6AKoBIAJBADoAqwEgAkEAOgCsASACQQA6AK0BIAJBADoArgEgAkEAOgCvASAAIAAtAB8gAUEHdHM6AB8gAkEAOgAwIAJBADoAMSACQQA6ADIgAkEAOgAzIAJBADoANCACQQA6ADUgAkEAOgA2IAJBADoANyACQQA6ADggAkEAOgA5IAJBADoAOiACQQA6ADsgAkEAOgA8IAJBADoAPSACQQA6AD4gAkEAOgA/IAJBADoAQCACQQA6AEEgAkEAOgBCIAJBADoAQyACQQA6AEQgAkEAOgBFIAJBADoARiACQQA6AEcgAkEAOgBIIAJBADoASSACQQA6AEogAkEAOgBLIAJBADoATCACQQA6AE0gAkEAOgBOIAJBADoATyACQQA6AFAgAkEAOgBRIAJBADoAUiACQQA6AFMgAkEAOgBUIAJBADoAVSACQQA6AFYgAkEAOgBXIAJBADoAYCACQQA6AGEgAkEAOgBiIAJBADoAYyACQQA6AGQgAkEAOgBlIAJBADoAZiACQQA6AGcgAkEAOgBoIAJBADoAaSACQQA6AGogAkEAOgBrIAJBADoAbCACQQA6AG0gAkEAOgBuIAJBADoAbyACQQA6AHAgAkEAOgBxIAJBADoAciACQQA6AHMgAkEAOgB0IAJBADoAdSACQQA6AHYgAkEAOgB3IAJBADoAeCACQQA6AHkgAkEAOgB6IAJBADoAeyACQQA6AHwgAkEAOgB9IAJBADoAfiACQQA6AH8gAkEAOgCAASACQQA6AIEBIAJBADoAggEgAkEAOgCDASACQQA6AIQBIAJBADoAhQEgAkEAOgCGASACQQA6AIcBIAJBADoAACACQQA6AAEgAkEAOgACIAJBADoAAyACQQA6AAQgAkEAOgAFIAJBADoABiACQQA6AAcgAkEAOgAIIAJBADoACSACQQA6AAogAkEAOgALIAJBADoADCACQQA6AA0gAkEAOgAOIAJBADoADyACQQA6ABAgAkEAOgARIAJBADoAEiACQQA6ABMgAkEAOgAUIAJBADoAFSACQQA6ABYgAkEAOgAXIAJBADoAGCACQQA6ABkgAkEAOgAaIAJBADoAGyACQQA6ABwgAkEAOgAdIAJBADoAHiACQQA6AB8gAkEAOgAgIAJBADoAISACQQA6ACIgAkEAOgAjIAJBADoAJCACQQA6ACUgAkEAOgAmIAJBADoAJyACQbABaiQAC+wGAQV/IwBBgAZrIgUkACAFQYCAgAg2AkwgBUHQAGoiBiAAIAEQEiAFQdABaiIHIAIgAxADIAcgBUHMAGpBBBADIAYgBRATQQAhAwNAIAMgBGogAyAFaigCADYAACADQQRqIgNBwABHDQALIAVBqARqIQlBASEHA0AgBUGoA2oiAiAAIAEQEiAJIAVBwAAQAyACIAUQE0EAIQIDQCACIARqIgMgAy0AACACIAVqIgYtAABzOgAAIANBAWoiCCAILQAAIAZBAWotAABzOgAAIANBAmoiCCAILQAAIAZBAmotAABzOgAAIANBA2oiAyADLQAAIAZBA2otAABzOgAAIAJBBGoiAkHAAEcNAAsgB0EBaiIHQYAQRw0AC0EAIQIDQCAFQdAAaiACaiIAQQA6AAAgAEEBakEAOgAAIABBAmpBADoAACAAQQNqQQA6AAAgAEEEakEAOgAAIABBBWpBADoAACAAQQZqQQA6AAAgAEEHakEAOgAAIAJBCGoiAkHYAkcNAAtBACEDA0AgBUHMAGogA2pBADoAACADQQFqIgNBBEcNAAsgBUEAOgAAIAVBADoAASAFQQA6AAIgBUEAOgADIAVBADoABCAFQQA6AAUgBUEAOgAGIAVBADoAByAFQQA6AAggBUEAOgAJIAVBADoACiAFQQA6AAsgBUEAOgAMIAVBADoADSAFQQA6AA4gBUEAOgAPIAVBADoAECAFQQA6ABEgBUEAOgASIAVBADoAEyAFQQA6ABQgBUEAOgAVIAVBADoAFiAFQQA6ABcgBUEAOgAYIAVBADoAGSAFQQA6ABogBUEAOgAbIAVBADoAHCAFQQA6AB0gBUEAOgAeIAVBADoAHyAFQQA6ACAgBUEAOgAhIAVBADoAIiAFQQA6ACMgBUEAOgAkIAVBADoAJSAFQQA6ACYgBUEAOgAnIAVBADoAKCAFQQA6ACkgBUEAOgAqIAVBADoAKyAFQQA6ACwgBUEAOgAtIAVBADoALiAFQQA6AC8gBUEAOgAwIAVBADoAMSAFQQA6ADIgBUEAOgAzIAVBADoANCAFQQA6ADUgBUEAOgA2IAVBADoANyAFQQA6ADggBUEAOgA5IAVBADoAOiAFQQA6ADsgBUEAOgA8IAVBADoAPSAFQQA6AD4gBUEAOgA/IAVBgAZqJAALsAcBBn8jAEHgAWsiAyQAAkACQAJAAkAgAkGBAU8EQCADQQA2AtgBIANCADcD0AEgA0IANwPIASADQvnC+JuRo7Pw2wA3A0AgA0Lr+obav7X2wR83AzggA0Kf2PnZwpHagpt/NwMwIANC0YWa7/rPlIfRADcDKCADQvHt9Pilp/2npX83AyAgA0Kr8NP0r+68tzw3AxggA0K7zqqm2NDrs7t/NwMQIANCiJLznf/M+YTqADcDCCADQgA3A8ABIANCADcDuAEgA0IANwOwASADQgA3A6gBIANCADcDoAEgA0IANwOYASADQgA3A5ABIANCADcDiAEgA0IANwOAASADQgA3A3ggA0IANwNwIANCADcDaCADQgA3A2AgA0IANwNYIANCADcDUCADQgA3A0ggA0EIaiIEIAEgAhADIAQgABAEQcAAIQIgACEBDAELIAJFBEBBACECDAMLIAJBA3EhBSACQQRJDQELIAJB/AFxIQhBACEEA0AgACAEaiIGIAEgBGoiBy0AAEE2czoAACAGQQFqIAdBAWotAABBNnM6AAAgBkECaiAHQQJqLQAAQTZzOgAAIAZBA2ogB0EDai0AAEE2czoAACAIIARBBGoiBEcNAAsLIAUEQCABIARqIQEgACAEaiEEA0AgBCABLQAAQTZzOgAAIAFBAWohASAEQQFqIQQgBUEBayIFDQALCyACQf8ASw0BCyACQf8Ac0EAIAJrQQdxIgQEQANAIAAgAmpBNjoAACACQQFqIQIgBEEBayIEDQALC0EHSQ0AQYABIQEgACEEA0AgAiAEakK27Nix48aNmzY3AAAgBEEIaiEEIAIgAUEIayIBRw0ACwsgAEEANgLQAiAAQgA3A8gCIABCADcDwAIgAEL5wvibkaOz8NsANwO4ASAAQuv6htq/tfbBHzcDsAEgAEKf2PnZwpHagpt/NwOoASAAQtGFmu/6z5SH0QA3A6ABIABC8e30+KWn/aelfzcDmAEgAEKr8NP0r+68tzw3A5ABIABCu86qptjQ67O7fzcDiAEgAEKIkvOd/8z5hOoANwOAASAAQgA3A7gCIABCADcDsAIgAEIANwOoAiAAQgA3A6ACIABCADcDmAIgAEIANwOQAiAAQgA3A4gCIABCADcDgAIgAEIANwP4ASAAQgA3A/ABIABCADcD6AEgAEIANwPgASAAQgA3A9gBIABCADcD0AEgAEIANwPIASAAQgA3A8ABIABBgAFqIABBgAEQAyADQeABaiQAC4gEAQR/IABBgAFqIgQgARAEA0AgACACaiIDIAMtAABB6gBzOgAAIANBAWoiBSAFLQAAQeoAczoAACADQQJqIgUgBS0AAEHqAHM6AAAgA0EDaiIDIAMtAABB6gBzOgAAIAJBBGoiAkGAAUcNAAsgAEEANgLQAiAAQgA3A8gCIABCADcDwAIgAEL5wvibkaOz8NsANwO4ASAAQuv6htq/tfbBHzcDsAEgAEKf2PnZwpHagpt/NwOoASAAQtGFmu/6z5SH0QA3A6ABIABC8e30+KWn/aelfzcDmAEgAEKr8NP0r+68tzw3A5ABIABCu86qptjQ67O7fzcDiAEgAEKIkvOd/8z5hOoANwOAASAAQgA3A7gCIABCADcDsAIgAEIANwOoAiAAQgA3A6ACIABCADcDmAIgAEIANwOQAiAAQgA3A4gCIABCADcDgAIgAEIANwP4ASAAQgA3A/ABIABCADcD6AEgAEIANwPgASAAQgA3A9gBIABCADcD0AEgAEIANwPIASAAQgA3A8ABIAQgAEGAARADIAQgAUHAABADIAQgARAEQQAhAgNAIAAgAmoiAUEAOgAAIAFBAWpBADoAACABQQJqQQA6AAAgAUEDakEAOgAAIAFBBGpBADoAACABQQVqQQA6AAAgAUEGakEAOgAAIAFBB2pBADoAACACQQhqIgJB2AJHDQALCwsAIAEgAEGACBAVC9ozAj1/EH4jAEGgA2siAyQAIAMgAS0AAToAASADIAEoAAI2AQIgAyABKQAGNwEGIAMgASkADjcBDiADIAEpABY3ARYgAyABLQAeOgAeIAMgAS0AAEH4AXE6AAAgAyABLQAfQT9xQcAAcjoAHyADQcACaiACEBcgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgE3A5ACIANCADcDgAIgA0IANwP4ASADQgA3A/ABIANCADcD6AEgA0IANwPgASADIAMoAsACNgKwASADIAMoAsQCNgK0ASADIAMoAsgCNgK4ASADIAMoAswCNgK8ASADIAMoAtACNgLAASADIAMoAtQCNgLEASADIAMoAtgCNgLIASADIAMoAtwCNgLMASADIAMoAuACNgLQASADIAMoAuQCNgLUASADQgA3A6ABIANCADcDmAEgA0IANwOQASADQgA3A4gBIANCATcDgAFBgAIhAUEAIQIDQCACIQUgA0EAIAUgAyABQQJrIgJBA3ZqLQAAIAJBB3F2QQFxIgJzayIQNgLwAiADKALwAiEFIAMoApACIRogAygCsAEhBCADKAKUAiERIAMoArQBIRYgAygCmAIhCiADKAK4ASEGIAMoApwCIQsgAygCvAEhByADKAKgAiEMIAMoAsABIQggAygCxAEhCSADKAKkAiENIAMoAsgBIQ4gAygCqAIhEiADKALMASEPIAMoAqwCIRMgAygC0AEhFCADKAKwAiEXIAMoAtQBIRUgAygCtAIhGCADIBA2AvACIAMgAygC8AIgAygC4AEiIyADKAKAASIQc3EiJCAQcyIQNgKAASADIAMoAvACIAMoAuQBIiUgAygChAEiGXNxIiYgGXMiGTYChAEgAyADKALwAiADKALoASInIAMoAogBIhxzcSIoIBxzIhw2AogBIAMgAygC8AIgAygC7AEiKSADKAKMASIbc3EiKiAbcyIbNgKMASADIAMoAvACIAMoAvABIisgAygCkAEiHXNxIiwgHXMiHTYCkAEgAyADKALwAiADKAL0ASItIAMoApQBIh5zcSIuIB5zIh42ApQBIAMgAygC8AIgAygC+AEiLyADKAKYASIfc3EiMCAfcyIfNgKYASADIAMoAvACIAMoAvwBIjEgAygCnAEiIHNxIjIgIHMiIDYCnAEgAyADKALwAiADKAKAAiIzIAMoAqABIiFzcSI0ICFzIiE2AqABIAMgAygC8AIgAygChAIiNSADKAKkASIic3EiNiAicyIiNgKkASADIBUgBSAVIBhzcSIVcyI3ICJrNgJ0IAMgFCAFIBQgF3NxIhRzIjggIWs2AnAgAyAPIAUgDyATc3EiD3MiOSAgazYCbCADIA4gBSAOIBJzcSIOcyI6IB9rNgJoIAMgCSAFIAkgDXNxIglzIjsgHms2AmQgAyAIIAUgCCAMc3EiCHMiPCAdazYCYCADIAcgBSAHIAtzcSIHcyI9IBtrNgJcIAMgBiAFIAYgCnNxIgZzIj4gHGs2AlggAyAWIAUgESAWc3EiFnMiPyAZazYCVCADIAUgBCAac3EiBSAEcyIEIBBrNgJQIAMgFSAYcyIVIDUgNnMiGGs2AkQgAyAUIBdzIhQgMyA0cyIXazYCQCADIA8gE3MiDyAxIDJzIhNrNgI8IAMgDiAScyIOIC8gMHMiEms2AjggAyAJIA1zIgkgLSAucyINazYCNCADIAggDHMiDCArICxzIghrNgIwIAMgByALcyILICkgKnMiB2s2AiwgAyAGIApzIgogJyAocyIGazYCKCADIBEgFnMiESAlICZzIhZrNgIkIAMgBSAacyIFICMgJHMiGms2AiAgAyAVIBhqNgK0AiADIBQgF2o2ArACIAMgDyATajYCrAIgAyAOIBJqNgKoAiADIAkgDWo2AqQCIAMgCCAMajYCoAIgAyAHIAtqNgKcAiADIAYgCmo2ApgCIAMgESAWajYClAIgAyAFIBpqNgKQAiADICIgN2o2AoQCIAMgISA4ajYCgAIgAyAgIDlqNgL8ASADIB8gOmo2AvgBIAMgHiA7ajYC9AEgAyAdIDxqNgLwASADIBsgPWo2AuwBIAMgHCA+ajYC6AEgAyAZID9qNgLkASADIAQgEGo2AuABIANBgAFqIhYgA0HQAGoiESADQZACaiIaEBggA0HgAWoiBSAFIANBIGoiBBAYIBEgBBAZIAQgGhAZIAMgAygC4AEiCiADKAKAASIGajYCsAEgAyADKALkASILIAMoAoQBIgdqNgK0ASADIAMoAugBIgwgAygCiAEiCGo2ArgBIAMgAygC7AEiCSADKAKMASINajYCvAEgAyADKALwASIOIAMoApABIhJqNgLAASADIAMoAvQBIg8gAygClAEiE2o2AsQBIAMgEyAPazYC9AEgAyASIA5rNgLwASADIAggDGs2AugBIAMgByALazYC5AEgAyAGIAprNgLgASADIA0gCWs2AuwBIAMgAygC+AEiCiADKAKYASIGajYCyAEgAyADKAL8ASILIAMoApwBIgdqNgLMASADIAMoAoACIgwgAygCoAEiCGo2AtABIAMgAygChAIiCSADKAKkASINajYC1AEgAyANIAlrNgKEAiADIAggDGs2AoACIAMgByALazYC/AEgAyAGIAprNgL4ASAaIAQgERAYIAMgAygCICADKAJQIgprIgY2AiAgAyADKAI0IAMoAmQiC2siBzYCNCADIAMoAjAgAygCYCIMayIINgIwIAMgAygCOCADKAJoIglrIg02AjggAyADKAIsIAMoAlwiDmsiEjYCLCADIAMoAiggAygCWCIPayITNgIoIAMgAygCJCADKAJUIhRrIhc2AiQgAyADKAI8IAMoAmwiFWsiGDYCPCADIAMoAkAgAygCcCIQayIZNgJAIAMgAygCRCADKAJ0IhxrIhs2AkQgBSAFEBkgBqxCwrYHfiJB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QQA6AIEDIANBADoAggMgA0EAOgCDAyADQQA6AIQDIANBADoAhQMgA0EAOgCGAyADQQA6AIcDIANBADoAiAMgA0EAOgCJAyADQQA6AIoDIANBADoAiwMgA0EAOgCMAyADQQA6AI0DIANBADoAjgMgA0EAOgCPAyADQQA6AJADIANBADoAkQMgA0EAOgCSAyADQQA6AJMDIANBADoAlAMgA0EAOgCVAyADQQA6AJYDIANBADoAlwMgGiAaIAUQGCAAIBoQGyADQQA6AMACIANBADoAwQIgA0EAOgDCAiADQQA6AMMCIANBADoAxAIgA0EAOgDFAiADQQA6AMYCIANBADoAxwIgA0EAOgDIAiADQQA6AMkCIANBADoAygIgA0EAOgDLAiADQQA6AMwCIANBADoAzQIgA0EAOgDOAiADQQA6AM8CIANBADoA0AIgA0EAOgDRAiADQQA6ANICIANBADoA0wIgA0EAOgDUAiADQQA6ANUCIANBADoA1gIgA0EAOgDXAiADQQA6ANgCIANBADoA2QIgA0EAOgDaAiADQQA6ANsCIANBADoA3AIgA0EAOgDdAiADQQA6AN4CIANBADoA3wIgA0EAOgDgAiADQQA6AOECIANBADoA4gIgA0EAOgDjAiADQQA6AOQCIANBADoA5QIgA0EAOgDmAiADQQA6AOcCIANBADoAkAIgA0EAOgCRAiADQQA6AJICIANBADoAkwIgA0EAOgCUAiADQQA6AJUCIANBADoAlgIgA0EAOgCXAiADQQA6AJgCIANBADoAmQIgA0EAOgCaAiADQQA6AJsCIANBADoAnAIgA0EAOgCdAiADQQA6AJ4CIANBADoAnwIgA0EAOgCgAiADQQA6AKECIANBADoAogIgA0EAOgCjAiADQQA6AKQCIANBADoApQIgA0EAOgCmAiADQQA6AKcCIANBADoAqAIgA0EAOgCpAiADQQA6AKoCIANBADoAqwIgA0EAOgCsAiADQQA6AK0CIANBADoArgIgA0EAOgCvAiADQQA6ALACIANBADoAsQIgA0EAOgCyAiADQQA6ALMCIANBADoAtAIgA0EAOgC1AiADQQA6ALYCIANBADoAtwIgA0EAOgDgASADQQA6AOEBIANBADoA4gEgA0EAOgDjASADQQA6AOQBIANBADoA5QEgA0EAOgDmASADQQA6AOcBIANBADoA6AEgA0EAOgDpASADQQA6AOoBIANBADoA6wEgA0EAOgDsASADQQA6AO0BIANBADoA7gEgA0EAOgDvASADQQA6APABIANBADoA8QEgA0EAOgDyASADQQA6APMBIANBADoA9AEgA0EAOgD1ASADQQA6APYBIANBADoA9wEgA0EAOgD4ASADQQA6APkBIANBADoA+gEgA0EAOgD7ASADQQA6APwBIANBADoA/QEgA0EAOgD+ASADQQA6AP8BIANBADoAgAIgA0EAOgCBAiADQQA6AIICIANBADoAgwIgA0EAOgCEAiADQQA6AIUCIANBADoAhgIgA0EAOgCHAiADQQA6AFAgA0EAOgBRIANBADoAUiADQQA6AFMgA0EAOgBUIANBADoAVSADQQA6AFYgA0EAOgBXIANBADoAWCADQQA6AFkgA0EAOgBaIANBADoAWyADQQA6AFwgA0EAOgBdIANBADoAXiADQQA6AF8gA0EAOgBgIANBADoAYSADQQA6AGIgA0EAOgBjIANBADoAZCADQQA6AGUgA0EAOgBmIANBADoAZyADQQA6AGggA0EAOgBpIANBADoAaiADQQA6AGsgA0EAOgBsIANBADoAbSADQQA6AG4gA0EAOgBvIANBADoAcCADQQA6AHEgA0EAOgByIANBADoAcyADQQA6AHQgA0EAOgB1IANBADoAdiADQQA6AHcgA0EAOgCwASADQQA6ALEBIANBADoAsgEgA0EAOgCzASADQQA6ALQBIANBADoAtQEgA0EAOgC2ASADQQA6ALcBIANBADoAuAEgA0EAOgC5ASADQQA6ALoBIANBADoAuwEgA0EAOgC8ASADQQA6AL0BIANBADoAvgEgA0EAOgC/ASADQQA6AMABIANBADoAwQEgA0EAOgDCASADQQA6AMMBIANBADoAxAEgA0EAOgDFASADQQA6AMYBIANBADoAxwEgA0EAOgDIASADQQA6AMkBIANBADoAygEgA0EAOgDLASADQQA6AMwBIANBADoAzQEgA0EAOgDOASADQQA6AM8BIANBADoA0AEgA0EAOgDRASADQQA6ANIBIANBADoA0wEgA0EAOgDUASADQQA6ANUBIANBADoA1gEgA0EAOgDXASADQQA6AIABIANBADoAgQEgA0EAOgCCASADQQA6AIMBIANBADoAhAEgA0EAOgCFASADQQA6AIYBIANBADoAhwEgA0EAOgCIASADQQA6AIkBIANBADoAigEgA0EAOgCLASADQQA6AIwBIANBADoAjQEgA0EAOgCOASADQQA6AI8BIANBADoAkAEgA0EAOgCRASADQQA6AJIBIANBADoAkwEgA0EAOgCUASADQQA6AJUBIANBADoAlgEgA0EAOgCXASADQQA6AJgBIANBADoAmQEgA0EAOgCaASADQQA6AJsBIANBADoAnAEgA0EAOgCdASADQQA6AJ4BIANBADoAnwEgA0EAOgCgASADQQA6AKEBIANBADoAogEgA0EAOgCjASADQQA6AKQBIANBADoApQEgA0EAOgCmASADQQA6AKcBIANBADoAICADQQA6ACEgA0EAOgAiIANBADoAIyADQQA6ACQgA0EAOgAlIANBADoAJiADQQA6ACcgA0EAOgAoIANBADoAKSADQQA6ACogA0EAOgArIANBADoALCADQQA6AC0gA0EAOgAuIANBADoALyADQQA6ADAgA0EAOgAxIANBADoAMiADQQA6ADMgA0EAOgA0IANBADoANSADQQA6ADYgA0EAOgA3IANBADoAOCADQQA6ADkgA0EAOgA6IANBADoAOyADQQA6ADwgA0EAOgA9IANBADoAPiADQQA6AD8gA0EAOgBAIANBADoAQSADQQA6AEIgA0EAOgBDIANBADoARCADQQA6AEUgA0EAOgBGIANBADoARyADQQA6AAAgA0EAOgABIANBADoAAiADQQA6AAMgA0EAOgAEIANBADoABSADQQA6AAYgA0EAOgAHIANBADoACCADQQA6AAkgA0EAOgAKIANBADoACyADQQA6AAwgA0EAOgANIANBADoADiADQQA6AA8gA0EAOgAQIANBADoAESADQQA6ABIgA0EAOgATIANBADoAFCADQQA6ABUgA0EAOgAWIANBADoAFyADQQA6ABggA0EAOgAZIANBADoAGiADQQA6ABsgA0EAOgAcIANBADoAHSADQQA6AB4gA0EAOgAfIANBoANqJAALzAEAIAIgACABEBUgAi0AHyACLQAeIAItAB0gAi0AHCACLQAbIAItABogAi0AGSACLQAYIAItABcgAi0AFiACLQAVIAItABQgAi0AEyACLQASIAItABEgAi0AECACLQAPIAItAA4gAi0ADSACLQAMIAItAAsgAi0ACiACLQAJIAItAAggAi0AByACLQAGIAItAAUgAi0ABCACLQADIAItAAIgAi0AASACLQAAcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJyckEARwuDBQEYfiABMwAdIAExAB8gATEAHCENIAExABsgATEAGiEPIAExABkhBCABMQAYIAExABchESABMQAMIQUgATEACyABMQAKIRMgATUAECEDIAExAA8hBiABMQAOIQcgATEADSEIIAExABYhCSABMQAVIAExABQhFCABMQAIQg2GIAExAAdCBYaEIAExAAlCFYaEIAExAAVCDoYgATEABEIGhoQgATEABkIWhoQgATUAACIVQoCAgBB8IhZCGoh8IhdCgICACHwiGEIZiHwiGUKAgIAQfCECIAAgGSACQoCAgOAPg30+AghCD4YgFEIHhoQgCUIXhoQgAyAHQgqGIAhCAoaEIAZCEoaEIgZCgICAEHwiB0IaiHwiCEKAgIAIfCIJQhmIfCIKQoCAgBB8IQMgACAKIANCgICA4A+DfT4CGEILhiATQgOGhCAFQhOGhCACQhqIfCIFQoCAgAh8IQIgACAFIAJCgICA8A+DfT4CDEINhiARQgWGhCAEQhWGhCADQhqIfCIEQoCAgAh8IQMgACAEIANCgICA8A+DfT4CHCAAIAggCUKAgIDwD4N9IAYgB0KAgIAgg30gAkIZiHwiAkKAgIAQfCIEQhqIfD4CFCAAIAIgBEKAgIDgD4N9PgIQQgyGIA9CBIaEIA1CFIaEIANCGYh8IgNCgICAEHwhAiAAIAMgAkKAgIDgD4N9PgIgQhCGQoCA/AODhEIChiACQhqIfCIDQoCAgAh8IQIgACADIAJCgICA8A+DfT4CJCAAIBcgGEKAgIDwD4N9IBUgFkKAgIDgH4N9IAJCGYhCE358IgJCgICAEHwiA0IaiHw+AgQgACACIANCgICA4A+DfT4CAAuxCQIofgp/IAIoAhQiK6whESACKAIYIiysIRYgAigCBCItrCINIAEoAgwiLkEBdKwiF34gATQCECIDIAI0AgAiBH58IAE0AggiCCACKAIIIi+sIg5+fCACKAIMIjCsIg8gASgCBCIxQQF0rCIYfnwgATQCACIJIAIoAhAiMqwiEn58IAEoAiQiM0EBdKwiGSArQRNsrCIafnwgATQCICIK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IAIgEX58IAMgB358IAVCGod8IgNCgICACHwhAiAAIAMgAkKAgIDwD4N9PgIkIAAgHSAYQoCAgPAPg30gGyAXQoCAgGCDfSACQhmHQhN+fCICQoCAgBB8IgNCGoh8PgIEIAAgAiADQoCAgOAPg30+AgALlhMBBX8jAEGQAWsiAyQAIANB4ABqIgQgARAZIANBMGoiAiAEEBkgAiACEBkgAiABIAIQGCAEIAQgAhAYIAQgBBAZIAQgAiAEEBggAiAEEBkgAiACEBkgAiACEBkgAiACEBkgAiACEBkgBCACIAQQGCACIAQQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIgBBAYIAMgAhAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAMgAxAZIAIgAyACEBggAiACEBkgAiACEBkgAiACEBkgAiACEBkgAiACEBkgAiACEBkgAiACEBkgAiACEBkgAiACEBkgAiACEBkgBCACIAQQGCACIAQQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIQGSACIAIgBBAYIAMgAhAZQeMAIQIDQCADIAMQGSACQQFrIgINAAsgA0EwaiICIAMgAhAYIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIAIgAhAZIANB4ABqIgQgAiAEEBggBCAEEBkgBCAEEBkgBCAEIAEQGCACIAQQGSACIAIgARAYIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AwAgASADEBwhBSADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IBNwMAIAIgAxAcIQYgA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANC/////w83AwAgAiADEBwhASADQuKH7P/v7fyofzcDICADQuHm/ovg0qYPNwMYIANCoOeL+p+LigI3AxAgA0LizsP7n9ClZTcDCCADQtC+xY/Qxc08NwMAIAIgAxAcIQIgACAEQeAPEBggAyABIAJyQQFrNgKMASAAIAMoAowBIAAoAgAiAiADKAJgc3EgAnM2AgAgACADKAKMASAAKAIEIgIgAygCZHNxIAJzNgIEIAAgAygCjAEgACgCCCICIAMoAmhzcSACczYCCCAAIAMoAowBIAAoAgwiAiADKAJsc3EgAnM2AgwgACADKAKMASAAKAIQIgIgAygCcHNxIAJzNgIQIAAgAygCjAEgACgCFCICIAMoAnRzcSACczYCFCAAIAMoAowBIAAoAhgiAiADKAJ4c3EgAnM2AhggACADKAKMASAAKAIcIgIgAygCfHNxIAJzNgIcIAAgAygCjAEgACgCICICIAMoAoABc3EgAnM2AiAgACADKAKMASAAKAIkIgAgAygChAFzcSAAczYCJCADQQA6AGAgA0EAOgBhIANBADoAYiADQQA6AGMgA0EAOgBkIANBADoAZSADQQA6AGYgA0EAOgBnIANBADoAaCADQQA6AGkgA0EAOgBqIANBADoAayADQQA6AGwgA0EAOgBtIANBADoAbiADQQA6AG8gA0EAOgBwIANBADoAcSADQQA6AHIgA0EAOgBzIANBADoAdCADQQA6AHUgA0EAOgB2IANBADoAdyADQQA6AHggA0EAOgB5IANBADoAeiADQQA6AHsgA0EAOgB8IANBADoAfSADQQA6AH4gA0EAOgB/IANBADoAgAEgA0EAOgCBASADQQA6AIIBIANBADoAgwEgA0EAOgCEASADQQA6AIUBIANBADoAhgEgA0EAOgCHASADQQA6ADAgA0EAOgAxIANBADoAMiADQQA6ADMgA0EAOgA0IANBADoANSADQQA6ADYgA0EAOgA3IANBADoAOCADQQA6ADkgA0EAOgA6IANBADoAOyADQQA6ADwgA0EAOgA9IANBADoAPiADQQA6AD8gA0EAOgBAIANBADoAQSADQQA6AEIgA0EAOgBDIANBADoARCADQQA6AEUgA0EAOgBGIANBADoARyADQQA6AEggA0EAOgBJIANBADoASiADQQA6AEsgA0EAOgBMIANBADoATSADQQA6AE4gA0EAOgBPIANBADoAUCADQQA6AFEgA0EAOgBSIANBADoAUyADQQA6AFQgA0EAOgBVIANBADoAViADQQA6AFcgA0EAOgAAIANBADoAASADQQA6AAIgA0EAOgADIANBADoABCADQQA6AAUgA0EAOgAGIANBADoAByADQQA6AAggA0EAOgAJIANBADoACiADQQA6AAsgA0EAOgAMIANBADoADSADQQA6AA4gA0EAOgAPIANBADoAECADQQA6ABEgA0EAOgASIANBADoAEyADQQA6ABQgA0EAOgAVIANBADoAFiADQQA6ABcgA0EAOgAYIANBADoAGSADQQA6ABogA0EAOgAbIANBADoAHCADQQA6AB0gA0EAOgAeIANBADoAHyADQQA6ACAgA0EAOgAhIANBADoAIiADQQA6ACMgA0EAOgAkIANBADoAJSADQQA6ACYgA0EAOgAnIANBkAFqJAAgASAFIAZycguJFQEKfyABLQADIQMgAS0AAiEFIAEtAAEhBCMAQUBqIgIgAS0AADoAMCACIAQ6AC8gAiAFOgAuIAIgAzoALSABLQAHIQMgAS0ABiEFIAEtAAUhBCACIAEtAAQ6ACwgAiAEOgArIAIgBToAKiACIAM6ACkgAS0ACyEDIAEtAAohBSABLQAJIQQgAiABLQAIOgAoIAIgBDoAJyACIAU6ACYgAiADOgAlIAEtAA8hAyABLQAOIQUgAS0ADSEEIAIgAS0ADDoAJCACIAQ6ACMgAiAFOgAiIAIgAzoAISABLQATIQMgAS0AEiEFIAEtABEhBCACIAEtABA6ACAgAiAEOgAfIAIgBToAHiACIAM6AB0gAS0AFyEDIAEtABYhBSABLQAVIQQgAiABLQAUOgAcIAIgBDoAGyACIAU6ABogAiADOgAZIAEtABshAyABLQAaIQUgAS0AGSEEIAIgAS0AGDoAGCACIAQ6ABcgAiAFOgAWIAIgAzoAFSABLQAfIQMgAS0AHiEFIAEtAB0hBCACIAEtABw6ABQgAiAEOgATIAIgBToAEiACIAM6ABEgAS0AIyEEIAEtACIhBiABLQAhIQggAiABLQAgIgs6ABAgAiAIOgAPIAIgBjoADiACIAQ6AA0gAS0AJyEHIAEtACYhCSABLQAlIQogAiABLQAkIgE6AAwgAiAKOgALIAIgCToACiACIAc6AAkgAiABIAdBGHQgCUEQdHIgCkEIdHJyIgEgCyAEQRh0IAZBEHRyIAhBCHRyciACLQAUIANBGHQgBUEQdHIgAi0AE0EIdHJyIAItABggAi0AFUEYdCACLQAWQRB0ciACLQAXQQh0cnIgAi0AHCACLQAZQRh0IAItABpBEHRyIAItABtBCHRyciACLQAgIAItAB1BGHQgAi0AHkEQdHIgAi0AH0EIdHJyIAItACQgAi0AIUEYdCACLQAiQRB0ciACLQAjQQh0cnIgAi0AKCACLQAlQRh0IAItACZBEHRyIAItACdBCHRyciACLQAsIAItAClBGHQgAi0AKkEQdHIgAi0AK0EIdHJyIAFBE2xBgICACGpBGXUgAi0AMCACLQAtQRh0IAItAC5BEHRyIAItAC9BCHRyciIBakEadWpBGXVqQRp1akEZdWpBGnVqQRl1akEadWpBGXVqQRp1akEZdUETbCABaiIBOgAwIAIgAUEIdjoALyACIAFBEHY6AC4gAiABQRh2QQNxOgAtIAIgAi0ALCACLQApQRh0IAItACpBEHRyIAItACtBCHRyciABQRp1aiIBOgAsIAIgAUEQdjoAKiACIAFBCHY6ACsgAiABQRh2QQFxOgApIAIgAi0AKCACLQAlQRh0IAItACZBEHRyIAItACdBCHRyciABQRl1aiIBOgAoIAIgAUEQdjoAJiACIAFBCHY6ACcgAiABQRh2QQNxOgAlIAIgAi0AJCACLQAhQRh0IAItACJBEHRyIAItACNBCHRyciABQRp1aiIBOgAkIAIgAUEIdjoAIyACIAFBEHY6ACIgAiABQRh2QQFxOgAhIAIgAi0AICACLQAdQRh0IAItAB5BEHRyIAItAB9BCHRyciABQRl1aiIBOgAgIAIgAUEIdjoAHyACIAFBEHY6AB4gAiABQRh2QQNxOgAdIAIgAi0AHCACLQAZQRh0IAItABpBEHRyIAItABtBCHRyciABQRp1aiIBOgAcIAIgAUEIdjoAGyACIAFBEHY6ABogAiABQRh2QQFxOgAZIAIgAi0AGCACLQAVQRh0IAItABZBEHRyIAItABdBCHRyciABQRl1aiIBOgAYIAIgAUEIdjoAFyACIAFBEHY6ABYgAiABQRh2QQNxOgAVIAIgAi0AFCACLQARQRh0IAItABJBEHRyIAItABNBCHRyciABQRp1aiIBOgAUIAIgAUEIdjoAEyACIAFBEHY6ABIgAiABQRh2QQFxOgARIAIgAi0AECACLQANQRh0IAItAA5BEHRyIAItAA9BCHRyciABQRl1aiIBOgAQIAIgAUEIdjoADyACIAFBEHY6AA4gAiABQRh2QQNxOgANIAIgAi0ADCACLQAJQRh0IAItAApBEHRyIAItAAtBCHRyciABQRp1aiIBOgAMIAIgAUEIdjoACyACIAFBEHY6AAogAiABQRh2QQFxOgAJIAItACshAyACLQApIQUgAi0AKiEEIAItAC0hBiACLQAsIQEgAi0AMCEIIAItAC8hByAAIAItAC46AAIgACAHOgABIAAgCDoAACAAIAYgAUECdHI6AAMgAi0AJSEGIAItACYhCCACLQAoIQcgAi0AJyEJIAAgBUEYdCAEQRB0ciADQQh0ciIDQQ52OgAFIAAgASADckEGdiIBOgAEIAAgASAJQQh0IgMgB3JBE3RyIgFBGHY6AAcgACABQRB2OgAGIAItACEhASACLQAkIQUgAi0AIyEEIAItACIhByAAIAZBGHQgCEEQdHIgA3JBDXYiAzoACCAAIAUgBEEIdHIgB0EQdCIFciIEQQt2OgALIAAgBEENdCADciIDQRB2OgAKIAAgA0EIdjoACSAC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Qt7z+6YBfnwiC0L/////D4MgCUIgiHwgDkLWud6XCn58IgdC/////w+DIAZCIIh8IAxCmsbJwAV+fCIIQv////8Pg3wiCUJ/hUL/////D4N8IgZCIIh8IAtCIIinIAFBHHRqrSAHQiCIfCAOQt7z+6YBfnwgCEIgiHwgDELWud6XCn58IAlCIIh8IA1CmsbJwAV+fCACNQJcQu2n1+cFfnxCf4V8IgxC/////w+DIAZC/////w+DIgkgFEL/////D4MiCCATQv////8PgyIHIBJC/////w+DIgsgEUL/////D4MiDSAQQv////8PgyIQIA9C/////w+DIg9Ck9iomAp8QiCIfELluba/CnxCIIh8QqnGoegFfEIgiHxCoYyE2Q58QiCIfEL/////D3xCIIh8Qv////8PfEIgiHxC/////w98QiCIfEL/////DnxCIIgiBqdrIgFBktiomHpxrSAGIA98fCIGPAAAIAAgBkIYiDwAAyAAIAZCEIg8AAIgACAGQgiIPAABIAAgECABQeW5tr96ca18IAZCIIh8IgY8AAQgACAGQhiIPAAHIAAgBkIQiDwABiAAIAZCCIg8AAUgACANIAFBqcah6AVxrXwgBkIgiHwiBjwACCAAIAZCGIg8AAsgACAGQhCIPAAKIAAgBkIIiDwACSAAIAsgAUGhjITZfnGtfCAGQiCIfCILPAAMIAAgC0IYiDwADyAAIAtCEIg8AA4gACALQgiIPAANIAAgAa0iBiAHfCALQiCIfCIHPAAQIAAgB0IYiDwAEyAAIAdCEIg8ABIgACAHQgiIPAARIAAgBiAIfCAHQiCIfCIIPAAUIAAgCEIYiDwAFyAAIAhCEIg8ABYgACAIQgiIPAAVIAAgBiAJfCAIQiCIfCIGPAAYIAAgBkIYiDwAGyAAIAZCEIg8ABogACAGQgiIPAAZIAIgBkIgiKcgDKcgAUH/////fnFqajYCHCAAIAIoAhw2ABwgAkEAOgAAIAJBADoAASACQQA6AAIgAkEAOgADIAJBADoABCACQQA6AAUgAkEAOgAGIAJBADoAByACQQA6AAggAkEAOgAJIAJBADoACiACQQA6AAsgAkEAOgAMIAJBADoADSACQQA6AA4gAkEAOgAPIAJBADoAECACQQA6ABEgAkEAOgASIAJBADoAEyACQQA6ABQgAkEAOgAVIAJBADoAFiACQQA6ABcgAkEAOgAYIAJBADoAGSACQQA6ABogAkEAOgAbIAJBADoAHCACQQA6AB0gAkEAOgAeIAJBADoAHyACQQA6ACAgAkEAOgAhIAJBADoAIiACQQA6ACMgAkEAOgAkIAJBADoAJSACQQA6ACYgAkEAOgAnIAJBADoAKCACQQA6ACkgAkEAOgAqIAJBADoAKyACQQA6ACwgAkEAOgAtIAJBADoALiACQQA6AC8gAkEAOgAwIAJBADoAMSACQQA6ADIgAkEAOgAzIAJBADoANCACQQA6ADUgAkEAOgA2IAJBADoANyACQQA6ADggAkEAOgA5IAJBADoAOiACQQA6ADsgAkEAOgA8IAJBADoAPSACQQA6AD4gAkEAOgA/IAJBADoAQCACQQA6AEEgAkEAOgBCIAJBADoAQyACQQA6AEQgAkEAOgBFIAJBADoARiACQQA6AEcgAkEAOgBIIAJBADoASSACQQA6AEogAkEAOgBLIAJBADoATCACQQA6AE0gAkEAOgBOIAJBADoATyACQQA6AFAgAkEAOgBRIAJBADoAUiACQQA6AFMgAkEAOgBUIAJBADoAVSACQQA6AFYgAkEAOgBXIAJBADoAWCACQQA6AFkgAkEAOgBaIAJBADoAWyACQQA6AFwgAkEAOgBdIAJBADoAXiACQQA6AF8gAkEAOgBgIAJBADoAYSACQQA6AGIgAkEAOgBjIAJB8ABqJAAL2AoBCH8jAEEQayIIJAACfwJ/AkACfwJAAn8gBkEATgRAIAUgBkEDdmotAAAgBkEHcSIJdkEBcQwBCyAGQWBJDQEgBkEHcSEJQQALIAUgBkEgakEDdmotAAAgCXZBAXRBAnFyDAELIAZBQEkNASAGQQdxIQlBAAsgBSAGQUBrQQN2ai0AACAJdkECdEEEcXIMAQtBACAGQaB/SQ0BGiAGQQdxIQlBAAshCiAFIAZB4ABqQQN2ai0AACAJdkEBcQshCyABQdAAaiABQShqIQ0gC0EBa0EHcSAKcyEOQQAhBUEAIQkDQCAIIAkgDnNBF3RBgICABGtBH3UiCjYCBCABIAgoAgQgASgCACIHIAQgBWoiBigCAHNxIAdzNgIAIAEgCCgCBCABKAIEIgcgBkEEaigCAHNxIAdzNgIEIAEgCCgCBCABKAIIIgcgBkEIaigCAHNxIAdzNgIIIAEgCCgCBCABKAIMIgcgBkEMaigCAHNxIAdzNgIMIAEgCCgCBCABKAIQIgcgBkEQaigCAHNxIAdzNgIQIAEgCCgCBCABKAIUIgcgBkEUaigCAHNxIAdzNgIUIAEgCCgCBCABKAIYIgcgBkEYaigCAHNxIAdzNgIYIAEgCCgCBCABKAIcIgcgBkEcaigCAHNxIAdzNgIcIAEgCCgCBCABKAIgIgcgBkEgaigCAHNxIAdzNgIgIAEgCCgCBCABKAIkIgcgBkEkaigCAHNxIAdzNgIkIAggCjYCCCABIAgoAgggASgCKCIHIAZBKGooAgBzcSAHczYCKCABIAgoAgggASgCLCIHIAZBLGooAgBzcSAHczYCLCABIAgoAgggASgCMCIHIAZBMGooAgBzcSAHczYCMCABIAgoAgggASgCNCIHIAZBNGooAgBzcSAHczYCNCABIAgoAgggASgCOCIHIAZBOGooAgBzcSAHczYCOCABIAgoAgggASgCPCIHIAZBPGooAgBzcSAHczYCPCABIAgoAgggASgCQCIHIAZBQGsoAgBzcSAHczYCQCABIAgoAgggASgCRCIHIAZBxABqKAIAc3EgB3M2AkQgASAIKAIIIAEoAkgiByAGQcgAaigCAHNxIAdzNgJIIAEgCCgCCCABKAJMIgcgBkHMAGooAgBzcSAHczYCTCAIIAo2AgwgASAIKAIMIAEoAlAiCiAGQdAAaigCAHNxIApzIgo2AlAgASAIKAIMIAEoAlQiByAGQdQAaigCAHNxIAdzNgJUIAEgCCgCDCABKAJYIgcgBkHYAGooAgBzcSAHczYCWCABIAgoAgwgASgCXCIHIAZB3ABqKAIAc3EgB3M2AlwgASAIKAIMIAEoAmAiByAGQeAAaigCAHNxIAdzNgJgIAEgCCgCDCABKAJkIgcgBkHkAGooAgBzcSAHczYCZCABIAgoAgwgASgCaCIHIAZB6ABqKAIAc3EgB3M2AmggASAIKAIMIAEoAmwiByAGQewAaigCAHNxIAdzNgJsIAEgCCgCDCABKAJwIgcgBkHwAGooAgBzcSAHczYCcCABIAgoAgwgBkH0AGooAgAgASgCdCIGc3EgBnM2AnQgCUEBaiEJIAVB+ABqIgVBwAdHDQALIAJBACAKazYCACACQQAgASgCVGs2AgQgAkEAIAEoAlhrNgIIIAJBACABKAJcazYCDCACQQAgASgCYGs2AhAgAkEAIAEoAmRrNgIUIAJBACABKAJoazYCGCACQQAgASgCbGs2AhwgAkEAIAEoAnBrNgIgIAJBACABKAJ0azYCJCACIAtFIgQQHyABIA0gBBAfIAAgACABIAIgAxAPIAhBEGokAAvLAwECfyMAQRBrIgRBACACazYCDCAEKAIMIAAoAgAiAyABKAIAc3EhAiAAIAIgA3M2AgAgASABKAIAIAJzNgIAIAQoAgwgACgCBCIDIAEoAgRzcSECIAAgAiADczYCBCABIAEoAgQgAnM2AgQgBCgCDCAAKAIIIgMgASgCCHNxIQIgACACIANzNgIIIAEgASgCCCACczYCCCAEKAIMIAAoAgwiAyABKAIMc3EhAiAAIAIgA3M2AgwgASABKAIMIAJzNgIMIAQoAgwgACgCECIDIAEoAhBzcSECIAAgAiADczYCECABIAEoAhAgAnM2AhAgBCgCDCAAKAIUIgMgASgCFHNxIQIgACACIANzNgIUIAEgASgCFCACczYCFCAEKAIMIAAoAhgiAyABKAIYc3EhAiAAIAIgA3M2AhggASABKAIYIAJzNgIYIAQoAgwgACgCHCIDIAEoAhxzcSECIAAgAiADczYCHCABIAEoAhwgAnM2AhwgBCgCDCAAKAIgIgMgASgCIHNxIQIgACACIANzNgIgIAEgASgCICACczYCICAEKAIMIAAoAiQiBCABKAIkc3EhAiAAIAIgBHM2AiQgASABKAIkIAJzNgIkC+kEAhN+Bn8gAEFAayEWIAApAwAiCyEJIAApAwgiDCECIAApAxAiDSEEIAApAxgiDiEHIAApAyAiDyEKIAApAygiECEDIAApAzgiESEFIAApAzAiEiEBA0AgASEGIAQhCCACIQQgAyEBIAAgFGpBQGspAwAgFEHgIGopAwAgASAKIgODIAV8IAYgA0J/hYN8IANCMokgA0IuiYUgA0IXiYV8fHwiBSAJIgJCJIkgAkIeiYUgAkIZiYUgBCAIhSACgyAEIAiDhXx8IQkgBSAHfCEKIAghByAGIQUgFEEIaiIUQYABRw0AC0HgICEXQQEhGQNAQQ4hFEGAASEVA0AgASEFIAQhByACIQQgACAVakFAaiIYKQMAIBYgFEEPcUEDdGopAwAiAUItiSABQgOJhSABQgaIhXwhAiAYIAI3AwAgGCACIBYgFEENa0EPcUEDdGopAwAiAUI/iSABQjiJhSABQgeIhXwiATcDACAYIAEgFiAUQQVrQQ9xQQN0aikDAHwiEzcDACADIQEgFSAXaikDACABIAoiA4MgBnwgBSADQn+Fg3wgA0IyiSADQi6JhSADQheJhXx8IBN8IgYgCSICQiSJIAJCHomFIAJCGYmFIAQgB4UgAoMgBCAHg4V8fCEJIAYgCHwhCiAVQQhqIRUgByEIIAUhBiAUQQFqIhRBHkcNAAsgF0GAAWohFyAZQQFqIhlBBUcNAAsgACAGIBF8NwM4IAAgASASfDcDMCAAIAMgEHw3AyggACAKIA98NwMgIAAgCCAOfDcDGCAAIAQgDXw3AxAgACACIAx8NwMIIAAgCSALfDcDAAslAQF/QeAlLQAAIgAEQEHwpQRBACAAGw8LQeAlQQE6AABB8KUEC5MBAQJ/AkAgAUUNAAJAIAFBB3EiA0UEQCABIQIMAQsgAUF4cSECA0AgAEEAOgAAIABBAWohACADQQFrIgMNAAsLIAFBCEkNAANAIABBADoAACAAQQA6AAEgAEEAOgACIABBADoAAyAAQQA6AAQgAEEAOgAFIABBADoABiAAQQA6AAcgAEEIaiEAIAJBCGsiAg0ACwsLC7gdBgBBgAgLAQkAQaAIC+cHhTuMAb3xJP/4JcMBYNw3ALdMPv/DQj0AMkykAeGkTP9MPaP/dT4fAFGRQP92QQ4AonPW/waKLgB85vT/CoqPADQawgC49EwAgY8pAb70E/97qnr/YoFEAHnVkwBWZR7/oWebAIxZQ//v5b4BQwu1AMbwif7uRbz/Q5fuABMqbP/lVXEBMkSH/xFqCQAyZwH/UAGoASOYHv8QqLkBOFno/2XS/AAp+kcAzKpP/w4u7/9QTe8AvdZL/xGN+QAmUEz/vlV1AFbkqgCc2NABw8+k/5ZCTP+v4RD/jVBiAUzb8gDGonIALtqYAJsr8f6boGj/M7ulAAIRrwBCVKAB9zoeACNBNf5F7L8ALYb1AaN73QAgbhT/NBelALrWRwDpsGAA8u82ATlZigBTAFT/iKBkAFyOeP5ofL4AtbE+//opVQCYgioBYPz2AJeXP/7vhT4AIDicAC2nvf+OhbMBg1bTALuzlv76qg7/0qNOACU0lwBjTRoA7pzV/9XA0QFJLlQAFEEpATbOTwDJg5L+qm8Y/7EhMv6rJsv/Tvd0ANHdmQCFgLIBOiwZAMknOwG9E/wAMeXSAXW7dQC1s7gBAHLbADBekwD1KTgAfQ3M/vStdwAs3SD+VOoUAPmgxgHsfur/L2Oo/qrimf9ms9gA4o16/3pCmf629YYA4+QZAdY56//YrTj/tefSAHeAnf+BX4j/bn4zAAKpt/8HgmL+RbBe/3QE4wHZ8pH/yq0fAWkBJ/8ur0UA5C86/9fgRf7POEX/EP6L/xfP1P/KFH7/X9Vg/wmwIQDIBc//8SqA/iMhwP/45cQBgRF4APtnl/8HNHD/jDhC/yji9f/ZRiX+rNYJ/0hDhgGSwNb/LCZwAES4S//OWvsAleuNALWqOgB09O8AXJ0CAGatYgDpiWABfzHLAAWblAAXlAn/03oMACKGGv/bzIgAhggp/+BTK/5VGfcAbX8A/qmIMADud9v/563VAM4S/v4Iugf/fgkHAW8qSABvNOz+YD+NAJO/f/7NTsD/DmrtAbvbTACv87v+aVmtAFUZWQGi85QAAnbR/iGeCQCLoy7/XUYoAGwqjv5v/I7/m9+QADPlp/9J/Jv/XnQM/5ig2v+c7iX/s+rP/8UAs/+apI0A4cRoAAojGf7R1PL/Yf3e/rhl5QDeEn8BpIiH/x7PjP6SYfMAgcAa/slUIf9vCk7/k1Gy/wQEGACh7tf/Bo0hADXXDv8ptdD/54udALPL3f//uXEAveKs/3FC1v/KPi3/ZkAI/06uEP6FdUT/sKAO/tPJhv+eGI8Af2k1AGAMvQCn1/v/n0yA/mpl4f8e/AQAkgyuAEGQEAsnWfGy/grlpv973Sr+HhTUAFKAAwAw0fMAd3lA/zLjnP8AbsUBZxuQAEHAEAshGxMsCqPlnO2nKWMIXSEGIev///////////////////8PAEHwEAtAtnhZ/4Vy0wC9bhX/DwpqACnAAQCY6Hn/vDyg/5lxzv8At+L+tA1I/wAAAAAAAAAA9+l6Lo0xCSxrzntR73xvCgBBvxELoRQIjkrMRroYdmu45745+q13Y////////////////////wen/Jf/QYnc/0vFp/7M5QEAAuUSAenEfwB8FDEB4DUeAFvz5P6DoIoAEUOdADAnBgBVcOIAqv+SAM4jgQBbg4D/d7Yl/y/U3wC2U5EBAAIrAESapf7oA8//hPMs/4xT0/8/4Qb/mCAq/252xQDxtgIAi6G5ADtp2/9qlkT/DtqU/51flwDaPdH/9XcV/q6sLAB0rlUBeV4d/+eAKQDFRvoAn5KR/1DUt/8C/CgAgW+c/+4Vjv6NxQz/x86g/yfj1gC1UJkAXZa6AJysLv6/QTv/U7FV/80BNgCAfFD/PKT7APKiX/7+phr/WQaR/wncDP/uVA0BmeIIAATf8v+fIv3/PMhH/wH8XP+Dcsn+0GTtAHPgJf5LarP/kB6g/4aE3f85rbj/P9O5/2iawf/owL0AIbsi/pstEAAvdl8AVuyfAE5YLP886x4AFGax/psq1v/4Rtv/VGWF/348cAD8EvAAakCb/mtGcgAfCGkAZJsKAOv0YQGqKJMAquMB/ohCrQAyxcz+WXphAF/ogf9ybH7/skKK/6llMP/ixi//Ji7hAEGD1/7snRv/7BKeACo+V/9lS7H+q124AJ9JVP/2tgz/QE2ZAOWeUgBDCnsBp2V7AKrYmf+zlZYAhL3xAO1tCP/nFZMAizi0AJ6rkf6KyXH/6bQ7AEGYaf8dMw8AndJ6/27nd/+m5Cj/45tuANTF3ABc9YABZcx5/2Po2gAWgH0Ay3phAM1skv96smIAce56/xu27AD3lOsA8ghwALICZf8uvRIBTyKR//9bIQCgiEoARzOlACXibACyQif/gNVQAFKMpv86X6T/W7WsAUWjQABKRif/7OIdABVl//7bjDoAAuir/zLwNv8JhTz+CUm8AD7a6QDWrwz/f4V5/1wBqQAOztT+5WDG/6D0sgBUiJIAgzu5/1kPr//Zjoj/VJQpAF+g3AGRQgD/+BaR/5zT4QBQ5Uf+vNxJALYpSP9wH3X/qPHp/9HTBQC6Uyf+g98D/yyxEwCXSsMAY8GfAe6DYv+iteEAYHUi/zbnUABYi3r/Og/M/3uuwP8jFGP+kQakABc0hgFgUqD/M7sV/zi49AC0fREAxn0AAHJiZgHNQ5IASx15Aedb6v/Zzi4BDE4EANWz8/5z6KcAU6cX/n2O1v8SKF0AYeTl/4Rpv/6NydoAcX16AH78fAA1o+X+h8VD//YdgAG/m6X/gbDrACQxcgAHhC/+FLqYAFNSKP+1TcD/uVmcAAkKIP+f/P8B+S0q/+6JZAFTHOYAOGOG/3HvdACPZPgBY2C8/8UJ+P/ViGUAc4QOAKBhoP8US7H/nb5qAD6krf/1aZX/7j89ADdPagBwO0n/wmw8AMUZegA+SE4AxB7f/64D4//DaRj+aDQJ/41J+ADsa3P/mgxrAV4pCwBLMnb+5OLJ/3hEagCaQLf/UX2nAMVcmQCPpiYASZC+/8imiv6z+0L/vcQy/8jl3QANesQAn//TAHTq5QBoJYMAHUwyATujTv/PTDAAhs43/wA+yQDw50//M/Jb/1FFMv9KfcMBL4chAE517/+NibQAtQlcAISU1gAMC+EAJn2D/6DPw/5ULbMAAqbeAfDSyABsSR8AC3ed/3/I6QAQd1AAlNuEAa7mAQDkeur+WbST/9vkmf8IJiH/FKWXAMkAIQAGCaL/cOPl/5RKQQB9Wdj/gBij/gyekv+g24z+BTyzAEjApf78SCb/rQZbAJ0tjwAt8jcB8FNZADcSrwFN6ur/cqNa/zpR0QBWXn7/Kvn5AFS0kQD9I7T/3XW7/z11xP9wVV4AITE8//FPlgEQn54AGAKhAVkXDv+0u3UAhgSFAOJhc//4tSD/6ju6AcKBqf8sgkAA5LEDADldNf8oIYb/kKmT/zS8hQCqyl/+j0AvAFPbxAHNg3T/lZw7ANrlqwDN27UAuFrvAHUL8f5s1lT/2aJb/q0NSgDFb2H+P99nAI3baADfle//jnRF/kNi1QB8TmL+npjW/1/irAHlkjX/dutdAJJ65gAn/zUARFmN/3Yy1wB5aqsAK/AF/mqZjQAIPdkB8iVCAKAb5P9nDUYAiQbVAAAgwwDOahYAJ5kA/1jT/QEowNQAjnt7ABAOev93olX/kvAVANCmVwEGYtX/gWfeAUiltv88iX3+T3Y8AH5evwCdknD/Y4Rd/pKIeQCTYpT+p41UAEtcd/4JQJf/GOhrAaNgLgAmbHT/oOZbACuUXf65l6EA2zKCAdrR5/8wyqH+dApNAEkm2wGUGP3/Uc7V/npx9v8fLvX+SwwE/w9a4P7M3Dn/Zjhs/5oG4AAQNNEBi8N1AHPAWv8h85IAdTLOAVhNX/8u0lf+pzst//vsWABTn/UAsSOK/puMuADUIHEAL6uuAM8frAE9oOT/64Ep/5CEQgDvqJEBvL4jAM8Esv4yOef/NH+j/9ImIABVsUn+sOKJANGl1P4ryzj/UNs6/lZH4gCT3bn/OfvYAMfiNf59GS0AlIq4ACwNL/87V6X/kYlrAEckz//U7dsALAFI/8t8Bf95IHb/uMKR/7BEjQDEWRUAkNTPAWZCqf8irijXmC+KQs1l7yORRDdxLztN7M/7wLW824mBpdu16Ti1SPNbwlY5GdAFtvER8VmbTxmvpII/khiBbdrVXhyrQgIDo5iqB9i+b3BFAVuDEoyy5E6+hTEk4rT/1cN9DFVviXvydF2+crGWFjv+sd6ANRLHJacG3JuUJmnPdPGbwdJK8Z7BaZvk4yVPOIZHvu+11YyLxp3BD2WcrHfMoQwkdQIrWW8s6S2D5KZuqoR0StT7Qb3cqbBctVMRg9qI+Xar32buUlE+mBAytC1txjGoPyH7mMgnA7DkDu++x39Zv8KPqD3zC+DGJacKk0eRp9VvggPgUWPKBnBuDgpnKSkU/C/SRoUKtycmySZcOCEbLu0qxFr8bSxN37OVnRMNOFPeY6+LVHMKZaiydzy7Cmp25q7tRy7JwoE7NYIUhSxykmQD8Uyh6L+iATBCvEtmGqiRl/jQcItLwjC+VAajUWzHGFLv1hnoktEQqWVVJAaZ1iogcVeFNQ70uNG7MnCgahDI0NK4FsGkGVOrQVEIbDcemeuO30x3SCeoSJvhtbywNGNaycWzDBw5y4pB40qq2E5z42N3T8qcW6O4stbzby5o/LLvXe6Cj3RgLxdDb2OleHKr8KEUeMiE7DlkGggCx4woHmMj+v++kOm9gt7rbFCkFXnGsvej+b4rU3Lj8nhxxpxhJurOPifKB8LAIce4htEe6+DN1n3a6njRbu5/T331um8Xcqpn8AammMiixX1jCq4N+b4EmD8RG0ccEzULcRuEfQQj9XfbKJMkx0B7q8oyvL7JFQq+njxMDRCcxGcdQ7ZCPsu+1MVMKn5l/Jwpf1ns+tY6q2/LXxdYR0qMGURs'
@@ -0,0 +1,31 @@
1
+ import type { Module } from './crypto25519.js'
2
+
3
+ const keySize = 32
4
+ const signatureSize = 64
5
+
6
+ /** Signs through the shared module and clears every staged byte. */
7
+ export function sign(
8
+ module: Module,
9
+ payload: Uint8Array,
10
+ privateKey: Uint8Array,
11
+ ): Uint8Array {
12
+ const size = keySize + payload.length + signatureSize
13
+ module.reserve(size)
14
+ const privateKeyPtr = module.heapBase
15
+ const payloadPtr = privateKeyPtr + keySize
16
+ const signaturePtr = payloadPtr + payload.length
17
+ try {
18
+ const memory = module.view()
19
+ memory.set(privateKey, privateKeyPtr)
20
+ memory.set(payload, payloadPtr)
21
+ module.exports.ed25519_sign(
22
+ privateKeyPtr,
23
+ payloadPtr,
24
+ payload.length,
25
+ signaturePtr,
26
+ )
27
+ return module.view().slice(signaturePtr, signaturePtr + signatureSize)
28
+ } finally {
29
+ module.exports.zero(privateKeyPtr, size)
30
+ }
31
+ }
@@ -0,0 +1,29 @@
1
+ import * as hash from './hash.js'
2
+ import { wasmBase64 } from './hashes.wasm.js'
3
+ import * as internal from './instantiate.js'
4
+
5
+ /** Exports shared by the Hash and Keystore providers. @internal */
6
+ export type Exports = hash.Exports & {
7
+ keccak256(input: number, length: number, out: number): void
8
+ pbkdf2_sha256(
9
+ password: number,
10
+ passwordLength: number,
11
+ salt: number,
12
+ saltLength: number,
13
+ iterations: number,
14
+ out: number,
15
+ outLength: number,
16
+ scratch: number,
17
+ ): void
18
+ ripemd160(input: number, length: number, out: number): void
19
+ sha256(input: number, length: number, out: number): void
20
+ }
21
+
22
+ const instantiate = /*#__PURE__*/ internal.memoize(() =>
23
+ internal.instantiate<Exports>(wasmBase64),
24
+ )
25
+
26
+ /** Returns the one memoized hashes instance shared by its provider modules. */
27
+ export function load() {
28
+ return instantiate()
29
+ }
@@ -8,7 +8,10 @@
8
8
 
9
9
  /** Base64-encoded WASM binary. */
10
10
  export const wasmBase64 =
11
- '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dnNqNgIAIAFBBGoiAUHAAUcNAAsgACgCACINIQkgACgCBCIOIQEgACgCCCIPIQUgACgCDCIQIQwgACgCHCIRIQogACgCGCISIQggACgCFCITIQMgACgCECIUIQYDQCAFIQQgASEFIAIgC2ooAgAgC0HgCWooAgAgCiAGIgdBGncgB0EVd3MgB0EHd3NqIAdBf3MgCHEgAyAHcXJqamoiBiAJIgFBHncgAUETd3MgAUEKd3MgASAEIAVzcSAEIAVxc2pqIQkgBiAMaiEGIAQhDCAIIQogAyEIIAchAyALQQRqIgtBgAJHDQALIAAgCiARajYCHCAAIAggEmo2AhggACADIBNqNgIUIAAgBiAUajYCECAAIAQgEGo2AgwgACAFIA9qNgIIIAAgASAOajYCBCAAIAkgDWo2AgALkgkBBn8jAEHgAmsiAyQAIANCADcD0AIgA0IANwPIAiADQgA3A8ACIANCADcDuAIgA0IANwOwAiADQgA3A6gCIANCADcDoAIgA0IANwOYAiADQgA3A5ACIANCADcDiAIgA0IANwOAAiADQgA3A/gBIANCADcD8AEgA0IANwPoASADQgA3A+ABIANCADcD2AEgA0IANwPQASADQgA3A8gBIANCADcDwAEgA0IANwO4ASADQgA3A7ABIANCADcDqAEgA0IANwOgASADQgA3A5gBIANCADcDkAEgAUGIAU8EQANAIAMgAykDkAEgACAGaiIEKQAAhTcDkAEgAyADKQOYASAEKQAIhTcDmAEgAyADKQOgASAEQRBqKQAAhTcDoAEgAyADKQOoASAEQRhqKQAAhTcDqAEgAyADKQOwASAEQSBqKQAAhTcDsAEgAyADKQO4ASAEQShqKQAAhTcDuAEgAyADKQPAASAEQTBqKQAAhTcDwAEgAyADKQPIASAEQThqKQAAhTcDyAEgAyADKQPQASAEQUBrKQAAhTcD0AEgAyADKQPYASAEQcgAaikAAIU3A9gBIAMgAykD4AEgBEHQAGopAACFNwPgASADIAMpA+gBIARB2ABqKQAAhTcD6AEgAyADKQPwASAEQeAAaikAAIU3A/ABIAMgAykD+AEgBEHoAGopAACFNwP4ASADIAMpA4ACIARB8ABqKQAAhTcDgAIgAyADKQOIAiAEQfgAaikAAIU3A4gCIAMgAykDkAIgBEGAAWopAACF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'
11
+ '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dnM6ACkgByAHLQAqIDBzOgAqIAcgBCAHLQArczoAKyAHIActACwgHHM6ACwgByAHLQAtIAhBEHZzOgAtIAcgBy0ALiAxczoALiAHIAggBy0AL3M6AC8gByAHLQAwIB1zOgAwIAcgBy0AMSALQRB2czoAMSAHIActADIgMnM6ADIgByALIActADNzOgAzIAcgBy0ANCAeczoANCAHIActADUgCUEQdnM6ADUgByAHLQA2IDNzOgA2IAcgCSAHLQA3czoANyAHIActADggH3M6ADggByAHLQA5IA1BEHZzOgA5IAcgBy0AOiA0czoAOiAHIA0gBy0AO3M6ADsgByAHLQA8ICBzOgA8IAcgBy0APSAKQRB2czoAPSAHIActAD4gNXM6AD4gByAKIActAD9zOgA/IABBAWsiAA0ACwtBICAGIA5rIgEgAUEgTxshAAJAIAYgDkYNAEEBIAAgAEEBTRsiA0EDcSEIQQAhBCABQQRPBEAgBSAOaiELIANBPHEhCQNAIAQgC2oiASAEIAdqIgNBIGotAAA6AAAgAUEBaiADQSFqLQAAOgAAIAFBAmogA0Eiai0AADoAACABQQNqIANBI2otAAA6AAAgCSAEQQRqIgRHDQALCyAIRQ0AQQAgCGshASAEICFqIQMgBSAEIA5qaiEEA0AgBCADLQAAOgAAIANBAWohAyAEQQFqIQQgAUEBaiIBDQALCyAMQQFqIQwgACAOaiIOIAZJDQALC0EAIQMDQCADIAdqIgBBADoAACAAQQFqQQA6AAAgAEECakEAOgAAIABBA2pBADoAACAAQQRqQQA6AAAgAEEFakEAOgAAIABBBmpBADoAACAAQQdqQQA6AAAgAEEIakEAOgAAIABBCWpBADoAACAAQQpqQQA6AAAgAEELakEAOgAAIABBDGpBADoAACAAQQ1qQQA6AAAgAEEOakEAOgAAIABBD2pBADoAACADQRBqIgNBoARHDQALC78IARJ/IAIgASgAACIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZycjYCACACIAEoAAQiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnI2AgQgAiABKAAIIgNBGHQgA0GA/gNxQQh0ciADQQh2QYD+A3EgA0EYdnJyNgIIIAIgASgADCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZycjYCDCACIAEoABAiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnI2AhAgAiABKAAUIgNBGHQgA0GA/gNxQQh0ciADQQh2QYD+A3EgA0EYdnJyNgIUIAIgASgAGCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZycjYCGCACIAEoABwiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnI2AhwgAiABKAAgIgNBGHQgA0GA/gNxQQh0ciADQQh2QYD+A3EgA0EYdnJyNgIgIAIgASgAJCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZycjYCJCACIAEoACgiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnI2AiggAiABKAAsIgNBGHQgA0GA/gNxQQh0ciADQQh2QYD+A3EgA0EYdnJyNgIsIAIgASgAMCIDQRh0IANBgP4DcUEIdHIgA0EIdkGA/gNxIANBGHZycjYCMCACIAEoADQiA0EYdCADQYD+A3FBCHRyIANBCHZBgP4DcSADQRh2cnI2AjQgAiABKAA4IgNBGHQgA0GA/gNxQQh0ciADQQh2QYD+A3EgA0EYdnJyNgI4IAIgASgAPCIBQRh0IAFBgP4DcUEIdHIgAUEIdkGA/gNxIAFBGHZycjYCPEEAIQEDQCABIAJqIgRBBGooAgAhAyAEQUBrIARBJGooAgAgBCgCACADQRl3IANBDndzIANBA3ZzamogBEE4aigCACIDQQ93IANBDXdzIANBCnZzajYCACABQQRqIgFBwAFHDQALIAAoAgAiDSEJIAAoAgQiDiEBIAAoAggiDyEFIAAoAgwiECEMIAAoAhwiESEKIAAoAhgiEiEIIAAoAhQiEyEDIAAoAhAiFCEGA0AgBSEEIAEhBSACIAtqKAIAIAtB4AlqKAIAIAogBiIHQRp3IAdBFXdzIAdBB3dzaiAHQX9zIAhxIAMgB3FyampqIgYgCSIBQR53IAFBE3dzIAFBCndzIAEgBCAFc3EgBCAFcXNqaiEJIAYgDGohBiAEIQwgCCEKIAMhCCAHIQMgC0EEaiILQYACRw0ACyAAIAogEWo2AhwgACAIIBJqNgIYIAAgAyATajYCFCAAIAYgFGo2AhAgACAEIBBqNgIMIAAgBSAPajYCCCAAIAEgDmo2AgQgACAJIA1qNgIAC7kDAQh/IwBBoAFrIgMkACADQZABakGQCCgCADYCACADQYgIKQMANwOIASADQYAIKQMANwOAASABIgVBwABPBEADQCADQYABaiAAIAZqEAkgBkFAayEGIAVBQGoiBUE/Sw0ACwtBgAFBwAAgBUE3SxshCANAIAMgBGpCADcDACAIIARBCGoiBEcNAAsCQCAFRQ0AIAVBA3EhB0EAIQQgBUEETwRAIAAgBmohCSAFQTxxIQoDQCADIARqIAQgCWooAAA2AgAgCiAEQQRqIgRHDQALCyAHRQ0AIAAgBCAGamohBiADIARqIQQDQCAEIAYtAAA6AAAgBkEBaiEGIARBAWohBCAHQQFrIgcNAAsLIAMgBWpBgAE6AAAgAyAIaiIEQQhrIgAgAUEDdDoAACAEQQFrQQA6AAAgAEEBaiABQQV2OgAAIABBAmogAUENdjoAACAAQQNqIAFBFXY6AAAgAEEEaiABQR12OgAAIABBBWpBADsAACADQYABaiIAIAMQCSAFQTdLBEAgACADQUBrEAkLIAIgAykDgAE3AAAgAiADKQOIATcACCACIAMoApABNgAQIANBoAFqJAAL3gQBFX8jAEFAaiICIAEoAAA2AgAgAiABKQAENwIEIAIgASkADDcCDCACIAEpABQ3AhQgAiABKQAcNwIcIAIgASkAJDcCJCACIAEpACw3AiwgAiABKQA0NwI0IAIgASgAPDYCPEEAIQEgACgCACIRIRIgACgCBCITIQ4gACgCECIUIQkgACgCDCIVIQogEyELIBEhDyAUIQwgFSENIAAoAggiFiIHIQgDQCANIQMgDCEQIAshBCAKIQUgCSEMIA4hBgJ/AkACQAJAAkACQCABQQR2IgoOBAABAgMECyADIAhzIAZzDAQLIAMgBkF/c3EgBiAIcXIMAwsgBiAIQX9zciADcwwCCyADIAZxIAggA0F/c3FyDAELIAYgCCADQX9zcnMLIQ0gCkECdCIJQbAMaigCACACIAFB4AtqLQAAQQJ0aigCACANIBJqamogAUHQDGotAAB3IBBqIQ4gCEEKdyENIAlB8A1qKAIAIAIgAUGgDWotAABBAnRqKAIAAn8CQAJAAkACQAJAIApBAWsOBAMCAQAECyAEIAdzIAVzDAQLIAUgBEF/c3EgBCAHcXIMAwsgBCAHQX9zciAFcwwCCyAEIAVxIAcgBUF/c3FyDAELIAcgBUF/c3IgBHMLIA9qamogAUGQDmotAAB3IAxqIQsgB0EKdyEKIBAhEiAFIQkgBCEHIAwhDyADIQwgBiEIIAFBAWoiAUHQAEcNAAsgACAEIBFqIA5qNgIQIAAgCyAUaiAQajYCDCAAIAMgFWogD2o2AgggACANIBZqIAVqNgIEIAAgBiATaiAKajYCAAtyAQF/IwBBoANrIgMkACADQquzj/yRo7Pw2wA3A5gDIANC/6S5iMWR2oKbfzcDkAMgA0Ly5rvjo6f9p6V/NwOIAyADQufMp9DW0Ouzu383A4ADIAAgAUIAIAIgA0GAA2ogA0GAAmogAxACIANBoANqJAALJQEBf0HgDi0AACIABEBB8I4EQQAgABsPC0HgDkEBOgAAQfCOBAuTAQECfwJAIAFFDQACQCABQQdxIgNFBEAgASECDAELIAFBeHEhAgNAIABBADoAACAAQQFqIQAgA0EBayIDDQALCyABQQhJDQADQCAAQQA6AAAgAEEAOgABIABBADoAAiAAQQA6AAMgAEEAOgAEIABBADoABSAAQQA6AAYgAEEAOgAHIABBCGohACACQQhrIgINAAsLCwvTBgQAQYAICxQBI0VniavN7/7cuph2VDIQ8OHSwwBBoAgLpAQBAAAAAAAAAIKAAAAAAAAAioAAAAAAAIAAgACAAAAAgIuAAAAAAAAAAQAAgAAAAACBgACAAAAAgAmAAAAAAACAigAAAAAAAACIAAAAAAAAAAmAAIAAAAAACgAAgAAAAACLgACAAAAAAIsAAAAAAACAiYAAAAAAAIADgAAAAAAAgAKAAAAAAACAgAAAAAAAAIAKgAAAAAAAAAoAAIAAAACAgYAAgAAAAICAgAAAAAAAgAEAAIAAAAAACIAAgAAAAICYL4pCkUQ3cc/7wLWl27XpW8JWOfER8Vmkgj+S1V4cq5iqB9gBW4MSvoUxJMN9DFV0Xb5y/rHegKcG3Jt08ZvBwWmb5IZHvu/GncEPzKEMJG8s6S2qhHRK3KmwXNqI+XZSUT6YbcYxqMgnA7DHf1m/8wvgxkeRp9VRY8oGZykpFIUKtyc4IRsu/G0sTRMNOFNUcwpluwpqdi7JwoGFLHKSoei/oktmGqhwi0vCo1FsxxnoktEkBpnWhTUO9HCgahAWwaQZCGw3Hkx3SCe1vLA0swwcOUqq2E5Pypxb828uaO6Cj3RvY6V4FHjIhAgCx4z6/76Q62xQpPej+b7yeHHGAAECAwQFBgcICQoLDA0ODwcEDQEKBg8DDAAJBQIOCwgDCg4ECQ8IAQIHAAYNCwUMAQkLCgAIDAQNAwcPDgUGAgQABQkHDAIKDgEDCAsGDw0AAAAAmXmCWqHr2W7cvBuPTv1TqQBB0AwLsAELDg8MBQgHCQsNDg8GBwkIBwYIDQsJBw8HDA8JCwcNDAsNBgcOCQ0PDggNBgUMBwULDA4PDg8JCAkOBQYIBgUMCQ8FCwYIDQwFDA0OCwgFBgUOBwAJAgsEDQYPCAEKAwwGCwMHAA0FCg4PCAwECQECDwUBAwcOBgkLCAwCCgAEDQgGBAEDCw8ABQwCDQkHCg4MDwoEAQUIBwYCDQ4AAwkL5ouiUCTRTVzzPnBt6XZtegBBkA4LUAgJCQsNDw8FBwcICw4ODAYJDQ8HDAgJCwcHDAcGDw0LCQcPCwgGBg4MDQUODQ0HBQ8FCAsODgYOBgkMCQwFDwgIBQwJDAUOBggNBgUPDQsL'
12
12
 
13
13
  /** Constant shared with the module's C source. */
14
- export const hmacSha256ScratchSize = 608
14
+ export const hmacSha256ScratchSize = 544
15
+
16
+ /** Constant shared with the module's C source. */
17
+ export const pbkdf2Sha256ScratchSize = 544
@@ -0,0 +1,56 @@
1
+ import type { Module } from './crypto25519.js'
2
+
3
+ const encoder = new TextEncoder()
4
+ const seedSize = 64
5
+ const wordCounts = [12, 15, 18, 21, 24]
6
+
7
+ /** Derives a BIP-39 seed and clears encoded and staged secret material. */
8
+ export function toSeed(
9
+ module: Module,
10
+ mnemonic: string,
11
+ passphrase = '',
12
+ ): Uint8Array {
13
+ const password = encoder.encode(normalize(mnemonic))
14
+ try {
15
+ const salt = encoder.encode(normalizeSalt(passphrase))
16
+ try {
17
+ const size = password.length + salt.length + seedSize
18
+ module.reserve(size)
19
+ const passwordPtr = module.heapBase
20
+ const saltPtr = passwordPtr + password.length
21
+ const seedPtr = saltPtr + salt.length
22
+ try {
23
+ const memory = module.view()
24
+ memory.set(password, passwordPtr)
25
+ memory.set(salt, saltPtr)
26
+ module.exports.mnemonic_to_seed(
27
+ passwordPtr,
28
+ password.length,
29
+ saltPtr,
30
+ salt.length,
31
+ seedPtr,
32
+ )
33
+ return module.view().slice(seedPtr, seedPtr + seedSize)
34
+ } finally {
35
+ module.exports.zero(passwordPtr, size)
36
+ }
37
+ } finally {
38
+ salt.fill(0)
39
+ }
40
+ } finally {
41
+ password.fill(0)
42
+ }
43
+ }
44
+
45
+ function normalize(mnemonic: string): string {
46
+ if (typeof mnemonic !== 'string')
47
+ throw new TypeError(`invalid mnemonic type: ${typeof mnemonic}`)
48
+ const normalized = mnemonic.normalize('NFKD')
49
+ if (!wordCounts.includes(normalized.split(' ').length))
50
+ throw new Error('Invalid mnemonic')
51
+ return normalized
52
+ }
53
+
54
+ function normalizeSalt(passphrase: string): string {
55
+ return `mnemonic${passphrase}`.normalize('NFKD')
56
+ }
@@ -0,0 +1,86 @@
1
+ import { pbkdf2Sha256ScratchSize } from './hashes.wasm.js'
2
+ import { MemoryError, type Module } from './instantiate.js'
3
+
4
+ /** WASM exports used by the PBKDF2-HMAC-SHA256 loader. @internal */
5
+ export type Exports = {
6
+ pbkdf2_sha256(
7
+ password: number,
8
+ passwordLength: number,
9
+ salt: number,
10
+ saltLength: number,
11
+ iterations: number,
12
+ out: number,
13
+ outLength: number,
14
+ scratch: number,
15
+ ): void
16
+ zero(ptr: number, length: number): void
17
+ }
18
+
19
+ const maximumUint32 = 0xffff_ffff
20
+ const wasm32Size = 0x1_0000_0000
21
+
22
+ /** Calls PBKDF2-HMAC-SHA256 and clears its complete linear-memory region. */
23
+ export function pbkdf2Sha256(
24
+ module: Module<Exports>,
25
+ password: Uint8Array,
26
+ salt: Uint8Array,
27
+ options: { c: number; dkLen: number },
28
+ ): Uint8Array {
29
+ const { c, dkLen } = options
30
+ assertPositiveUint32(c, 'c')
31
+ assertPositiveUint32(dkLen, 'dkLen')
32
+
33
+ const passwordLength = password.length
34
+ const saltLength = salt.length
35
+ if (saltLength > maximumUint32 - 4)
36
+ throw new RangeError(
37
+ `"salt" length must be <= ${maximumUint32 - 4}, got ${saltLength}`,
38
+ )
39
+
40
+ const passwordPtr = module.heapBase
41
+ const saltPtr = passwordPtr + passwordLength
42
+ const outPtr = saltPtr + saltLength + 4
43
+ const scratchPtr = align4(outPtr + dkLen)
44
+ const end = scratchPtr + pbkdf2Sha256ScratchSize
45
+ if (!Number.isSafeInteger(end) || end > wasm32Size)
46
+ throw new MemoryError({
47
+ bytes: end,
48
+ cause: new RangeError('PBKDF2 workspace exceeds wasm32 memory.'),
49
+ })
50
+
51
+ module.reserve(end - passwordPtr)
52
+ const view = module.view()
53
+ try {
54
+ view.set(password, passwordPtr)
55
+ view.set(salt, saltPtr)
56
+ module.exports.pbkdf2_sha256(
57
+ passwordPtr,
58
+ passwordLength,
59
+ saltPtr,
60
+ saltLength,
61
+ c,
62
+ outPtr,
63
+ dkLen,
64
+ scratchPtr,
65
+ )
66
+ return module.view().slice(outPtr, outPtr + dkLen)
67
+ } finally {
68
+ // This includes the password, salt and counter, staged output, alignment
69
+ // padding, and every byte of PBKDF2/HMAC working state.
70
+ module.exports.zero(passwordPtr, end - passwordPtr)
71
+ }
72
+ }
73
+
74
+ function align4(value: number) {
75
+ return Math.ceil(value / 4) * 4
76
+ }
77
+
78
+ function assertPositiveUint32(value: number, name: string) {
79
+ if (typeof value !== 'number')
80
+ throw new TypeError(`"${name}" expected number, got ${typeof value}`)
81
+ if (!Number.isSafeInteger(value) || value < 0)
82
+ throw new RangeError(`"${name}" expected integer >= 0, got ${value}`)
83
+ if (value < 1) throw new Error(`"${name}" must be >= 1`)
84
+ if (value > maximumUint32)
85
+ throw new RangeError(`"${name}" must be <= ${maximumUint32}, got ${value}`)
86
+ }
@@ -0,0 +1,29 @@
1
+ import type { Module } from './crypto25519.js'
2
+
3
+ const keySize = 32
4
+
5
+ /** Derives a shared secret and clears both keys and the staged result. */
6
+ export function getSharedSecret(
7
+ module: Module,
8
+ privateKey: Uint8Array,
9
+ publicKey: Uint8Array,
10
+ ): Uint8Array {
11
+ module.reserve(keySize * 3)
12
+ const privateKeyPtr = module.heapBase
13
+ const publicKeyPtr = privateKeyPtr + keySize
14
+ const sharedSecretPtr = publicKeyPtr + keySize
15
+ try {
16
+ const memory = module.view()
17
+ memory.set(privateKey, privateKeyPtr)
18
+ memory.set(publicKey, publicKeyPtr)
19
+ const valid = module.exports.x25519_get_shared_secret(
20
+ privateKeyPtr,
21
+ publicKeyPtr,
22
+ sharedSecretPtr,
23
+ )
24
+ if (valid !== 1) throw new Error('invalid private or public key received')
25
+ return module.view().slice(sharedSecretPtr, sharedSecretPtr + keySize)
26
+ } finally {
27
+ module.exports.zero(privateKeyPtr, keySize * 3)
28
+ }
29
+ }