@dan-uni/dan-any 0.9.4 → 0.9.6
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/README.md +4 -0
- package/dist/index.js +129 -79
- package/dist/index.min.js +138 -93
- package/dist/index.umd.min.js +373 -232
- package/dist/src/ass-gen/ass/create.d.ts +1 -2
- package/dist/src/ass-gen/ass/dialogue.d.ts +1 -2
- package/dist/src/ass-gen/ass/event.d.ts +1 -2
- package/dist/src/ass-gen/ass/info.d.ts +2 -2
- package/dist/src/ass-gen/ass/style.d.ts +1 -2
- package/dist/src/ass-gen/config.d.ts +1 -2
- package/dist/src/index.d.ts +68 -1
- package/dist/src/utils/dm-gen.d.ts +3 -0
- package/package.json +6 -6
- package/src/ass-gen/__tests__/generate.test.ts +2 -2
- package/src/ass-gen/ass/create.ts +7 -6
- package/src/ass-gen/ass/dialogue.ts +1 -2
- package/src/ass-gen/ass/event.ts +2 -3
- package/src/ass-gen/ass/info.ts +1 -2
- package/src/ass-gen/ass/raw.ts +7 -7
- package/src/ass-gen/ass/style.ts +1 -2
- package/src/ass-gen/config.ts +1 -1
- package/src/ass-gen/index.ts +7 -4
- package/src/ass-gen/util/layout.ts +1 -1
- package/src/index.test.ts +0 -1
- package/src/index.ts +120 -12
- package/src/proto/gen/bili/dm_pb.ts +1 -1
- package/src/proto/gen/danuni_pb.ts +1 -1
- package/src/utils/dm-gen.ts +38 -28
- package/types/tsconfig.tsbuildinfo +1 -1
package/dist/index.min.js
CHANGED
|
@@ -3919,6 +3919,10 @@ var __webpack_modules__ = {
|
|
|
3919
3919
|
var implementation = __webpack_require__("../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js");
|
|
3920
3920
|
module.exports = Function.prototype.bind || implementation;
|
|
3921
3921
|
},
|
|
3922
|
+
"../../node_modules/.pnpm/generator-function@2.0.1/node_modules/generator-function/index.js": function(module) {
|
|
3923
|
+
const cached = (function*() {}).constructor;
|
|
3924
|
+
module.exports = ()=>cached;
|
|
3925
|
+
},
|
|
3922
3926
|
"../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js": function(module, __unused_webpack_exports, __webpack_require__) {
|
|
3923
3927
|
var undefined;
|
|
3924
3928
|
var $Object = __webpack_require__("../../node_modules/.pnpm/es-object-atoms@1.1.1/node_modules/es-object-atoms/index.js");
|
|
@@ -4663,7 +4667,7 @@ var __webpack_modules__ = {
|
|
|
4663
4667
|
return tryFunctionObject(value);
|
|
4664
4668
|
};
|
|
4665
4669
|
},
|
|
4666
|
-
"../../node_modules/.pnpm/is-generator-function@1.1.
|
|
4670
|
+
"../../node_modules/.pnpm/is-generator-function@1.1.2/node_modules/is-generator-function/index.js": function(module, __unused_webpack_exports, __webpack_require__) {
|
|
4667
4671
|
var callBound = __webpack_require__("../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js");
|
|
4668
4672
|
var safeRegexTest = __webpack_require__("../../node_modules/.pnpm/safe-regex-test@1.1.0/node_modules/safe-regex-test/index.js");
|
|
4669
4673
|
var isFnRegex = safeRegexTest(/^\s*(?:function)?\*/);
|
|
@@ -4671,13 +4675,7 @@ var __webpack_modules__ = {
|
|
|
4671
4675
|
var getProto = __webpack_require__("../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js");
|
|
4672
4676
|
var toStr = callBound('Object.prototype.toString');
|
|
4673
4677
|
var fnToStr = callBound('Function.prototype.toString');
|
|
4674
|
-
var
|
|
4675
|
-
if (!hasToStringTag) return false;
|
|
4676
|
-
try {
|
|
4677
|
-
return Function('return function*() {}')();
|
|
4678
|
-
} catch (e) {}
|
|
4679
|
-
};
|
|
4680
|
-
var GeneratorFunction;
|
|
4678
|
+
var getGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/generator-function@2.0.1/node_modules/generator-function/index.js");
|
|
4681
4679
|
module.exports = function(fn) {
|
|
4682
4680
|
if ('function' != typeof fn) return false;
|
|
4683
4681
|
if (isFnRegex(fnToStr(fn))) return true;
|
|
@@ -4686,11 +4684,8 @@ var __webpack_modules__ = {
|
|
|
4686
4684
|
return '[object GeneratorFunction]' === str;
|
|
4687
4685
|
}
|
|
4688
4686
|
if (!getProto) return false;
|
|
4689
|
-
|
|
4690
|
-
|
|
4691
|
-
GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;
|
|
4692
|
-
}
|
|
4693
|
-
return getProto(fn) === GeneratorFunction;
|
|
4687
|
+
var GeneratorFunction = getGeneratorFunction();
|
|
4688
|
+
return GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;
|
|
4694
4689
|
};
|
|
4695
4690
|
},
|
|
4696
4691
|
"../../node_modules/.pnpm/is-nan@1.3.2/node_modules/is-nan/implementation.js": function(module) {
|
|
@@ -10686,7 +10681,7 @@ var __webpack_modules__ = {
|
|
|
10686
10681
|
},
|
|
10687
10682
|
"../../node_modules/.pnpm/util@0.12.5/node_modules/util/support/types.js": function(__unused_webpack_module, exports, __webpack_require__) {
|
|
10688
10683
|
var isArgumentsObject = __webpack_require__("../../node_modules/.pnpm/is-arguments@1.2.0/node_modules/is-arguments/index.js");
|
|
10689
|
-
var isGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/is-generator-function@1.1.
|
|
10684
|
+
var isGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/is-generator-function@1.1.2/node_modules/is-generator-function/index.js");
|
|
10690
10685
|
var whichTypedArray = __webpack_require__("../../node_modules/.pnpm/which-typed-array@1.1.19/node_modules/which-typed-array/index.js");
|
|
10691
10686
|
var isTypedArray = __webpack_require__("../../node_modules/.pnpm/is-typed-array@1.1.15/node_modules/is-typed-array/index.js");
|
|
10692
10687
|
function uncurryThis(f) {
|
|
@@ -11500,7 +11495,7 @@ __webpack_require__.d(dm_gen_namespaceObject, {
|
|
|
11500
11495
|
Pools: ()=>dm_gen_Pools,
|
|
11501
11496
|
UniDM: ()=>UniDM
|
|
11502
11497
|
});
|
|
11503
|
-
var package_namespaceObject = JSON.parse('{"
|
|
11498
|
+
var package_namespaceObject = JSON.parse('{"UU":"@dan-uni/dan-any","rE":"0.9.6","TB":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
|
|
11504
11499
|
const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
|
|
11505
11500
|
const DmSegMobileReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 30);
|
|
11506
11501
|
const DmWebViewReplySchema = /*@__PURE__*/ codegenv2_messageDesc(file_bili_dm, 39);
|
|
@@ -11657,16 +11652,16 @@ var dm_gen_ExtraDanUniChapterType = /*#__PURE__*/ function(ExtraDanUniChapterTyp
|
|
|
11657
11652
|
}({});
|
|
11658
11653
|
const ExtraDanUniChapterTypeDict = {
|
|
11659
11654
|
chs: {
|
|
11660
|
-
ch:
|
|
11661
|
-
rev:
|
|
11662
|
-
op:
|
|
11663
|
-
int:
|
|
11664
|
-
ed:
|
|
11665
|
-
prvw:
|
|
11666
|
-
cut:
|
|
11667
|
-
dup:
|
|
11668
|
-
biz:
|
|
11669
|
-
promo:
|
|
11655
|
+
ch: '其它片段',
|
|
11656
|
+
rev: '回顾',
|
|
11657
|
+
op: '片头',
|
|
11658
|
+
int: '中场',
|
|
11659
|
+
ed: '片尾',
|
|
11660
|
+
prvw: '预告',
|
|
11661
|
+
cut: '删减',
|
|
11662
|
+
dup: '补档',
|
|
11663
|
+
biz: '商业广告',
|
|
11664
|
+
promo: '推广'
|
|
11670
11665
|
}
|
|
11671
11666
|
};
|
|
11672
11667
|
var dm_gen_ExtraDanUniChapterAction = /*#__PURE__*/ function(ExtraDanUniChapterAction) {
|
|
@@ -11765,22 +11760,27 @@ class UniDM {
|
|
|
11765
11760
|
minify() {
|
|
11766
11761
|
const def = UniDM.create();
|
|
11767
11762
|
const dan = UniDM.create(this);
|
|
11768
|
-
|
|
11769
|
-
|
|
11770
|
-
|
|
11771
|
-
if (
|
|
11772
|
-
|
|
11773
|
-
|
|
11774
|
-
|
|
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
|
+
};
|
|
11771
|
+
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);
|
|
11775
11779
|
}
|
|
11776
|
-
else delete dan[k];
|
|
11777
11780
|
}
|
|
11778
|
-
return
|
|
11781
|
+
return result;
|
|
11779
11782
|
}
|
|
11780
|
-
downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {
|
|
11781
|
-
include: [],
|
|
11782
|
-
exclude: []
|
|
11783
|
-
}) {
|
|
11783
|
+
downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
|
|
11784
11784
|
if (!this.extra) return this;
|
|
11785
11785
|
{
|
|
11786
11786
|
if (!include) include = [];
|
|
@@ -11795,16 +11795,16 @@ class UniDM {
|
|
|
11795
11795
|
clone.content = `${this.content} x${merge.count}`;
|
|
11796
11796
|
} else if (danuni.chapter) {
|
|
11797
11797
|
const chapter = danuni.chapter;
|
|
11798
|
-
if ("cut" === chapter.type) clone.content = `[
|
|
11799
|
-
else if ("dup" === chapter.type) clone.content = `[
|
|
11800
|
-
else clone.content = `[
|
|
11798
|
+
if ("cut" === chapter.type) clone.content = `[提示]${clone.platform}源${ExtraDanUniChapterTypeDict.chs[chapter.type]}了${chapter.duration}秒`;
|
|
11799
|
+
else if ("dup" === chapter.type) clone.content = `[提示(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${clone.platform}源-${chapter.duration}秒`;
|
|
11800
|
+
else clone.content = `[空降(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${hh_mm_ss.fromS(clone.progress + chapter.duration)}`;
|
|
11801
11801
|
}
|
|
11802
11802
|
} else if (check('bili') && clone.extra.bili) {
|
|
11803
11803
|
const bili = clone.extra.bili;
|
|
11804
|
-
if (7 === bili.mode && bili.adv) clone.content = `[B
|
|
11804
|
+
if (7 === bili.mode && bili.adv) clone.content = `[B站高级弹幕]${dm_gen_JSON.parse(bili.adv)[4] || ''}`;
|
|
11805
11805
|
else if (bili.command) {
|
|
11806
11806
|
const command = bili.command;
|
|
11807
|
-
clone.content = `[B
|
|
11807
|
+
clone.content = `[B站指令弹幕]${command.content}`;
|
|
11808
11808
|
clone.fontsize = 36;
|
|
11809
11809
|
}
|
|
11810
11810
|
}
|
|
@@ -11884,7 +11884,9 @@ class UniDM {
|
|
|
11884
11884
|
bili: {
|
|
11885
11885
|
mode: args.mode,
|
|
11886
11886
|
pool: args.pool,
|
|
11887
|
-
dmid: args.id
|
|
11887
|
+
dmid: args.id,
|
|
11888
|
+
attr: args.attr,
|
|
11889
|
+
mid: args.mid
|
|
11888
11890
|
}
|
|
11889
11891
|
};
|
|
11890
11892
|
switch(args.mode){
|
|
@@ -11919,7 +11921,7 @@ class UniDM {
|
|
|
11919
11921
|
mode,
|
|
11920
11922
|
senderID: senderID.toString(),
|
|
11921
11923
|
ctime: this.transCtime(args.ctime, 's'),
|
|
11922
|
-
weight: args.weight
|
|
11924
|
+
weight: args.weight || (3 === pool ? 1 : 0),
|
|
11923
11925
|
pool,
|
|
11924
11926
|
attr: DMAttrUtils.fromBin(args.attr, platform_PlatformVideoSource.Bilibili),
|
|
11925
11927
|
platform: platform_PlatformVideoSource.Bilibili,
|
|
@@ -12293,7 +12295,7 @@ const src_JSON = json_bigint({
|
|
|
12293
12295
|
});
|
|
12294
12296
|
const DanUniConvertTipTemplate = {
|
|
12295
12297
|
meassage: 'Converted by DanUni!',
|
|
12296
|
-
version: `JS/TS ${package_namespaceObject.
|
|
12298
|
+
version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
|
|
12297
12299
|
};
|
|
12298
12300
|
class UniPool {
|
|
12299
12301
|
constructor(dans, options = {}, info = {
|
|
@@ -12340,7 +12342,7 @@ class UniPool {
|
|
|
12340
12342
|
return stats;
|
|
12341
12343
|
}
|
|
12342
12344
|
getMost(key) {
|
|
12343
|
-
return this.getStat(key).
|
|
12345
|
+
return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
|
|
12344
12346
|
}
|
|
12345
12347
|
get most() {
|
|
12346
12348
|
return {
|
|
@@ -12402,7 +12404,7 @@ class UniPool {
|
|
|
12402
12404
|
}
|
|
12403
12405
|
merge(lifetime = 0) {
|
|
12404
12406
|
if (!this.shared.SOID) {
|
|
12405
|
-
console.error("
|
|
12407
|
+
console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
|
|
12406
12408
|
return this;
|
|
12407
12409
|
}
|
|
12408
12410
|
if (lifetime <= 0) return this;
|
|
@@ -12511,7 +12513,7 @@ class UniPool {
|
|
|
12511
12513
|
'str',
|
|
12512
12514
|
'bin'
|
|
12513
12515
|
];
|
|
12514
|
-
const err =
|
|
12516
|
+
const err = '无法识别该文件,请手动指定格式!';
|
|
12515
12517
|
const parseJSON = (json)=>{
|
|
12516
12518
|
try {
|
|
12517
12519
|
if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
|
|
@@ -12585,16 +12587,16 @@ class UniPool {
|
|
|
12585
12587
|
const fileStr = new TextDecoder().decode(file);
|
|
12586
12588
|
const prStr = parseStr(fileStr);
|
|
12587
12589
|
if (prStr) return prStr;
|
|
12588
|
-
errmesg = `${err}(
|
|
12590
|
+
errmesg = `${err}(定位: bin->string)`;
|
|
12589
12591
|
} catch {}
|
|
12590
12592
|
} else if (mod.includes('json')) {
|
|
12591
12593
|
const prJSON = parseJSON(file);
|
|
12592
|
-
if (!prJSON) throw new Error(`${err}(
|
|
12594
|
+
if (!prJSON) throw new Error(`${err}(定位: json)`);
|
|
12593
12595
|
return prJSON;
|
|
12594
12596
|
}
|
|
12595
12597
|
} else if (isString(file)) {
|
|
12596
12598
|
const prStr = parseStr(file);
|
|
12597
|
-
if (!prStr) throw new Error(`${err}(
|
|
12599
|
+
if (!prStr) throw new Error(`${err}(定位: string)`);
|
|
12598
12600
|
return prStr;
|
|
12599
12601
|
}
|
|
12600
12602
|
throw new Error(errmesg ?? err);
|
|
@@ -12692,7 +12694,7 @@ class UniPool {
|
|
|
12692
12694
|
};
|
|
12693
12695
|
if (options?.avoidSenderIDWithAt) {
|
|
12694
12696
|
const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
|
|
12695
|
-
if (!ok) throw new Error(
|
|
12697
|
+
if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
|
|
12696
12698
|
}
|
|
12697
12699
|
const builder = new XMLBuilder({
|
|
12698
12700
|
ignoreAttributes: false
|
|
@@ -12731,6 +12733,25 @@ class UniPool {
|
|
|
12731
12733
|
const json = data.commandDms;
|
|
12732
12734
|
return new UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
|
|
12733
12735
|
}
|
|
12736
|
+
static fromBiliUp(json, options) {
|
|
12737
|
+
return new UniPool(json.data.result.map((d)=>{
|
|
12738
|
+
const attrBin = d.attrs ? d.attrs.split(',').map(Number).reduce((bin, bitPosition)=>bin | 1 << bitPosition - 1, 0) : 0;
|
|
12739
|
+
return UniDM.fromBili({
|
|
12740
|
+
id: BigInt(d.id_str || d.id),
|
|
12741
|
+
progress: d.progress / 1000,
|
|
12742
|
+
mode: d.mode,
|
|
12743
|
+
fontsize: d.fontsize,
|
|
12744
|
+
color: Number.parseInt(d.color, 16),
|
|
12745
|
+
mid: d.mid,
|
|
12746
|
+
midHash: d.mid_hash,
|
|
12747
|
+
content: d.msg,
|
|
12748
|
+
ctime: BigInt(d.ctime),
|
|
12749
|
+
pool: d.pool,
|
|
12750
|
+
attr: attrBin,
|
|
12751
|
+
oid: BigInt(d.oid)
|
|
12752
|
+
}, BigInt(d.oid), options);
|
|
12753
|
+
}), options);
|
|
12754
|
+
}
|
|
12734
12755
|
static fromDplayer(json, playerID, domain = 'other', options) {
|
|
12735
12756
|
return new UniPool(json.data.map((d)=>UniDM.fromDplayer({
|
|
12736
12757
|
content: d[4],
|
|
@@ -12827,14 +12848,16 @@ class UniPool {
|
|
|
12827
12848
|
static fromASS(ass, options) {
|
|
12828
12849
|
return parseAssRawField(ass, options);
|
|
12829
12850
|
}
|
|
12830
|
-
toASS(canvasCtx, options
|
|
12831
|
-
|
|
12832
|
-
|
|
12851
|
+
toASS(canvasCtx, options) {
|
|
12852
|
+
const defaultOptions = {
|
|
12853
|
+
substyle: {}
|
|
12854
|
+
};
|
|
12855
|
+
const finalOptions = options ?? defaultOptions;
|
|
12833
12856
|
const fn = this.shared.SOID;
|
|
12834
12857
|
return generateASS(this, {
|
|
12835
12858
|
filename: fn,
|
|
12836
12859
|
title: fn,
|
|
12837
|
-
...
|
|
12860
|
+
...finalOptions
|
|
12838
12861
|
}, canvasCtx);
|
|
12839
12862
|
}
|
|
12840
12863
|
}
|
|
@@ -12946,7 +12969,7 @@ const splitGrids = ({ fontSize, padding, playResY, bottomSpace })=>{
|
|
|
12946
12969
|
};
|
|
12947
12970
|
};
|
|
12948
12971
|
const measureTextWidthConstructor = (canvasContext)=>{
|
|
12949
|
-
const supportTextMeasure = !!canvasContext.measureText(
|
|
12972
|
+
const supportTextMeasure = !!canvasContext.measureText('中');
|
|
12950
12973
|
if (supportTextMeasure) return (fontName, fontSize, bold, text)=>{
|
|
12951
12974
|
canvasContext.font = `${bold ? 'bold' : 'normal'} ${fontSize}px ${fontName}`;
|
|
12952
12975
|
const textWidth = canvasContext.measureText(text).width;
|
|
@@ -13024,7 +13047,7 @@ const initializeLayout = (config, canvasCtx)=>{
|
|
|
13024
13047
|
const layoutDanmaku = (inputList, config, canvasCtx)=>{
|
|
13025
13048
|
const list = [
|
|
13026
13049
|
...UniPool2DanmakuLists(inputList)
|
|
13027
|
-
].
|
|
13050
|
+
].toSorted((x, y)=>x.time - y.time);
|
|
13028
13051
|
const layout = initializeLayout(config, canvasCtx);
|
|
13029
13052
|
return DanmakuList2UniPool(list.map(layout).filter((danmaku)=>!!danmaku));
|
|
13030
13053
|
};
|
|
@@ -13038,7 +13061,7 @@ const formatTime = (seconds)=>{
|
|
|
13038
13061
|
const minorSecond = Math.floor((seconds - integer) * 100);
|
|
13039
13062
|
return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
|
|
13040
13063
|
};
|
|
13041
|
-
const encode = (text)=>text.toString().replaceAll('{',
|
|
13064
|
+
const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
|
|
13042
13065
|
const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
|
|
13043
13066
|
const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
|
|
13044
13067
|
const colorCommand = (color)=>`\\c${formatColor(color)}`;
|
|
@@ -13107,7 +13130,7 @@ const calculateDanmakuPosition = (danmaku, config)=>{
|
|
|
13107
13130
|
throw new Error(`Unknown danmaku type: ${danmaku.type}`);
|
|
13108
13131
|
}
|
|
13109
13132
|
};
|
|
13110
|
-
const
|
|
13133
|
+
const event_event = (list, config)=>{
|
|
13111
13134
|
const content = [
|
|
13112
13135
|
'[Events]',
|
|
13113
13136
|
'Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text',
|
|
@@ -13118,11 +13141,11 @@ const ass_event = (list, config)=>{
|
|
|
13118
13141
|
];
|
|
13119
13142
|
return content.join('\n');
|
|
13120
13143
|
};
|
|
13121
|
-
const
|
|
13144
|
+
const info_info = ({ playResX, playResY }, { filename, title })=>{
|
|
13122
13145
|
const content = [
|
|
13123
13146
|
'[Script Info]',
|
|
13124
13147
|
`Title: ${title}`,
|
|
13125
|
-
`Original Script:
|
|
13148
|
+
`Original Script: 根据 ${filename} 的弹幕信息,由 ${package_namespaceObject.TB} 生成`,
|
|
13126
13149
|
'ScriptType: v4.00+',
|
|
13127
13150
|
'Collisions: Reverse',
|
|
13128
13151
|
`PlayResX: ${playResX}`,
|
|
@@ -13133,17 +13156,17 @@ const ass_info = ({ playResX, playResY }, { filename, title })=>{
|
|
|
13133
13156
|
};
|
|
13134
13157
|
var lib = __webpack_require__("../../node_modules/.pnpm/browserify-zlib@0.2.0/node_modules/browserify-zlib/lib/index.js");
|
|
13135
13158
|
var raw_Buffer = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js")["Buffer"];
|
|
13136
|
-
const compressTypes = [
|
|
13159
|
+
const compressTypes = new Set([
|
|
13137
13160
|
'brotli',
|
|
13138
13161
|
'gzip'
|
|
13139
|
-
];
|
|
13140
|
-
const baseTypes = [
|
|
13162
|
+
]);
|
|
13163
|
+
const baseTypes = new Set([
|
|
13141
13164
|
'base64',
|
|
13142
13165
|
'base18384'
|
|
13143
|
-
];
|
|
13166
|
+
]);
|
|
13144
13167
|
function fromUint16Array(array) {
|
|
13145
13168
|
let result = '';
|
|
13146
|
-
for (const element of array)result += String.
|
|
13169
|
+
for (const element of array)result += String.fromCodePoint(element);
|
|
13147
13170
|
return result;
|
|
13148
13171
|
}
|
|
13149
13172
|
function raw_raw(list, config, context, compressType = 'brotli', baseType = 'base18384') {
|
|
@@ -13166,14 +13189,14 @@ function deRaw(ass) {
|
|
|
13166
13189
|
{
|
|
13167
13190
|
let compressType = lineCompressType.replace(';RawCompressType: ', '').trim();
|
|
13168
13191
|
let baseType = lineBaseType.replace(';RawBaseType: ', '').trim();
|
|
13169
|
-
if (!compressTypes.
|
|
13170
|
-
if (!baseTypes.
|
|
13192
|
+
if (!compressTypes.has(compressType)) compressType = 'gzip';
|
|
13193
|
+
if (!baseTypes.has(baseType)) baseType = 'base64';
|
|
13171
13194
|
const text = lineRaw.replace(';Raw: ', '').trim();
|
|
13172
|
-
const buffer = 'base64' === baseType ? raw_Buffer.from(text, 'base64') : raw_Buffer.from(decode(raw_Buffer.from(text, '
|
|
13195
|
+
const buffer = 'base64' === baseType ? raw_Buffer.from(text, 'base64') : raw_Buffer.from(decode(raw_Buffer.from(text, 'utf8').toString('utf8')));
|
|
13173
13196
|
let decompress;
|
|
13174
13197
|
decompress = 'brotli' === compressType ? (0, lib.brotliDecompressSync)(buffer) : (0, lib.gunzipSync)(buffer);
|
|
13175
13198
|
try {
|
|
13176
|
-
return JSON.parse(decompress.toString('
|
|
13199
|
+
return JSON.parse(decompress.toString('utf8'));
|
|
13177
13200
|
} catch {
|
|
13178
13201
|
return;
|
|
13179
13202
|
}
|
|
@@ -13220,21 +13243,22 @@ const style = ({ fontName, fontSize, color: configColor, outlineColor, backColor
|
|
|
13220
13243
|
];
|
|
13221
13244
|
return content.join('\n');
|
|
13222
13245
|
};
|
|
13223
|
-
const
|
|
13246
|
+
const default_context = {
|
|
13224
13247
|
filename: 'unknown',
|
|
13225
13248
|
title: 'unknown'
|
|
13226
|
-
}
|
|
13249
|
+
};
|
|
13250
|
+
const create_ass = (list, rawList, config, context = default_context, rawConfig)=>{
|
|
13227
13251
|
const Elist = UniPool2DanmakuLists(list);
|
|
13228
13252
|
const ErawList = UniPool2DanmakuLists(rawList);
|
|
13229
13253
|
const content = [
|
|
13230
|
-
|
|
13254
|
+
info_info(config, context),
|
|
13231
13255
|
style(config),
|
|
13232
|
-
|
|
13256
|
+
event_event(Elist, config)
|
|
13233
13257
|
];
|
|
13234
13258
|
if (config.includeRaw) content.push(raw_raw(ErawList, config, context, rawConfig?.compressType, rawConfig?.baseType));
|
|
13235
13259
|
return `${content.join('\n\n')}\n`;
|
|
13236
13260
|
};
|
|
13237
|
-
const
|
|
13261
|
+
const getConfig = (overrides = {})=>{
|
|
13238
13262
|
const defaults = {
|
|
13239
13263
|
fontSize: [
|
|
13240
13264
|
25,
|
|
@@ -13270,10 +13294,10 @@ const ass_gen_config = (overrides = {})=>{
|
|
|
13270
13294
|
return config;
|
|
13271
13295
|
};
|
|
13272
13296
|
function generateASS(danmaku, options, canvasCtx) {
|
|
13273
|
-
const config =
|
|
13297
|
+
const config = getConfig(options.substyle);
|
|
13274
13298
|
const mergedList = danmaku.merge(config.mergeIn);
|
|
13275
13299
|
const layoutList = layoutDanmaku(mergedList, config, canvasCtx);
|
|
13276
|
-
const content =
|
|
13300
|
+
const content = create_ass(layoutList, danmaku, config, {
|
|
13277
13301
|
filename: options?.filename || 'unknown',
|
|
13278
13302
|
title: options?.title || 'unknown'
|
|
13279
13303
|
}, options.raw);
|
|
@@ -13281,15 +13305,15 @@ function generateASS(danmaku, options, canvasCtx) {
|
|
|
13281
13305
|
}
|
|
13282
13306
|
function parseAssRawField(ass, options) {
|
|
13283
13307
|
const raw = deRaw(ass);
|
|
13284
|
-
if (
|
|
13285
|
-
return
|
|
13308
|
+
if (raw) return DanmakuList2UniPool(raw.list, options);
|
|
13309
|
+
return UniPool.create();
|
|
13286
13310
|
}
|
|
13287
13311
|
const src_JSON_0 = json_bigint({
|
|
13288
13312
|
useNativeBigInt: true
|
|
13289
13313
|
});
|
|
13290
13314
|
const src_DanUniConvertTipTemplate = {
|
|
13291
13315
|
meassage: 'Converted by DanUni!',
|
|
13292
|
-
version: `JS/TS ${package_namespaceObject.
|
|
13316
|
+
version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
|
|
13293
13317
|
};
|
|
13294
13318
|
class src_UniPool {
|
|
13295
13319
|
constructor(dans, options = {}, info = {
|
|
@@ -13336,7 +13360,7 @@ class src_UniPool {
|
|
|
13336
13360
|
return stats;
|
|
13337
13361
|
}
|
|
13338
13362
|
getMost(key) {
|
|
13339
|
-
return this.getStat(key).
|
|
13363
|
+
return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
|
|
13340
13364
|
}
|
|
13341
13365
|
get most() {
|
|
13342
13366
|
return {
|
|
@@ -13398,7 +13422,7 @@ class src_UniPool {
|
|
|
13398
13422
|
}
|
|
13399
13423
|
merge(lifetime = 0) {
|
|
13400
13424
|
if (!this.shared.SOID) {
|
|
13401
|
-
console.error("
|
|
13425
|
+
console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
|
|
13402
13426
|
return this;
|
|
13403
13427
|
}
|
|
13404
13428
|
if (lifetime <= 0) return this;
|
|
@@ -13507,7 +13531,7 @@ class src_UniPool {
|
|
|
13507
13531
|
'str',
|
|
13508
13532
|
'bin'
|
|
13509
13533
|
];
|
|
13510
|
-
const err =
|
|
13534
|
+
const err = '无法识别该文件,请手动指定格式!';
|
|
13511
13535
|
const parseJSON = (json)=>{
|
|
13512
13536
|
try {
|
|
13513
13537
|
if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
|
|
@@ -13581,16 +13605,16 @@ class src_UniPool {
|
|
|
13581
13605
|
const fileStr = new TextDecoder().decode(file);
|
|
13582
13606
|
const prStr = parseStr(fileStr);
|
|
13583
13607
|
if (prStr) return prStr;
|
|
13584
|
-
errmesg = `${err}(
|
|
13608
|
+
errmesg = `${err}(定位: bin->string)`;
|
|
13585
13609
|
} catch {}
|
|
13586
13610
|
} else if (mod.includes('json')) {
|
|
13587
13611
|
const prJSON = parseJSON(file);
|
|
13588
|
-
if (!prJSON) throw new Error(`${err}(
|
|
13612
|
+
if (!prJSON) throw new Error(`${err}(定位: json)`);
|
|
13589
13613
|
return prJSON;
|
|
13590
13614
|
}
|
|
13591
13615
|
} else if (isString(file)) {
|
|
13592
13616
|
const prStr = parseStr(file);
|
|
13593
|
-
if (!prStr) throw new Error(`${err}(
|
|
13617
|
+
if (!prStr) throw new Error(`${err}(定位: string)`);
|
|
13594
13618
|
return prStr;
|
|
13595
13619
|
}
|
|
13596
13620
|
throw new Error(errmesg ?? err);
|
|
@@ -13688,7 +13712,7 @@ class src_UniPool {
|
|
|
13688
13712
|
};
|
|
13689
13713
|
if (options?.avoidSenderIDWithAt) {
|
|
13690
13714
|
const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
|
|
13691
|
-
if (!ok) throw new Error(
|
|
13715
|
+
if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
|
|
13692
13716
|
}
|
|
13693
13717
|
const builder = new XMLBuilder({
|
|
13694
13718
|
ignoreAttributes: false
|
|
@@ -13727,6 +13751,25 @@ class src_UniPool {
|
|
|
13727
13751
|
const json = data.commandDms;
|
|
13728
13752
|
return new src_UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
|
|
13729
13753
|
}
|
|
13754
|
+
static fromBiliUp(json, options) {
|
|
13755
|
+
return new src_UniPool(json.data.result.map((d)=>{
|
|
13756
|
+
const attrBin = d.attrs ? d.attrs.split(',').map(Number).reduce((bin, bitPosition)=>bin | 1 << bitPosition - 1, 0) : 0;
|
|
13757
|
+
return UniDM.fromBili({
|
|
13758
|
+
id: BigInt(d.id_str || d.id),
|
|
13759
|
+
progress: d.progress / 1000,
|
|
13760
|
+
mode: d.mode,
|
|
13761
|
+
fontsize: d.fontsize,
|
|
13762
|
+
color: Number.parseInt(d.color, 16),
|
|
13763
|
+
mid: d.mid,
|
|
13764
|
+
midHash: d.mid_hash,
|
|
13765
|
+
content: d.msg,
|
|
13766
|
+
ctime: BigInt(d.ctime),
|
|
13767
|
+
pool: d.pool,
|
|
13768
|
+
attr: attrBin,
|
|
13769
|
+
oid: BigInt(d.oid)
|
|
13770
|
+
}, BigInt(d.oid), options);
|
|
13771
|
+
}), options);
|
|
13772
|
+
}
|
|
13730
13773
|
static fromDplayer(json, playerID, domain = 'other', options) {
|
|
13731
13774
|
return new src_UniPool(json.data.map((d)=>UniDM.fromDplayer({
|
|
13732
13775
|
content: d[4],
|
|
@@ -13823,14 +13866,16 @@ class src_UniPool {
|
|
|
13823
13866
|
static fromASS(ass, options) {
|
|
13824
13867
|
return parseAssRawField(ass, options);
|
|
13825
13868
|
}
|
|
13826
|
-
toASS(canvasCtx, options
|
|
13827
|
-
|
|
13828
|
-
|
|
13869
|
+
toASS(canvasCtx, options) {
|
|
13870
|
+
const defaultOptions = {
|
|
13871
|
+
substyle: {}
|
|
13872
|
+
};
|
|
13873
|
+
const finalOptions = options ?? defaultOptions;
|
|
13829
13874
|
const fn = this.shared.SOID;
|
|
13830
13875
|
return generateASS(this, {
|
|
13831
13876
|
filename: fn,
|
|
13832
13877
|
title: fn,
|
|
13833
|
-
...
|
|
13878
|
+
...finalOptions
|
|
13834
13879
|
}, canvasCtx);
|
|
13835
13880
|
}
|
|
13836
13881
|
}
|