smesh_lol_web_common_marmot.mjs raw

   1  // Package smesh.lol/web/common/marmot
   2  // Generated by MoxieJS — Moxie JavaScript backend
   3  
   4  import * as $rt from './$runtime/index.mjs';
   5  
   6  import * as errors from './errors.mjs';
   7  import * as smesh$lol$web$common$crypto$chacha20poly1305 from './smesh_lol_web_common_crypto_chacha20poly1305.mjs';
   8  import * as smesh$lol$web$common$helpers from './smesh_lol_web_common_helpers.mjs';
   9  import * as smesh$lol$web$common$jsbridge$schnorr from './smesh_lol_web_common_jsbridge_schnorr.mjs';
  10  import * as smesh$lol$web$common$jsbridge$subtle from './smesh_lol_web_common_jsbridge_subtle.mjs';
  11  import * as smesh$lol$web$common$mls from './smesh_lol_web_common_mls.mjs';
  12  import * as smesh$lol$web$common$nostr from './smesh_lol_web_common_nostr.mjs';
  13  
  14  // Package-level variables
  15  export let exporterLabel = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  16  export let exporterContext = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  17  
  18  $rt.types.registerType('smesh.lol/web/common/marmot.NostrGroupData', {
  19    id: 'smesh.lol/web/common/marmot.NostrGroupData',
  20    kind: 'struct',
  21    methods: new Map(),
  22    fields: [
  23      { name: 'Version', type: 'uint16', tag: '', embedded: false },
  24      { name: 'NostrGroupID', type: '[32]byte', tag: '', embedded: false },
  25      { name: 'Name', type: 'string', tag: '', embedded: false },
  26      { name: 'Description', type: 'string', tag: '', embedded: false },
  27      { name: 'AdminPubkeys', type: '[][]byte', tag: '', embedded: false },
  28      { name: 'Relays', type: '[]string', tag: '', embedded: false },
  29    ],
  30    zero: () => ({ Version: 0, NostrGroupID: $rt.builtin.makeSlice(32, 32, 0), Name: '', Description: '', AdminPubkeys: null, Relays: null }),
  31  });
  32  $rt.types.registerType('smesh.lol/web/common/marmot.GroupState', {
  33    id: 'smesh.lol/web/common/marmot.GroupState',
  34    kind: 'struct',
  35    methods: new Map(),
  36    fields: [
  37      { name: 'Group', type: '*smesh.lol/web/common/mls.Group', tag: '', embedded: false },
  38      { name: 'MLSGroupID', type: '[]byte', tag: '', embedded: false },
  39      { name: 'NostrGroupID', type: '[]byte', tag: '', embedded: false },
  40      { name: 'PeerPub', type: '[]byte', tag: '', embedded: false },
  41    ],
  42    zero: () => ({ Group: null, MLSGroupID: null, NostrGroupID: null, PeerPub: null }),
  43  });
  44  export function init() {
  45    exporterLabel.$set('marmot');
  46    exporterContext.$set('group-event');
  47    return;
  48  }
  49  
  50  export function DecodeVarint(b) {
  51    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91;
  52    let $block = 0;
  53    while (true) {
  54      switch ($block) {
  55        case 0: {
  56          $t0_1 = $rt.builtin.len(b);
  57          $t1_2 = ($t0_1 === 0);
  58          if ($t1_2) {
  59            $block = 1; break;
  60          }
  61          else {
  62            $block = 2; break;
  63          }
  64          break;
  65        }
  66        case 1: {
  67          $t2_3 = errors.New('marmot: unexpected end of data');
  68          return [0n, 0, $t2_3];
  69          break;
  70        }
  71        case 2: {
  72          $t3_4 = b.addr(0);
  73          $t4_5 = $t3_4.$get();
  74          $t5_6 = (($t4_5 & 0xFF) >> 6);
  75          $t6_7 = ($t5_6 === 0);
  76          if ($t6_7) {
  77            $block = 3; break;
  78          }
  79          else {
  80            $block = 5; break;
  81          }
  82          break;
  83        }
  84        case 3: {
  85          $t7_8 = b.addr(0);
  86          $t8_9 = $t7_8.$get();
  87          $t9_10 = ($t8_9 & 63);
  88          $t10_11 = BigInt.asUintN(64, BigInt($t9_10));
  89          return [$t10_11, 1, null];
  90          break;
  91        }
  92        case 4: {
  93          $t11_12 = $rt.builtin.len(b);
  94          $t12_13 = ($t11_12 < 2);
  95          if ($t12_13) {
  96            $block = 8; break;
  97          }
  98          else {
  99            $block = 9; break;
 100          }
 101          break;
 102        }
 103        case 5: {
 104          $t13_14 = ($t5_6 === 1);
 105          if ($t13_14) {
 106            $block = 4; break;
 107          }
 108          else {
 109            $block = 7; break;
 110          }
 111          break;
 112        }
 113        case 6: {
 114          $t14_15 = $rt.builtin.len(b);
 115          $t15_16 = ($t14_15 < 4);
 116          if ($t15_16) {
 117            $block = 12; break;
 118          }
 119          else {
 120            $block = 13; break;
 121          }
 122          break;
 123        }
 124        case 7: {
 125          $t16_17 = ($t5_6 === 2);
 126          if ($t16_17) {
 127            $block = 6; break;
 128          }
 129          else {
 130            $block = 11; break;
 131          }
 132          break;
 133        }
 134        case 8: {
 135          $t17_18 = errors.New('marmot: truncated 2-byte varint');
 136          return [0n, 0, $t17_18];
 137          break;
 138        }
 139        case 9: {
 140          $t18_19 = b.addr(0);
 141          $t19_20 = $t18_19.$get();
 142          $t20_21 = ($t19_20 & 63);
 143          $t21_22 = BigInt.asUintN(64, BigInt($t20_21));
 144          $t22_23 = BigInt.asUintN(64, $t21_22 << BigInt(8));
 145          $t23_24 = b.addr(1);
 146          $t24_25 = $t23_24.$get();
 147          $t25_26 = BigInt.asUintN(64, BigInt($t24_25));
 148          $t26_27 = BigInt.asUintN(64, $t22_23 + $t25_26);
 149          return [$t26_27, 2, null];
 150          break;
 151        }
 152        case 10: {
 153          $t27_28 = $rt.builtin.len(b);
 154          $t28_29 = ($t27_28 < 8);
 155          if ($t28_29) {
 156            $block = 15; break;
 157          }
 158          else {
 159            $block = 16; break;
 160          }
 161          break;
 162        }
 163        case 11: {
 164          $t29_30 = ($t5_6 === 3);
 165          if ($t29_30) {
 166            $block = 10; break;
 167          }
 168          else {
 169            $block = 14; break;
 170          }
 171          break;
 172        }
 173        case 12: {
 174          $t30_31 = errors.New('marmot: truncated 4-byte varint');
 175          return [0n, 0, $t30_31];
 176          break;
 177        }
 178        case 13: {
 179          $t31_32 = b.addr(0);
 180          $t32_33 = $t31_32.$get();
 181          $t33_34 = ($t32_33 & 63);
 182          $t34_35 = BigInt.asUintN(64, BigInt($t33_34));
 183          $t35_36 = BigInt.asUintN(64, $t34_35 << BigInt(24));
 184          $t36_37 = b.addr(1);
 185          $t37_38 = $t36_37.$get();
 186          $t38_39 = BigInt.asUintN(64, BigInt($t37_38));
 187          $t39_40 = BigInt.asUintN(64, $t38_39 << BigInt(16));
 188          $t40_41 = BigInt.asUintN(64, $t35_36 + $t39_40);
 189          $t41_42 = b.addr(2);
 190          $t42_43 = $t41_42.$get();
 191          $t43_44 = BigInt.asUintN(64, BigInt($t42_43));
 192          $t44_45 = BigInt.asUintN(64, $t43_44 << BigInt(8));
 193          $t45_46 = BigInt.asUintN(64, $t40_41 + $t44_45);
 194          $t46_47 = b.addr(3);
 195          $t47_48 = $t46_47.$get();
 196          $t48_49 = BigInt.asUintN(64, BigInt($t47_48));
 197          $t49_50 = BigInt.asUintN(64, $t45_46 + $t48_49);
 198          return [$t49_50, 4, null];
 199          break;
 200        }
 201        case 14: {
 202          $t50_51 = errors.New('marmot: varint prefix unreachable');
 203          return [0n, 0, $t50_51];
 204          break;
 205        }
 206        case 15: {
 207          $t51_52 = errors.New('marmot: truncated 8-byte varint');
 208          return [0n, 0, $t51_52];
 209          break;
 210        }
 211        case 16: {
 212          $t52_53 = b.addr(0);
 213          $t53_54 = $t52_53.$get();
 214          $t54_55 = ($t53_54 & 63);
 215          $t55_56 = BigInt.asUintN(64, BigInt($t54_55));
 216          $t56_57 = BigInt.asUintN(64, $t55_56 << BigInt(56));
 217          $t57_58 = b.addr(1);
 218          $t58_59 = $t57_58.$get();
 219          $t59_60 = BigInt.asUintN(64, BigInt($t58_59));
 220          $t60_61 = BigInt.asUintN(64, $t59_60 << BigInt(48));
 221          $t61_62 = BigInt.asUintN(64, $t56_57 + $t60_61);
 222          $t62_63 = b.addr(2);
 223          $t63_64 = $t62_63.$get();
 224          $t64_65 = BigInt.asUintN(64, BigInt($t63_64));
 225          $t65_66 = BigInt.asUintN(64, $t64_65 << BigInt(40));
 226          $t66_67 = BigInt.asUintN(64, $t61_62 + $t65_66);
 227          $t67_68 = b.addr(3);
 228          $t68_69 = $t67_68.$get();
 229          $t69_70 = BigInt.asUintN(64, BigInt($t68_69));
 230          $t70_71 = BigInt.asUintN(64, $t69_70 << BigInt(32));
 231          $t71_72 = BigInt.asUintN(64, $t66_67 + $t70_71);
 232          $t72_73 = b.addr(4);
 233          $t73_74 = $t72_73.$get();
 234          $t74_75 = BigInt.asUintN(64, BigInt($t73_74));
 235          $t75_76 = BigInt.asUintN(64, $t74_75 << BigInt(24));
 236          $t76_77 = BigInt.asUintN(64, $t71_72 + $t75_76);
 237          $t77_78 = b.addr(5);
 238          $t78_79 = $t77_78.$get();
 239          $t79_80 = BigInt.asUintN(64, BigInt($t78_79));
 240          $t80_81 = BigInt.asUintN(64, $t79_80 << BigInt(16));
 241          $t81_82 = BigInt.asUintN(64, $t76_77 + $t80_81);
 242          $t82_83 = b.addr(6);
 243          $t83_84 = $t82_83.$get();
 244          $t84_85 = BigInt.asUintN(64, BigInt($t83_84));
 245          $t85_86 = BigInt.asUintN(64, $t84_85 << BigInt(8));
 246          $t86_87 = BigInt.asUintN(64, $t81_82 + $t85_86);
 247          $t87_88 = b.addr(7);
 248          $t88_89 = $t87_88.$get();
 249          $t89_90 = BigInt.asUintN(64, BigInt($t88_89));
 250          $t90_91 = BigInt.asUintN(64, $t86_87 + $t89_90);
 251          return [$t90_91, 8, null];
 252          break;
 253        }
 254      }
 255    }
 256  }
 257  
 258  export function EncodeVarint(v, b) {
 259    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61;
 260    let $block = 0;
 261    while (true) {
 262      switch ($block) {
 263        case 0: {
 264          $t0_1 = (v <= 63n);
 265          if ($t0_1) {
 266            $block = 1; break;
 267          }
 268          else {
 269            $block = 3; break;
 270          }
 271          break;
 272        }
 273        case 1: {
 274          $t1_2 = $rt.builtin.len(b);
 275          $t2_3 = ($t1_2 < 1);
 276          if ($t2_3) {
 277            $block = 4; break;
 278          }
 279          else {
 280            $block = 5; break;
 281          }
 282          break;
 283        }
 284        case 2: {
 285          $t3_4 = $rt.builtin.len(b);
 286          $t4_5 = ($t3_4 < 2);
 287          if ($t4_5) {
 288            $block = 8; break;
 289          }
 290          else {
 291            $block = 9; break;
 292          }
 293          break;
 294        }
 295        case 3: {
 296          $t5_6 = (v <= 16383n);
 297          if ($t5_6) {
 298            $block = 2; break;
 299          }
 300          else {
 301            $block = 7; break;
 302          }
 303          break;
 304        }
 305        case 4: {
 306          $t6_7 = errors.New('marmot: varint buffer too small');
 307          return [0, $t6_7];
 308          break;
 309        }
 310        case 5: {
 311          $t7_8 = (Number(v) & 0xFF);
 312          $t8_9 = b.addr(0);
 313          $t8_9.$set($t7_8);
 314          return [1, null];
 315          break;
 316        }
 317        case 6: {
 318          $t9_10 = $rt.builtin.len(b);
 319          $t10_11 = ($t9_10 < 4);
 320          if ($t10_11) {
 321            $block = 12; break;
 322          }
 323          else {
 324            $block = 13; break;
 325          }
 326          break;
 327        }
 328        case 7: {
 329          $t11_12 = (v <= 1073741823n);
 330          if ($t11_12) {
 331            $block = 6; break;
 332          }
 333          else {
 334            $block = 11; break;
 335          }
 336          break;
 337        }
 338        case 8: {
 339          $t12_13 = errors.New('marmot: varint buffer too small');
 340          return [0, $t12_13];
 341          break;
 342        }
 343        case 9: {
 344          $t13_14 = (v >> BigInt(8));
 345          $t14_15 = BigInt.asUintN(64, 64n + $t13_14);
 346          $t15_16 = (Number($t14_15) & 0xFF);
 347          $t16_17 = b.addr(0);
 348          $t16_17.$set($t15_16);
 349          $t17_18 = (Number(v) & 0xFF);
 350          $t18_19 = b.addr(1);
 351          $t18_19.$set($t17_18);
 352          return [2, null];
 353          break;
 354        }
 355        case 10: {
 356          $t19_20 = $rt.builtin.len(b);
 357          $t20_21 = ($t19_20 < 8);
 358          if ($t20_21) {
 359            $block = 15; break;
 360          }
 361          else {
 362            $block = 16; break;
 363          }
 364          break;
 365        }
 366        case 11: {
 367          $t21_22 = (v <= 4611686018427387903n);
 368          if ($t21_22) {
 369            $block = 10; break;
 370          }
 371          else {
 372            $block = 14; break;
 373          }
 374          break;
 375        }
 376        case 12: {
 377          $t22_23 = errors.New('marmot: varint buffer too small');
 378          return [0, $t22_23];
 379          break;
 380        }
 381        case 13: {
 382          $t23_24 = (v >> BigInt(24));
 383          $t24_25 = BigInt.asUintN(64, 128n + $t23_24);
 384          $t25_26 = (Number($t24_25) & 0xFF);
 385          $t26_27 = b.addr(0);
 386          $t26_27.$set($t25_26);
 387          $t27_28 = (v >> BigInt(16));
 388          $t28_29 = (Number($t27_28) & 0xFF);
 389          $t29_30 = b.addr(1);
 390          $t29_30.$set($t28_29);
 391          $t30_31 = (v >> BigInt(8));
 392          $t31_32 = (Number($t30_31) & 0xFF);
 393          $t32_33 = b.addr(2);
 394          $t32_33.$set($t31_32);
 395          $t33_34 = (Number(v) & 0xFF);
 396          $t34_35 = b.addr(3);
 397          $t34_35.$set($t33_34);
 398          return [4, null];
 399          break;
 400        }
 401        case 14: {
 402          $t35_36 = errors.New('marmot: value exceeds QUIC varint max (2^62-1)');
 403          return [0, $t35_36];
 404          break;
 405        }
 406        case 15: {
 407          $t36_37 = errors.New('marmot: varint buffer too small');
 408          return [0, $t36_37];
 409          break;
 410        }
 411        case 16: {
 412          $t37_38 = (v >> BigInt(56));
 413          $t38_39 = BigInt.asUintN(64, 192n + $t37_38);
 414          $t39_40 = (Number($t38_39) & 0xFF);
 415          $t40_41 = b.addr(0);
 416          $t40_41.$set($t39_40);
 417          $t41_42 = (v >> BigInt(48));
 418          $t42_43 = (Number($t41_42) & 0xFF);
 419          $t43_44 = b.addr(1);
 420          $t43_44.$set($t42_43);
 421          $t44_45 = (v >> BigInt(40));
 422          $t45_46 = (Number($t44_45) & 0xFF);
 423          $t46_47 = b.addr(2);
 424          $t46_47.$set($t45_46);
 425          $t47_48 = (v >> BigInt(32));
 426          $t48_49 = (Number($t47_48) & 0xFF);
 427          $t49_50 = b.addr(3);
 428          $t49_50.$set($t48_49);
 429          $t50_51 = (v >> BigInt(24));
 430          $t51_52 = (Number($t50_51) & 0xFF);
 431          $t52_53 = b.addr(4);
 432          $t52_53.$set($t51_52);
 433          $t53_54 = (v >> BigInt(16));
 434          $t54_55 = (Number($t53_54) & 0xFF);
 435          $t55_56 = b.addr(5);
 436          $t55_56.$set($t54_55);
 437          $t56_57 = (v >> BigInt(8));
 438          $t57_58 = (Number($t56_57) & 0xFF);
 439          $t58_59 = b.addr(6);
 440          $t58_59.$set($t57_58);
 441          $t59_60 = (Number(v) & 0xFF);
 442          $t60_61 = b.addr(7);
 443          $t60_61.$set($t59_60);
 444          return [8, null];
 445          break;
 446        }
 447      }
 448    }
 449  }
 450  
 451  export function appendQuicVec(dst, data) {
 452    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
 453    let $block = 0;
 454    while (true) {
 455      switch ($block) {
 456        case 0: {
 457          $t0_1 = { $value: $rt.builtin.makeSlice(8, 8, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 458          $t1_2 = $rt.builtin.len(data);
 459          $t2_3 = BigInt.asUintN(64, BigInt($t1_2));
 460          $t3_4 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
 461          $t4_5 = EncodeVarint($t2_3, $t3_4);
 462          $t5_6 = $t4_5[0];
 463          $t6_7 = $t4_5[1];
 464          $t7_8 = ($t6_7 !== null);
 465          if ($t7_8) {
 466            $block = 1; break;
 467          }
 468          else {
 469            $block = 2; break;
 470          }
 471          break;
 472        }
 473        case 1: {
 474          $t8_9 = $rt.types.methodCall($t6_7, 'Error', []);
 475          $t9_10 = ('marmot: appendQuicVec: ' + $t8_9);
 476          $t10_11 = $rt.types.makeInterface('string', $t9_10);
 477          $rt.runtime.panic($t10_11);
 478          break;
 479        }
 480        case 2: {
 481          $t11_12 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, $t5_6, undefined);
 482          $t12_13 = $rt.builtin.appendSlice(dst, $t11_12);
 483          $t13_14 = $rt.builtin.appendSlice($t12_13, data);
 484          return $t13_14;
 485          break;
 486        }
 487      }
 488    }
 489  }
 490  
 491  export function readQuicVec(data) {
 492    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
 493    let $block = 0;
 494    while (true) {
 495      switch ($block) {
 496        case 0: {
 497          $t0_1 = DecodeVarint(data);
 498          $t1_2 = $t0_1[0];
 499          $t2_3 = $t0_1[1];
 500          $t3_4 = $t0_1[2];
 501          $t4_5 = ($t3_4 !== null);
 502          if ($t4_5) {
 503            $block = 1; break;
 504          }
 505          else {
 506            $block = 2; break;
 507          }
 508          break;
 509        }
 510        case 1: {
 511          return [null, null, $t3_4];
 512          break;
 513        }
 514        case 2: {
 515          $t5_6 = ($t1_2 > 2147483647n);
 516          if ($t5_6) {
 517            $block = 3; break;
 518          }
 519          else {
 520            $block = 4; break;
 521          }
 522          break;
 523        }
 524        case 3: {
 525          $t6_7 = errors.New('marmot: varint length exceeds int32');
 526          return [null, null, $t6_7];
 527          break;
 528        }
 529        case 4: {
 530          $t7_8 = Number($t1_2);
 531          $t8_9 = $rt.builtin.sliceSlice(data, $t2_3, undefined, undefined);
 532          $t9_10 = $rt.builtin.len($t8_9);
 533          $t10_11 = ($t9_10 < $t7_8);
 534          if ($t10_11) {
 535            $block = 5; break;
 536          }
 537          else {
 538            $block = 6; break;
 539          }
 540          break;
 541        }
 542        case 5: {
 543          $t11_12 = errors.New('marmot: data too short');
 544          return [null, null, $t11_12];
 545          break;
 546        }
 547        case 6: {
 548          $t12_13 = $rt.builtin.sliceSlice($t8_9, undefined, $t7_8, undefined);
 549          $t13_14 = $rt.builtin.sliceSlice($t8_9, $t7_8, undefined, undefined);
 550          return [$t12_13, $t13_14, null];
 551          break;
 552        }
 553      }
 554    }
 555  }
 556  
 557  export function NewNostrGroupData(name, adminPub, relays) {
 558    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
 559    $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 560    $t1_2 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
 561    $t2_3 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t1_2);
 562    $t3_4 = { $value: { Version: 0, NostrGroupID: $rt.builtin.makeSlice(32, 32, 0), Name: '', Description: '', AdminPubkeys: null, Relays: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 563    $t4_5 = { $get() { return $t3_4.$get().Version; }, $set(v) { const obj = $t3_4.$get(); obj.Version = v; $t3_4.$set(obj); } };
 564    $t5_6 = { $get() { return $t3_4.$get().NostrGroupID; }, $set(v) { const obj = $t3_4.$get(); obj.NostrGroupID = v; $t3_4.$set(obj); } };
 565    $t6_7 = $t0_1.$get();
 566    $t7_8 = { $get() { return $t3_4.$get().Name; }, $set(v) { const obj = $t3_4.$get(); obj.Name = v; $t3_4.$set(obj); } };
 567    $t8_9 = { $get() { return $t3_4.$get().AdminPubkeys; }, $set(v) { const obj = $t3_4.$get(); obj.AdminPubkeys = v; $t3_4.$set(obj); } };
 568    $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 569    $t10_11 = $t9_10.$get().addr(0);
 570    $t10_11.$set(adminPub);
 571    $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
 572    $t12_13 = { $get() { return $t3_4.$get().Relays; }, $set(v) { const obj = $t3_4.$get(); obj.Relays = v; $t3_4.$set(obj); } };
 573    $t4_5.$set(2);
 574    $t5_6.$set($rt.builtin.cloneValue($t6_7));
 575    $t7_8.$set(name);
 576    $t8_9.$set($t11_12);
 577    $t12_13.$set(relays);
 578    return $t3_4;
 579  }
 580  
 581  export function UnmarshalNostrGroupData(data) {
 582    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90;
 583    let $block = 0;
 584    while (true) {
 585      switch ($block) {
 586        case 0: {
 587          $t0_1 = $rt.builtin.len(data);
 588          $t1_2 = ($t0_1 < 34);
 589          if ($t1_2) {
 590            $block = 1; break;
 591          }
 592          else {
 593            $block = 2; break;
 594          }
 595          break;
 596        }
 597        case 1: {
 598          $t2_3 = errors.New('marmot: extension data too short');
 599          return [null, $t2_3];
 600          break;
 601        }
 602        case 2: {
 603          $t3_4 = { $value: { Version: 0, NostrGroupID: $rt.builtin.makeSlice(32, 32, 0), Name: '', Description: '', AdminPubkeys: null, Relays: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 604          $t4_5 = data.addr(0);
 605          $t5_6 = $t4_5.$get();
 606          $t6_7 = ($t5_6 & 0xFFFF);
 607          $t7_8 = (($t6_7 << 8) & 0xFFFF);
 608          $t8_9 = data.addr(1);
 609          $t9_10 = $t8_9.$get();
 610          $t10_11 = ($t9_10 & 0xFFFF);
 611          $t11_12 = (($t7_8 + $t10_11) & 0xFFFF);
 612          $t12_13 = { $get() { return $t3_4.$get().Version; }, $set(v) { const obj = $t3_4.$get(); obj.Version = v; $t3_4.$set(obj); } };
 613          $t12_13.$set($t11_12);
 614          $t13_14 = { $get() { return $t3_4.$get().NostrGroupID; }, $set(v) { const obj = $t3_4.$get(); obj.NostrGroupID = v; $t3_4.$set(obj); } };
 615          $t14_15 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
 616          $t15_16 = $rt.builtin.sliceSlice(data, 2, 34, undefined);
 617          $t16_17 = $rt.builtin.copy($t14_15, $t15_16);
 618          $t17_18 = $rt.builtin.sliceSlice(data, 34, undefined, undefined);
 619          $t18_19 = readQuicVec($t17_18);
 620          $t19_20 = $t18_19[0];
 621          $t20_21 = $t18_19[1];
 622          $t21_22 = $t18_19[2];
 623          $t22_23 = ($t21_22 !== null);
 624          if ($t22_23) {
 625            $block = 3; break;
 626          }
 627          else {
 628            $block = 4; break;
 629          }
 630          break;
 631        }
 632        case 3: {
 633          $t23_24 = $rt.types.methodCall($t21_22, 'Error', []);
 634          $t24_25 = ('marmot: read name: ' + $t23_24);
 635          $t25_26 = errors.New($t24_25);
 636          return [null, $t25_26];
 637          break;
 638        }
 639        case 4: {
 640          $t26_27 = { $get() { return $t3_4.$get().Name; }, $set(v) { const obj = $t3_4.$get(); obj.Name = v; $t3_4.$set(obj); } };
 641          $t26_27.$set($t19_20);
 642          $t27_28 = readQuicVec($t20_21);
 643          $t28_29 = $t27_28[0];
 644          $t29_30 = $t27_28[1];
 645          $t30_31 = $t27_28[2];
 646          $t31_32 = ($t30_31 !== null);
 647          if ($t31_32) {
 648            $block = 5; break;
 649          }
 650          else {
 651            $block = 6; break;
 652          }
 653          break;
 654        }
 655        case 5: {
 656          $t32_33 = $rt.types.methodCall($t30_31, 'Error', []);
 657          $t33_34 = ('marmot: read description: ' + $t32_33);
 658          $t34_35 = errors.New($t33_34);
 659          return [null, $t34_35];
 660          break;
 661        }
 662        case 6: {
 663          $t35_36 = { $get() { return $t3_4.$get().Description; }, $set(v) { const obj = $t3_4.$get(); obj.Description = v; $t3_4.$set(obj); } };
 664          $t35_36.$set($t28_29);
 665          $t36_37 = readQuicVec($t29_30);
 666          $t37_38 = $t36_37[0];
 667          $t38_39 = $t36_37[1];
 668          $t39_40 = $t36_37[2];
 669          $t40_41 = ($t39_40 !== null);
 670          if ($t40_41) {
 671            $block = 7; break;
 672          }
 673          else {
 674            $block = 8; break;
 675          }
 676          break;
 677        }
 678        case 7: {
 679          $t41_42 = $rt.types.methodCall($t39_40, 'Error', []);
 680          $t42_43 = ('marmot: read admin_pubkeys: ' + $t41_42);
 681          $t43_44 = errors.New($t42_43);
 682          return [null, $t43_44];
 683          break;
 684        }
 685        case 8: {
 686          $t44_45 = $rt.builtin.len($t37_38);
 687          $t45_46 = ($t44_45 % 32);
 688          $t46_47 = ($t45_46 !== 0);
 689          if ($t46_47) {
 690            $block = 9; break;
 691          }
 692          else {
 693            $block = 10; break;
 694          }
 695          break;
 696        }
 697        case 9: {
 698          $t47_48 = errors.New('marmot: admin_pubkeys length not multiple of 32');
 699          return [null, $t47_48];
 700          break;
 701        }
 702        case 10: {
 703          $t48_49 = 0;
 704          $block = 11; break;
 705          break;
 706        }
 707        case 11: {
 708          $t49_50 = $rt.builtin.len($t37_38);
 709          $t50_51 = ($t48_49 < $t49_50);
 710          if ($t50_51) {
 711            $block = 12; break;
 712          }
 713          else {
 714            $block = 13; break;
 715          }
 716          break;
 717        }
 718        case 12: {
 719          $t51_52 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 720          $t52_53 = $rt.builtin.sliceSlice($t51_52.$get(), undefined, 32, undefined);
 721          $t53_54 = ($t48_49 + 32);
 722          $t54_55 = $rt.builtin.sliceSlice($t37_38, $t48_49, $t53_54, undefined);
 723          $t55_56 = $rt.builtin.copy($t52_53, $t54_55);
 724          $t56_57 = { $get() { return $t3_4.$get().AdminPubkeys; }, $set(v) { const obj = $t3_4.$get(); obj.AdminPubkeys = v; $t3_4.$set(obj); } };
 725          $t57_58 = $t56_57.$get();
 726          $t58_59 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 727          $t59_60 = $t58_59.$get().addr(0);
 728          $t59_60.$set($t52_53);
 729          $t60_61 = $rt.builtin.sliceSlice($t58_59.$get(), undefined, undefined, undefined);
 730          $t61_62 = $rt.builtin.appendSlice($t57_58, $t60_61);
 731          $t62_63 = { $get() { return $t3_4.$get().AdminPubkeys; }, $set(v) { const obj = $t3_4.$get(); obj.AdminPubkeys = v; $t3_4.$set(obj); } };
 732          $t62_63.$set($t61_62);
 733          $t63_64 = ($t48_49 + 32);
 734          $t48_49 = $t63_64;
 735          $block = 11; break;
 736          break;
 737        }
 738        case 13: {
 739          $t64_65 = readQuicVec($t38_39);
 740          $t65_66 = $t64_65[0];
 741          $t66_67 = $t64_65[1];
 742          $t67_68 = $t64_65[2];
 743          $t68_69 = ($t67_68 !== null);
 744          if ($t68_69) {
 745            $block = 14; break;
 746          }
 747          else {
 748            $t77_78 = $t65_66;
 749            $block = 17; break;
 750          }
 751          break;
 752        }
 753        case 14: {
 754          $t69_70 = $rt.types.methodCall($t67_68, 'Error', []);
 755          $t70_71 = ('marmot: read relays: ' + $t69_70);
 756          $t71_72 = errors.New($t70_71);
 757          return [null, $t71_72];
 758          break;
 759        }
 760        case 15: {
 761          $t72_73 = readQuicVec($t77_78);
 762          $t73_74 = $t72_73[0];
 763          $t74_75 = $t72_73[1];
 764          $t75_76 = $t72_73[2];
 765          $t76_77 = ($t75_76 !== null);
 766          if ($t76_77) {
 767            $block = 18; break;
 768          }
 769          else {
 770            $block = 19; break;
 771          }
 772          break;
 773        }
 774        case 16: {
 775          return [$t3_4, null];
 776          break;
 777        }
 778        case 17: {
 779          $t78_79 = $rt.builtin.len($t77_78);
 780          $t79_80 = ($t78_79 > 0);
 781          if ($t79_80) {
 782            $block = 15; break;
 783          }
 784          else {
 785            $block = 16; break;
 786          }
 787          break;
 788        }
 789        case 18: {
 790          $t80_81 = $rt.types.methodCall($t75_76, 'Error', []);
 791          $t81_82 = ('marmot: read relay url: ' + $t80_81);
 792          $t82_83 = errors.New($t81_82);
 793          return [null, $t82_83];
 794          break;
 795        }
 796        case 19: {
 797          $t83_84 = { $get() { return $t3_4.$get().Relays; }, $set(v) { const obj = $t3_4.$get(); obj.Relays = v; $t3_4.$set(obj); } };
 798          $t84_85 = $t83_84.$get();
 799          $t85_86 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 800          $t86_87 = $t85_86.$get().addr(0);
 801          $t86_87.$set($t73_74);
 802          $t87_88 = $rt.builtin.sliceSlice($t85_86.$get(), undefined, undefined, undefined);
 803          $t88_89 = $rt.builtin.appendSlice($t84_85, $t87_88);
 804          $t89_90 = { $get() { return $t3_4.$get().Relays; }, $set(v) { const obj = $t3_4.$get(); obj.Relays = v; $t3_4.$set(obj); } };
 805          $t89_90.$set($t88_89);
 806          $t77_78 = $t74_75;
 807          $block = 17; break;
 808          break;
 809        }
 810      }
 811    }
 812  }
 813  
 814  export function DMGroupID(pubA, pubB) {
 815    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
 816    let $block = 0;
 817    while (true) {
 818      switch ($block) {
 819        case 0: {
 820          $t0_1 = bytesLess(pubA, pubB);
 821          if ($t0_1) {
 822            $block = 1; break;
 823          }
 824          else {
 825            $block = 3; break;
 826          }
 827          break;
 828        }
 829        case 1: {
 830          $t1_2 = pubA;
 831          $t2_3 = pubB;
 832          $block = 2; break;
 833          break;
 834        }
 835        case 2: {
 836          $t3_4 = $rt.builtin.len($t1_2);
 837          $t4_5 = $rt.builtin.len($t2_3);
 838          $t5_6 = ($t3_4 + $t4_5);
 839          $t6_7 = $rt.builtin.makeSlice(0, $t5_6, 0);
 840          $t7_8 = $rt.builtin.appendSlice($t6_7, $t1_2);
 841          $t8_9 = $rt.builtin.appendSlice($t7_8, $t2_3);
 842          $t9_10 = smesh$lol$web$common$jsbridge$schnorr.SHA256Sum($t8_9);
 843          return $t9_10;
 844          break;
 845        }
 846        case 3: {
 847          $t1_2 = pubB;
 848          $t2_3 = pubA;
 849          $block = 2; break;
 850          break;
 851        }
 852      }
 853    }
 854  }
 855  
 856  export function bytesLess(a, b) {
 857    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
 858    let $block = 0;
 859    while (true) {
 860      switch ($block) {
 861        case 0: {
 862          $t0_1 = $rt.builtin.len(a);
 863          $t1_2 = $rt.builtin.len(b);
 864          $t2_3 = ($t1_2 < $t0_1);
 865          if ($t2_3) {
 866            $block = 1; break;
 867          }
 868          else {
 869            $t4_5 = $t0_1;
 870            $block = 2; break;
 871          }
 872          break;
 873        }
 874        case 1: {
 875          $t3_4 = $rt.builtin.len(b);
 876          $t4_5 = $t3_4;
 877          $block = 2; break;
 878          break;
 879        }
 880        case 2: {
 881          $t5_6 = 0;
 882          $block = 3; break;
 883          break;
 884        }
 885        case 3: {
 886          $t6_7 = ($t5_6 < $t4_5);
 887          if ($t6_7) {
 888            $block = 4; break;
 889          }
 890          else {
 891            $block = 5; break;
 892          }
 893          break;
 894        }
 895        case 4: {
 896          $t7_8 = a.addr($t5_6);
 897          $t8_9 = $t7_8.$get();
 898          $t9_10 = b.addr($t5_6);
 899          $t10_11 = $t9_10.$get();
 900          $t11_12 = ($t8_9 !== $t10_11);
 901          if ($t11_12) {
 902            $block = 6; break;
 903          }
 904          else {
 905            $block = 7; break;
 906          }
 907          break;
 908        }
 909        case 5: {
 910          $t12_13 = $rt.builtin.len(a);
 911          $t13_14 = $rt.builtin.len(b);
 912          $t14_15 = ($t12_13 < $t13_14);
 913          return $t14_15;
 914          break;
 915        }
 916        case 6: {
 917          $t15_16 = a.addr($t5_6);
 918          $t16_17 = $t15_16.$get();
 919          $t17_18 = b.addr($t5_6);
 920          $t18_19 = $t17_18.$get();
 921          $t19_20 = ($t16_17 < $t18_19);
 922          return $t19_20;
 923          break;
 924        }
 925        case 7: {
 926          $t20_21 = ($t5_6 + 1);
 927          $t5_6 = $t20_21;
 928          $block = 3; break;
 929          break;
 930        }
 931      }
 932    }
 933  }
 934  
 935  export function GenerateKeyPackage(nostrPub, nowUnix) {
 936    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
 937    $t0_1 = smesh$lol$web$common$mls.NewBasicCredential(nostrPub);
 938    $t1_2 = { $value: { CapabilityExtensions: null, LeafExtensions: null, KeyPackageExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 939    $t2_3 = { $get() { return $t1_2.$get().CapabilityExtensions; }, $set(v) { const obj = $t1_2.$get(); obj.CapabilityExtensions = v; $t1_2.$set(obj); } };
 940    $t3_4 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 941    $t4_5 = $t3_4.$get().addr(0);
 942    $t4_5.$set(10);
 943    $t5_6 = $t3_4.$get().addr(1);
 944    $t5_6.$set(62190);
 945    $t6_7 = $rt.builtin.sliceSlice($t3_4.$get(), undefined, undefined, undefined);
 946    $t7_8 = { $get() { return $t1_2.$get().KeyPackageExtensions; }, $set(v) { const obj = $t1_2.$get(); obj.KeyPackageExtensions = v; $t1_2.$set(obj); } };
 947    $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, { extensionType: 0, extensionData: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 948    $t9_10 = $t8_9.$get().addr(0);
 949    $t10_11 = smesh$lol$web$common$mls.NewExtension(10, null);
 950    $t9_10.$set($rt.builtin.cloneValue($t10_11));
 951    $t11_12 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
 952    $t2_3.$set($t6_7);
 953    $t7_8.$set($t11_12);
 954    $t12_13 = smesh$lol$web$common$mls.GenerateKeyPairPackageWithOptions(3, $t0_1, $t1_2, nowUnix);
 955    $t13_14 = $t12_13[0];
 956    $t14_15 = $t12_13[1];
 957    return [$t13_14, $t14_15];
 958  }
 959  
 960  export function KeyPackageToEvent(kpp, seckey, nowUnix, relays) {
 961    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67;
 962    let $block = 0;
 963    while (true) {
 964      switch ($block) {
 965        case 0: {
 966          $t0_1 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
 967          $t1_2 = smesh$lol$web$common$mls.KeyPackage$RawBytes($t0_1);
 968          $t2_3 = smesh$lol$web$common$helpers.Base64Encode($t1_2);
 969          $t3_4 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
 970          $t4_5 = smesh$lol$web$common$mls.KeyPackage$GenerateRef($t3_4);
 971          $t5_6 = $t4_5[0];
 972          $t6_7 = $t4_5[1];
 973          $t7_8 = ($t6_7 !== null);
 974          if ($t7_8) {
 975            $block = 1; break;
 976          }
 977          else {
 978            $block = 2; break;
 979          }
 980          break;
 981        }
 982        case 1: {
 983          $t8_9 = $rt.types.methodCall($t6_7, 'Error', []);
 984          $t9_10 = ('marmot: generate key package ref: ' + $t8_9);
 985          $t10_11 = errors.New($t9_10);
 986          return [null, $t10_11];
 987          break;
 988        }
 989        case 2: {
 990          $t11_12 = $t5_6;
 991          $t12_13 = smesh$lol$web$common$helpers.HexEncode($t11_12);
 992          $t13_14 = { $value: $rt.builtin.makeSlice(5, 5, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 993          $t14_15 = $t13_14.$get().addr(0);
 994          $t15_16 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 995          $t16_17 = $t15_16.$get().addr(0);
 996          $t16_17.$set('mls_protocol_version');
 997          $t17_18 = $t15_16.$get().addr(1);
 998          $t17_18.$set('1.0');
 999          $t18_19 = $rt.builtin.sliceSlice($t15_16.$get(), undefined, undefined, undefined);
1000          $t14_15.$set($t18_19);
1001          $t19_20 = $t13_14.$get().addr(1);
1002          $t20_21 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1003          $t21_22 = $t20_21.$get().addr(0);
1004          $t21_22.$set('mls_ciphersuite');
1005          $t22_23 = $t20_21.$get().addr(1);
1006          $t22_23.$set('0x0003');
1007          $t23_24 = $rt.builtin.sliceSlice($t20_21.$get(), undefined, undefined, undefined);
1008          $t19_20.$set($t23_24);
1009          $t24_25 = $t13_14.$get().addr(2);
1010          $t25_26 = { $value: $rt.builtin.makeSlice(3, 3, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1011          $t26_27 = $t25_26.$get().addr(0);
1012          $t26_27.$set('mls_extensions');
1013          $t27_28 = $t25_26.$get().addr(1);
1014          $t27_28.$set('0x000a');
1015          $t28_29 = $t25_26.$get().addr(2);
1016          $t28_29.$set('0xf2ee');
1017          $t29_30 = $rt.builtin.sliceSlice($t25_26.$get(), undefined, undefined, undefined);
1018          $t24_25.$set($t29_30);
1019          $t30_31 = $t13_14.$get().addr(3);
1020          $t31_32 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1021          $t32_33 = $t31_32.$get().addr(0);
1022          $t32_33.$set('encoding');
1023          $t33_34 = $t31_32.$get().addr(1);
1024          $t33_34.$set('base64');
1025          $t34_35 = $rt.builtin.sliceSlice($t31_32.$get(), undefined, undefined, undefined);
1026          $t30_31.$set($t34_35);
1027          $t35_36 = $t13_14.$get().addr(4);
1028          $t36_37 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1029          $t37_38 = $t36_37.$get().addr(0);
1030          $t37_38.$set('i');
1031          $t38_39 = $t36_37.$get().addr(1);
1032          $t38_39.$set($t12_13);
1033          $t39_40 = $rt.builtin.sliceSlice($t36_37.$get(), undefined, undefined, undefined);
1034          $t35_36.$set($t39_40);
1035          $t40_41 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
1036          $t41_42 = $rt.builtin.len(relays);
1037          $t42_43 = ($t41_42 > 0);
1038          if ($t42_43) {
1039            $block = 3; break;
1040          }
1041          else {
1042            $t55_56 = $t40_41;
1043            $block = 4; break;
1044          }
1045          break;
1046        }
1047        case 3: {
1048          $t43_44 = $rt.builtin.len(relays);
1049          $t44_45 = ($t43_44 + 1);
1050          $t45_46 = $rt.builtin.makeSlice(0, $t44_45, '');
1051          $t46_47 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1052          $t47_48 = $t46_47.$get().addr(0);
1053          $t47_48.$set('relays');
1054          $t48_49 = $rt.builtin.sliceSlice($t46_47.$get(), undefined, undefined, undefined);
1055          $t49_50 = $rt.builtin.appendSlice($t45_46, $t48_49);
1056          $t50_51 = $rt.builtin.appendSlice($t49_50, relays);
1057          $t51_52 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1058          $t52_53 = $t51_52.$get().addr(0);
1059          $t52_53.$set($t50_51);
1060          $t53_54 = $rt.builtin.sliceSlice($t51_52.$get(), undefined, undefined, undefined);
1061          $t54_55 = $rt.builtin.appendSlice($t40_41, $t53_54);
1062          $t55_56 = $t54_55;
1063          $block = 4; break;
1064          break;
1065        }
1066        case 4: {
1067          $t56_57 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1068          $t57_58 = { $get() { return $t56_57.$get().CreatedAt; }, $set(v) { const obj = $t56_57.$get(); obj.CreatedAt = v; $t56_57.$set(obj); } };
1069          $t58_59 = { $get() { return $t56_57.$get().Kind; }, $set(v) { const obj = $t56_57.$get(); obj.Kind = v; $t56_57.$set(obj); } };
1070          $t59_60 = { $get() { return $t56_57.$get().Tags; }, $set(v) { const obj = $t56_57.$get(); obj.Tags = v; $t56_57.$set(obj); } };
1071          $t60_61 = { $get() { return $t56_57.$get().Content; }, $set(v) { const obj = $t56_57.$get(); obj.Content = v; $t56_57.$set(obj); } };
1072          $t57_58.$set(nowUnix);
1073          $t58_59.$set(443);
1074          $t59_60.$set($t55_56);
1075          $t60_61.$set($t2_3);
1076          $t61_62 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1077          $t62_63 = $rt.builtin.sliceSlice($t61_62.$get(), undefined, undefined, undefined);
1078          $t63_64 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t62_63);
1079          $t64_65 = $t61_62.$get();
1080          $t65_66 = smesh$lol$web$common$nostr.Event$Sign($t56_57, seckey, $t64_65);
1081          if ($t65_66) {
1082            $block = 6; break;
1083          }
1084          else {
1085            $block = 5; break;
1086          }
1087          break;
1088        }
1089        case 5: {
1090          $t66_67 = errors.New('marmot: sign key package event');
1091          return [null, $t66_67];
1092          break;
1093        }
1094        case 6: {
1095          return [$t56_57, null];
1096          break;
1097        }
1098      }
1099    }
1100  }
1101  
1102  export function EventToKeyPackage(ev) {
1103    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25;
1104    let $block = 0;
1105    while (true) {
1106      switch ($block) {
1107        case 0: {
1108          $t0_1 = { $get() { return ev.$get().Kind; }, $set(v) { const obj = ev.$get(); obj.Kind = v; ev.$set(obj); } };
1109          $t1_2 = $t0_1.$get();
1110          $t2_3 = ($t1_2 !== 443);
1111          if ($t2_3) {
1112            $block = 1; break;
1113          }
1114          else {
1115            $block = 2; break;
1116          }
1117          break;
1118        }
1119        case 1: {
1120          $t3_4 = errors.New('marmot: expected kind 443');
1121          return [null, $t3_4];
1122          break;
1123        }
1124        case 2: {
1125          $t4_5 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1126          $t5_6 = $t4_5.$get();
1127          $t6_7 = { $get() { return ev.$get().Tags; }, $set(v) { const obj = ev.$get(); obj.Tags = v; ev.$set(obj); } };
1128          $t7_8 = $t6_7.$get();
1129          $t8_9 = smesh$lol$web$common$nostr.Tags$GetFirst($t7_8, 'encoding');
1130          $t9_10 = ($t8_9 !== null);
1131          if ($t9_10) {
1132            $block = 5; break;
1133          }
1134          else {
1135            $t14_15 = $t5_6;
1136            $block = 4; break;
1137          }
1138          break;
1139        }
1140        case 3: {
1141          $t10_11 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1142          $t11_12 = $t10_11.$get();
1143          $t12_13 = smesh$lol$web$common$helpers.Base64Decode($t11_12);
1144          $t13_14 = $rt.builtin.stringEqual($t12_13, null);
1145          if ($t13_14) {
1146            $block = 6; break;
1147          }
1148          else {
1149            $block = 7; break;
1150          }
1151          break;
1152        }
1153        case 4: {
1154          $t15_16 = smesh$lol$web$common$mls.UnmarshalRawKeyPackage($t14_15);
1155          $t16_17 = $t15_16[0];
1156          $t17_18 = $t15_16[1];
1157          $t18_19 = ($t17_18 !== null);
1158          if ($t18_19) {
1159            $block = 8; break;
1160          }
1161          else {
1162            $block = 9; break;
1163          }
1164          break;
1165        }
1166        case 5: {
1167          $t19_20 = smesh$lol$web$common$nostr.Tag$Value($t8_9);
1168          $t20_21 = $rt.builtin.stringEqual($t19_20, 'base64');
1169          if ($t20_21) {
1170            $block = 3; break;
1171          }
1172          else {
1173            $t14_15 = $t5_6;
1174            $block = 4; break;
1175          }
1176          break;
1177        }
1178        case 6: {
1179          $t21_22 = errors.New('marmot: base64 decode key package');
1180          return [null, $t21_22];
1181          break;
1182        }
1183        case 7: {
1184          $t14_15 = $t12_13;
1185          $block = 4; break;
1186          break;
1187        }
1188        case 8: {
1189          $t22_23 = $rt.types.methodCall($t17_18, 'Error', []);
1190          $t23_24 = ('marmot: unmarshal key package: ' + $t22_23);
1191          $t24_25 = errors.New($t23_24);
1192          return [null, $t24_25];
1193          break;
1194        }
1195        case 9: {
1196          return [$t16_17, null];
1197          break;
1198        }
1199      }
1200    }
1201  }
1202  
1203  export function CreateDMGroup(selfKPP, peerKP, selfPub, peerPub, name, relays) {
1204    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52;
1205    let $block = 0;
1206    while (true) {
1207      switch ($block) {
1208        case 0: {
1209          $t0_1 = DMGroupID(selfPub, peerPub);
1210          $t1_2 = $t0_1;
1211          $t2_3 = NewNostrGroupData(name, selfPub, relays);
1212          $t3_4 = NostrGroupData$MarshalBytes($t2_3);
1213          $t4_5 = $t3_4[0];
1214          $t5_6 = $t3_4[1];
1215          $t6_7 = ($t5_6 !== null);
1216          if ($t6_7) {
1217            $block = 1; break;
1218          }
1219          else {
1220            $block = 2; break;
1221          }
1222          break;
1223        }
1224        case 1: {
1225          $t7_8 = $rt.types.methodCall($t5_6, 'Error', []);
1226          $t8_9 = ('marmot: marshal nostr group data: ' + $t7_8);
1227          $t9_10 = errors.New($t8_9);
1228          return [null, null, $t9_10];
1229          break;
1230        }
1231        case 2: {
1232          $t10_11 = smesh$lol$web$common$mls.NewExtension(62190, $t4_5);
1233          $t11_12 = { $value: { Extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1234          $t12_13 = { $get() { return $t11_12.$get().Extensions; }, $set(v) { const obj = $t11_12.$get(); obj.Extensions = v; $t11_12.$set(obj); } };
1235          $t13_14 = { $value: $rt.builtin.makeSlice(1, 1, { extensionType: 0, extensionData: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1236          $t14_15 = $t13_14.$get().addr(0);
1237          $t14_15.$set($rt.builtin.cloneValue($t10_11));
1238          $t15_16 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
1239          $t12_13.$set($t15_16);
1240          $t16_17 = smesh$lol$web$common$mls.CreateGroupWithOptions($t1_2, selfKPP, $t11_12);
1241          $t17_18 = $t16_17[0];
1242          $t18_19 = $t16_17[1];
1243          $t19_20 = ($t18_19 !== null);
1244          if ($t19_20) {
1245            $block = 3; break;
1246          }
1247          else {
1248            $block = 4; break;
1249          }
1250          break;
1251        }
1252        case 3: {
1253          $t20_21 = $rt.types.methodCall($t18_19, 'Error', []);
1254          $t21_22 = ('marmot: create group: ' + $t20_21);
1255          $t22_23 = errors.New($t21_22);
1256          return [null, null, $t22_23];
1257          break;
1258        }
1259        case 4: {
1260          $t23_24 = { $value: $rt.builtin.makeSlice(1, 1, { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1261          $t24_25 = $t23_24.$get().addr(0);
1262          $t25_26 = peerKP.$get();
1263          $t24_25.$set($rt.builtin.cloneValue($t25_26));
1264          $t26_27 = $rt.builtin.sliceSlice($t23_24.$get(), undefined, undefined, undefined);
1265          $t27_28 = smesh$lol$web$common$mls.Group$CreateWelcome($t17_18, $t26_27);
1266          $t28_29 = $t27_28[0];
1267          $t29_30 = $t27_28[1];
1268          $t30_31 = $t27_28[2];
1269          $t31_32 = ($t30_31 !== null);
1270          if ($t31_32) {
1271            $block = 5; break;
1272          }
1273          else {
1274            $block = 6; break;
1275          }
1276          break;
1277        }
1278        case 5: {
1279          $t32_33 = $rt.types.methodCall($t30_31, 'Error', []);
1280          $t33_34 = ('marmot: create welcome: ' + $t32_33);
1281          $t34_35 = errors.New($t33_34);
1282          return [null, null, $t34_35];
1283          break;
1284        }
1285        case 6: {
1286          $t35_36 = smesh$lol$web$common$mls.Group$UnmarshalAndProcessMessage($t17_18, $t29_30);
1287          $t36_37 = $t35_36[0];
1288          $t37_38 = $t35_36[1];
1289          $t38_39 = $t35_36[2];
1290          $t39_40 = ($t38_39 !== null);
1291          if ($t39_40) {
1292            $block = 7; break;
1293          }
1294          else {
1295            $block = 8; break;
1296          }
1297          break;
1298        }
1299        case 7: {
1300          $t40_41 = $rt.types.methodCall($t38_39, 'Error', []);
1301          $t41_42 = ('marmot: process own commit: ' + $t40_41);
1302          $t42_43 = errors.New($t41_42);
1303          return [null, null, $t42_43];
1304          break;
1305        }
1306        case 8: {
1307          $t43_44 = { $value: { Group: null, MLSGroupID: null, NostrGroupID: null, PeerPub: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1308          $t44_45 = { $get() { return $t43_44.$get().Group; }, $set(v) { const obj = $t43_44.$get(); obj.Group = v; $t43_44.$set(obj); } };
1309          $t45_46 = { $get() { return $t43_44.$get().MLSGroupID; }, $set(v) { const obj = $t43_44.$get(); obj.MLSGroupID = v; $t43_44.$set(obj); } };
1310          $t46_47 = smesh$lol$web$common$mls.Group$GroupID($t17_18);
1311          $t47_48 = $t46_47;
1312          $t48_49 = { $get() { return $t43_44.$get().NostrGroupID; }, $set(v) { const obj = $t43_44.$get(); obj.NostrGroupID = v; $t43_44.$set(obj); } };
1313          $t49_50 = { $get() { return $t2_3.$get().NostrGroupID; }, $set(v) { const obj = $t2_3.$get(); obj.NostrGroupID = v; $t2_3.$set(obj); } };
1314          $t50_51 = $rt.builtin.sliceSlice($t49_50.$get(), undefined, undefined, undefined);
1315          $t51_52 = { $get() { return $t43_44.$get().PeerPub; }, $set(v) { const obj = $t43_44.$get(); obj.PeerPub = v; $t43_44.$set(obj); } };
1316          $t44_45.$set($t17_18);
1317          $t45_46.$set($t47_48);
1318          $t48_49.$set($t50_51);
1319          $t51_52.$set(peerPub);
1320          return [$t43_44, $t28_29, null];
1321          break;
1322        }
1323      }
1324    }
1325  }
1326  
1327  export function JoinDMGroup(welcome, selfKPP, peerPub, nowUnix) {
1328    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
1329    let $block = 0;
1330    while (true) {
1331      switch ($block) {
1332        case 0: {
1333          $t0_1 = smesh$lol$web$common$mls.GroupFromWelcomeAt(welcome, selfKPP, nowUnix);
1334          $t1_2 = $t0_1[0];
1335          $t2_3 = $t0_1[1];
1336          $t3_4 = ($t2_3 !== null);
1337          if ($t3_4) {
1338            $block = 1; break;
1339          }
1340          else {
1341            $block = 2; break;
1342          }
1343          break;
1344        }
1345        case 1: {
1346          $t4_5 = $rt.types.methodCall($t2_3, 'Error', []);
1347          $t5_6 = ('marmot: join from welcome: ' + $t4_5);
1348          $t6_7 = errors.New($t5_6);
1349          return [null, $t6_7];
1350          break;
1351        }
1352        case 2: {
1353          $t7_8 = { $value: { Group: null, MLSGroupID: null, NostrGroupID: null, PeerPub: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1354          $t8_9 = { $get() { return $t7_8.$get().Group; }, $set(v) { const obj = $t7_8.$get(); obj.Group = v; $t7_8.$set(obj); } };
1355          $t9_10 = { $get() { return $t7_8.$get().MLSGroupID; }, $set(v) { const obj = $t7_8.$get(); obj.MLSGroupID = v; $t7_8.$set(obj); } };
1356          $t10_11 = smesh$lol$web$common$mls.Group$GroupID($t1_2);
1357          $t11_12 = $t10_11;
1358          $t12_13 = { $get() { return $t7_8.$get().PeerPub; }, $set(v) { const obj = $t7_8.$get(); obj.PeerPub = v; $t7_8.$set(obj); } };
1359          $t8_9.$set($t1_2);
1360          $t9_10.$set($t11_12);
1361          $t12_13.$set(peerPub);
1362          $t13_14 = smesh$lol$web$common$mls.Group$FindGroupContextExtension($t1_2, 62190);
1363          $t14_15 = !$rt.builtin.stringEqual($t13_14, null);
1364          if ($t14_15) {
1365            $block = 3; break;
1366          }
1367          else {
1368            $block = 4; break;
1369          }
1370          break;
1371        }
1372        case 3: {
1373          $t15_16 = UnmarshalNostrGroupData($t13_14);
1374          $t16_17 = $t15_16[0];
1375          $t17_18 = $t15_16[1];
1376          $t18_19 = ($t17_18 === null);
1377          if ($t18_19) {
1378            $block = 5; break;
1379          }
1380          else {
1381            $block = 4; break;
1382          }
1383          break;
1384        }
1385        case 4: {
1386          return [$t7_8, null];
1387          break;
1388        }
1389        case 5: {
1390          $t19_20 = { $get() { return $t16_17.$get().NostrGroupID; }, $set(v) { const obj = $t16_17.$get(); obj.NostrGroupID = v; $t16_17.$set(obj); } };
1391          $t20_21 = $rt.builtin.sliceSlice($t19_20.$get(), undefined, undefined, undefined);
1392          $t21_22 = { $get() { return $t7_8.$get().NostrGroupID; }, $set(v) { const obj = $t7_8.$get(); obj.NostrGroupID = v; $t7_8.$set(obj); } };
1393          $t21_22.$set($t20_21);
1394          $block = 4; break;
1395          break;
1396        }
1397      }
1398    }
1399  }
1400  
1401  export function WelcomeToRumor(welcome, senderPub, nowUnix, kpEventID, relays) {
1402    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42;
1403    let $block = 0;
1404    while (true) {
1405      switch ($block) {
1406        case 0: {
1407          $t0_1 = smesh$lol$web$common$mls.Welcome$Bytes(welcome);
1408          $t1_2 = smesh$lol$web$common$helpers.Base64Encode($t0_1);
1409          $t2_3 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1410          $t3_4 = $t2_3.$get().addr(0);
1411          $t4_5 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1412          $t5_6 = $t4_5.$get().addr(0);
1413          $t5_6.$set('encoding');
1414          $t6_7 = $t4_5.$get().addr(1);
1415          $t6_7.$set('base64');
1416          $t7_8 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
1417          $t3_4.$set($t7_8);
1418          $t8_9 = $rt.builtin.sliceSlice($t2_3.$get(), undefined, undefined, undefined);
1419          $t9_10 = !$rt.builtin.stringEqual(kpEventID, '');
1420          if ($t9_10) {
1421            $block = 1; break;
1422          }
1423          else {
1424            $t18_19 = $t8_9;
1425            $block = 2; break;
1426          }
1427          break;
1428        }
1429        case 1: {
1430          $t10_11 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1431          $t11_12 = $t10_11.$get().addr(0);
1432          $t11_12.$set('e');
1433          $t12_13 = $t10_11.$get().addr(1);
1434          $t12_13.$set(kpEventID);
1435          $t13_14 = $rt.builtin.sliceSlice($t10_11.$get(), undefined, undefined, undefined);
1436          $t14_15 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1437          $t15_16 = $t14_15.$get().addr(0);
1438          $t15_16.$set($t13_14);
1439          $t16_17 = $rt.builtin.sliceSlice($t14_15.$get(), undefined, undefined, undefined);
1440          $t17_18 = $rt.builtin.appendSlice($t8_9, $t16_17);
1441          $t18_19 = $t17_18;
1442          $block = 2; break;
1443          break;
1444        }
1445        case 2: {
1446          $t19_20 = $rt.builtin.len(relays);
1447          $t20_21 = ($t19_20 > 0);
1448          if ($t20_21) {
1449            $block = 3; break;
1450          }
1451          else {
1452            $t33_34 = $t18_19;
1453            $block = 4; break;
1454          }
1455          break;
1456        }
1457        case 3: {
1458          $t21_22 = $rt.builtin.len(relays);
1459          $t22_23 = ($t21_22 + 1);
1460          $t23_24 = $rt.builtin.makeSlice(0, $t22_23, '');
1461          $t24_25 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1462          $t25_26 = $t24_25.$get().addr(0);
1463          $t25_26.$set('relays');
1464          $t26_27 = $rt.builtin.sliceSlice($t24_25.$get(), undefined, undefined, undefined);
1465          $t27_28 = $rt.builtin.appendSlice($t23_24, $t26_27);
1466          $t28_29 = $rt.builtin.appendSlice($t27_28, relays);
1467          $t29_30 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1468          $t30_31 = $t29_30.$get().addr(0);
1469          $t30_31.$set($t28_29);
1470          $t31_32 = $rt.builtin.sliceSlice($t29_30.$get(), undefined, undefined, undefined);
1471          $t32_33 = $rt.builtin.appendSlice($t18_19, $t31_32);
1472          $t33_34 = $t32_33;
1473          $block = 4; break;
1474          break;
1475        }
1476        case 4: {
1477          $t34_35 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1478          $t35_36 = { $get() { return $t34_35.$get().PubKey; }, $set(v) { const obj = $t34_35.$get(); obj.PubKey = v; $t34_35.$set(obj); } };
1479          $t36_37 = smesh$lol$web$common$helpers.HexEncode(senderPub);
1480          $t37_38 = { $get() { return $t34_35.$get().CreatedAt; }, $set(v) { const obj = $t34_35.$get(); obj.CreatedAt = v; $t34_35.$set(obj); } };
1481          $t38_39 = { $get() { return $t34_35.$get().Kind; }, $set(v) { const obj = $t34_35.$get(); obj.Kind = v; $t34_35.$set(obj); } };
1482          $t39_40 = { $get() { return $t34_35.$get().Tags; }, $set(v) { const obj = $t34_35.$get(); obj.Tags = v; $t34_35.$set(obj); } };
1483          $t40_41 = { $get() { return $t34_35.$get().Content; }, $set(v) { const obj = $t34_35.$get(); obj.Content = v; $t34_35.$set(obj); } };
1484          $t35_36.$set($t36_37);
1485          $t37_38.$set(nowUnix);
1486          $t38_39.$set(444);
1487          $t39_40.$set($t33_34);
1488          $t40_41.$set($t1_2);
1489          $t41_42 = smesh$lol$web$common$nostr.Event$ComputeID($t34_35);
1490          return $t34_35;
1491          break;
1492        }
1493      }
1494    }
1495  }
1496  
1497  export function RumorToWelcome(ev) {
1498    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25;
1499    let $block = 0;
1500    while (true) {
1501      switch ($block) {
1502        case 0: {
1503          $t0_1 = { $get() { return ev.$get().Kind; }, $set(v) { const obj = ev.$get(); obj.Kind = v; ev.$set(obj); } };
1504          $t1_2 = $t0_1.$get();
1505          $t2_3 = ($t1_2 !== 444);
1506          if ($t2_3) {
1507            $block = 1; break;
1508          }
1509          else {
1510            $block = 2; break;
1511          }
1512          break;
1513        }
1514        case 1: {
1515          $t3_4 = errors.New('marmot: expected kind 444');
1516          return [null, $t3_4];
1517          break;
1518        }
1519        case 2: {
1520          $t4_5 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1521          $t5_6 = $t4_5.$get();
1522          $t6_7 = { $get() { return ev.$get().Tags; }, $set(v) { const obj = ev.$get(); obj.Tags = v; ev.$set(obj); } };
1523          $t7_8 = $t6_7.$get();
1524          $t8_9 = smesh$lol$web$common$nostr.Tags$GetFirst($t7_8, 'encoding');
1525          $t9_10 = ($t8_9 !== null);
1526          if ($t9_10) {
1527            $block = 5; break;
1528          }
1529          else {
1530            $t14_15 = $t5_6;
1531            $block = 4; break;
1532          }
1533          break;
1534        }
1535        case 3: {
1536          $t10_11 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1537          $t11_12 = $t10_11.$get();
1538          $t12_13 = smesh$lol$web$common$helpers.Base64Decode($t11_12);
1539          $t13_14 = $rt.builtin.stringEqual($t12_13, null);
1540          if ($t13_14) {
1541            $block = 6; break;
1542          }
1543          else {
1544            $block = 7; break;
1545          }
1546          break;
1547        }
1548        case 4: {
1549          $t15_16 = smesh$lol$web$common$mls.UnmarshalWelcome($t14_15);
1550          $t16_17 = $t15_16[0];
1551          $t17_18 = $t15_16[1];
1552          $t18_19 = ($t17_18 !== null);
1553          if ($t18_19) {
1554            $block = 8; break;
1555          }
1556          else {
1557            $block = 9; break;
1558          }
1559          break;
1560        }
1561        case 5: {
1562          $t19_20 = smesh$lol$web$common$nostr.Tag$Value($t8_9);
1563          $t20_21 = $rt.builtin.stringEqual($t19_20, 'base64');
1564          if ($t20_21) {
1565            $block = 3; break;
1566          }
1567          else {
1568            $t14_15 = $t5_6;
1569            $block = 4; break;
1570          }
1571          break;
1572        }
1573        case 6: {
1574          $t21_22 = errors.New('marmot: base64 decode welcome');
1575          return [null, $t21_22];
1576          break;
1577        }
1578        case 7: {
1579          $t14_15 = $t12_13;
1580          $block = 4; break;
1581          break;
1582        }
1583        case 8: {
1584          $t22_23 = $rt.types.methodCall($t17_18, 'Error', []);
1585          $t23_24 = ('marmot: unmarshal welcome: ' + $t22_23);
1586          $t24_25 = errors.New($t23_24);
1587          return [null, $t24_25];
1588          break;
1589        }
1590        case 9: {
1591          return [$t16_17, null];
1592          break;
1593        }
1594      }
1595    }
1596  }
1597  
1598  export function DeriveExporterSecret(group) {
1599    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
1600    $t0_1 = exporterLabel.$get();
1601    $t1_2 = exporterContext.$get();
1602    $t2_3 = smesh$lol$web$common$mls.Group$DeriveExporter(group, $t0_1, $t1_2, 32);
1603    $t3_4 = $t2_3[0];
1604    $t4_5 = $t2_3[1];
1605    return [$t3_4, $t4_5];
1606  }
1607  
1608  export function MessageToEvent(nostrGroupID, mlsCiphertext, exporterSecret, nowUnix) {
1609    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47;
1610    let $block = 0;
1611    while (true) {
1612      switch ($block) {
1613        case 0: {
1614          $t0_1 = $rt.builtin.len(exporterSecret);
1615          $t1_2 = ($t0_1 !== 32);
1616          if ($t1_2) {
1617            $block = 1; break;
1618          }
1619          else {
1620            $block = 2; break;
1621          }
1622          break;
1623        }
1624        case 1: {
1625          $t2_3 = errors.New('marmot: exporter secret must be 32 bytes');
1626          return [null, $t2_3];
1627          break;
1628        }
1629        case 2: {
1630          $t3_4 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1631          $t4_5 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1632          $t5_6 = $rt.builtin.sliceSlice($t3_4.$get(), undefined, undefined, undefined);
1633          $t6_7 = $rt.builtin.copy($t5_6, exporterSecret);
1634          $t7_8 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
1635          $t8_9 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t7_8);
1636          $t9_10 = $t3_4.$get();
1637          $t10_11 = $t4_5.$get();
1638          $t11_12 = smesh$lol$web$common$crypto$chacha20poly1305.Seal($t9_10, $t10_11, mlsCiphertext, null);
1639          $t12_13 = $rt.builtin.len($t11_12);
1640          $t13_14 = (12 + $t12_13);
1641          $t14_15 = $rt.builtin.makeSlice(0, $t13_14, 0);
1642          $t15_16 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
1643          $t16_17 = $rt.builtin.appendSlice($t14_15, $t15_16);
1644          $t17_18 = $rt.builtin.appendSlice($t16_17, $t11_12);
1645          $t18_19 = smesh$lol$web$common$helpers.Base64Encode($t17_18);
1646          $t19_20 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1647          $t20_21 = $rt.builtin.sliceSlice($t19_20.$get(), undefined, undefined, undefined);
1648          $t21_22 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t20_21);
1649          $t22_23 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1650          $t23_24 = { $get() { return $t22_23.$get().CreatedAt; }, $set(v) { const obj = $t22_23.$get(); obj.CreatedAt = v; $t22_23.$set(obj); } };
1651          $t24_25 = { $get() { return $t22_23.$get().Kind; }, $set(v) { const obj = $t22_23.$get(); obj.Kind = v; $t22_23.$set(obj); } };
1652          $t25_26 = { $get() { return $t22_23.$get().Tags; }, $set(v) { const obj = $t22_23.$get(); obj.Tags = v; $t22_23.$set(obj); } };
1653          $t26_27 = { $value: $rt.builtin.makeSlice(2, 2, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1654          $t27_28 = $t26_27.$get().addr(0);
1655          $t28_29 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1656          $t29_30 = $t28_29.$get().addr(0);
1657          $t29_30.$set('h');
1658          $t30_31 = $t28_29.$get().addr(1);
1659          $t31_32 = smesh$lol$web$common$helpers.HexEncode(nostrGroupID);
1660          $t30_31.$set($t31_32);
1661          $t32_33 = $rt.builtin.sliceSlice($t28_29.$get(), undefined, undefined, undefined);
1662          $t27_28.$set($t32_33);
1663          $t33_34 = $t26_27.$get().addr(1);
1664          $t34_35 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1665          $t35_36 = $t34_35.$get().addr(0);
1666          $t35_36.$set('encoding');
1667          $t36_37 = $t34_35.$get().addr(1);
1668          $t36_37.$set('base64');
1669          $t37_38 = $rt.builtin.sliceSlice($t34_35.$get(), undefined, undefined, undefined);
1670          $t33_34.$set($t37_38);
1671          $t38_39 = $rt.builtin.sliceSlice($t26_27.$get(), undefined, undefined, undefined);
1672          $t39_40 = { $get() { return $t22_23.$get().Content; }, $set(v) { const obj = $t22_23.$get(); obj.Content = v; $t22_23.$set(obj); } };
1673          $t23_24.$set(nowUnix);
1674          $t24_25.$set(445);
1675          $t25_26.$set($t38_39);
1676          $t39_40.$set($t18_19);
1677          $t40_41 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1678          $t41_42 = $rt.builtin.sliceSlice($t40_41.$get(), undefined, undefined, undefined);
1679          $t42_43 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t41_42);
1680          $t43_44 = $t19_20.$get();
1681          $t44_45 = $t40_41.$get();
1682          $t45_46 = smesh$lol$web$common$nostr.Event$Sign($t22_23, $t43_44, $t44_45);
1683          if ($t45_46) {
1684            $block = 4; break;
1685          }
1686          else {
1687            $block = 3; break;
1688          }
1689          break;
1690        }
1691        case 3: {
1692          $t46_47 = errors.New('marmot: sign group message');
1693          return [null, $t46_47];
1694          break;
1695        }
1696        case 4: {
1697          return [$t22_23, null];
1698          break;
1699        }
1700      }
1701    }
1702  }
1703  
1704  export function EventToMessage(ev, exporterSecret) {
1705    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38;
1706    let $block = 0;
1707    while (true) {
1708      switch ($block) {
1709        case 0: {
1710          $t0_1 = { $get() { return ev.$get().Kind; }, $set(v) { const obj = ev.$get(); obj.Kind = v; ev.$set(obj); } };
1711          $t1_2 = $t0_1.$get();
1712          $t2_3 = ($t1_2 !== 445);
1713          if ($t2_3) {
1714            $block = 1; break;
1715          }
1716          else {
1717            $block = 2; break;
1718          }
1719          break;
1720        }
1721        case 1: {
1722          $t3_4 = errors.New('marmot: expected kind 445');
1723          return [null, null, $t3_4];
1724          break;
1725        }
1726        case 2: {
1727          $t4_5 = $rt.builtin.len(exporterSecret);
1728          $t5_6 = ($t4_5 !== 32);
1729          if ($t5_6) {
1730            $block = 3; break;
1731          }
1732          else {
1733            $block = 4; break;
1734          }
1735          break;
1736        }
1737        case 3: {
1738          $t6_7 = errors.New('marmot: exporter secret must be 32 bytes');
1739          return [null, null, $t6_7];
1740          break;
1741        }
1742        case 4: {
1743          $t7_8 = { $get() { return ev.$get().Tags; }, $set(v) { const obj = ev.$get(); obj.Tags = v; ev.$set(obj); } };
1744          $t8_9 = $t7_8.$get();
1745          $t9_10 = smesh$lol$web$common$nostr.Tags$GetFirst($t8_9, 'h');
1746          $t10_11 = ($t9_10 === null);
1747          if ($t10_11) {
1748            $block = 5; break;
1749          }
1750          else {
1751            $block = 6; break;
1752          }
1753          break;
1754        }
1755        case 5: {
1756          $t11_12 = errors.New('marmot: missing \'h\' tag');
1757          return [null, null, $t11_12];
1758          break;
1759        }
1760        case 6: {
1761          $t12_13 = smesh$lol$web$common$nostr.Tag$Value($t9_10);
1762          $t13_14 = smesh$lol$web$common$helpers.HexDecode($t12_13);
1763          $t14_15 = $rt.builtin.stringEqual($t13_14, null);
1764          if ($t14_15) {
1765            $block = 7; break;
1766          }
1767          else {
1768            $block = 8; break;
1769          }
1770          break;
1771        }
1772        case 7: {
1773          $t15_16 = errors.New('marmot: decode group ID');
1774          return [null, null, $t15_16];
1775          break;
1776        }
1777        case 8: {
1778          $t16_17 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1779          $t17_18 = $t16_17.$get();
1780          $t18_19 = smesh$lol$web$common$helpers.Base64Decode($t17_18);
1781          $t19_20 = $rt.builtin.stringEqual($t18_19, null);
1782          if ($t19_20) {
1783            $block = 9; break;
1784          }
1785          else {
1786            $block = 10; break;
1787          }
1788          break;
1789        }
1790        case 9: {
1791          $t20_21 = errors.New('marmot: base64 decode content');
1792          return [null, null, $t20_21];
1793          break;
1794        }
1795        case 10: {
1796          $t21_22 = $rt.builtin.len($t18_19);
1797          $t22_23 = ($t21_22 < 12);
1798          if ($t22_23) {
1799            $block = 11; break;
1800          }
1801          else {
1802            $block = 12; break;
1803          }
1804          break;
1805        }
1806        case 11: {
1807          $t23_24 = errors.New('marmot: content too short');
1808          return [null, null, $t23_24];
1809          break;
1810        }
1811        case 12: {
1812          $t24_25 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1813          $t25_26 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1814          $t26_27 = $rt.builtin.sliceSlice($t24_25.$get(), undefined, undefined, undefined);
1815          $t27_28 = $rt.builtin.copy($t26_27, exporterSecret);
1816          $t28_29 = $rt.builtin.sliceSlice($t25_26.$get(), undefined, undefined, undefined);
1817          $t29_30 = $rt.builtin.sliceSlice($t18_19, undefined, 12, undefined);
1818          $t30_31 = $rt.builtin.copy($t28_29, $t29_30);
1819          $t31_32 = $t24_25.$get();
1820          $t32_33 = $t25_26.$get();
1821          $t33_34 = $rt.builtin.sliceSlice($t18_19, 12, undefined, undefined);
1822          $t34_35 = smesh$lol$web$common$crypto$chacha20poly1305.Open($t31_32, $t32_33, $t33_34, null);
1823          $t35_36 = $t34_35[0];
1824          $t36_37 = $t34_35[1];
1825          if ($t36_37) {
1826            $block = 14; break;
1827          }
1828          else {
1829            $block = 13; break;
1830          }
1831          break;
1832        }
1833        case 13: {
1834          $t37_38 = errors.New('marmot: chacha20poly1305 open failed');
1835          return [null, null, $t37_38];
1836          break;
1837        }
1838        case 14: {
1839          return [$t13_14, $t35_36, null];
1840          break;
1841        }
1842      }
1843    }
1844  }
1845  
1846  export function NostrGroupData$MarshalBytes(d) {
1847    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50;
1848    let $block = 0;
1849    while (true) {
1850      switch ($block) {
1851        case 0: {
1852          $t0_1 = { $get() { return d.$get().Version; }, $set(v) { const obj = d.$get(); obj.Version = v; d.$set(obj); } };
1853          $t1_2 = $t0_1.$get();
1854          $t2_3 = (($t1_2 & 0xFFFF) >> 8);
1855          $t3_4 = ($t2_3 & 0xFF);
1856          $t4_5 = { $get() { return d.$get().Version; }, $set(v) { const obj = d.$get(); obj.Version = v; d.$set(obj); } };
1857          $t5_6 = $t4_5.$get();
1858          $t6_7 = ($t5_6 & 0xFF);
1859          $t7_8 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1860          $t8_9 = $t7_8.$get().addr(0);
1861          $t8_9.$set($t3_4);
1862          $t9_10 = $t7_8.$get().addr(1);
1863          $t9_10.$set($t6_7);
1864          $t10_11 = $rt.builtin.sliceSlice($t7_8.$get(), undefined, undefined, undefined);
1865          $t11_12 = $rt.builtin.appendSlice(null, $t10_11);
1866          $t12_13 = { $get() { return d.$get().NostrGroupID; }, $set(v) { const obj = d.$get(); obj.NostrGroupID = v; d.$set(obj); } };
1867          $t13_14 = $rt.builtin.sliceSlice($t12_13.$get(), undefined, undefined, undefined);
1868          $t14_15 = $rt.builtin.appendSlice($t11_12, $t13_14);
1869          $t15_16 = { $get() { return d.$get().Name; }, $set(v) { const obj = d.$get(); obj.Name = v; d.$set(obj); } };
1870          $t16_17 = $t15_16.$get();
1871          $t17_18 = appendQuicVec($t14_15, $t16_17);
1872          $t18_19 = { $get() { return d.$get().Description; }, $set(v) { const obj = d.$get(); obj.Description = v; d.$set(obj); } };
1873          $t19_20 = $t18_19.$get();
1874          $t20_21 = appendQuicVec($t17_18, $t19_20);
1875          $t21_22 = { $get() { return d.$get().AdminPubkeys; }, $set(v) { const obj = d.$get(); obj.AdminPubkeys = v; d.$set(obj); } };
1876          $t22_23 = $t21_22.$get();
1877          $t23_24 = $rt.builtin.len($t22_23);
1878          $t24_25 = null;
1879          $t25_26 = -1;
1880          $block = 1; break;
1881          break;
1882        }
1883        case 1: {
1884          $t26_27 = ($t25_26 + 1);
1885          $t27_28 = ($t26_27 < $t23_24);
1886          if ($t27_28) {
1887            $block = 2; break;
1888          }
1889          else {
1890            $block = 3; break;
1891          }
1892          break;
1893        }
1894        case 2: {
1895          $t28_29 = $t22_23.addr($t26_27);
1896          $t29_30 = $t28_29.$get();
1897          $t30_31 = $rt.builtin.len($t29_30);
1898          $t31_32 = ($t30_31 !== 32);
1899          if ($t31_32) {
1900            $block = 4; break;
1901          }
1902          else {
1903            $block = 5; break;
1904          }
1905          break;
1906        }
1907        case 3: {
1908          $t32_33 = appendQuicVec($t20_21, $t24_25);
1909          $t33_34 = { $get() { return d.$get().Relays; }, $set(v) { const obj = d.$get(); obj.Relays = v; d.$set(obj); } };
1910          $t34_35 = $t33_34.$get();
1911          $t35_36 = $rt.builtin.len($t34_35);
1912          $t38_39 = null;
1913          $t39_40 = -1;
1914          $block = 6; break;
1915          break;
1916        }
1917        case 4: {
1918          $t36_37 = errors.New('marmot: admin pubkey must be 32 bytes');
1919          return [null, $t36_37];
1920          break;
1921        }
1922        case 5: {
1923          $t37_38 = $rt.builtin.appendSlice($t24_25, $t29_30);
1924          $t24_25 = $t37_38;
1925          $t25_26 = $t26_27;
1926          $block = 1; break;
1927          break;
1928        }
1929        case 6: {
1930          $t40_41 = ($t39_40 + 1);
1931          $t41_42 = ($t40_41 < $t35_36);
1932          if ($t41_42) {
1933            $block = 7; break;
1934          }
1935          else {
1936            $block = 8; break;
1937          }
1938          break;
1939        }
1940        case 7: {
1941          $t42_43 = $t34_35.addr($t40_41);
1942          $t43_44 = $t42_43.$get();
1943          $t44_45 = appendQuicVec($t38_39, $t43_44);
1944          $t38_39 = $t44_45;
1945          $t39_40 = $t40_41;
1946          $block = 6; break;
1947          break;
1948        }
1949        case 8: {
1950          $t45_46 = appendQuicVec($t32_33, $t38_39);
1951          $t46_47 = appendQuicVec($t45_46, null);
1952          $t47_48 = appendQuicVec($t46_47, null);
1953          $t48_49 = appendQuicVec($t47_48, null);
1954          $t49_50 = appendQuicVec($t48_49, null);
1955          return [$t49_50, null];
1956          break;
1957        }
1958      }
1959    }
1960  }
1961  
1962  $rt.types.getType('smesh.lol/web/common/marmot.NostrGroupData')?.methods?.set('MarshalBytes', NostrGroupData$MarshalBytes);
1963