@dan-uni/dan-any 0.9.8 → 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.
@@ -10272,7 +10272,7 @@
10272
10272
  function _isUint8Array(obj) {
10273
10273
  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
10274
10274
  }
10275
- var debugUtil = __webpack_require__("?14dd");
10275
+ var debugUtil = __webpack_require__("?8beb");
10276
10276
  var debug;
10277
10277
  debug = debugUtil && debugUtil.debuglog ? debugUtil.debuglog('stream') : function() {};
10278
10278
  var BufferList = __webpack_require__("../../node_modules/.pnpm/readable-stream@3.6.2/node_modules/readable-stream/lib/internal/streams/buffer_list.js");
@@ -11653,7 +11653,7 @@
11653
11653
  return ("string" === hint ? String : Number)(input);
11654
11654
  }
11655
11655
  var _require = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js"), Buffer = _require.Buffer;
11656
- var _require2 = __webpack_require__("?fe28"), inspect = _require2.inspect;
11656
+ var _require2 = __webpack_require__("?c028"), inspect = _require2.inspect;
11657
11657
  var custom = inspect && inspect.custom || 'inspect';
11658
11658
  function copyBuffer(src, target, offset) {
11659
11659
  Buffer.prototype.copy.call(src, target, offset);
@@ -13153,13 +13153,13 @@
13153
13153
  }
13154
13154
  exports1.callbackify = callbackify;
13155
13155
  },
13156
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isByteLength.js": function(module1, exports1, __webpack_require__) {
13156
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isByteLength.js": function(module1, exports1, __webpack_require__) {
13157
13157
  "use strict";
13158
13158
  Object.defineProperty(exports1, "__esModule", {
13159
13159
  value: true
13160
13160
  });
13161
13161
  exports1["default"] = isByteLength;
13162
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13162
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13163
13163
  function _interopRequireDefault(e) {
13164
13164
  return e && e.__esModule ? e : {
13165
13165
  default: e
@@ -13189,18 +13189,18 @@
13189
13189
  module1.exports = exports1["default"];
13190
13190
  module1.exports["default"] = exports1["default"];
13191
13191
  },
13192
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isEmail.js": function(module1, exports1, __webpack_require__) {
13192
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isEmail.js": function(module1, exports1, __webpack_require__) {
13193
13193
  "use strict";
13194
13194
  Object.defineProperty(exports1, "__esModule", {
13195
13195
  value: true
13196
13196
  });
13197
13197
  exports1["default"] = isEmail;
13198
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13199
- var _checkHost = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/checkHost.js"));
13200
- var _isByteLength = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isByteLength.js"));
13201
- var _isFQDN = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isFQDN.js"));
13202
- var _isIP = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isIP.js"));
13203
- var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js"));
13198
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13199
+ var _checkHost = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/checkHost.js"));
13200
+ var _isByteLength = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isByteLength.js"));
13201
+ var _isFQDN = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isFQDN.js"));
13202
+ var _isIP = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isIP.js"));
13203
+ var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js"));
13204
13204
  function _interopRequireDefault(e) {
13205
13205
  return e && e.__esModule ? e : {
13206
13206
  default: e
@@ -13296,14 +13296,14 @@
13296
13296
  module1.exports = exports1["default"];
13297
13297
  module1.exports["default"] = exports1["default"];
13298
13298
  },
13299
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isFQDN.js": function(module1, exports1, __webpack_require__) {
13299
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isFQDN.js": function(module1, exports1, __webpack_require__) {
13300
13300
  "use strict";
13301
13301
  Object.defineProperty(exports1, "__esModule", {
13302
13302
  value: true
13303
13303
  });
13304
13304
  exports1["default"] = isFQDN;
13305
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13306
- var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js"));
13305
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13306
+ var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js"));
13307
13307
  function _interopRequireDefault(e) {
13308
13308
  return e && e.__esModule ? e : {
13309
13309
  default: e
@@ -13342,13 +13342,13 @@
13342
13342
  module1.exports = exports1["default"];
13343
13343
  module1.exports["default"] = exports1["default"];
13344
13344
  },
13345
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isIP.js": function(module1, exports1, __webpack_require__) {
13345
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isIP.js": function(module1, exports1, __webpack_require__) {
13346
13346
  "use strict";
13347
13347
  Object.defineProperty(exports1, "__esModule", {
13348
13348
  value: true
13349
13349
  });
13350
13350
  exports1["default"] = isIP;
13351
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13351
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13352
13352
  function _interopRequireDefault(e) {
13353
13353
  return e && e.__esModule ? e : {
13354
13354
  default: e
@@ -13382,15 +13382,15 @@
13382
13382
  module1.exports = exports1["default"];
13383
13383
  module1.exports["default"] = exports1["default"];
13384
13384
  },
13385
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isJSON.js": function(module1, exports1, __webpack_require__) {
13385
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isJSON.js": function(module1, exports1, __webpack_require__) {
13386
13386
  "use strict";
13387
13387
  Object.defineProperty(exports1, "__esModule", {
13388
13388
  value: true
13389
13389
  });
13390
13390
  exports1["default"] = isJSON;
13391
- var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js"));
13392
- var _includesArray = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/includesArray.js"));
13393
- var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js"));
13391
+ var _assertString = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js"));
13392
+ var _includesArray = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/includesArray.js"));
13393
+ var _merge = _interopRequireDefault(__webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js"));
13394
13394
  function _interopRequireDefault(e) {
13395
13395
  return e && e.__esModule ? e : {
13396
13396
  default: e
@@ -13424,7 +13424,7 @@
13424
13424
  module1.exports = exports1["default"];
13425
13425
  module1.exports["default"] = exports1["default"];
13426
13426
  },
13427
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/assertString.js": function(module1, exports1) {
13427
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/assertString.js": function(module1, exports1) {
13428
13428
  "use strict";
13429
13429
  Object.defineProperty(exports1, "__esModule", {
13430
13430
  value: true
@@ -13437,7 +13437,7 @@
13437
13437
  module1.exports = exports1["default"];
13438
13438
  module1.exports["default"] = exports1["default"];
13439
13439
  },
13440
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/checkHost.js": function(module1, exports1) {
13440
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/checkHost.js": function(module1, exports1) {
13441
13441
  "use strict";
13442
13442
  Object.defineProperty(exports1, "__esModule", {
13443
13443
  value: true
@@ -13456,7 +13456,7 @@
13456
13456
  module1.exports = exports1["default"];
13457
13457
  module1.exports["default"] = exports1["default"];
13458
13458
  },
13459
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/includesArray.js": function(module1, exports1) {
13459
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/includesArray.js": function(module1, exports1) {
13460
13460
  "use strict";
13461
13461
  Object.defineProperty(exports1, "__esModule", {
13462
13462
  value: true
@@ -13471,7 +13471,7 @@
13471
13471
  module1.exports = exports1["default"];
13472
13472
  module1.exports["default"] = exports1["default"];
13473
13473
  },
13474
- "../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/util/merge.js": function(module1, exports1) {
13474
+ "../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/util/merge.js": function(module1, exports1) {
13475
13475
  "use strict";
13476
13476
  Object.defineProperty(exports1, "__esModule", {
13477
13477
  value: true
@@ -13564,8 +13564,8 @@
13564
13564
  return number + '';
13565
13565
  };
13566
13566
  },
13567
- "?fe28": function() {},
13568
- "?14dd": function() {},
13567
+ "?c028": function() {},
13568
+ "?8beb": function() {},
13569
13569
  "../../node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js": function(module1, __unused_webpack_exports, __webpack_require__) {
13570
13570
  "use strict";
13571
13571
  var possibleNames = __webpack_require__("../../node_modules/.pnpm/possible-typed-array-names@1.1.0/node_modules/possible-typed-array-names/index.js");
@@ -14211,11 +14211,11 @@ and limitations under the License.
14211
14211
  "use strict";
14212
14212
  __webpack_require__.r(__webpack_exports__);
14213
14213
  __webpack_require__.d(__webpack_exports__, {
14214
- UniDMTools: ()=>dm_gen_namespaceObject,
14215
- UniIDTools: ()=>id_gen_namespaceObject,
14216
- UniDM: ()=>UniDM,
14217
14214
  platform: ()=>platform_namespaceObject,
14218
- UniPool: ()=>src_UniPool
14215
+ UniDM: ()=>UniDM,
14216
+ UniDMTools: ()=>dm_gen_namespaceObject,
14217
+ UniPool: ()=>src_UniPool,
14218
+ UniIDTools: ()=>id_gen_namespaceObject
14219
14219
  });
14220
14220
  var platform_namespaceObject = {};
14221
14221
  __webpack_require__.r(platform_namespaceObject);
@@ -14246,7 +14246,7 @@ and limitations under the License.
14246
14246
  UniDM: ()=>UniDM
14247
14247
  });
14248
14248
  __webpack_require__("../../node_modules/.pnpm/reflect-metadata@0.2.2/node_modules/reflect-metadata/ReflectLite.js");
14249
- var isJSON = __webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isJSON.js");
14249
+ var isJSON = __webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isJSON.js");
14250
14250
  var isJSON_default = /*#__PURE__*/ __webpack_require__.n(isJSON);
14251
14251
  function IsJSON_isJSON(value) {
14252
14252
  return 'string' == typeof value && isJSON_default()(value);
@@ -15086,6 +15086,15 @@ and limitations under the License.
15086
15086
  this.saveTextToParentTag = saveTextToParentTag;
15087
15087
  this.addChild = addChild;
15088
15088
  this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);
15089
+ if (this.options.stopNodes && this.options.stopNodes.length > 0) {
15090
+ this.stopNodesExact = new Set();
15091
+ this.stopNodesWildcard = new Set();
15092
+ for(let i = 0; i < this.options.stopNodes.length; i++){
15093
+ const stopNodeExp = this.options.stopNodes[i];
15094
+ if ('string' == typeof stopNodeExp) if (stopNodeExp.startsWith("*.")) this.stopNodesWildcard.add(stopNodeExp.substring(2));
15095
+ else this.stopNodesExact.add(stopNodeExp);
15096
+ }
15097
+ }
15089
15098
  }
15090
15099
  }
15091
15100
  function addExternalEntities(externalEntities) {
@@ -15245,7 +15254,7 @@ and limitations under the License.
15245
15254
  }
15246
15255
  if (tagName !== xmlObj.tagname) jPath += jPath ? "." + tagName : tagName;
15247
15256
  const startIndex = i;
15248
- if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {
15257
+ if (this.isItStopNode(this.stopNodesExact, this.stopNodesWildcard, jPath, tagName)) {
15249
15258
  let tagContent = "";
15250
15259
  if (tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1) {
15251
15260
  if ("/" === tagName[tagName.length - 1]) {
@@ -15330,12 +15339,9 @@ and limitations under the License.
15330
15339
  }
15331
15340
  return textData;
15332
15341
  }
15333
- function isItStopNode(stopNodes, jPath, currentTagName) {
15334
- const allNodesExp = "*." + currentTagName;
15335
- for(const stopNodePath in stopNodes){
15336
- const stopNodeExp = stopNodes[stopNodePath];
15337
- if (allNodesExp === stopNodeExp || jPath === stopNodeExp) return true;
15338
- }
15342
+ function isItStopNode(stopNodesExact, stopNodesWildcard, jPath, currentTagName) {
15343
+ if (stopNodesWildcard && stopNodesWildcard.has(currentTagName)) return true;
15344
+ if (stopNodesExact && stopNodesExact.has(jPath)) return true;
15339
15345
  return false;
15340
15346
  }
15341
15347
  function tagExpWithClosingIndex(xmlData, i, closingChar = ">") {
@@ -17077,10 +17083,14 @@ and limitations under the License.
17077
17083
  function reflect_reflect(messageDesc, message, check = true) {
17078
17084
  return new ReflectMessageImpl(messageDesc, message, check);
17079
17085
  }
17086
+ const messageSortedFields = new WeakMap();
17080
17087
  class ReflectMessageImpl {
17081
17088
  get sortedFields() {
17082
- var _a;
17083
- return null != (_a = this._sortedFields) ? _a : this._sortedFields = this.desc.fields.concat().sort((a, b)=>a.number - b.number);
17089
+ const cached = messageSortedFields.get(this.desc);
17090
+ if (cached) return cached;
17091
+ const sortedFields = this.desc.fields.concat().sort((a, b)=>a.number - b.number);
17092
+ messageSortedFields.set(this.desc, sortedFields);
17093
+ return sortedFields;
17084
17094
  }
17085
17095
  constructor(messageDesc, message, check = true){
17086
17096
  this.lists = new Map();
@@ -20981,11 +20991,11 @@ and limitations under the License.
20981
20991
  function timestamp_timestampMs(timestamp) {
20982
20992
  return 1000 * Number(timestamp.seconds) + Math.round(timestamp.nanos / 1000000);
20983
20993
  }
20984
- var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"0.9.8","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
20994
+ 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"}');
20985
20995
  const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
20986
20996
  const DmSegMobileReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 30);
20987
20997
  const DmWebViewReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 39);
20988
- const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLCAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSEAoIcGxhdGZvcm0YDSABKAkSEgoFZXh0cmEYDiABKAlIAIgBAUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
20998
+ const file_danuni = /*@__PURE__*/ fileDesc("CgxkYW51bmkucHJvdG8SEWRhbnVuaS5kYW5tYWt1LnYxIjIKCmxpc3REYW5SZXESCgoCSUQYASABKAkSEAoDc2VnGAIgASgFSACIAQFCBgoEX3NlZyLUAgoHRGFubWFrdRIMCgRTT0lEGAEgASgJEgwKBERNSUQYAiABKAkSEAoIcHJvZ3Jlc3MYAyABKAUSJQoEbW9kZRgEIAEoDjIXLmRhbnVuaS5kYW5tYWt1LnYxLk1vZGUSEAoIZm9udHNpemUYBSABKAUSDQoFY29sb3IYBiABKAUSEAoIc2VuZGVySUQYByABKAkSDwoHY29udGVudBgIIAEoCRIpCgVjdGltZRgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDgoGd2VpZ2h0GAogASgFEiUKBHBvb2wYCyABKA4yFy5kYW51bmkuZGFubWFrdS52MS5Qb29sEgwKBGF0dHIYDCADKAkSFQoIcGxhdGZvcm0YDSABKAlIAIgBARISCgVleHRyYRgOIAEoCUgBiAEBQgsKCV9wbGF0Zm9ybUIICgZfZXh0cmEiPAoMRGFubWFrdVJlcGx5EiwKCGRhbm1ha3VzGAEgAygLMhouZGFudW5pLmRhbm1ha3UudjEuRGFubWFrdSo9CgRNb2RlEgoKBk5vcm1hbBAAEgoKBkJvdHRvbRABEgcKA1RvcBACEgsKB1JldmVyc2UQAxIHCgNFeHQQBCopCgRQb29sEgcKA0RlZhAAEgcKA1N1YhABEgcKA0FkdhACEgYKAkl4EAMyXQoORGFubWFrdVNlcnZpY2USSwoHbGlzdERhbhIdLmRhbnVuaS5kYW5tYWt1LnYxLmxpc3REYW5SZXEaHy5kYW51bmkuZGFubWFrdS52MS5EYW5tYWt1UmVwbHkiAFAAYgZwcm90bzM", [
20989
20999
  file_google_protobuf_timestamp
20990
21000
  ]);
20991
21001
  const DanmakuReplySchema = /*@__PURE__*/ message_messageDesc(file_danuni, 2);
@@ -22016,7 +22026,7 @@ and limitations under the License.
22016
22026
  if ('string' == typeof schemaNameOrObject) return container_getFromContainer(Validator_Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions, maybeValidatorOptions);
22017
22027
  return container_getFromContainer(Validator_Validator).validateOrReject(schemaNameOrObject, objectOrValidationOptions);
22018
22028
  }
22019
- var isEmail = __webpack_require__("../../node_modules/.pnpm/validator@13.15.15/node_modules/validator/lib/isEmail.js");
22029
+ var isEmail = __webpack_require__("../../node_modules/.pnpm/validator@13.15.23/node_modules/validator/lib/isEmail.js");
22020
22030
  var isEmail_default = /*#__PURE__*/ __webpack_require__.n(isEmail);
22021
22031
  var IS_EMAIL = 'isEmail';
22022
22032
  function IsEmail_isEmail(value, options) {
@@ -23431,6 +23441,7 @@ and limitations under the License.
23431
23441
  return this.options.dmid(this);
23432
23442
  }
23433
23443
  isSameAs(dan, options) {
23444
+ if (this === dan) return true;
23434
23445
  if (4 === this.mode || 4 === dan.mode) return false;
23435
23446
  if (!options?.skipDanuniMerge && (this.extra.danuni?.merge || dan.extra.danuni?.merge)) return false;
23436
23447
  const isSame = (k)=>this[k] === dan[k];
@@ -23444,26 +23455,22 @@ and limitations under the License.
23444
23455
  return checks;
23445
23456
  }
23446
23457
  minify() {
23447
- const def = UniDM.create();
23448
- const dan = UniDM.create(this);
23449
- const shouldKeep = (key, value)=>{
23450
- if ('SOID' === key) return true;
23451
- if (null == value) return false;
23452
- if (value === def[key]) return false;
23453
- if ('attr' === key && Array.isArray(value) && 0 === value.length) return false;
23454
- if ('extraStr' === key && '{}' === value) return false;
23455
- return true;
23456
- };
23458
+ const def = new UniDM();
23457
23459
  const result = {
23458
- SOID: dan.SOID
23460
+ SOID: this.SOID
23459
23461
  };
23460
- for (const key of Object.keys(dan)){
23461
- const value = dan[key];
23462
- if (shouldKeep(key, value)) {
23463
- if ('SOID' === key) continue;
23464
- Reflect.set(result, key, value);
23465
- }
23466
- }
23462
+ if (this.progress !== def.progress) result.progress = this.progress;
23463
+ if (this.mode !== def.mode) result.mode = this.mode;
23464
+ if (this.fontsize !== def.fontsize) result.fontsize = this.fontsize;
23465
+ if (this.color !== def.color) result.color = this.color;
23466
+ if (this.senderID !== def.senderID) result.senderID = this.senderID;
23467
+ if (this.content !== def.content) result.content = this.content;
23468
+ if (this.weight !== def.weight) result.weight = this.weight;
23469
+ if (this.pool !== def.pool) result.pool = this.pool;
23470
+ if (this.attr.length > 0) result.attr = this.attr;
23471
+ if (void 0 !== this.platform) result.platform = this.platform;
23472
+ if (this.extraStr && '{}' !== this.extraStr) result.extraStr = this.extraStr;
23473
+ if (void 0 !== this.DMID) result.DMID = this.DMID;
23467
23474
  return result;
23468
23475
  }
23469
23476
  downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
@@ -24015,46 +24022,91 @@ and limitations under the License.
24015
24022
  return fn(this);
24016
24023
  }
24017
24024
  get shared() {
24018
- const isShared = (key)=>this.dans.every((d)=>d[key]);
24019
- return {
24020
- SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
24021
- senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
24022
- platform: isShared('platform') ? this.dans[0].platform : void 0,
24023
- pool: isShared('pool') ? this.dans[0].pool : void 0,
24024
- mode: isShared('mode') ? this.dans[0].mode : void 0,
24025
- color: isShared('color') ? this.dans[0].color : void 0
24026
- };
24025
+ if (0 === this.dans.length) return {};
24026
+ const keys = [
24027
+ 'SOID',
24028
+ 'senderID',
24029
+ 'platform',
24030
+ 'pool',
24031
+ 'mode',
24032
+ 'color'
24033
+ ];
24034
+ const result = {};
24035
+ for (const key of keys){
24036
+ const sharedVal = this.getShared(key);
24037
+ if (void 0 !== sharedVal) result[key] = sharedVal;
24038
+ }
24039
+ return result;
24027
24040
  }
24028
24041
  getShared(key) {
24029
- const isShared = (key)=>this.dans.every((d)=>d[key]);
24030
- return isShared(key) ? this.dans[0][key] : void 0;
24042
+ if (0 === this.dans.length) return;
24043
+ const firstVal = this.dans[0][key];
24044
+ for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
24045
+ return firstVal;
24031
24046
  }
24032
24047
  getStat(key) {
24033
- const default_stat = [];
24034
- const stats = this.dans.reduce((stat, dan)=>{
24035
- const valWithCount = stat.find((i)=>i.val === dan[key]);
24036
- if (valWithCount) valWithCount.count++;
24037
- else stat.push({
24038
- val: dan[key],
24039
- count: 1
24040
- });
24041
- return stat;
24042
- }, default_stat);
24043
- return stats;
24048
+ const statMap = new Map();
24049
+ for (const dan of this.dans){
24050
+ const val = dan[key];
24051
+ statMap.set(val, (statMap.get(val) || 0) + 1);
24052
+ }
24053
+ return statMap;
24044
24054
  }
24045
24055
  getMost(key) {
24046
- return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
24056
+ const stats = this.getStat(key);
24057
+ if (0 === stats.size) return {
24058
+ val: void 0,
24059
+ count: 0
24060
+ };
24061
+ let mostVal;
24062
+ let maxCount = 0;
24063
+ for (const [val, count] of stats.entries())if (count > maxCount) {
24064
+ maxCount = count;
24065
+ mostVal = val;
24066
+ }
24067
+ return {
24068
+ val: mostVal,
24069
+ count: maxCount
24070
+ };
24047
24071
  }
24048
24072
  get most() {
24073
+ const keys = [
24074
+ 'mode',
24075
+ 'fontsize',
24076
+ 'color',
24077
+ 'senderID',
24078
+ 'content',
24079
+ 'weight',
24080
+ 'pool',
24081
+ 'platform'
24082
+ ];
24083
+ const statMaps = new Map();
24084
+ for (const dan of this.dans)for (const key of keys){
24085
+ if (!statMaps.has(key)) statMaps.set(key, new Map());
24086
+ const statMap = statMaps.get(key);
24087
+ const val = dan[key];
24088
+ statMap.set(val, (statMap.get(val) || 0) + 1);
24089
+ }
24090
+ const result = {};
24091
+ for (const key of keys){
24092
+ const statMap = statMaps.get(key);
24093
+ let mostVal;
24094
+ let maxCount = 0;
24095
+ for (const [val, count] of statMap.entries())if (count > maxCount) {
24096
+ maxCount = count;
24097
+ mostVal = val;
24098
+ }
24099
+ result[key] = mostVal;
24100
+ }
24049
24101
  return {
24050
- mode: this.getMost('mode').val,
24051
- fontsize: this.getMost('fontsize').val,
24052
- color: this.getMost('color').val,
24053
- senderID: this.getMost('senderID').val,
24054
- content: this.getMost('content').val,
24055
- weight: this.getMost('weight').val,
24056
- pool: this.getMost('pool').val,
24057
- platform: this.getMost('platform').val
24102
+ mode: result.mode,
24103
+ fontsize: result.fontsize,
24104
+ color: result.color,
24105
+ senderID: result.senderID,
24106
+ content: result.content,
24107
+ weight: result.weight,
24108
+ pool: result.pool,
24109
+ platform: result.platform
24058
24110
  };
24059
24111
  }
24060
24112
  static create(options) {
@@ -24082,7 +24134,7 @@ and limitations under the License.
24082
24134
  return this;
24083
24135
  }
24084
24136
  split(key) {
24085
- if (this.shared[key]) return [
24137
+ if (this.getShared(key)) return [
24086
24138
  this
24087
24139
  ];
24088
24140
  const set = new Set(this.dans.map((d)=>d[key]));
@@ -24104,44 +24156,27 @@ and limitations under the License.
24104
24156
  this.options.dedupe = false;
24105
24157
  }
24106
24158
  merge(lifetime = 0) {
24107
- if (!this.shared.SOID) {
24159
+ if (!this.getShared('SOID')) {
24108
24160
  console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
24109
24161
  return this;
24110
24162
  }
24111
24163
  if (lifetime <= 0) return this;
24112
- const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
24113
- const key = [
24114
- 'content',
24115
- 'mode',
24116
- 'pool',
24117
- 'platform'
24118
- ].map((k)=>danmaku[k]).join('|');
24164
+ const result = [];
24165
+ const cache = {};
24166
+ const mergeObj = {};
24167
+ for (const danmaku of this.dans){
24168
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
24119
24169
  const cached = cache[key];
24120
- const lastAppearTime = cached?.progress || 0;
24121
- if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
24170
+ if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
24122
24171
  skipDanuniMerge: true
24123
24172
  })) {
24124
- const senders = mergeObj[key].senders;
24125
- senders.push(danmaku.senderID);
24126
- const extra = danmaku.extra;
24127
- extra.danuni = extra.danuni || {};
24128
- extra.danuni.merge = {
24129
- count: senders.length,
24130
- duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
24131
- senders,
24132
- taolu_count: senders.length,
24133
- taolu_senders: senders
24134
- };
24135
- danmaku.extraStr = src_JSON.stringify(extra);
24173
+ mergeObj[key].senders.push(danmaku.senderID);
24174
+ mergeObj[key].count = mergeObj[key].senders.length;
24175
+ mergeObj[key].taolu_count = mergeObj[key].count;
24176
+ mergeObj[key].taolu_senders = mergeObj[key].senders;
24177
+ mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
24136
24178
  cache[key] = danmaku;
24137
- mergeObj[key] = extra.danuni.merge;
24138
- return [
24139
- result,
24140
- cache,
24141
- mergeObj
24142
- ];
24143
- }
24144
- {
24179
+ } else {
24145
24180
  mergeObj[key] = {
24146
24181
  count: 1,
24147
24182
  duration: 0,
@@ -24154,55 +24189,31 @@ and limitations under the License.
24154
24189
  ]
24155
24190
  };
24156
24191
  cache[key] = danmaku;
24157
- const extra = danmaku.extra;
24158
- extra.danuni = extra.danuni || {};
24159
- extra.danuni.merge = mergeObj[key];
24160
- danmaku.extraStr = src_JSON.stringify(extra);
24161
24192
  result.push(danmaku);
24162
- return [
24163
- result,
24164
- cache,
24165
- mergeObj
24166
- ];
24167
24193
  }
24168
- }, [
24169
- [],
24170
- {},
24171
- {}
24172
- ]);
24173
- const [result, _cache, mergeObj] = mergeContext;
24174
- result.forEach((danmaku, i)=>{
24175
- const key = [
24176
- 'content',
24177
- 'mode',
24178
- 'platform',
24179
- 'pool'
24180
- ].map((k)=>danmaku[k]).join('|');
24181
- const extra = result[i].extra;
24194
+ }
24195
+ for (const danmaku of result){
24196
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
24182
24197
  const mergeData = mergeObj[key];
24183
- result[i].extraStr = src_JSON.stringify({
24184
- ...extra,
24185
- danuni: {
24186
- ...extra.danuni,
24187
- merge: mergeData
24188
- }
24189
- });
24190
- if (mergeData?.count) if (mergeData.count <= 1) {
24191
- const updatedExtra = {
24192
- ...extra
24193
- };
24194
- if (updatedExtra.danuni) {
24195
- delete updatedExtra.danuni.merge;
24196
- if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
24197
- }
24198
- result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON.stringify(updatedExtra) : void 0;
24199
- } else {
24200
- result[i].senderID = 'merge[bot]@dan-any';
24201
- result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
24198
+ const extra = danmaku.extra;
24199
+ if (mergeData.count > 1) {
24200
+ danmaku.senderID = 'merge[bot]@dan-any';
24201
+ if (danmaku.attr) {
24202
+ if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
24203
+ } else danmaku.attr = [
24202
24204
  dm_gen_DMAttr.Protect
24203
24205
  ];
24206
+ extra.danuni = extra.danuni || {};
24207
+ extra.danuni.merge = mergeData;
24208
+ danmaku.extraStr = src_JSON.stringify(extra);
24209
+ } else {
24210
+ if (extra.danuni?.merge) {
24211
+ delete extra.danuni.merge;
24212
+ if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
24213
+ }
24214
+ danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON.stringify(extra) : void 0;
24204
24215
  }
24205
- });
24216
+ }
24206
24217
  return new UniPool(result, this.options, this.info);
24207
24218
  }
24208
24219
  minify() {
@@ -24225,14 +24236,18 @@ and limitations under the License.
24225
24236
  pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
24226
24237
  fmt: 'artplayer.json'
24227
24238
  };
24228
- if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
24239
+ if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
24229
24240
  pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
24230
24241
  fmt: 'ddplay.json'
24231
24242
  };
24232
- else if (json?.code == 0 && json.data && json.data.every((d)=>Array.isArray(d))) return {
24243
+ else if (0 == json.code && json.data && Array.isArray(json.data) && json.data.every((d)=>Array.isArray(d))) return {
24233
24244
  pool: this.fromDplayer(json, json.danuni?.data ?? '', void 0, options),
24234
24245
  fmt: 'dplayer.json'
24235
24246
  };
24247
+ else if (0 == json.code && '0' == json.message && json.data && json.data.page && json.data.result && Array.isArray(json.data.result) && json.data.result.every((d)=>d.id && d.oid)) return {
24248
+ pool: this.fromBiliUp(json, options),
24249
+ fmt: 'bili.up.json'
24250
+ };
24236
24251
  } catch {}
24237
24252
  };
24238
24253
  const parseStr = (file)=>{
@@ -24400,7 +24415,7 @@ and limitations under the License.
24400
24415
  source: 'k-v',
24401
24416
  danuni: {
24402
24417
  ...DanUniConvertTipTemplate,
24403
- data: this.shared.SOID
24418
+ data: this.getShared('SOID')
24404
24419
  },
24405
24420
  d: this.dans.map((dan)=>dan.toBiliXML(options))
24406
24421
  }
@@ -24539,7 +24554,7 @@ and limitations under the License.
24539
24554
  substyle: {}
24540
24555
  };
24541
24556
  const finalOptions = options ?? defaultOptions;
24542
- const fn = this.shared.SOID;
24557
+ const fn = this.getShared('SOID');
24543
24558
  return generateASS(this, {
24544
24559
  filename: fn,
24545
24560
  title: fn,
@@ -24748,10 +24763,10 @@ and limitations under the License.
24748
24763
  return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
24749
24764
  };
24750
24765
  const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
24751
- const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
24752
- const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
24753
- const colorCommand = (color)=>`\\c${formatColor(color)}`;
24754
- const borderColorCommand = (color)=>`\\3c${formatColor(color)}`;
24766
+ const scrollCommand = ({ start, end, top })=>String.raw`\move(${start},${top},${end},${top})`;
24767
+ const fixCommand = ({ top, left })=>String.raw`\an8\pos(${left},${top})`;
24768
+ const colorCommand = (color)=>String.raw`\c${formatColor(color)}`;
24769
+ const borderColorCommand = (color)=>String.raw`\3c${formatColor(color)}`;
24755
24770
  const dialogue = (danmaku, config)=>{
24756
24771
  const { fontSizeType, content, time } = danmaku;
24757
24772
  const { scrollTime, fixTime } = config;
@@ -25019,46 +25034,91 @@ and limitations under the License.
25019
25034
  return fn(this);
25020
25035
  }
25021
25036
  get shared() {
25022
- const isShared = (key)=>this.dans.every((d)=>d[key]);
25023
- return {
25024
- SOID: isShared('SOID') ? this.dans[0].SOID : void 0,
25025
- senderID: isShared('senderID') ? this.dans[0].senderID : void 0,
25026
- platform: isShared('platform') ? this.dans[0].platform : void 0,
25027
- pool: isShared('pool') ? this.dans[0].pool : void 0,
25028
- mode: isShared('mode') ? this.dans[0].mode : void 0,
25029
- color: isShared('color') ? this.dans[0].color : void 0
25030
- };
25037
+ if (0 === this.dans.length) return {};
25038
+ const keys = [
25039
+ 'SOID',
25040
+ 'senderID',
25041
+ 'platform',
25042
+ 'pool',
25043
+ 'mode',
25044
+ 'color'
25045
+ ];
25046
+ const result = {};
25047
+ for (const key of keys){
25048
+ const sharedVal = this.getShared(key);
25049
+ if (void 0 !== sharedVal) result[key] = sharedVal;
25050
+ }
25051
+ return result;
25031
25052
  }
25032
25053
  getShared(key) {
25033
- const isShared = (key)=>this.dans.every((d)=>d[key]);
25034
- return isShared(key) ? this.dans[0][key] : void 0;
25054
+ if (0 === this.dans.length) return;
25055
+ const firstVal = this.dans[0][key];
25056
+ for(let i = 1; i < this.dans.length; i++)if (this.dans[i][key] !== firstVal) return;
25057
+ return firstVal;
25035
25058
  }
25036
25059
  getStat(key) {
25037
- const default_stat = [];
25038
- const stats = this.dans.reduce((stat, dan)=>{
25039
- const valWithCount = stat.find((i)=>i.val === dan[key]);
25040
- if (valWithCount) valWithCount.count++;
25041
- else stat.push({
25042
- val: dan[key],
25043
- count: 1
25044
- });
25045
- return stat;
25046
- }, default_stat);
25047
- return stats;
25060
+ const statMap = new Map();
25061
+ for (const dan of this.dans){
25062
+ const val = dan[key];
25063
+ statMap.set(val, (statMap.get(val) || 0) + 1);
25064
+ }
25065
+ return statMap;
25048
25066
  }
25049
25067
  getMost(key) {
25050
- return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
25068
+ const stats = this.getStat(key);
25069
+ if (0 === stats.size) return {
25070
+ val: void 0,
25071
+ count: 0
25072
+ };
25073
+ let mostVal;
25074
+ let maxCount = 0;
25075
+ for (const [val, count] of stats.entries())if (count > maxCount) {
25076
+ maxCount = count;
25077
+ mostVal = val;
25078
+ }
25079
+ return {
25080
+ val: mostVal,
25081
+ count: maxCount
25082
+ };
25051
25083
  }
25052
25084
  get most() {
25085
+ const keys = [
25086
+ 'mode',
25087
+ 'fontsize',
25088
+ 'color',
25089
+ 'senderID',
25090
+ 'content',
25091
+ 'weight',
25092
+ 'pool',
25093
+ 'platform'
25094
+ ];
25095
+ const statMaps = new Map();
25096
+ for (const dan of this.dans)for (const key of keys){
25097
+ if (!statMaps.has(key)) statMaps.set(key, new Map());
25098
+ const statMap = statMaps.get(key);
25099
+ const val = dan[key];
25100
+ statMap.set(val, (statMap.get(val) || 0) + 1);
25101
+ }
25102
+ const result = {};
25103
+ for (const key of keys){
25104
+ const statMap = statMaps.get(key);
25105
+ let mostVal;
25106
+ let maxCount = 0;
25107
+ for (const [val, count] of statMap.entries())if (count > maxCount) {
25108
+ maxCount = count;
25109
+ mostVal = val;
25110
+ }
25111
+ result[key] = mostVal;
25112
+ }
25053
25113
  return {
25054
- mode: this.getMost('mode').val,
25055
- fontsize: this.getMost('fontsize').val,
25056
- color: this.getMost('color').val,
25057
- senderID: this.getMost('senderID').val,
25058
- content: this.getMost('content').val,
25059
- weight: this.getMost('weight').val,
25060
- pool: this.getMost('pool').val,
25061
- platform: this.getMost('platform').val
25114
+ mode: result.mode,
25115
+ fontsize: result.fontsize,
25116
+ color: result.color,
25117
+ senderID: result.senderID,
25118
+ content: result.content,
25119
+ weight: result.weight,
25120
+ pool: result.pool,
25121
+ platform: result.platform
25062
25122
  };
25063
25123
  }
25064
25124
  static create(options) {
@@ -25086,7 +25146,7 @@ and limitations under the License.
25086
25146
  return this;
25087
25147
  }
25088
25148
  split(key) {
25089
- if (this.shared[key]) return [
25149
+ if (this.getShared(key)) return [
25090
25150
  this
25091
25151
  ];
25092
25152
  const set = new Set(this.dans.map((d)=>d[key]));
@@ -25108,44 +25168,27 @@ and limitations under the License.
25108
25168
  this.options.dedupe = false;
25109
25169
  }
25110
25170
  merge(lifetime = 0) {
25111
- if (!this.shared.SOID) {
25171
+ if (!this.getShared('SOID')) {
25112
25172
  console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
25113
25173
  return this;
25114
25174
  }
25115
25175
  if (lifetime <= 0) return this;
25116
- const mergeContext = this.dans.reduce(([result, cache, mergeObj], danmaku)=>{
25117
- const key = [
25118
- 'content',
25119
- 'mode',
25120
- 'pool',
25121
- 'platform'
25122
- ].map((k)=>danmaku[k]).join('|');
25176
+ const result = [];
25177
+ const cache = {};
25178
+ const mergeObj = {};
25179
+ for (const danmaku of this.dans){
25180
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
25123
25181
  const cached = cache[key];
25124
- const lastAppearTime = cached?.progress || 0;
25125
- if (cached && danmaku.progress - lastAppearTime <= lifetime && danmaku.isSameAs(cached, {
25182
+ if (cached && danmaku.progress - cached.progress <= lifetime && danmaku.isSameAs(cached, {
25126
25183
  skipDanuniMerge: true
25127
25184
  })) {
25128
- const senders = mergeObj[key].senders;
25129
- senders.push(danmaku.senderID);
25130
- const extra = danmaku.extra;
25131
- extra.danuni = extra.danuni || {};
25132
- extra.danuni.merge = {
25133
- count: senders.length,
25134
- duration: Number.parseFloat((danmaku.progress - cached.progress).toFixed(3)),
25135
- senders,
25136
- taolu_count: senders.length,
25137
- taolu_senders: senders
25138
- };
25139
- danmaku.extraStr = src_JSON_0.stringify(extra);
25185
+ mergeObj[key].senders.push(danmaku.senderID);
25186
+ mergeObj[key].count = mergeObj[key].senders.length;
25187
+ mergeObj[key].taolu_count = mergeObj[key].count;
25188
+ mergeObj[key].taolu_senders = mergeObj[key].senders;
25189
+ mergeObj[key].duration = Number.parseFloat((danmaku.progress - cached.progress).toFixed(3));
25140
25190
  cache[key] = danmaku;
25141
- mergeObj[key] = extra.danuni.merge;
25142
- return [
25143
- result,
25144
- cache,
25145
- mergeObj
25146
- ];
25147
- }
25148
- {
25191
+ } else {
25149
25192
  mergeObj[key] = {
25150
25193
  count: 1,
25151
25194
  duration: 0,
@@ -25158,55 +25201,31 @@ and limitations under the License.
25158
25201
  ]
25159
25202
  };
25160
25203
  cache[key] = danmaku;
25161
- const extra = danmaku.extra;
25162
- extra.danuni = extra.danuni || {};
25163
- extra.danuni.merge = mergeObj[key];
25164
- danmaku.extraStr = src_JSON_0.stringify(extra);
25165
25204
  result.push(danmaku);
25166
- return [
25167
- result,
25168
- cache,
25169
- mergeObj
25170
- ];
25171
25205
  }
25172
- }, [
25173
- [],
25174
- {},
25175
- {}
25176
- ]);
25177
- const [result, _cache, mergeObj] = mergeContext;
25178
- result.forEach((danmaku, i)=>{
25179
- const key = [
25180
- 'content',
25181
- 'mode',
25182
- 'platform',
25183
- 'pool'
25184
- ].map((k)=>danmaku[k]).join('|');
25185
- const extra = result[i].extra;
25206
+ }
25207
+ for (const danmaku of result){
25208
+ const key = `${danmaku.content}|${danmaku.mode}|${danmaku.pool}|${danmaku.platform}`;
25186
25209
  const mergeData = mergeObj[key];
25187
- result[i].extraStr = src_JSON_0.stringify({
25188
- ...extra,
25189
- danuni: {
25190
- ...extra.danuni,
25191
- merge: mergeData
25192
- }
25193
- });
25194
- if (mergeData?.count) if (mergeData.count <= 1) {
25195
- const updatedExtra = {
25196
- ...extra
25197
- };
25198
- if (updatedExtra.danuni) {
25199
- delete updatedExtra.danuni.merge;
25200
- if (0 === Object.keys(updatedExtra.danuni).length) delete updatedExtra.danuni;
25201
- }
25202
- result[i].extraStr = Object.keys(updatedExtra).length > 0 ? src_JSON_0.stringify(updatedExtra) : void 0;
25203
- } else {
25204
- result[i].senderID = 'merge[bot]@dan-any';
25205
- result[i].attr ? result[i].attr.push(dm_gen_DMAttr.Protect) : result[i].attr = [
25210
+ const extra = danmaku.extra;
25211
+ if (mergeData.count > 1) {
25212
+ danmaku.senderID = 'merge[bot]@dan-any';
25213
+ if (danmaku.attr) {
25214
+ if (!danmaku.attr.includes(dm_gen_DMAttr.Protect)) danmaku.attr.push(dm_gen_DMAttr.Protect);
25215
+ } else danmaku.attr = [
25206
25216
  dm_gen_DMAttr.Protect
25207
25217
  ];
25218
+ extra.danuni = extra.danuni || {};
25219
+ extra.danuni.merge = mergeData;
25220
+ danmaku.extraStr = src_JSON_0.stringify(extra);
25221
+ } else {
25222
+ if (extra.danuni?.merge) {
25223
+ delete extra.danuni.merge;
25224
+ if (0 === Object.keys(extra.danuni).length) delete extra.danuni;
25225
+ }
25226
+ danmaku.extraStr = Object.keys(extra).length > 0 ? src_JSON_0.stringify(extra) : void 0;
25208
25227
  }
25209
- });
25228
+ }
25210
25229
  return new src_UniPool(result, this.options, this.info);
25211
25230
  }
25212
25231
  minify() {
@@ -25229,14 +25248,18 @@ and limitations under the License.
25229
25248
  pool: this.fromArtplayer(json, json.danuni?.data ?? '', void 0, options),
25230
25249
  fmt: 'artplayer.json'
25231
25250
  };
25232
- if (json.count && json.comments && json.comments.every((d)=>d.m)) return {
25251
+ if (json.count && json.comments && Array.isArray(json.comments) && json.comments.every((d)=>d.m)) return {
25233
25252
  pool: this.fromDDPlay(json, json.danuni?.data ?? '', options),
25234
25253
  fmt: 'ddplay.json'
25235
25254
  };
25236
- else if (json?.code == 0 && json.data && json.data.every((d)=>Array.isArray(d))) return {
25255
+ else if (0 == json.code && json.data && Array.isArray(json.data) && json.data.every((d)=>Array.isArray(d))) return {
25237
25256
  pool: this.fromDplayer(json, json.danuni?.data ?? '', void 0, options),
25238
25257
  fmt: 'dplayer.json'
25239
25258
  };
25259
+ else if (0 == json.code && '0' == json.message && json.data && json.data.page && json.data.result && Array.isArray(json.data.result) && json.data.result.every((d)=>d.id && d.oid)) return {
25260
+ pool: this.fromBiliUp(json, options),
25261
+ fmt: 'bili.up.json'
25262
+ };
25240
25263
  } catch {}
25241
25264
  };
25242
25265
  const parseStr = (file)=>{
@@ -25404,7 +25427,7 @@ and limitations under the License.
25404
25427
  source: 'k-v',
25405
25428
  danuni: {
25406
25429
  ...src_DanUniConvertTipTemplate,
25407
- data: this.shared.SOID
25430
+ data: this.getShared('SOID')
25408
25431
  },
25409
25432
  d: this.dans.map((dan)=>dan.toBiliXML(options))
25410
25433
  }
@@ -25543,7 +25566,7 @@ and limitations under the License.
25543
25566
  substyle: {}
25544
25567
  };
25545
25568
  const finalOptions = options ?? defaultOptions;
25546
- const fn = this.shared.SOID;
25569
+ const fn = this.getShared('SOID');
25547
25570
  return generateASS(this, {
25548
25571
  filename: fn,
25549
25572
  title: fn,