@dan-uni/dan-any 0.9.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.min.js CHANGED
@@ -8479,7 +8479,7 @@ var __webpack_modules__ = {
8479
8479
  function _isUint8Array(obj) {
8480
8480
  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
8481
8481
  }
8482
- var debugUtil = __webpack_require__("?14dd");
8482
+ var debugUtil = __webpack_require__("?8beb");
8483
8483
  var debug;
8484
8484
  debug = debugUtil && debugUtil.debuglog ? debugUtil.debuglog('stream') : function() {};
8485
8485
  var BufferList = __webpack_require__("../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/buffer_list.js");
@@ -9856,7 +9856,7 @@ var __webpack_modules__ = {
9856
9856
  return ("string" === hint ? String : Number)(input);
9857
9857
  }
9858
9858
  var _require = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js"), Buffer = _require.Buffer;
9859
- var _require2 = __webpack_require__("?fe28"), inspect = _require2.inspect;
9859
+ var _require2 = __webpack_require__("?c028"), inspect = _require2.inspect;
9860
9860
  var custom = inspect && inspect.custom || 'inspect';
9861
9861
  function copyBuffer(src, target, offset) {
9862
9862
  Buffer.prototype.copy.call(src, target, offset);
@@ -11414,8 +11414,8 @@ var __webpack_modules__ = {
11414
11414
  return tryTypedArrays(value);
11415
11415
  };
11416
11416
  },
11417
- "?fe28": function() {},
11418
- "?14dd": function() {},
11417
+ "?c028": function() {},
11418
+ "?8beb": function() {},
11419
11419
  "../../node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js": function(module, __unused_webpack_exports, __webpack_require__) {
11420
11420
  var possibleNames = __webpack_require__("../../node_modules/.pnpm/possible-typed-array-names@1.1.0/node_modules/possible-typed-array-names/index.js");
11421
11421
  var g = 'undefined' == typeof globalThis ? __webpack_require__.g : globalThis;
@@ -11495,11 +11495,11 @@ __webpack_require__.d(dm_gen_namespaceObject, {
11495
11495
  Pools: ()=>dm_gen_Pools,
11496
11496
  UniDM: ()=>UniDM
11497
11497
  });
11498
- var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"0.9.9","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
11498
+ var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"1.0.0","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
11499
11499
  const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
11500
11500
  const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
11501
11501
  const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
11502
- const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLCAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSEAoIcGxhdGZvcm0YDSABKAkSEgoFZXh0cmEYDiABKAlIAIgBAUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
11502
+ const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLUAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSFQoIcGxhdGZvcm0YDSABKAlIAIgBARISCgVleHRyYRgOIAEoCUgBiAEBQgsKCV9wbGF0Zm9ybUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
11503
11503
  file_google_protobuf_timestamp
11504
11504
  ]);
11505
11505
  const DanmakuReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_danuni, 2);
@@ -11745,6 +11745,7 @@ class UniDM {
11745
11745
  return this.options.dmid(this);
11746
11746
  }
11747
11747
  isSameAs(dan, options) {
11748
+ if (this === dan) return true;
11748
11749
  if (4 === this.mode || 4 === dan.mode) return false;
11749
11750
  if (!options?.skipDanuniMerge && (this.extra.danuni?.merge || dan.extra.danuni?.merge)) return false;
11750
11751
  const isSame = (k)=>this[k] === dan[k];
@@ -11758,26 +11759,22 @@ class UniDM {
11758
11759
  return checks;
11759
11760
  }
11760
11761
  minify() {
11761
- const def = UniDM.create();
11762
- const dan = UniDM.create(this);
11763
- const shouldKeep = (key, value)=>{
11764
- if ('SOID' === key) return true;
11765
- if (null == value) return false;
11766
- if (value === def[key]) return false;
11767
- if ('attr' === key && Array.isArray(value) && 0 === value.length) return false;
11768
- if ('extraStr' === key && '{}' === value) return false;
11769
- return true;
11770
- };
11762
+ const def = new UniDM();
11771
11763
  const result = {
11772
- SOID: dan.SOID
11773
- };
11774
- for (const key of Object.keys(dan)){
11775
- const value = dan[key];
11776
- if (shouldKeep(key, value)) {
11777
- if ('SOID' === key) continue;
11778
- Reflect.set(result, key, value);
11779
- }
11780
- }
11764
+ SOID: this.SOID
11765
+ };
11766
+ if (this.progress !== def.progress) result.progress = this.progress;
11767
+ if (this.mode !== def.mode) result.mode = this.mode;
11768
+ if (this.fontsize !== def.fontsize) result.fontsize = this.fontsize;
11769
+ if (this.color !== def.color) result.color = this.color;
11770
+ if (this.senderID !== def.senderID) result.senderID = this.senderID;
11771
+ if (this.content !== def.content) result.content = this.content;
11772
+ if (this.weight !== def.weight) result.weight = this.weight;
11773
+ if (this.pool !== def.pool) result.pool = this.pool;
11774
+ if (this.attr.length > 0) result.attr = this.attr;
11775
+ if (void 0 !== this.platform) result.platform = this.platform;
11776
+ if (this.extraStr && '{}' !== this.extraStr) result.extraStr = this.extraStr;
11777
+ if (void 0 !== this.DMID) result.DMID = this.DMID;
11781
11778
  return result;
11782
11779
  }
11783
11780
  downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
@@ -12329,46 +12326,91 @@ class UniPool {
12329
12326
  return fn(this);
12330
12327
  }
12331
12328
  get shared() {
12332
- const isShared = (key)=>this.dans.every((d)=>d[key]);
12333
- return {
12334
- SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
12335
- senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
12336
- platform: isShared('platform') ? this.dans[0].platform : void 0,
12337
- pool: isShared('pool') ? this.dans[0].pool : void 0,
12338
- mode: isShared('mode') ? this.dans[0].mode : void 0,
12339
- color: isShared('color') ? this.dans[0].color : void 0
12340
- };
12329
+ if (0 === this.dans.length) return {};
12330
+ const keys = [
12331
+ 'SOID',
12332
+ 'senderID',
12333
+ 'platform',
12334
+ 'pool',
12335
+ 'mode',
12336
+ 'color'
12337
+ ];
12338
+ const result = {};
12339
+ for (const key of keys){
12340
+ const sharedVal = this.getShared(key);
12341
+ if (void 0 !== sharedVal) result[key] = sharedVal;
12342
+ }
12343
+ return result;
12341
12344
  }
12342
12345
  getShared(key) {
12343
- const isShared = (key)=>this.dans.every((d)=>d[key]);
12344
- return isShared(key) ? this.dans[0][key] : void 0;
12346
+ if (0 === this.dans.length) return;
12347
+ const firstVal = this.dans[0][key];
12348
+ for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
12349
+ return firstVal;
12345
12350
  }
12346
12351
  getStat(key) {
12347
- const default_stat = [];
12348
- const stats = this.dans.reduce((stat, dan)=>{
12349
- const valWithCount = stat.find((i)=>i.val === dan[key]);
12350
- if (valWithCount) valWithCount.count++;
12351
- else stat.push({
12352
- val: dan[key],
12353
- count: 1
12354
- });
12355
- return stat;
12356
- }, default_stat);
12357
- return stats;
12352
+ const statMap = new Map();
12353
+ for (const dan of this.dans){
12354
+ const val = dan[key];
12355
+ statMap.set(val, (statMap.get(val) || 0) + 1);
12356
+ }
12357
+ return statMap;
12358
12358
  }
12359
12359
  getMost(key) {
12360
- return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
12360
+ const stats = this.getStat(key);
12361
+ if (0 === stats.size) return {
12362
+ val: void 0,
12363
+ count: 0
12364
+ };
12365
+ let mostVal;
12366
+ let maxCount = 0;
12367
+ for (const [val, count] of stats.entries())if (count > maxCount) {
12368
+ maxCount = count;
12369
+ mostVal = val;
12370
+ }
12371
+ return {
12372
+ val: mostVal,
12373
+ count: maxCount
12374
+ };
12361
12375
  }
12362
12376
  get most() {
12377
+ const keys = [
12378
+ 'mode',
12379
+ 'fontsize',
12380
+ 'color',
12381
+ 'senderID',
12382
+ 'content',
12383
+ 'weight',
12384
+ 'pool',
12385
+ 'platform'
12386
+ ];
12387
+ const statMaps = new Map();
12388
+ for (const dan of this.dans)for (const key of keys){
12389
+ if (!statMaps.has(key)) statMaps.set(key, new Map());
12390
+ const statMap = statMaps.get(key);
12391
+ const val = dan[key];
12392
+ statMap.set(val, (statMap.get(val) || 0) + 1);
12393
+ }
12394
+ const result = {};
12395
+ for (const key of keys){
12396
+ const statMap = statMaps.get(key);
12397
+ let mostVal;
12398
+ let maxCount = 0;
12399
+ for (const [val, count] of statMap.entries())if (count > maxCount) {
12400
+ maxCount = count;
12401
+ mostVal = val;
12402
+ }
12403
+ result[key] = mostVal;
12404
+ }
12363
12405
  return {
12364
- mode: this.getMost('mode').val,
12365
- fontsize: this.getMost('fontsize').val,
12366
- color: this.getMost('color').val,
12367
- senderID: this.getMost('senderID').val,
12368
- content: this.getMost('content').val,
12369
- weight: this.getMost('weight').val,
12370
- pool: this.getMost('pool').val,
12371
- platform: this.getMost('platform').val
12406
+ mode: result.mode,
12407
+ fontsize: result.fontsize,
12408
+ color: result.color,
12409
+ senderID: result.senderID,
12410
+ content: result.content,
12411
+ weight: result.weight,
12412
+ pool: result.pool,
12413
+ platform: result.platform
12372
12414
  };
12373
12415
  }
12374
12416
  static create(options) {
@@ -12396,7 +12438,7 @@ class UniPool {
12396
12438
  return this;
12397
12439
  }
12398
12440
  split(key) {
12399
- if (this.shared[key]) return [
12441
+ if (this.getShared(key)) return [
12400
12442
  this
12401
12443
  ];
12402
12444
  const set = new Set(this.dans.map((d)=>d[key]));
@@ -12418,44 +12460,27 @@ class UniPool {
12418
12460
  this.options.dedupe = false;
12419
12461
  }
12420
12462
  merge(lifetime = 0) {
12421
- if (!this.shared.SOID) {
12463
+ if (!this.getShared('SOID')) {
12422
12464
  console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
12423
12465
  return this;
12424
12466
  }
12425
12467
  if (lifetime <= 0) return this;
12426
- const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
12427
- const key = [
12428
- 'content',
12429
- 'mode',
12430
- 'pool',
12431
- 'platform'
12432
- ].map((k)=>danmaku[k]).join('|');
12468
+ const result = [];
12469
+ const cache = {};
12470
+ const mergeObj = {};
12471
+ for (const danmaku of this.dans){
12472
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
12433
12473
  const cached = cache[key];
12434
- const lastAppearTime = cached?.progress || 0;
12435
- if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
12474
+ if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
12436
12475
  skipDanuniMerge: true
12437
12476
  })) {
12438
- const senders = mergeObj[key].senders;
12439
- senders.push(danmaku.senderID);
12440
- const extra = danmaku.extra;
12441
- extra.danuni = extra.danuni || {};
12442
- extra.danuni.merge = {
12443
- count: senders.length,
12444
- duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
12445
- senders,
12446
- taolu_count: senders.length,
12447
- taolu_senders: senders
12448
- };
12449
- danmaku.extraStr = src_JSON.stringify(extra);
12477
+ mergeObj[key].senders.push(danmaku.senderID);
12478
+ mergeObj[key].count = mergeObj[key].senders.length;
12479
+ mergeObj[key].taolu_count = mergeObj[key].count;
12480
+ mergeObj[key].taolu_senders = mergeObj[key].senders;
12481
+ mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
12450
12482
  cache[key] = danmaku;
12451
- mergeObj[key] = extra.danuni.merge;
12452
- return [
12453
- result,
12454
- cache,
12455
- mergeObj
12456
- ];
12457
- }
12458
- {
12483
+ } else {
12459
12484
  mergeObj[key] = {
12460
12485
  count: 1,
12461
12486
  duration: 0,
@@ -12468,55 +12493,31 @@ class UniPool {
12468
12493
  ]
12469
12494
  };
12470
12495
  cache[key] = danmaku;
12471
- const extra = danmaku.extra;
12472
- extra.danuni = extra.danuni || {};
12473
- extra.danuni.merge = mergeObj[key];
12474
- danmaku.extraStr = src_JSON.stringify(extra);
12475
12496
  result.push(danmaku);
12476
- return [
12477
- result,
12478
- cache,
12479
- mergeObj
12480
- ];
12481
12497
  }
12482
- }, [
12483
- [],
12484
- {},
12485
- {}
12486
- ]);
12487
- const [result, _cache, mergeObj] = mergeContext;
12488
- result.forEach((danmaku, i)=>{
12489
- const key = [
12490
- 'content',
12491
- 'mode',
12492
- 'platform',
12493
- 'pool'
12494
- ].map((k)=>danmaku[k]).join('|');
12495
- const extra = result[i].extra;
12498
+ }
12499
+ for (const danmaku of result){
12500
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
12496
12501
  const mergeData = mergeObj[key];
12497
- result[i].extraStr = src_JSON.stringify({
12498
- ...extra,
12499
- danuni: {
12500
- ...extra.danuni,
12501
- merge: mergeData
12502
- }
12503
- });
12504
- if (mergeData?.count) if (mergeData.count <= 1) {
12505
- const updatedExtra = {
12506
- ...extra
12507
- };
12508
- if (updatedExtra.danuni) {
12509
- delete updatedExtra.danuni.merge;
12510
- if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
12511
- }
12512
- result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON.stringify(updatedExtra) : void 0;
12513
- } else {
12514
- result[i].senderID = 'merge[bot]@dan-any';
12515
- result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
12502
+ const extra = danmaku.extra;
12503
+ if (mergeData.count > 1) {
12504
+ danmaku.senderID = 'merge[bot]@dan-any';
12505
+ if (danmaku.attr) {
12506
+ if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
12507
+ } else danmaku.attr = [
12516
12508
  dm_gen_DMAttr.Protect
12517
12509
  ];
12510
+ extra.danuni = extra.danuni || {};
12511
+ extra.danuni.merge = mergeData;
12512
+ danmaku.extraStr = src_JSON.stringify(extra);
12513
+ } else {
12514
+ if (extra.danuni?.merge) {
12515
+ delete extra.danuni.merge;
12516
+ if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
12517
+ }
12518
+ danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON.stringify(extra) : void 0;
12518
12519
  }
12519
- });
12520
+ }
12520
12521
  return new UniPool(result, this.options, this.info);
12521
12522
  }
12522
12523
  minify() {
@@ -12539,7 +12540,7 @@ class UniPool {
12539
12540
  pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
12540
12541
  fmt: 'artplayer.json'
12541
12542
  };
12542
- if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
12543
+ if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
12543
12544
  pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
12544
12545
  fmt: 'ddplay.json'
12545
12546
  };
@@ -12718,7 +12719,7 @@ class UniPool {
12718
12719
  source: 'k-v',
12719
12720
  danuni: {
12720
12721
  ...DanUniConvertTipTemplate,
12721
- data: this.shared.SOID
12722
+ data: this.getShared('SOID')
12722
12723
  },
12723
12724
  d: this.dans.map((dan)=>dan.toBiliXML(options))
12724
12725
  }
@@ -12857,7 +12858,7 @@ class UniPool {
12857
12858
  substyle: {}
12858
12859
  };
12859
12860
  const finalOptions = options ?? defaultOptions;
12860
- const fn = this.shared.SOID;
12861
+ const fn = this.getShared('SOID');
12861
12862
  return generateASS(this, {
12862
12863
  filename: fn,
12863
12864
  title: fn,
@@ -13066,10 +13067,10 @@ const formatTime = (seconds)=>{
13066
13067
  return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
13067
13068
  };
13068
13069
  const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
13069
- const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
13070
- const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
13071
- const colorCommand = (color)=>`\\c${formatColor(color)}`;
13072
- const borderColorCommand = (color)=>`\\3c${formatColor(color)}`;
13070
+ const scrollCommand = ({ start, end, top })=>String.raw`\move(${start},${top},${end},${top})`;
13071
+ const fixCommand = ({ top, left })=>String.raw`\an8\pos(${left},${top})`;
13072
+ const colorCommand = (color)=>String.raw`\c${formatColor(color)}`;
13073
+ const borderColorCommand = (color)=>String.raw`\3c${formatColor(color)}`;
13073
13074
  const dialogue = (danmaku, config)=>{
13074
13075
  const { fontSizeType, content, time } = danmaku;
13075
13076
  const { scrollTime, fixTime } = config;
@@ -13336,46 +13337,91 @@ class src_UniPool {
13336
13337
  return fn(this);
13337
13338
  }
13338
13339
  get shared() {
13339
- const isShared = (key)=>this.dans.every((d)=>d[key]);
13340
- return {
13341
- SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
13342
- senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
13343
- platform: isShared('platform') ? this.dans[0].platform : void 0,
13344
- pool: isShared('pool') ? this.dans[0].pool : void 0,
13345
- mode: isShared('mode') ? this.dans[0].mode : void 0,
13346
- color: isShared('color') ? this.dans[0].color : void 0
13347
- };
13340
+ if (0 === this.dans.length) return {};
13341
+ const keys = [
13342
+ 'SOID',
13343
+ 'senderID',
13344
+ 'platform',
13345
+ 'pool',
13346
+ 'mode',
13347
+ 'color'
13348
+ ];
13349
+ const result = {};
13350
+ for (const key of keys){
13351
+ const sharedVal = this.getShared(key);
13352
+ if (void 0 !== sharedVal) result[key] = sharedVal;
13353
+ }
13354
+ return result;
13348
13355
  }
13349
13356
  getShared(key) {
13350
- const isShared = (key)=>this.dans.every((d)=>d[key]);
13351
- return isShared(key) ? this.dans[0][key] : void 0;
13357
+ if (0 === this.dans.length) return;
13358
+ const firstVal = this.dans[0][key];
13359
+ for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
13360
+ return firstVal;
13352
13361
  }
13353
13362
  getStat(key) {
13354
- const default_stat = [];
13355
- const stats = this.dans.reduce((stat, dan)=>{
13356
- const valWithCount = stat.find((i)=>i.val === dan[key]);
13357
- if (valWithCount) valWithCount.count++;
13358
- else stat.push({
13359
- val: dan[key],
13360
- count: 1
13361
- });
13362
- return stat;
13363
- }, default_stat);
13364
- return stats;
13363
+ const statMap = new Map();
13364
+ for (const dan of this.dans){
13365
+ const val = dan[key];
13366
+ statMap.set(val, (statMap.get(val) || 0) + 1);
13367
+ }
13368
+ return statMap;
13365
13369
  }
13366
13370
  getMost(key) {
13367
- return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
13371
+ const stats = this.getStat(key);
13372
+ if (0 === stats.size) return {
13373
+ val: void 0,
13374
+ count: 0
13375
+ };
13376
+ let mostVal;
13377
+ let maxCount = 0;
13378
+ for (const [val, count] of stats.entries())if (count > maxCount) {
13379
+ maxCount = count;
13380
+ mostVal = val;
13381
+ }
13382
+ return {
13383
+ val: mostVal,
13384
+ count: maxCount
13385
+ };
13368
13386
  }
13369
13387
  get most() {
13388
+ const keys = [
13389
+ 'mode',
13390
+ 'fontsize',
13391
+ 'color',
13392
+ 'senderID',
13393
+ 'content',
13394
+ 'weight',
13395
+ 'pool',
13396
+ 'platform'
13397
+ ];
13398
+ const statMaps = new Map();
13399
+ for (const dan of this.dans)for (const key of keys){
13400
+ if (!statMaps.has(key)) statMaps.set(key, new Map());
13401
+ const statMap = statMaps.get(key);
13402
+ const val = dan[key];
13403
+ statMap.set(val, (statMap.get(val) || 0) + 1);
13404
+ }
13405
+ const result = {};
13406
+ for (const key of keys){
13407
+ const statMap = statMaps.get(key);
13408
+ let mostVal;
13409
+ let maxCount = 0;
13410
+ for (const [val, count] of statMap.entries())if (count > maxCount) {
13411
+ maxCount = count;
13412
+ mostVal = val;
13413
+ }
13414
+ result[key] = mostVal;
13415
+ }
13370
13416
  return {
13371
- mode: this.getMost('mode').val,
13372
- fontsize: this.getMost('fontsize').val,
13373
- color: this.getMost('color').val,
13374
- senderID: this.getMost('senderID').val,
13375
- content: this.getMost('content').val,
13376
- weight: this.getMost('weight').val,
13377
- pool: this.getMost('pool').val,
13378
- platform: this.getMost('platform').val
13417
+ mode: result.mode,
13418
+ fontsize: result.fontsize,
13419
+ color: result.color,
13420
+ senderID: result.senderID,
13421
+ content: result.content,
13422
+ weight: result.weight,
13423
+ pool: result.pool,
13424
+ platform: result.platform
13379
13425
  };
13380
13426
  }
13381
13427
  static create(options) {
@@ -13403,7 +13449,7 @@ class src_UniPool {
13403
13449
  return this;
13404
13450
  }
13405
13451
  split(key) {
13406
- if (this.shared[key]) return [
13452
+ if (this.getShared(key)) return [
13407
13453
  this
13408
13454
  ];
13409
13455
  const set = new Set(this.dans.map((d)=>d[key]));
@@ -13425,44 +13471,27 @@ class src_UniPool {
13425
13471
  this.options.dedupe = false;
13426
13472
  }
13427
13473
  merge(lifetime = 0) {
13428
- if (!this.shared.SOID) {
13474
+ if (!this.getShared('SOID')) {
13429
13475
  console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
13430
13476
  return this;
13431
13477
  }
13432
13478
  if (lifetime <= 0) return this;
13433
- const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
13434
- const key = [
13435
- 'content',
13436
- 'mode',
13437
- 'pool',
13438
- 'platform'
13439
- ].map((k)=>danmaku[k]).join('|');
13479
+ const result = [];
13480
+ const cache = {};
13481
+ const mergeObj = {};
13482
+ for (const danmaku of this.dans){
13483
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
13440
13484
  const cached = cache[key];
13441
- const lastAppearTime = cached?.progress || 0;
13442
- if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
13485
+ if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
13443
13486
  skipDanuniMerge: true
13444
13487
  })) {
13445
- const senders = mergeObj[key].senders;
13446
- senders.push(danmaku.senderID);
13447
- const extra = danmaku.extra;
13448
- extra.danuni = extra.danuni || {};
13449
- extra.danuni.merge = {
13450
- count: senders.length,
13451
- duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
13452
- senders,
13453
- taolu_count: senders.length,
13454
- taolu_senders: senders
13455
- };
13456
- danmaku.extraStr = src_JSON_0.stringify(extra);
13488
+ mergeObj[key].senders.push(danmaku.senderID);
13489
+ mergeObj[key].count = mergeObj[key].senders.length;
13490
+ mergeObj[key].taolu_count = mergeObj[key].count;
13491
+ mergeObj[key].taolu_senders = mergeObj[key].senders;
13492
+ mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
13457
13493
  cache[key] = danmaku;
13458
- mergeObj[key] = extra.danuni.merge;
13459
- return [
13460
- result,
13461
- cache,
13462
- mergeObj
13463
- ];
13464
- }
13465
- {
13494
+ } else {
13466
13495
  mergeObj[key] = {
13467
13496
  count: 1,
13468
13497
  duration: 0,
@@ -13475,55 +13504,31 @@ class src_UniPool {
13475
13504
  ]
13476
13505
  };
13477
13506
  cache[key] = danmaku;
13478
- const extra = danmaku.extra;
13479
- extra.danuni = extra.danuni || {};
13480
- extra.danuni.merge = mergeObj[key];
13481
- danmaku.extraStr = src_JSON_0.stringify(extra);
13482
13507
  result.push(danmaku);
13483
- return [
13484
- result,
13485
- cache,
13486
- mergeObj
13487
- ];
13488
13508
  }
13489
- }, [
13490
- [],
13491
- {},
13492
- {}
13493
- ]);
13494
- const [result, _cache, mergeObj] = mergeContext;
13495
- result.forEach((danmaku, i)=>{
13496
- const key = [
13497
- 'content',
13498
- 'mode',
13499
- 'platform',
13500
- 'pool'
13501
- ].map((k)=>danmaku[k]).join('|');
13502
- const extra = result[i].extra;
13509
+ }
13510
+ for (const danmaku of result){
13511
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
13503
13512
  const mergeData = mergeObj[key];
13504
- result[i].extraStr = src_JSON_0.stringify({
13505
- ...extra,
13506
- danuni: {
13507
- ...extra.danuni,
13508
- merge: mergeData
13509
- }
13510
- });
13511
- if (mergeData?.count) if (mergeData.count <= 1) {
13512
- const updatedExtra = {
13513
- ...extra
13514
- };
13515
- if (updatedExtra.danuni) {
13516
- delete updatedExtra.danuni.merge;
13517
- if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
13518
- }
13519
- result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON_0.stringify(updatedExtra) : void 0;
13520
- } else {
13521
- result[i].senderID = 'merge[bot]@dan-any';
13522
- result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
13513
+ const extra = danmaku.extra;
13514
+ if (mergeData.count > 1) {
13515
+ danmaku.senderID = 'merge[bot]@dan-any';
13516
+ if (danmaku.attr) {
13517
+ if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
13518
+ } else danmaku.attr = [
13523
13519
  dm_gen_DMAttr.Protect
13524
13520
  ];
13521
+ extra.danuni = extra.danuni || {};
13522
+ extra.danuni.merge = mergeData;
13523
+ danmaku.extraStr = src_JSON_0.stringify(extra);
13524
+ } else {
13525
+ if (extra.danuni?.merge) {
13526
+ delete extra.danuni.merge;
13527
+ if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
13528
+ }
13529
+ danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON_0.stringify(extra) : void 0;
13525
13530
  }
13526
- });
13531
+ }
13527
13532
  return new src_UniPool(result, this.options, this.info);
13528
13533
  }
13529
13534
  minify() {
@@ -13546,7 +13551,7 @@ class src_UniPool {
13546
13551
  pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
13547
13552
  fmt: 'artplayer.json'
13548
13553
  };
13549
- if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
13554
+ if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
13550
13555
  pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
13551
13556
  fmt: 'ddplay.json'
13552
13557
  };
@@ -13725,7 +13730,7 @@ class src_UniPool {
13725
13730
  source: 'k-v',
13726
13731
  danuni: {
13727
13732
  ...src_DanUniConvertTipTemplate,
13728
- data: this.shared.SOID
13733
+ data: this.getShared('SOID')
13729
13734
  },
13730
13735
  d: this.dans.map((dan)=>dan.toBiliXML(options))
13731
13736
  }
@@ -13864,7 +13869,7 @@ class src_UniPool {
13864
13869
  substyle: {}
13865
13870
  };
13866
13871
  const finalOptions = options ?? defaultOptions;
13867
- const fn = this.shared.SOID;
13872
+ const fn = this.getShared('SOID');
13868
13873
  return generateASS(this, {
13869
13874
  filename: fn,
13870
13875
  title: fn,