@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.
@@ -5250,6 +5250,11 @@
5250
5250
  var implementation = __webpack_require__("../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js");
5251
5251
  module1.exports = Function.prototype.bind || implementation;
5252
5252
  },
5253
+ "../../node_modules/.pnpm/generator-function@2.0.1/node_modules/generator-function/index.js": function(module1) {
5254
+ "use strict";
5255
+ const cached = (function*() {}).constructor;
5256
+ module1.exports = ()=>cached;
5257
+ },
5253
5258
  "../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js": function(module1, __unused_webpack_exports, __webpack_require__) {
5254
5259
  "use strict";
5255
5260
  var undefined;
@@ -6105,7 +6110,7 @@
6105
6110
  return tryFunctionObject(value);
6106
6111
  };
6107
6112
  },
6108
- "../../node_modules/.pnpm/is-generator-function@1.1.0/node_modules/is-generator-function/index.js": function(module1, __unused_webpack_exports, __webpack_require__) {
6113
+ "../../node_modules/.pnpm/is-generator-function@1.1.2/node_modules/is-generator-function/index.js": function(module1, __unused_webpack_exports, __webpack_require__) {
6109
6114
  "use strict";
6110
6115
  var callBound = __webpack_require__("../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js");
6111
6116
  var safeRegexTest = __webpack_require__("../../node_modules/.pnpm/safe-regex-test@1.1.0/node_modules/safe-regex-test/index.js");
@@ -6114,13 +6119,7 @@
6114
6119
  var getProto = __webpack_require__("../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js");
6115
6120
  var toStr = callBound('Object.prototype.toString');
6116
6121
  var fnToStr = callBound('Function.prototype.toString');
6117
- var getGeneratorFunc = function() {
6118
- if (!hasToStringTag) return false;
6119
- try {
6120
- return Function('return function*() {}')();
6121
- } catch (e) {}
6122
- };
6123
- var GeneratorFunction;
6122
+ var getGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/generator-function@2.0.1/node_modules/generator-function/index.js");
6124
6123
  module1.exports = function(fn) {
6125
6124
  if ('function' != typeof fn) return false;
6126
6125
  if (isFnRegex(fnToStr(fn))) return true;
@@ -6129,11 +6128,8 @@
6129
6128
  return '[object GeneratorFunction]' === str;
6130
6129
  }
6131
6130
  if (!getProto) return false;
6132
- if (void 0 === GeneratorFunction) {
6133
- var generatorFunc = getGeneratorFunc();
6134
- GeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;
6135
- }
6136
- return getProto(fn) === GeneratorFunction;
6131
+ var GeneratorFunction = getGeneratorFunction();
6132
+ return GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;
6137
6133
  };
6138
6134
  },
6139
6135
  "../../node_modules/.pnpm/is-nan@1.3.2/node_modules/is-nan/implementation.js": function(module1) {
@@ -12490,7 +12486,7 @@
12490
12486
  "../../node_modules/.pnpm/util@0.12.5/node_modules/util/support/types.js": function(__unused_webpack_module, exports1, __webpack_require__) {
12491
12487
  "use strict";
12492
12488
  var isArgumentsObject = __webpack_require__("../../node_modules/.pnpm/is-arguments@1.2.0/node_modules/is-arguments/index.js");
12493
- var isGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/is-generator-function@1.1.0/node_modules/is-generator-function/index.js");
12489
+ var isGeneratorFunction = __webpack_require__("../../node_modules/.pnpm/is-generator-function@1.1.2/node_modules/is-generator-function/index.js");
12494
12490
  var whichTypedArray = __webpack_require__("../../node_modules/.pnpm/which-typed-array@1.1.19/node_modules/which-typed-array/index.js");
12495
12491
  var isTypedArray = __webpack_require__("../../node_modules/.pnpm/is-typed-array@1.1.15/node_modules/is-typed-array/index.js");
12496
12492
  function uncurryThis(f) {
@@ -14597,7 +14593,7 @@ and limitations under the License.
14597
14593
  }
14598
14594
  }, validationOptions);
14599
14595
  }
14600
- const defaultOptions = {
14596
+ const OptionsBuilder_defaultOptions = {
14601
14597
  preserveOrder: false,
14602
14598
  attributeNamePrefix: '@_',
14603
14599
  attributesGroupName: false,
@@ -14637,7 +14633,7 @@ and limitations under the License.
14637
14633
  captureMetaData: false
14638
14634
  };
14639
14635
  const buildOptions = function(options) {
14640
- return Object.assign({}, defaultOptions, options);
14636
+ return Object.assign({}, OptionsBuilder_defaultOptions, options);
14641
14637
  };
14642
14638
  const nameStartChar = ':A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD';
14643
14639
  const nameChar = nameStartChar + '\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040';
@@ -14694,147 +14690,229 @@ and limitations under the License.
14694
14690
  return METADATA_SYMBOL;
14695
14691
  }
14696
14692
  }
14697
- function readDocType(xmlData, i) {
14698
- const entities = {};
14699
- if ('O' === xmlData[i + 3] && 'C' === xmlData[i + 4] && 'T' === xmlData[i + 5] && 'Y' === xmlData[i + 6] && 'P' === xmlData[i + 7] && 'E' === xmlData[i + 8]) {
14700
- i += 9;
14701
- let angleBracketsCount = 1;
14702
- let hasBody = false, comment = false;
14703
- for(; i < xmlData.length; i++)if ('<' !== xmlData[i] || comment) if ('>' === xmlData[i]) {
14704
- if (comment) {
14705
- if ("-" === xmlData[i - 1] && "-" === xmlData[i - 2]) {
14706
- comment = false;
14707
- angleBracketsCount--;
14708
- }
14709
- } else angleBracketsCount--;
14710
- if (0 === angleBracketsCount) break;
14711
- } else if ('[' === xmlData[i]) hasBody = true;
14712
- else xmlData[i];
14713
- else {
14714
- if (hasBody && hasSeq(xmlData, "!ENTITY", i)) {
14715
- i += 7;
14716
- let entityName, val;
14717
- [entityName, val, i] = readEntityExp(xmlData, i + 1);
14718
- if (-1 === val.indexOf("&")) entities[entityName] = {
14719
- regx: RegExp(`&${entityName};`, "g"),
14720
- val: val
14721
- };
14722
- } else if (hasBody && hasSeq(xmlData, "!ELEMENT", i)) {
14723
- i += 8;
14724
- const { index } = readElementExp(xmlData, i + 1);
14725
- i = index;
14726
- } else if (hasBody && hasSeq(xmlData, "!ATTLIST", i)) i += 8;
14727
- else if (hasBody && hasSeq(xmlData, "!NOTATION", i)) {
14728
- i += 9;
14729
- const { index } = readNotationExp(xmlData, i + 1);
14730
- i = index;
14731
- } else if (hasSeq(xmlData, "!--", i)) comment = true;
14732
- else throw new Error("Invalid DOCTYPE");
14733
- angleBracketsCount++;
14734
- }
14735
- if (0 !== angleBracketsCount) throw new Error("Unclosed DOCTYPE");
14736
- } else throw new Error("Invalid Tag instead of DOCTYPE");
14737
- return {
14738
- entities,
14739
- i
14740
- };
14741
- }
14742
- const skipWhitespace = (data, index)=>{
14743
- while(index < data.length && /\s/.test(data[index]))index++;
14744
- return index;
14745
- };
14746
- function readEntityExp(xmlData, i) {
14747
- i = skipWhitespace(xmlData, i);
14748
- let entityName = "";
14749
- while(i < xmlData.length && !/\s/.test(xmlData[i]) && '"' !== xmlData[i] && "'" !== xmlData[i]){
14750
- entityName += xmlData[i];
14751
- i++;
14693
+ class DocTypeReader {
14694
+ constructor(processEntities){
14695
+ this.suppressValidationErr = !processEntities;
14696
+ }
14697
+ readDocType(xmlData, i) {
14698
+ const entities = {};
14699
+ if ('O' === xmlData[i + 3] && 'C' === xmlData[i + 4] && 'T' === xmlData[i + 5] && 'Y' === xmlData[i + 6] && 'P' === xmlData[i + 7] && 'E' === xmlData[i + 8]) {
14700
+ i += 9;
14701
+ let angleBracketsCount = 1;
14702
+ let hasBody = false, comment = false;
14703
+ for(; i < xmlData.length; i++)if ('<' !== xmlData[i] || comment) if ('>' === xmlData[i]) {
14704
+ if (comment) {
14705
+ if ("-" === xmlData[i - 1] && "-" === xmlData[i - 2]) {
14706
+ comment = false;
14707
+ angleBracketsCount--;
14708
+ }
14709
+ } else angleBracketsCount--;
14710
+ if (0 === angleBracketsCount) break;
14711
+ } else if ('[' === xmlData[i]) hasBody = true;
14712
+ else xmlData[i];
14713
+ else {
14714
+ if (hasBody && hasSeq(xmlData, "!ENTITY", i)) {
14715
+ i += 7;
14716
+ let entityName, val;
14717
+ [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);
14718
+ if (-1 === val.indexOf("&")) entities[entityName] = {
14719
+ regx: RegExp(`&${entityName};`, "g"),
14720
+ val: val
14721
+ };
14722
+ } else if (hasBody && hasSeq(xmlData, "!ELEMENT", i)) {
14723
+ i += 8;
14724
+ const { index } = this.readElementExp(xmlData, i + 1);
14725
+ i = index;
14726
+ } else if (hasBody && hasSeq(xmlData, "!ATTLIST", i)) i += 8;
14727
+ else if (hasBody && hasSeq(xmlData, "!NOTATION", i)) {
14728
+ i += 9;
14729
+ const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);
14730
+ i = index;
14731
+ } else if (hasSeq(xmlData, "!--", i)) comment = true;
14732
+ else throw new Error("Invalid DOCTYPE");
14733
+ angleBracketsCount++;
14734
+ }
14735
+ if (0 !== angleBracketsCount) throw new Error("Unclosed DOCTYPE");
14736
+ } else throw new Error("Invalid Tag instead of DOCTYPE");
14737
+ return {
14738
+ entities,
14739
+ i
14740
+ };
14752
14741
  }
14753
- validateEntityName(entityName);
14754
- i = skipWhitespace(xmlData, i);
14755
- if ("SYSTEM" === xmlData.substring(i, i + 6).toUpperCase()) throw new Error("External entities are not supported");
14756
- if ("%" === xmlData[i]) throw new Error("Parameter entities are not supported");
14757
- let entityValue = "";
14758
- [i, entityValue] = readIdentifierVal(xmlData, i, "entity");
14759
- i--;
14760
- return [
14761
- entityName,
14762
- entityValue,
14763
- i
14764
- ];
14765
- }
14766
- function readNotationExp(xmlData, i) {
14767
- i = skipWhitespace(xmlData, i);
14768
- let notationName = "";
14769
- while(i < xmlData.length && !/\s/.test(xmlData[i])){
14770
- notationName += xmlData[i];
14771
- i++;
14742
+ readEntityExp(xmlData, i) {
14743
+ i = skipWhitespace(xmlData, i);
14744
+ let entityName = "";
14745
+ while(i < xmlData.length && !/\s/.test(xmlData[i]) && '"' !== xmlData[i] && "'" !== xmlData[i]){
14746
+ entityName += xmlData[i];
14747
+ i++;
14748
+ }
14749
+ validateEntityName(entityName);
14750
+ i = skipWhitespace(xmlData, i);
14751
+ if (!this.suppressValidationErr) {
14752
+ if ("SYSTEM" === xmlData.substring(i, i + 6).toUpperCase()) throw new Error("External entities are not supported");
14753
+ else if ("%" === xmlData[i]) throw new Error("Parameter entities are not supported");
14754
+ }
14755
+ let entityValue = "";
14756
+ [i, entityValue] = this.readIdentifierVal(xmlData, i, "entity");
14757
+ i--;
14758
+ return [
14759
+ entityName,
14760
+ entityValue,
14761
+ i
14762
+ ];
14772
14763
  }
14773
- validateEntityName(notationName);
14774
- i = skipWhitespace(xmlData, i);
14775
- const identifierType = xmlData.substring(i, i + 6).toUpperCase();
14776
- if ("SYSTEM" !== identifierType && "PUBLIC" !== identifierType) throw new Error(`Expected SYSTEM or PUBLIC, found "${identifierType}"`);
14777
- i += identifierType.length;
14778
- i = skipWhitespace(xmlData, i);
14779
- let publicIdentifier = null;
14780
- let systemIdentifier = null;
14781
- if ("PUBLIC" === identifierType) {
14782
- [i, publicIdentifier] = readIdentifierVal(xmlData, i, "publicIdentifier");
14764
+ readNotationExp(xmlData, i) {
14765
+ i = skipWhitespace(xmlData, i);
14766
+ let notationName = "";
14767
+ while(i < xmlData.length && !/\s/.test(xmlData[i])){
14768
+ notationName += xmlData[i];
14769
+ i++;
14770
+ }
14771
+ this.suppressValidationErr || validateEntityName(notationName);
14783
14772
  i = skipWhitespace(xmlData, i);
14784
- if ('"' === xmlData[i] || "'" === xmlData[i]) [i, systemIdentifier] = readIdentifierVal(xmlData, i, "systemIdentifier");
14785
- } else if ("SYSTEM" === identifierType) {
14786
- [i, systemIdentifier] = readIdentifierVal(xmlData, i, "systemIdentifier");
14787
- if (!systemIdentifier) throw new Error("Missing mandatory system identifier for SYSTEM notation");
14773
+ const identifierType = xmlData.substring(i, i + 6).toUpperCase();
14774
+ if (!this.suppressValidationErr && "SYSTEM" !== identifierType && "PUBLIC" !== identifierType) throw new Error(`Expected SYSTEM or PUBLIC, found "${identifierType}"`);
14775
+ i += identifierType.length;
14776
+ i = skipWhitespace(xmlData, i);
14777
+ let publicIdentifier = null;
14778
+ let systemIdentifier = null;
14779
+ if ("PUBLIC" === identifierType) {
14780
+ [i, publicIdentifier] = this.readIdentifierVal(xmlData, i, "publicIdentifier");
14781
+ i = skipWhitespace(xmlData, i);
14782
+ if ('"' === xmlData[i] || "'" === xmlData[i]) [i, systemIdentifier] = this.readIdentifierVal(xmlData, i, "systemIdentifier");
14783
+ } else if ("SYSTEM" === identifierType) {
14784
+ [i, systemIdentifier] = this.readIdentifierVal(xmlData, i, "systemIdentifier");
14785
+ if (!this.suppressValidationErr && !systemIdentifier) throw new Error("Missing mandatory system identifier for SYSTEM notation");
14786
+ }
14787
+ return {
14788
+ notationName,
14789
+ publicIdentifier,
14790
+ systemIdentifier,
14791
+ index: --i
14792
+ };
14788
14793
  }
14789
- return {
14790
- notationName,
14791
- publicIdentifier,
14792
- systemIdentifier,
14793
- index: --i
14794
- };
14795
- }
14796
- function readIdentifierVal(xmlData, i, type) {
14797
- let identifierVal = "";
14798
- const startChar = xmlData[i];
14799
- if ('"' !== startChar && "'" !== startChar) throw new Error(`Expected quoted string, found "${startChar}"`);
14800
- i++;
14801
- while(i < xmlData.length && xmlData[i] !== startChar){
14802
- identifierVal += xmlData[i];
14794
+ readIdentifierVal(xmlData, i, type) {
14795
+ let identifierVal = "";
14796
+ const startChar = xmlData[i];
14797
+ if ('"' !== startChar && "'" !== startChar) throw new Error(`Expected quoted string, found "${startChar}"`);
14803
14798
  i++;
14804
- }
14805
- if (xmlData[i] !== startChar) throw new Error(`Unterminated ${type} value`);
14806
- i++;
14807
- return [
14808
- i,
14809
- identifierVal
14810
- ];
14811
- }
14812
- function readElementExp(xmlData, i) {
14813
- i = skipWhitespace(xmlData, i);
14814
- let elementName = "";
14815
- while(i < xmlData.length && !/\s/.test(xmlData[i])){
14816
- elementName += xmlData[i];
14799
+ while(i < xmlData.length && xmlData[i] !== startChar){
14800
+ identifierVal += xmlData[i];
14801
+ i++;
14802
+ }
14803
+ if (xmlData[i] !== startChar) throw new Error(`Unterminated ${type} value`);
14817
14804
  i++;
14805
+ return [
14806
+ i,
14807
+ identifierVal
14808
+ ];
14818
14809
  }
14819
- if (!validateEntityName(elementName)) throw new Error(`Invalid element name: "${elementName}"`);
14820
- i = skipWhitespace(xmlData, i);
14821
- let contentModel = "";
14822
- if ("E" === xmlData[i] && hasSeq(xmlData, "MPTY", i)) i += 4;
14823
- else if ("A" === xmlData[i] && hasSeq(xmlData, "NY", i)) i += 2;
14824
- else if ("(" === xmlData[i]) {
14825
- i++;
14826
- while(i < xmlData.length && ")" !== xmlData[i]){
14827
- contentModel += xmlData[i];
14810
+ readElementExp(xmlData, i) {
14811
+ i = skipWhitespace(xmlData, i);
14812
+ let elementName = "";
14813
+ while(i < xmlData.length && !/\s/.test(xmlData[i])){
14814
+ elementName += xmlData[i];
14828
14815
  i++;
14829
14816
  }
14830
- if (")" !== xmlData[i]) throw new Error("Unterminated content model");
14831
- } else throw new Error(`Invalid Element Expression, found "${xmlData[i]}"`);
14832
- return {
14833
- elementName,
14834
- contentModel: contentModel.trim(),
14835
- index: i
14836
- };
14817
+ if (!this.suppressValidationErr && !isName(elementName)) throw new Error(`Invalid element name: "${elementName}"`);
14818
+ i = skipWhitespace(xmlData, i);
14819
+ let contentModel = "";
14820
+ if ("E" === xmlData[i] && hasSeq(xmlData, "MPTY", i)) i += 4;
14821
+ else if ("A" === xmlData[i] && hasSeq(xmlData, "NY", i)) i += 2;
14822
+ else if ("(" === xmlData[i]) {
14823
+ i++;
14824
+ while(i < xmlData.length && ")" !== xmlData[i]){
14825
+ contentModel += xmlData[i];
14826
+ i++;
14827
+ }
14828
+ if (")" !== xmlData[i]) throw new Error("Unterminated content model");
14829
+ } else if (!this.suppressValidationErr) throw new Error(`Invalid Element Expression, found "${xmlData[i]}"`);
14830
+ return {
14831
+ elementName,
14832
+ contentModel: contentModel.trim(),
14833
+ index: i
14834
+ };
14835
+ }
14836
+ readAttlistExp(xmlData, i) {
14837
+ i = skipWhitespace(xmlData, i);
14838
+ let elementName = "";
14839
+ while(i < xmlData.length && !/\s/.test(xmlData[i])){
14840
+ elementName += xmlData[i];
14841
+ i++;
14842
+ }
14843
+ validateEntityName(elementName);
14844
+ i = skipWhitespace(xmlData, i);
14845
+ let attributeName = "";
14846
+ while(i < xmlData.length && !/\s/.test(xmlData[i])){
14847
+ attributeName += xmlData[i];
14848
+ i++;
14849
+ }
14850
+ if (!validateEntityName(attributeName)) throw new Error(`Invalid attribute name: "${attributeName}"`);
14851
+ i = skipWhitespace(xmlData, i);
14852
+ let attributeType = "";
14853
+ if ("NOTATION" === xmlData.substring(i, i + 8).toUpperCase()) {
14854
+ attributeType = "NOTATION";
14855
+ i += 8;
14856
+ i = skipWhitespace(xmlData, i);
14857
+ if ("(" !== xmlData[i]) throw new Error(`Expected '(', found "${xmlData[i]}"`);
14858
+ i++;
14859
+ let allowedNotations = [];
14860
+ while(i < xmlData.length && ")" !== xmlData[i]){
14861
+ let notation = "";
14862
+ while(i < xmlData.length && "|" !== xmlData[i] && ")" !== xmlData[i]){
14863
+ notation += xmlData[i];
14864
+ i++;
14865
+ }
14866
+ notation = notation.trim();
14867
+ if (!validateEntityName(notation)) throw new Error(`Invalid notation name: "${notation}"`);
14868
+ allowedNotations.push(notation);
14869
+ if ("|" === xmlData[i]) {
14870
+ i++;
14871
+ i = skipWhitespace(xmlData, i);
14872
+ }
14873
+ }
14874
+ if (")" !== xmlData[i]) throw new Error("Unterminated list of notations");
14875
+ i++;
14876
+ attributeType += " (" + allowedNotations.join("|") + ")";
14877
+ } else {
14878
+ while(i < xmlData.length && !/\s/.test(xmlData[i])){
14879
+ attributeType += xmlData[i];
14880
+ i++;
14881
+ }
14882
+ const validTypes = [
14883
+ "CDATA",
14884
+ "ID",
14885
+ "IDREF",
14886
+ "IDREFS",
14887
+ "ENTITY",
14888
+ "ENTITIES",
14889
+ "NMTOKEN",
14890
+ "NMTOKENS"
14891
+ ];
14892
+ if (!this.suppressValidationErr && !validTypes.includes(attributeType.toUpperCase())) throw new Error(`Invalid attribute type: "${attributeType}"`);
14893
+ }
14894
+ i = skipWhitespace(xmlData, i);
14895
+ let defaultValue = "";
14896
+ if ("#REQUIRED" === xmlData.substring(i, i + 8).toUpperCase()) {
14897
+ defaultValue = "#REQUIRED";
14898
+ i += 8;
14899
+ } else if ("#IMPLIED" === xmlData.substring(i, i + 7).toUpperCase()) {
14900
+ defaultValue = "#IMPLIED";
14901
+ i += 7;
14902
+ } else [i, defaultValue] = this.readIdentifierVal(xmlData, i, "ATTLIST");
14903
+ return {
14904
+ elementName,
14905
+ attributeName,
14906
+ attributeType,
14907
+ defaultValue,
14908
+ index: i
14909
+ };
14910
+ }
14837
14911
  }
14912
+ const skipWhitespace = (data, index)=>{
14913
+ while(index < data.length && /\s/.test(data[index]))index++;
14914
+ return index;
14915
+ };
14838
14916
  function hasSeq(data, seq, i) {
14839
14917
  for(let j = 0; j < seq.length; j++)if (seq[j] !== data[i + j + 1]) return false;
14840
14918
  return true;
@@ -15085,6 +15163,7 @@ and limitations under the License.
15085
15163
  let currentNode = xmlObj;
15086
15164
  let textData = "";
15087
15165
  let jPath = "";
15166
+ const docTypeReader = new DocTypeReader(this.options.processEntities);
15088
15167
  for(let i = 0; i < xmlData.length; i++){
15089
15168
  const ch = xmlData[i];
15090
15169
  if ('<' === ch) if ('/' === xmlData[i + 1]) {
@@ -15132,7 +15211,7 @@ and limitations under the License.
15132
15211
  }
15133
15212
  i = endIndex;
15134
15213
  } else if ('!D' === xmlData.substr(i + 1, 2)) {
15135
- const result = readDocType(xmlData, i);
15214
+ const result = docTypeReader.readDocType(xmlData, i);
15136
15215
  this.docTypeEntities = result.entities;
15137
15216
  i = result.i;
15138
15217
  } else if ('![' === xmlData.substr(i + 1, 2)) {
@@ -15651,9 +15730,8 @@ and limitations under the License.
15651
15730
  this.options = buildOptions(options);
15652
15731
  }
15653
15732
  parse(xmlData, validationOption) {
15654
- if ("string" == typeof xmlData) ;
15655
- else if (xmlData.toString) xmlData = xmlData.toString();
15656
- else throw new Error("XML data is accepted in String or Bytes[] form.");
15733
+ if ("string" != typeof xmlData && xmlData.toString) xmlData = xmlData.toString();
15734
+ else if ("string" != typeof xmlData) throw new Error("XML data is accepted in String or Bytes[] form.");
15657
15735
  if (validationOption) {
15658
15736
  if (true === validationOption) validationOption = {};
15659
15737
  const result = validate(xmlData, validationOption);
@@ -16156,7 +16234,7 @@ and limitations under the License.
16156
16234
  const protoInt64 = /*@__PURE__*/ makeInt64Support();
16157
16235
  function makeInt64Support() {
16158
16236
  const dv = new DataView(new ArrayBuffer(8));
16159
- const ok = "function" == typeof BigInt && "function" == typeof dv.getBigInt64 && "function" == typeof dv.getBigUint64 && "function" == typeof dv.setBigInt64 && "function" == typeof dv.setBigUint64 && ("object" != typeof process || "object" != typeof process.env || "1" !== process.env.BUF_BIGINT_DISABLE);
16237
+ const ok = "function" == typeof BigInt && "function" == typeof dv.getBigInt64 && "function" == typeof dv.getBigUint64 && "function" == typeof dv.setBigInt64 && "function" == typeof dv.setBigUint64 && (!!globalThis.Deno || "object" != typeof process || "object" != typeof process.env || "1" !== process.env.BUF_BIGINT_DISABLE);
16160
16238
  if (ok) {
16161
16239
  const MIN = BigInt("-9223372036854775808");
16162
16240
  const MAX = BigInt("9223372036854775807");
@@ -18083,6 +18161,16 @@ and limitations under the License.
18083
18161
  jsonFormat: 1,
18084
18162
  enforceNamingStyle: 2,
18085
18163
  defaultSymbolVisibility: 1
18164
+ },
18165
+ 1001: {
18166
+ fieldPresence: 1,
18167
+ enumType: 1,
18168
+ repeatedFieldEncoding: 1,
18169
+ utf8Validation: 2,
18170
+ messageEncoding: 1,
18171
+ jsonFormat: 1,
18172
+ enforceNamingStyle: 1,
18173
+ defaultSymbolVisibility: 2
18086
18174
  }
18087
18175
  };
18088
18176
  function addFile(proto, reg) {
@@ -19586,7 +19674,10 @@ and limitations under the License.
19586
19674
  number: 10,
19587
19675
  type: 8,
19588
19676
  label: 1,
19589
- defaultValue: "false"
19677
+ defaultValue: "false",
19678
+ options: {
19679
+ deprecated: true
19680
+ }
19590
19681
  },
19591
19682
  {
19592
19683
  name: "debug_redact",
@@ -20890,7 +20981,7 @@ and limitations under the License.
20890
20981
  function timestamp_timestampMs(timestamp) {
20891
20982
  return 1000 * Number(timestamp.seconds) + Math.round(timestamp.nanos / 1000000);
20892
20983
  }
20893
- var package_namespaceObject = JSON.parse('{"u2":"@dan-uni/dan-any","i8":"0.9.4","e8":"https://github.com/ani-uni/danuni/tree/master/packages/dan-any#readme"}');
20984
+ 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"}');
20894
20985
  const file_bili_dm = /*@__PURE__*/ fileDesc("Cg1iaWxpL2RtLnByb3RvEiBiaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MSJkCgZBdmF0YXISCgoCaWQYASABKAkSCwoDdXJsGAIgASgJEkEKC2F2YXRhcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyVHlwZSIjCgZCdWJibGUSDAoEdGV4dBgBIAEoCRILCgN1cmwYAiABKAkixgEKCEJ1YmJsZVYyEgwKBHRleHQYASABKAkSCwoDdXJsGAIgASgJEkEKC2J1YmJsZV90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQnViYmxlVHlwZRIVCg1leHBvc3VyZV9vbmNlGAQgASgIEkUKDWV4cG9zdXJlX3R5cGUYBSABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiWwoGQnV0dG9uEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUiWAoOQnV6endvcmRDb25maWcSRgoIa2V5d29yZHMYASADKAsyNC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdXp6d29yZFNob3dDb25maWcieAoSQnV6endvcmRTaG93Q29uZmlnEgwKBG5hbWUYASABKAkSDgoGc2NoZW1hGAIgASgJEg4KBnNvdXJjZRgDIAEoBRIKCgJpZBgEIAEoAxITCgtidXp6d29yZF9pZBgFIAEoAxITCgtzY2hlbWFfdHlwZRgGIAEoBSJ7CghDaGVja0JveBIMCgR0ZXh0GAEgASgJEjwKBHR5cGUYAiABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja2JveFR5cGUSFQoNZGVmYXVsdF92YWx1ZRgDIAEoCBIMCgRzaG93GAQgASgIIm8KCkNoZWNrQm94VjISDAoEdGV4dBgBIAEoCRI8CgR0eXBlGAIgASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2hlY2tib3hUeXBlEhUKDWRlZmF1bHRfdmFsdWUYAyABKAgiggIKC0NsaWNrQnV0dG9uEhUKDXBvcnRyYWl0X3RleHQYASADKAkSFgoObGFuZHNjYXBlX3RleHQYAiADKAkSGwoTcG9ydHJhaXRfdGV4dF9mb2N1cxgDIAMoCRIcChRsYW5kc2NhcGVfdGV4dF9mb2N1cxgEIAMoCRJBCgtyZW5kZXJfdHlwZRgFIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlJlbmRlclR5cGUSDAoEc2hvdxgGIAEoCBI4CgZidWJibGUYByABKAsyKC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5CdWJibGUiswIKDUNsaWNrQnV0dG9uVjISFQoNcG9ydHJhaXRfdGV4dBgBIAMoCRIWCg5sYW5kc2NhcGVfdGV4dBgCIAMoCRIbChNwb3J0cmFpdF90ZXh0X2ZvY3VzGAMgAygJEhwKFGxhbmRzY2FwZV90ZXh0X2ZvY3VzGAQgAygJEkEKC3JlbmRlcl90eXBlGAUgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIXCg90ZXh0X2lucHV0X3Bvc3QYBiABKAgSFQoNZXhwb3N1cmVfb25jZRgHIAEoCBJFCg1leHBvc3VyZV90eXBlGAggASgOMi4uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwb3N1cmVUeXBlIksKB0NvbW1hbmQSQAoLY29tbWFuZF9kbXMYASADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Db21tYW5kRG0i5gEKCUNvbW1hbmREbRIKCgJpZBgBIAEoAxILCgNvaWQYAiABKAMSCwoDbWlkGAMgASgDEg8KB2NvbW1hbmQYBCABKAkSDwoHY29udGVudBgFIAEoCRIQCghwcm9ncmVzcxgGIAEoBRINCgVjdGltZRgHIAEoCRINCgVtdGltZRgIIAEoCRINCgVleHRyYRgJIAEoCRINCgVpZFN0chgKIAEoCRIMCgR0eXBlGAsgASgFEhMKC2F1dG9fY3JlYXRlGAwgASgIEhIKCmNvdW50X2Rvd24YDSABKAUSDAoEYXR0chgOIAEoBSJQCg1EYW5tYWt1QUlGbGFnEj8KCGRtX2ZsYWdzGAEgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUZsYWciiwMKC0Rhbm1ha3VFbGVtEgoKAmlkGAEgASgDEhAKCHByb2dyZXNzGAIgASgFEgwKBG1vZGUYAyABKAUSEAoIZm9udHNpemUYBCABKAUSPwoFY29sb3IYBSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIQCghtaWRfaGFzaBgGIAEoCRIPCgdjb250ZW50GAcgASgJEg0KBWN0aW1lGAggASgDEg4KBndlaWdodBgJIAEoBRIOCgZhY3Rpb24YCiABKAkSDAoEcG9vbBgLIAEoBRIOCgZpZF9zdHIYDCABKAkSDAoEYXR0chgNIAEoBRIRCglhbmltYXRpb24YFiABKAkSDQoFZXh0cmEYFyABKAkSQgoIY29sb3JmdWwYGCABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbUNvbG9yZnVsVHlwZRIMCgR0eXBlGBkgASgFEgsKA29pZBgaIAEoAyIpCgtEYW5tYWt1RmxhZxIMCgRkbWlkGAEgASgDEgwKBGZsYWcYAiABKAUiSwoRRGFubWFrdUZsYWdDb25maWcSEAoIcmVjX2ZsYWcYASABKAUSEAoIcmVjX3RleHQYAiABKAkSEgoKcmVjX3N3aXRjaBgDIAEoBSKLBwoYRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnEikKIXBsYXllcl9kYW5tYWt1X3VzZV9kZWZhdWx0X2NvbmZpZxgBIAEoCBIsCiRwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9zd2l0Y2gYBCABKAgSKwojcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWwYBSABKAUSHwoXcGxheWVyX2Rhbm1ha3VfYmxvY2t0b3AYBiABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tzY3JvbGwYByABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tib3R0b20YCCABKAgSJAoccGxheWVyX2Rhbm1ha3VfYmxvY2tjb2xvcmZ1bBgJIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9ibG9ja3JlcGVhdBgKIAEoCBIjChtwbGF5ZXJfZGFubWFrdV9ibG9ja3NwZWNpYWwYCyABKAgSHgoWcGxheWVyX2Rhbm1ha3Vfb3BhY2l0eRgMIAEoAhIkChxwbGF5ZXJfZGFubWFrdV9zY2FsaW5nZmFjdG9yGA0gASgCEh0KFXBsYXllcl9kYW5tYWt1X2RvbWFpbhgOIAEoAhIcChRwbGF5ZXJfZGFubWFrdV9zcGVlZBgPIAEoBRIkChxpbmxpbmVfcGxheWVyX2Rhbm1ha3Vfc3dpdGNoGBAgASgIEikKIXBsYXllcl9kYW5tYWt1X3Nlbmlvcl9tb2RlX3N3aXRjaBgRIAEoBRIuCiZwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92MhgSIAEoBRKYAQoqcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfbGV2ZWxfdjJfbWFwGBMgAygLMmQuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVEZWZhdWx0UGxheWVyQ29uZmlnLlBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EiUKHXBsYXllcl9kYW5tYWt1X2VuYWJsZV9oZXJkX2RtGBQgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEi7AkKEURhbm11UGxheWVyQ29uZmlnEh0KFXBsYXllcl9kYW5tYWt1X3N3aXRjaBgBIAEoCBIiChpwbGF5ZXJfZGFubWFrdV9zd2l0Y2hfc2F2ZRgCIAEoCBIpCiFwbGF5ZXJfZGFubWFrdV91c2VfZGVmYXVsdF9jb25maWcYAyABKAgSLAokcGxheWVyX2Rhbm1ha3VfYWlfcmVjb21tZW5kZWRfc3dpdGNoGAQgASgIEisKI3BsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsGAUgASgFEh8KF3BsYXllcl9kYW5tYWt1X2Jsb2NrdG9wGAYgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2Nrc2Nyb2xsGAcgASgIEiIKGnBsYXllcl9kYW5tYWt1X2Jsb2NrYm90dG9tGAggASgIEiQKHHBsYXllcl9kYW5tYWt1X2Jsb2NrY29sb3JmdWwYCSABKAgSIgoacGxheWVyX2Rhbm1ha3VfYmxvY2tyZXBlYXQYCiABKAgSIwobcGxheWVyX2Rhbm1ha3VfYmxvY2tzcGVjaWFsGAsgASgIEh4KFnBsYXllcl9kYW5tYWt1X29wYWNpdHkYDCABKAISJAoccGxheWVyX2Rhbm1ha3Vfc2NhbGluZ2ZhY3RvchgNIAEoAhIdChVwbGF5ZXJfZGFubWFrdV9kb21haW4YDiABKAISHAoUcGxheWVyX2Rhbm1ha3Vfc3BlZWQYDyABKAUSJgoecGxheWVyX2Rhbm1ha3VfZW5hYmxlYmxvY2tsaXN0GBAgASgIEiQKHGlubGluZV9wbGF5ZXJfZGFubWFrdV9zd2l0Y2gYESABKAgSJAocaW5saW5lX3BsYXllcl9kYW5tYWt1X2NvbmZpZxgSIAEoBRImCh5wbGF5ZXJfZGFubWFrdV9pb3Nfc3dpdGNoX3NhdmUYEyABKAUSKQohcGxheWVyX2Rhbm1ha3Vfc2VuaW9yX21vZGVfc3dpdGNoGBQgASgFEi4KJnBsYXllcl9kYW5tYWt1X2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBUgASgFEpEBCipwbGF5ZXJfZGFubWFrdV9haV9yZWNvbW1lbmRlZF9sZXZlbF92Ml9tYXAYFiADKAsyXS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckNvbmZpZy5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsVjJNYXBFbnRyeRIlCh1wbGF5ZXJfZGFubWFrdV9lbmFibGVfaGVyZF9kbRgXIAEoCBImCh5wbGF5ZXJfZGFubWFrdV9ibG9ja3RvcF9ib3R0b20YGCABKAgSIAoYcGxheWVyX2Rhbm1ha3VfZG9tYWluX3YyGBkgASgFEh4KFnBsYXllcl9kYW5tYWt1X2RlbnNpdHkYGiABKAUSJQodcGxheWVyX2Rhbm1ha3Vfc3VidGl0bGVfcHJvb2YYGyABKAgSIwobcGxheWVyX2Rhbm1ha3VfcGVvcGxlX3Byb29mGBwgASgIGksKKVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMk1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiMAoWRGFubXVQbGF5ZXJDb25maWdQYW5lbBIWCg5zZWxlY3Rpb25fdGV4dBgBIAEoCSJLChhEYW5tdVBsYXllckR5bmFtaWNDb25maWcSEAoIcHJvZ3Jlc3MYASABKAUSHQoVcGxheWVyX2Rhbm1ha3VfZG9tYWluGA4gASgCIpADChVEYW5tdVBsYXllclZpZXdDb25maWcSYQodZGFubXVrdV9kZWZhdWx0X3BsYXllcl9jb25maWcYASABKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdURlZmF1bHRQbGF5ZXJDb25maWcSUgoVZGFubXVrdV9wbGF5ZXJfY29uZmlnGAIgASgLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWcSYQodZGFubXVrdV9wbGF5ZXJfZHluYW1pY19jb25maWcYAyADKAsyOi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tdVBsYXllckR5bmFtaWNDb25maWcSXQobZGFubXVrdV9wbGF5ZXJfY29uZmlnX3BhbmVsGAQgASgLMjguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJDb25maWdQYW5lbCKZBQoURGFubXVXZWJQbGF5ZXJDb25maWcSEQoJZG1fc3dpdGNoGAEgASgIEhEKCWFpX3N3aXRjaBgCIAEoCBIQCghhaV9sZXZlbBgDIAEoBRIQCghibG9ja3RvcBgEIAEoCBITCgtibG9ja3Njcm9sbBgFIAEoCBITCgtibG9ja2JvdHRvbRgGIAEoCBISCgpibG9ja2NvbG9yGAcgASgIEhQKDGJsb2Nrc3BlY2lhbBgIIAEoCBIUCgxwcmV2ZW50c2hhZGUYCSABKAgSDQoFZG1hc2sYCiABKAgSDwoHb3BhY2l0eRgLIAEoAhIOCgZkbWFyZWEYDCABKAUSEQoJc3BlZWRwbHVzGA0gASgCEhAKCGZvbnRzaXplGA4gASgCEhIKCnNjcmVlbnN5bmMYDyABKAgSEQoJc3BlZWRzeW5jGBAgASgIEhIKCmZvbnRmYW1pbHkYESABKAkSDAoEYm9sZBgSIAEoCBISCgpmb250Ym9yZGVyGBMgASgFEhEKCWRyYXdfdHlwZRgUIAEoCRIaChJzZW5pb3JfbW9kZV9zd2l0Y2gYFSABKAUSEwoLYWlfbGV2ZWxfdjIYFiABKAUSYQoPYWlfbGV2ZWxfdjJfbWFwGBcgAygLMkguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcuQWlMZXZlbFYyTWFwRW50cnkSFwoPYmxvY2t0b3BfYm90dG9tGBggASgIEhIKCmRtX2FyZWFfdjIYGSABKAUSEgoKZG1fZGVuc2l0eRgaIAEoBRozChFBaUxldmVsVjJNYXBFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6AjgBIlkKCkRtQ29sb3JmdWwSPgoEdHlwZRgBIAEoDjIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWxUeXBlEgsKA3NyYxgCIAEoCSJQCg9EbUV4cG9SZXBvcnRSZXESEgoKc2Vzc2lvbl9pZBgBIAEoCRILCgNvaWQYAiABKAMSDQoFZG1pZHMYAyABKAwSDQoFc3BtaWQYBCABKAkiEQoPRG1FeHBvUmVwb3J0UmVzIm0KCkRtSGVyZFZpZXcSGwoTZGlzcGxheV9oZXJkX2RtX251bRgBIAEoBRJCCghoZXJkX2RtcxgCIAMoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlZpZXdIZXJkRG1FbGVtIpYCCgpEbU1hc2tXYWxsEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAxIPCgdjb250ZW50GAMgASgJEk0KDGNvbnRlbnRfdHlwZRgEIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRJFCghiaXpfdHlwZRgFIAEoDjIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxCaXpUeXBlEkUKCGNvbnRlbnRzGAYgAygLMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbENvbnRlbnQiawoRRG1NYXNrV2FsbENvbnRlbnQSRQoEdHlwZRgBIAEoDjI3LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtTWFza1dhbGxDb250ZW50VHlwZRIPCgdjb250ZW50GAIgASgJIs0QChFEbVBsYXllckNvbmZpZ1JlcRIKCgJ0cxgBIAEoAxJFCgZzd2l0Y2gYAiABKAsyNS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1U3dpdGNoEk4KC3N3aXRjaF9zYXZlGAMgASgLMjkuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVN3aXRjaFNhdmUSWwoSdXNlX2RlZmF1bHRfY29uZmlnGAQgASgLMj8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVVzZURlZmF1bHRDb25maWcSYQoVYWlfcmVjb21tZW5kZWRfc3dpdGNoGAUgASgLMkIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRTd2l0Y2gSXwoUYWlfcmVjb21tZW5kZWRfbGV2ZWwYBiABKAsyQS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEkkKCGJsb2NrdG9wGAcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrdG9wEk8KC2Jsb2Nrc2Nyb2xsGAggASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2Nrc2Nyb2xsEk8KC2Jsb2NrYm90dG9tGAkgASgLMjouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUJsb2NrYm90dG9tElMKDWJsb2NrY29sb3JmdWwYCiABKAsyPC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tjb2xvcmZ1bBJPCgtibG9ja3JlcGVhdBgLIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VCbG9ja3JlcGVhdBJRCgxibG9ja3NwZWNpYWwYDCABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEkcKB29wYWNpdHkYDSABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1T3BhY2l0eRJTCg1zY2FsaW5nZmFjdG9yGA4gASgLMjwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdVNjYWxpbmdmYWN0b3ISRQoGZG9tYWluGA8gASgLMjUuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpbhJDCgVzcGVlZBgQIAEoCzI0LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTcGVlZBJXCg9lbmFibGVibG9ja2xpc3QYESABKAsyPi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0El4KGWlubGluZVBsYXllckRhbm1ha3VTd2l0Y2gYEiABKAsyOy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5JbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoElsKEnNlbmlvcl9tb2RlX3N3aXRjaBgTIAEoCzI/LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTZW5pb3JNb2RlU3dpdGNoEmQKF2FpX3JlY29tbWVuZGVkX2xldmVsX3YyGBQgASgLMkMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUFpUmVjb21tZW5kZWRMZXZlbFYyElMKDmVuYWJsZV9oZXJkX2RtGBUgASgLMjsuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRJWCg9ibG9ja3RvcF9ib3R0b20YFiABKAsyPS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SSgoJZG9tYWluX3YyGBcgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUGxheWVyRGFubWFrdURvbWFpblYyEkcKB2RlbnNpdHkYGCABKAsyNi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5QbGF5ZXJEYW5tYWt1RGVuc2l0eRJUCg5zdWJ0aXRsZV9wcm9vZhgZIAEoCzI8LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VTdWJ0aXRsZVByb29mElAKDHBlb3BsZV9wcm9vZhgaIAEoCzI6LmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBsYXllckRhbm1ha3VQZW9wbGVQcm9vZiIvCgtEbVNlZ0NvbmZpZxIRCglwYWdlX3NpemUYASABKAMSDQoFdG90YWwYAiABKAMikQIKEERtU2VnTW9iaWxlUmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBRJACgdhaV9mbGFnGAMgASgLMi8uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubWFrdUFJRmxhZxIVCg1zZWdtZW50X3J1bGVzGAQgAygDEkIKDGNvbG9yZnVsX3NyYxgFIAMoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtQ29sb3JmdWwSEwoLY29udGV4dF9zcmMYBiABKAkiygEKDkRtU2VnTW9iaWxlUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDEhYKDnRlZW5hZ2Vyc19tb2RlGAUgASgFEgoKAnBzGAYgASgDEgoKAnBlGAcgASgDEhEKCXB1bGxfbW9kZRgIIAEoBRISCgpmcm9tX3NjZW5lGAkgASgFEg0KBXNwbWlkGAogASgJEhMKC2NvbnRleHRfZXh0GAsgASgJIlwKDURtU2VnT3R0UmVwbHkSPAoFZWxlbXMYASADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RWxlbRINCgVzdGF0ZRgCIAEoBSJMCgtEbVNlZ090dFJlcRILCgNwaWQYASABKAMSCwoDb2lkGAIgASgDEgwKBHR5cGUYAyABKAUSFQoNc2VnbWVudF9pbmRleBgEIAEoAyJdCg1EbVNlZ1NES1JlcGx5Eg4KBmNsb3NlZBgBIAEoCBI8CgVlbGVtcxgCIAMoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VFbGVtIkwKC0RtU2VnU0RLUmVxEgsKA3BpZBgBIAEoAxILCgNvaWQYAiABKAMSDAoEdHlwZRgDIAEoBRIVCg1zZWdtZW50X2luZGV4GAQgASgDIncKCURtU3ViVmlldxIMCgR0eXBlGAEgASgFEgsKA29pZBgCIAEoAxILCgNwaWQYAyABKAMSQgoLcG9zdF9wYW5lbDIYBCADKAsyLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxWMiKhCQoLRG1WaWV3UmVwbHkSDgoGY2xvc2VkGAEgASgIEjkKBG1hc2sYAiABKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb01hc2sSQQoIc3VidGl0bGUYAyABKAsyLy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5WaWRlb1N1YnRpdGxlEhMKC3NwZWNpYWxfZG1zGAQgAygJEkQKB2FpX2ZsYWcYBSABKAsyMy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EYW5tYWt1RmxhZ0NvbmZpZxJOCg1wbGF5ZXJfY29uZmlnGAYgASgLMjcuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVQbGF5ZXJWaWV3Q29uZmlnEhYKDnNlbmRfYm94X3N0eWxlGAcgASgFEg0KBWFsbG93GAggASgIEhEKCWNoZWNrX2JveBgJIAEoCBIaChJjaGVja19ib3hfc2hvd19tc2cYCiABKAkSGAoQdGV4dF9wbGFjZWhvbGRlchgLIAEoCRIZChFpbnB1dF9wbGFjZWhvbGRlchgMIAEoCRIdChVyZXBvcnRfZmlsdGVyX2NvbnRlbnQYDSADKAkSQQoLZXhwb19yZXBvcnQYDiABKAsyLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvUmVwb3J0EkkKD2J1enp3b3JkX2NvbmZpZxgPIAEoCzIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1enp3b3JkQ29uZmlnEkIKC2V4cHJlc3Npb25zGBAgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgRIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGBIgAygJEkIKC3Bvc3RfcGFuZWwyGBMgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISQgoMZG1fbWFza193YWxsGBQgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1NYXNrV2FsbBI9CgdkbV9oZXJkGBUgASgLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1IZXJkVmlldxI6Cgdjb21tYW5kGBYgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ29tbWFuZBIKCgJrdhgXIAEoCRI+CglzdWJfdmlld3MYGCADKAsyKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVN1YlZpZXcSNgoDcW9lGBkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUW9lSW5mbyJtCglEbVZpZXdSZXESCwoDcGlkGAEgASgDEgsKA29pZBgCIAEoAxIMCgR0eXBlGAMgASgFEg0KBXNwbWlkGAQgASgJEhQKDGlzX2hhcmRfYm9vdBgFIAEoBRITCgtjb250ZXh0X2V4dBgGIAEoCSKBBgoORG1XZWJWaWV3UmVwbHkSDQoFc3RhdGUYASABKAUSDAoEdGV4dBgCIAEoCRIRCgl0ZXh0X3NpZGUYAyABKAkSPQoGZG1fc2dlGAQgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdDb25maWcSQQoEZmxhZxgFIAEoCzIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRhbm1ha3VGbGFnQ29uZmlnEhMKC3NwZWNpYWxfZG1zGAYgAygJEhEKCWNoZWNrX2JveBgHIAEoCBINCgVjb3VudBgIIAEoAxJACgtjb21tYW5kX2RtcxgJIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNvbW1hbmREbRJNCg1wbGF5ZXJfY29uZmlnGAogASgLMjYuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRGFubXVXZWJQbGF5ZXJDb25maWcSHQoVcmVwb3J0X2ZpbHRlcl9jb250ZW50GAsgAygJEkIKC2V4cHJlc3Npb25zGAwgAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbnMSPwoKcG9zdF9wYW5lbBgNIAMoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbBIVCg1hY3Rpdml0eV9tZXRhGA4gAygJEkIKC3Bvc3RfcGFuZWwyGA8gAygLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFBhbmVsVjISPgoJc3ViX3ZpZXdzGBAgAygLMisuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TdWJWaWV3EjYKA3FvZRgRIAEoCzIpLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlFvZUluZm8iKgoKRXhwb1JlcG9ydBIcChRzaG91bGRfcmVwb3J0X2F0X2VuZBgBIAEoCCJkCgpFeHByZXNzaW9uEg8KB2tleXdvcmQYASADKAkSCwoDdXJsGAIgASgJEjgKBnBlcmlvZBgDIAMoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBlcmlvZCJJCgtFeHByZXNzaW9ucxI6CgRkYXRhGAEgAygLMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRXhwcmVzc2lvbiIqChlJbmxpbmVQbGF5ZXJEYW5tYWt1U3dpdGNoEg0KBXZhbHVlGAEgASgIIicKBUxhYmVsEg0KBXRpdGxlGAEgASgJEg8KB2NvbnRlbnQYAiADKAkihwEKB0xhYmVsVjISDQoFdGl0bGUYASABKAkSDwoHY29udGVudBgCIAMoCRIVCg1leHBvc3VyZV9vbmNlGAMgASgIEkUKDWV4cG9zdXJlX3R5cGUYBCABKA4yLi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5FeHBvc3VyZVR5cGUiJAoGUGVyaW9kEg0KBXN0YXJ0GAEgASgDEgsKA2VuZBgCIAEoAyIwCh9QbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZExldmVsEg0KBXZhbHVlGAEgASgFIjIKIVBsYXllckRhbm1ha3VBaVJlY29tbWVuZGVkTGV2ZWxWMhINCgV2YWx1ZRgBIAEoBSIxCiBQbGF5ZXJEYW5tYWt1QWlSZWNvbW1lbmRlZFN3aXRjaBINCgV2YWx1ZRgBIAEoCCIpChhQbGF5ZXJEYW5tYWt1QmxvY2tib3R0b20SDQoFdmFsdWUYASABKAgiKwoaUGxheWVyRGFubWFrdUJsb2NrY29sb3JmdWwSDQoFdmFsdWUYASABKAgiKQoYUGxheWVyRGFubWFrdUJsb2NrcmVwZWF0Eg0KBXZhbHVlGAEgASgIIikKGFBsYXllckRhbm1ha3VCbG9ja3Njcm9sbBINCgV2YWx1ZRgBIAEoCCIqChlQbGF5ZXJEYW5tYWt1QmxvY2tzcGVjaWFsEg0KBXZhbHVlGAEgASgIIiYKFVBsYXllckRhbm1ha3VCbG9ja3RvcBINCgV2YWx1ZRgBIAEoCCIsChtQbGF5ZXJEYW5tYWt1QmxvY2t0b3BCb3R0b20SDQoFdmFsdWUYASABKAgiJQoUUGxheWVyRGFubWFrdURlbnNpdHkSDQoFdmFsdWUYASABKAUiJAoTUGxheWVyRGFubWFrdURvbWFpbhINCgV2YWx1ZRgBIAEoAiImChVQbGF5ZXJEYW5tYWt1RG9tYWluVjISDQoFdmFsdWUYASABKAUiKgoZUGxheWVyRGFubWFrdUVuYWJsZUhlcmREbRINCgV2YWx1ZRgBIAEoCCItChxQbGF5ZXJEYW5tYWt1RW5hYmxlYmxvY2tsaXN0Eg0KBXZhbHVlGAEgASgIIiUKFFBsYXllckRhbm1ha3VPcGFjaXR5Eg0KBXZhbHVlGAEgASgCIikKGFBsYXllckRhbm1ha3VQZW9wbGVQcm9vZhINCgV2YWx1ZRgBIAEoCCIrChpQbGF5ZXJEYW5tYWt1U2NhbGluZ2ZhY3RvchINCgV2YWx1ZRgBIAEoAiIuCh1QbGF5ZXJEYW5tYWt1U2VuaW9yTW9kZVN3aXRjaBINCgV2YWx1ZRgBIAEoBSIjChJQbGF5ZXJEYW5tYWt1U3BlZWQSDQoFdmFsdWUYASABKAUiKwoaUGxheWVyRGFubWFrdVN1YnRpdGxlUHJvb2YSDQoFdmFsdWUYASABKAgiOAoTUGxheWVyRGFubWFrdVN3aXRjaBINCgV2YWx1ZRgBIAEoCBISCgpjYW5faWdub3JlGAIgASgIIigKF1BsYXllckRhbm1ha3VTd2l0Y2hTYXZlEg0KBXZhbHVlGAEgASgIIi4KHVBsYXllckRhbm1ha3VVc2VEZWZhdWx0Q29uZmlnEg0KBXZhbHVlGAEgASgIIowDCglQb3N0UGFuZWwSDQoFc3RhcnQYASABKAMSCwoDZW5kGAIgASgDEhAKCHByaW9yaXR5GAMgASgDEg4KBmJpel9pZBgEIAEoAxJECghiaXpfdHlwZRgFIAEoDjIyLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RQYW5lbEJpelR5cGUSQwoMY2xpY2tfYnV0dG9uGAYgASgLMi0uYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQ2xpY2tCdXR0b24SPwoKdGV4dF9pbnB1dBgHIAEoCzIrLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dBI9CgljaGVja19ib3gYCCABKAsyKi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5DaGVja0JveBI2CgV0b2FzdBgJIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0Iq0ECgtQb3N0UGFuZWxWMhINCgVzdGFydBgBIAEoAxILCgNlbmQYAiABKAMSRAoIYml6X3R5cGUYAyABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Qb3N0UGFuZWxCaXpUeXBlEkUKDGNsaWNrX2J1dHRvbhgEIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNsaWNrQnV0dG9uVjISQQoKdGV4dF9pbnB1dBgFIAEoCzItLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRleHRJbnB1dFYyEj8KCWNoZWNrX2JveBgGIAEoCzIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkNoZWNrQm94VjISOAoFdG9hc3QYByABKAsyKS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5Ub2FzdFYyEjoKBmJ1YmJsZRgIIAEoCzIqLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1YmJsZVYyEjgKBWxhYmVsGAkgASgLMikuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuTGFiZWxWMhJBCgtwb3N0X3N0YXR1cxgKIAEoDjIsLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlBvc3RTdGF0dXMiFwoHUW9lSW5mbxIMCgRpbmZvGAEgASgJIikKCFJlc3BvbnNlEgwKBGNvZGUYASABKAUSDwoHbWVzc2FnZRgCIAEoCSL5AgoMU3VidGl0bGVJdGVtEgoKAmlkGAEgASgDEg4KBmlkX3N0chgCIAEoCRILCgNsYW4YAyABKAkSDwoHbGFuX2RvYxgEIAEoCRIUCgxzdWJ0aXRsZV91cmwYBSABKAkSOgoGYXV0aG9yGAYgASgLMiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVXNlckluZm8SPAoEdHlwZRgHIAEoDjIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlVHlwZRIVCg1sYW5fZG9jX2JyaWVmGAggASgJEkEKB2FpX3R5cGUYCSABKA4yMC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpVHlwZRJFCglhaV9zdGF0dXMYCiABKA4yMi5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5TdWJ0aXRsZUFpU3RhdHVzIugCCglUZXh0SW5wdXQSHAoUcG9ydHJhaXRfcGxhY2Vob2xkZXIYASADKAkSHQoVbGFuZHNjYXBlX3BsYWNlaG9sZGVyGAIgAygJEkEKC3JlbmRlcl90eXBlGAMgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVuZGVyVHlwZRIYChBwbGFjZWhvbGRlcl9wb3N0GAQgASgIEgwKBHNob3cYBSABKAgSOAoGYXZhdGFyGAYgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEkEKC3Bvc3Rfc3RhdHVzGAcgASgOMiwuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUG9zdFN0YXR1cxI2CgVsYWJlbBgIIAEoCzInLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkxhYmVsIvsBCgtUZXh0SW5wdXRWMhIcChRwb3J0cmFpdF9wbGFjZWhvbGRlchgBIAMoCRIdChVsYW5kc2NhcGVfcGxhY2Vob2xkZXIYAiADKAkSQQoLcmVuZGVyX3R5cGUYAyABKA4yLC5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5SZW5kZXJUeXBlEhgKEHBsYWNlaG9sZGVyX3Bvc3QYBCABKAgSOAoGYXZhdGFyGAUgAygLMiguYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuQXZhdGFyEhgKEHRleHRfaW5wdXRfbGltaXQYBiABKAUibwoFVG9hc3QSDAoEdGV4dBgBIAEoCRIQCghkdXJhdGlvbhgCIAEoBRIMCgRzaG93GAMgASgIEjgKBmJ1dHRvbhgEIAEoCzIoLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkJ1dHRvbiJiCg1Ub2FzdEJ1dHRvblYyEgwKBHRleHQYASABKAkSQwoGYWN0aW9uGAIgASgOMjMuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuVG9hc3RGdW5jdGlvblR5cGUicwoHVG9hc3RWMhIMCgR0ZXh0GAEgASgJEhAKCGR1cmF0aW9uGAIgASgFEkgKD3RvYXN0X2J1dHRvbl92MhgDIAEoCzIvLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlRvYXN0QnV0dG9uVjIiXAoIVXNlckluZm8SCwoDbWlkGAEgASgDEgwKBG5hbWUYAiABKAkSCwoDc2V4GAMgASgJEgwKBGZhY2UYBCABKAkSDAoEc2lnbhgFIAEoCRIMCgRyYW5rGAYgASgFIlMKCVZpZGVvTWFzaxILCgNjaWQYASABKAMSDAoEcGxhdBgCIAEoBRILCgNmcHMYAyABKAUSDAoEdGltZRgEIAEoAxIQCghtYXNrX3VybBgFIAEoCSJwCg1WaWRlb1N1YnRpdGxlEgsKA2xhbhgBIAEoCRIPCgdsYW5fZG9jGAIgASgJEkEKCXN1YnRpdGxlcxgDIAMoCzIuLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLlN1YnRpdGxlSXRlbSKSAQoOVmlld0hlcmREbUVsZW0SEAoIaGVyZF9tc2cYASABKAkSFgoOaGVyZF9zdGFydF9jbnQYAiABKAUSFAoMaGVyZF9lbmRfY250GAMgASgFEhIKCnJlZ2V4X3J1bGUYBCABKAkSFgoOc3RhcnRfcHJvZ3Jlc3MYBSABKAUSFAoMZW5kX3Byb2dyZXNzGAYgASgFKjMKCkF2YXRhclR5cGUSEgoOQXZhdGFyVHlwZU5vbmUQABIRCg1BdmF0YXJUeXBlTkZUEAEqWQoKQnViYmxlVHlwZRISCg5CdWJibGVUeXBlTm9uZRAAEhkKFUJ1YmJsZVR5cGVDbGlja0J1dHRvbhABEhwKGEJ1YmJsZVR5cGVEbVNldHRpbmdQYW5lbBACKlgKDENoZWNrYm94VHlwZRIUChBDaGVja2JveFR5cGVOb25lEAASGQoVQ2hlY2tib3hUeXBlRW5jb3VyYWdlEAESFwoTQ2hlY2tib3hUeXBlQ29sb3JETRACKjUKDkRtQ29sb3JmdWxUeXBlEgwKCE5vbmVUeXBlEAASFQoPVmlwR3JhZHVhbENvbG9yEOHUAypgChFEbU1hc2tXYWxsQml6VHlwZRILCgdVbmtub3duEAASBwoDT0dWEAESCgoGQml6UGljEAISCAoETXV0ZRADEgoKBlJlY29yZBAEEgkKBUNsb3VkEAUSCAoEQUlHQxAGKnYKFURtTWFza1dhbGxDb250ZW50VHlwZRIgChxEbU1hc2tXYWxsQ29udGVudFR5cGVVbmtub3duEAASHQoZRG1NYXNrV2FsbENvbnRlbnRUeXBlVGV4dBABEhwKGERtTWFza1dhbGxDb250ZW50VHlwZVBpYxACKjwKDEV4cG9zdXJlVHlwZRIUChBFeHBvc3VyZVR5cGVOb25lEAASFgoSRXhwb3N1cmVUeXBlRE1TZW5kEAEqgwIKEFBvc3RQYW5lbEJpelR5cGUSGAoUUG9zdFBhbmVsQml6VHlwZU5vbmUQABIdChlQb3N0UGFuZWxCaXpUeXBlRW5jb3VyYWdlEAESGwoXUG9zdFBhbmVsQml6VHlwZUNvbG9yRE0QAhIZChVQb3N0UGFuZWxCaXpUeXBlTkZURE0QAxIdChlQb3N0UGFuZWxCaXpUeXBlRnJhZ0Nsb3NlEAQSHQoZUG9zdFBhbmVsQml6VHlwZVJlY29tbWVuZBAFEhwKGFBvc3RQYW5lbEJpelR5cGVQbG90TGVhaxAGEiIKHlBvc3RQYW5lbEJpelR5cGVBbnRpSGFyYXNzbWVudBAHKjgKClBvc3RTdGF0dXMSFAoQUG9zdFN0YXR1c05vcm1hbBAAEhQKEFBvc3RTdGF0dXNDbG9zZWQQASpOCgpSZW5kZXJUeXBlEhIKDlJlbmRlclR5cGVOb25lEAASFAoQUmVuZGVyVHlwZVNpbmdsZRABEhYKElJlbmRlclR5cGVSb3RhdGlvbhACKjYKEFN1YnRpdGxlQWlTdGF0dXMSCAoETm9uZRAAEgwKCEV4cG9zdXJlEAESCgoGQXNzaXN0EAIqKwoOU3VidGl0bGVBaVR5cGUSCgoGTm9ybWFsEAASDQoJVHJhbnNsYXRlEAEqHgoMU3VidGl0bGVUeXBlEgYKAkNDEAASBgoCQUkQASpOChFUb2FzdEZ1bmN0aW9uVHlwZRIZChVUb2FzdEZ1bmN0aW9uVHlwZU5vbmUQABIeChpUb2FzdEZ1bmN0aW9uVHlwZVBvc3RQYW5lbBABMqAFCgJETRJzCgtEbVNlZ01vYmlsZRIwLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnTW9iaWxlUmVxGjIuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1TZWdNb2JpbGVSZXBseRJkCgZEbVZpZXcSKy5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXEaLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVZpZXdSZXBseRJxCg5EbVBsYXllckNvbmZpZxIzLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtUGxheWVyQ29uZmlnUmVxGiouYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuUmVzcG9uc2USagoIRG1TZWdPdHQSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ090dFJlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnT3R0UmVwbHkSagoIRG1TZWdTREsSLS5iaWxpYmlsaS5jb21tdW5pdHkuc2VydmljZS5kbS52MS5EbVNlZ1NES1JlcRovLmJpbGliaWxpLmNvbW11bml0eS5zZXJ2aWNlLmRtLnYxLkRtU2VnU0RLUmVwbHkSdAoMRG1FeHBvUmVwb3J0EjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVxGjEuYmlsaWJpbGkuY29tbXVuaXR5LnNlcnZpY2UuZG0udjEuRG1FeHBvUmVwb3J0UmVzYgZwcm90bzM");
20895
20986
  const DmSegMobileReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 30);
20896
20987
  const DmWebViewReplySchema = /*@__PURE__*/ message_messageDesc(file_bili_dm, 39);
@@ -23247,16 +23338,16 @@ and limitations under the License.
23247
23338
  }({});
23248
23339
  const ExtraDanUniChapterTypeDict = {
23249
23340
  chs: {
23250
- ch: "\u5176\u5B83\u7247\u6BB5",
23251
- rev: "\u56DE\u987E",
23252
- op: "\u7247\u5934",
23253
- int: "\u4E2D\u573A",
23254
- ed: "\u7247\u5C3E",
23255
- prvw: "\u9884\u544A",
23256
- cut: "\u5220\u51CF",
23257
- dup: "\u8865\u6863",
23258
- biz: "\u5546\u4E1A\u5E7F\u544A",
23259
- promo: "\u63A8\u5E7F"
23341
+ ch: '其它片段',
23342
+ rev: '回顾',
23343
+ op: '片头',
23344
+ int: '中场',
23345
+ ed: '片尾',
23346
+ prvw: '预告',
23347
+ cut: '删减',
23348
+ dup: '补档',
23349
+ biz: '商业广告',
23350
+ promo: '推广'
23260
23351
  }
23261
23352
  };
23262
23353
  var dm_gen_ExtraDanUniChapterAction = /*#__PURE__*/ function(ExtraDanUniChapterAction) {
@@ -23355,22 +23446,27 @@ and limitations under the License.
23355
23446
  minify() {
23356
23447
  const def = UniDM.create();
23357
23448
  const dan = UniDM.create(this);
23358
- for(const key in dan){
23359
- const k = key;
23360
- const v = dan[k];
23361
- if ('SOID' !== key) if (v) if (v === def[k]) delete dan[k];
23362
- else {
23363
- if ('attr' === k && Array.isArray(v) && 0 === v.length) delete dan[k];
23364
- if ('extraStr' === k && '{}' === v) delete dan[k];
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
+ };
23457
+ const result = {
23458
+ SOID: dan.SOID
23459
+ };
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);
23365
23465
  }
23366
- else delete dan[k];
23367
23466
  }
23368
- return dm_gen_JSON.parse(dm_gen_JSON.stringify(dan));
23467
+ return result;
23369
23468
  }
23370
- downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {
23371
- include: [],
23372
- exclude: []
23373
- }) {
23469
+ downgradeAdvcancedDan({ include, exclude, cleanExtra = false } = {}) {
23374
23470
  if (!this.extra) return this;
23375
23471
  {
23376
23472
  if (!include) include = [];
@@ -23385,16 +23481,16 @@ and limitations under the License.
23385
23481
  clone.content = `${this.content} x${merge.count}`;
23386
23482
  } else if (danuni.chapter) {
23387
23483
  const chapter = danuni.chapter;
23388
- if ("cut" === chapter.type) clone.content = `[\u{63D0}\u{793A}]${clone.platform}\u{6E90}${ExtraDanUniChapterTypeDict.chs[chapter.type]}\u{4E86}${chapter.duration}\u{79D2}`;
23389
- else if ("dup" === chapter.type) clone.content = `[\u{63D0}\u{793A}(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${clone.platform}\u{6E90}-${chapter.duration}\u{79D2}`;
23390
- else clone.content = `[\u{7A7A}\u{964D}(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${hh_mm_ss_default().fromS(clone.progress + chapter.duration)}`;
23484
+ if ("cut" === chapter.type) clone.content = `[提示]${clone.platform}源${ExtraDanUniChapterTypeDict.chs[chapter.type]}了${chapter.duration}秒`;
23485
+ else if ("dup" === chapter.type) clone.content = `[提示(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${clone.platform}源-${chapter.duration}秒`;
23486
+ else clone.content = `[空降(${ExtraDanUniChapterTypeDict.chs[chapter.type]})]${hh_mm_ss_default().fromS(clone.progress + chapter.duration)}`;
23391
23487
  }
23392
23488
  } else if (check('bili') && clone.extra.bili) {
23393
23489
  const bili = clone.extra.bili;
23394
- if (7 === bili.mode && bili.adv) clone.content = `[B\u{7AD9}\u{9AD8}\u{7EA7}\u{5F39}\u{5E55}]${dm_gen_JSON.parse(bili.adv)[4] || ''}`;
23490
+ if (7 === bili.mode && bili.adv) clone.content = `[B站高级弹幕]${dm_gen_JSON.parse(bili.adv)[4] || ''}`;
23395
23491
  else if (bili.command) {
23396
23492
  const command = bili.command;
23397
- clone.content = `[B\u{7AD9}\u{6307}\u{4EE4}\u{5F39}\u{5E55}]${command.content}`;
23493
+ clone.content = `[B站指令弹幕]${command.content}`;
23398
23494
  clone.fontsize = 36;
23399
23495
  }
23400
23496
  }
@@ -23474,7 +23570,9 @@ and limitations under the License.
23474
23570
  bili: {
23475
23571
  mode: args.mode,
23476
23572
  pool: args.pool,
23477
- dmid: args.id
23573
+ dmid: args.id,
23574
+ attr: args.attr,
23575
+ mid: args.mid
23478
23576
  }
23479
23577
  };
23480
23578
  switch(args.mode){
@@ -23509,7 +23607,7 @@ and limitations under the License.
23509
23607
  mode,
23510
23608
  senderID: senderID.toString(),
23511
23609
  ctime: this.transCtime(args.ctime, 's'),
23512
- weight: args.weight ? args.weight : 3 === pool ? 1 : 0,
23610
+ weight: args.weight || (3 === pool ? 1 : 0),
23513
23611
  pool,
23514
23612
  attr: DMAttrUtils.fromBin(args.attr, platform_PlatformVideoSource.Bilibili),
23515
23613
  platform: platform_PlatformVideoSource.Bilibili,
@@ -23883,7 +23981,7 @@ and limitations under the License.
23883
23981
  });
23884
23982
  const DanUniConvertTipTemplate = {
23885
23983
  meassage: 'Converted by DanUni!',
23886
- version: `JS/TS ${package_namespaceObject.u2} (v${package_namespaceObject.i8})`
23984
+ version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
23887
23985
  };
23888
23986
  class UniPool {
23889
23987
  constructor(dans, options = {}, info = {
@@ -23930,7 +24028,7 @@ and limitations under the License.
23930
24028
  return stats;
23931
24029
  }
23932
24030
  getMost(key) {
23933
- return this.getStat(key).sort((a, b)=>b.count - a.count)[0];
24031
+ return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
23934
24032
  }
23935
24033
  get most() {
23936
24034
  return {
@@ -23992,7 +24090,7 @@ and limitations under the License.
23992
24090
  }
23993
24091
  merge(lifetime = 0) {
23994
24092
  if (!this.shared.SOID) {
23995
- console.error("\u672C\u529F\u80FD\u4EC5\u652F\u6301\u540C\u5F39\u5E55\u5E93\u5185\u4F7F\u7528\uFF0C\u53EF\u5148 .split('SOID') \u5728\u5206\u522B\u4F7F\u7528");
24093
+ console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
23996
24094
  return this;
23997
24095
  }
23998
24096
  if (lifetime <= 0) return this;
@@ -24101,7 +24199,7 @@ and limitations under the License.
24101
24199
  'str',
24102
24200
  'bin'
24103
24201
  ];
24104
- const err = "\u65E0\u6CD5\u8BC6\u522B\u8BE5\u6587\u4EF6\uFF0C\u8BF7\u624B\u52A8\u6307\u5B9A\u683C\u5F0F\uFF01";
24202
+ const err = '无法识别该文件,请手动指定格式!';
24105
24203
  const parseJSON = (json)=>{
24106
24204
  try {
24107
24205
  if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
@@ -24175,16 +24273,16 @@ and limitations under the License.
24175
24273
  const fileStr = new TextDecoder().decode(file);
24176
24274
  const prStr = parseStr(fileStr);
24177
24275
  if (prStr) return prStr;
24178
- errmesg = `${err}(\u{5B9A}\u{4F4D}: bin->string)`;
24276
+ errmesg = `${err}(定位: bin->string)`;
24179
24277
  } catch {}
24180
24278
  } else if (mod.includes('json')) {
24181
24279
  const prJSON = parseJSON(file);
24182
- if (!prJSON) throw new Error(`${err}(\u{5B9A}\u{4F4D}: json)`);
24280
+ if (!prJSON) throw new Error(`${err}(定位: json)`);
24183
24281
  return prJSON;
24184
24282
  }
24185
24283
  } else if (isString(file)) {
24186
24284
  const prStr = parseStr(file);
24187
- if (!prStr) throw new Error(`${err}(\u{5B9A}\u{4F4D}: string)`);
24285
+ if (!prStr) throw new Error(`${err}(定位: string)`);
24188
24286
  return prStr;
24189
24287
  }
24190
24288
  throw new Error(errmesg ?? err);
@@ -24282,7 +24380,7 @@ and limitations under the License.
24282
24380
  };
24283
24381
  if (options?.avoidSenderIDWithAt) {
24284
24382
  const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
24285
- if (!ok) throw new Error("\u5B58\u5728\u5176\u4ED6\u6765\u6E90\u7684senderID\uFF0C\u8BF7\u5173\u95ED\u8BE5\u529F\u80FD\u518D\u8BD5\uFF01");
24383
+ if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
24286
24384
  }
24287
24385
  const builder = new Builder({
24288
24386
  ignoreAttributes: false
@@ -24321,6 +24419,25 @@ and limitations under the License.
24321
24419
  const json = data.commandDms;
24322
24420
  return new UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
24323
24421
  }
24422
+ static fromBiliUp(json, options) {
24423
+ return new UniPool(json.data.result.map((d)=>{
24424
+ const attrBin = d.attrs ? d.attrs.split(',').map(Number).reduce((bin, bitPosition)=>bin | 1 << bitPosition - 1, 0) : 0;
24425
+ return UniDM.fromBili({
24426
+ id: BigInt(d.id_str || d.id),
24427
+ progress: d.progress / 1000,
24428
+ mode: d.mode,
24429
+ fontsize: d.fontsize,
24430
+ color: Number.parseInt(d.color, 16),
24431
+ mid: d.mid,
24432
+ midHash: d.mid_hash,
24433
+ content: d.msg,
24434
+ ctime: BigInt(d.ctime),
24435
+ pool: d.pool,
24436
+ attr: attrBin,
24437
+ oid: BigInt(d.oid)
24438
+ }, BigInt(d.oid), options);
24439
+ }), options);
24440
+ }
24324
24441
  static fromDplayer(json, playerID, domain = 'other', options) {
24325
24442
  return new UniPool(json.data.map((d)=>UniDM.fromDplayer({
24326
24443
  content: d[4],
@@ -24417,14 +24534,16 @@ and limitations under the License.
24417
24534
  static fromASS(ass, options) {
24418
24535
  return parseAssRawField(ass, options);
24419
24536
  }
24420
- toASS(canvasCtx, options = {
24421
- substyle: {}
24422
- }) {
24537
+ toASS(canvasCtx, options) {
24538
+ const defaultOptions = {
24539
+ substyle: {}
24540
+ };
24541
+ const finalOptions = options ?? defaultOptions;
24423
24542
  const fn = this.shared.SOID;
24424
24543
  return generateASS(this, {
24425
24544
  filename: fn,
24426
24545
  title: fn,
24427
- ...options
24546
+ ...finalOptions
24428
24547
  }, canvasCtx);
24429
24548
  }
24430
24549
  }
@@ -24536,7 +24655,7 @@ and limitations under the License.
24536
24655
  };
24537
24656
  };
24538
24657
  const measureTextWidthConstructor = (canvasContext)=>{
24539
- const supportTextMeasure = !!canvasContext.measureText("\u4E2D");
24658
+ const supportTextMeasure = !!canvasContext.measureText('中');
24540
24659
  if (supportTextMeasure) return (fontName, fontSize, bold, text)=>{
24541
24660
  canvasContext.font = `${bold ? 'bold' : 'normal'} ${fontSize}px ${fontName}`;
24542
24661
  const textWidth = canvasContext.measureText(text).width;
@@ -24614,7 +24733,7 @@ and limitations under the License.
24614
24733
  const layoutDanmaku = (inputList, config, canvasCtx)=>{
24615
24734
  const list = [
24616
24735
  ...UniPool2DanmakuLists(inputList)
24617
- ].sort((x, y)=>x.time - y.time);
24736
+ ].toSorted((x, y)=>x.time - y.time);
24618
24737
  const layout = initializeLayout(config, canvasCtx);
24619
24738
  return DanmakuList2UniPool(list.map(layout).filter((danmaku)=>!!danmaku));
24620
24739
  };
@@ -24628,7 +24747,7 @@ and limitations under the License.
24628
24747
  const minorSecond = Math.floor((seconds - integer) * 100);
24629
24748
  return `${hour}:${pad(minute)}:${pad(second)}.${minorSecond}`;
24630
24749
  };
24631
- const encode = (text)=>text.toString().replaceAll('{', "\uFF5B").replaceAll('}', "\uFF5D").replaceAll(/\r|\n/g, '');
24750
+ const encode = (text)=>text.toString().replaceAll('{', '{').replaceAll('}', '}').replaceAll(/\r|\n/g, '');
24632
24751
  const scrollCommand = ({ start, end, top })=>`\\move(${start},${top},${end},${top})`;
24633
24752
  const fixCommand = ({ top, left })=>`\\an8\\pos(${left},${top})`;
24634
24753
  const colorCommand = (color)=>`\\c${formatColor(color)}`;
@@ -24697,7 +24816,7 @@ and limitations under the License.
24697
24816
  throw new Error(`Unknown danmaku type: ${danmaku.type}`);
24698
24817
  }
24699
24818
  };
24700
- const ass_event = (list, config)=>{
24819
+ const event_event = (list, config)=>{
24701
24820
  const content = [
24702
24821
  '[Events]',
24703
24822
  'Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text',
@@ -24708,11 +24827,11 @@ and limitations under the License.
24708
24827
  ];
24709
24828
  return content.join('\n');
24710
24829
  };
24711
- const ass_info = ({ playResX, playResY }, { filename, title })=>{
24830
+ const info_info = ({ playResX, playResY }, { filename, title })=>{
24712
24831
  const content = [
24713
24832
  '[Script Info]',
24714
24833
  `Title: ${title}`,
24715
- `Original Script: \u{6839}\u{636E} ${filename} \u{7684}\u{5F39}\u{5E55}\u{4FE1}\u{606F}\u{FF0C}\u{7531} ${package_namespaceObject.e8} \u{751F}\u{6210}`,
24834
+ `Original Script: 根据 ${filename} 的弹幕信息,由 ${package_namespaceObject.TB} 生成`,
24716
24835
  'ScriptType: v4.00+',
24717
24836
  'Collisions: Reverse',
24718
24837
  `PlayResX: ${playResX}`,
@@ -24724,17 +24843,17 @@ and limitations under the License.
24724
24843
  var lib = __webpack_require__("../../node_modules/.pnpm/browserify-zlib@0.2.0/node_modules/browserify-zlib/lib/index.js");
24725
24844
  var base16384_lib = __webpack_require__("../../node_modules/.pnpm/base16384@1.0.0/node_modules/base16384/lib/index.js");
24726
24845
  var raw_Buffer = __webpack_require__("../../node_modules/.pnpm/buffer@5.7.1/node_modules/buffer/index.js")["Buffer"];
24727
- const compressTypes = [
24846
+ const compressTypes = new Set([
24728
24847
  'brotli',
24729
24848
  'gzip'
24730
- ];
24731
- const baseTypes = [
24849
+ ]);
24850
+ const baseTypes = new Set([
24732
24851
  'base64',
24733
24852
  'base18384'
24734
- ];
24853
+ ]);
24735
24854
  function fromUint16Array(array) {
24736
24855
  let result = '';
24737
- for (const element of array)result += String.fromCharCode(element);
24856
+ for (const element of array)result += String.fromCodePoint(element);
24738
24857
  return result;
24739
24858
  }
24740
24859
  function raw_raw(list, config, context, compressType = 'brotli', baseType = 'base18384') {
@@ -24757,14 +24876,14 @@ and limitations under the License.
24757
24876
  {
24758
24877
  let compressType = lineCompressType.replace(';RawCompressType: ', '').trim();
24759
24878
  let baseType = lineBaseType.replace(';RawBaseType: ', '').trim();
24760
- if (!compressTypes.includes(compressType)) compressType = 'gzip';
24761
- if (!baseTypes.includes(baseType)) baseType = 'base64';
24879
+ if (!compressTypes.has(compressType)) compressType = 'gzip';
24880
+ if (!baseTypes.has(baseType)) baseType = 'base64';
24762
24881
  const text = lineRaw.replace(';Raw: ', '').trim();
24763
- const buffer = 'base64' === baseType ? raw_Buffer.from(text, 'base64') : raw_Buffer.from(base16384_lib.decode(raw_Buffer.from(text, 'utf-8').toString('utf-8')));
24882
+ const buffer = 'base64' === baseType ? raw_Buffer.from(text, 'base64') : raw_Buffer.from(base16384_lib.decode(raw_Buffer.from(text, 'utf8').toString('utf8')));
24764
24883
  let decompress;
24765
24884
  decompress = 'brotli' === compressType ? (0, lib.brotliDecompressSync)(buffer) : (0, lib.gunzipSync)(buffer);
24766
24885
  try {
24767
- return JSON.parse(decompress.toString('utf-8'));
24886
+ return JSON.parse(decompress.toString('utf8'));
24768
24887
  } catch {
24769
24888
  return;
24770
24889
  }
@@ -24811,21 +24930,22 @@ and limitations under the License.
24811
24930
  ];
24812
24931
  return content.join('\n');
24813
24932
  };
24814
- const ass_create = (list, rawList, config, context = {
24933
+ const default_context = {
24815
24934
  filename: 'unknown',
24816
24935
  title: 'unknown'
24817
- }, rawConfig)=>{
24936
+ };
24937
+ const create_ass = (list, rawList, config, context = default_context, rawConfig)=>{
24818
24938
  const Elist = UniPool2DanmakuLists(list);
24819
24939
  const ErawList = UniPool2DanmakuLists(rawList);
24820
24940
  const content = [
24821
- ass_info(config, context),
24941
+ info_info(config, context),
24822
24942
  style(config),
24823
- ass_event(Elist, config)
24943
+ event_event(Elist, config)
24824
24944
  ];
24825
24945
  if (config.includeRaw) content.push(raw_raw(ErawList, config, context, rawConfig?.compressType, rawConfig?.baseType));
24826
24946
  return `${content.join('\n\n')}\n`;
24827
24947
  };
24828
- const ass_gen_config = (overrides = {})=>{
24948
+ const getConfig = (overrides = {})=>{
24829
24949
  const defaults = {
24830
24950
  fontSize: [
24831
24951
  25,
@@ -24861,10 +24981,10 @@ and limitations under the License.
24861
24981
  return config;
24862
24982
  };
24863
24983
  function generateASS(danmaku, options, canvasCtx) {
24864
- const config = ass_gen_config(options.substyle);
24984
+ const config = getConfig(options.substyle);
24865
24985
  const mergedList = danmaku.merge(config.mergeIn);
24866
24986
  const layoutList = layoutDanmaku(mergedList, config, canvasCtx);
24867
- const content = ass_create(layoutList, danmaku, config, {
24987
+ const content = create_ass(layoutList, danmaku, config, {
24868
24988
  filename: options?.filename || 'unknown',
24869
24989
  title: options?.title || 'unknown'
24870
24990
  }, options.raw);
@@ -24872,15 +24992,15 @@ and limitations under the License.
24872
24992
  }
24873
24993
  function parseAssRawField(ass, options) {
24874
24994
  const raw = deRaw(ass);
24875
- if (!raw) return UniPool.create();
24876
- return DanmakuList2UniPool(raw.list, options);
24995
+ if (raw) return DanmakuList2UniPool(raw.list, options);
24996
+ return UniPool.create();
24877
24997
  }
24878
24998
  const src_JSON_0 = json_bigint_default()({
24879
24999
  useNativeBigInt: true
24880
25000
  });
24881
25001
  const src_DanUniConvertTipTemplate = {
24882
25002
  meassage: 'Converted by DanUni!',
24883
- version: `JS/TS ${package_namespaceObject.u2} (v${package_namespaceObject.i8})`
25003
+ version: `JS/TS ${package_namespaceObject.UU} (v${package_namespaceObject.rE})`
24884
25004
  };
24885
25005
  class src_UniPool {
24886
25006
  constructor(dans, options = {}, info = {
@@ -24927,7 +25047,7 @@ and limitations under the License.
24927
25047
  return stats;
24928
25048
  }
24929
25049
  getMost(key) {
24930
- return this.getStat(key).sort((a, b)=>b.count - a.count)[0];
25050
+ return this.getStat(key).toSorted((a, b)=>b.count - a.count)[0];
24931
25051
  }
24932
25052
  get most() {
24933
25053
  return {
@@ -24989,7 +25109,7 @@ and limitations under the License.
24989
25109
  }
24990
25110
  merge(lifetime = 0) {
24991
25111
  if (!this.shared.SOID) {
24992
- console.error("\u672C\u529F\u80FD\u4EC5\u652F\u6301\u540C\u5F39\u5E55\u5E93\u5185\u4F7F\u7528\uFF0C\u53EF\u5148 .split('SOID') \u5728\u5206\u522B\u4F7F\u7528");
25112
+ console.error("本功能仅支持同弹幕库内使用,可先 .split('SOID') 在分别使用");
24993
25113
  return this;
24994
25114
  }
24995
25115
  if (lifetime <= 0) return this;
@@ -25098,7 +25218,7 @@ and limitations under the License.
25098
25218
  'str',
25099
25219
  'bin'
25100
25220
  ];
25101
- const err = "\u65E0\u6CD5\u8BC6\u522B\u8BE5\u6587\u4EF6\uFF0C\u8BF7\u624B\u52A8\u6307\u5B9A\u683C\u5F0F\uFF01";
25221
+ const err = '无法识别该文件,请手动指定格式!';
25102
25222
  const parseJSON = (json)=>{
25103
25223
  try {
25104
25224
  if (Array.isArray(json) && json.every((d)=>d.SOID)) return {
@@ -25172,16 +25292,16 @@ and limitations under the License.
25172
25292
  const fileStr = new TextDecoder().decode(file);
25173
25293
  const prStr = parseStr(fileStr);
25174
25294
  if (prStr) return prStr;
25175
- errmesg = `${err}(\u{5B9A}\u{4F4D}: bin->string)`;
25295
+ errmesg = `${err}(定位: bin->string)`;
25176
25296
  } catch {}
25177
25297
  } else if (mod.includes('json')) {
25178
25298
  const prJSON = parseJSON(file);
25179
- if (!prJSON) throw new Error(`${err}(\u{5B9A}\u{4F4D}: json)`);
25299
+ if (!prJSON) throw new Error(`${err}(定位: json)`);
25180
25300
  return prJSON;
25181
25301
  }
25182
25302
  } else if (isString(file)) {
25183
25303
  const prStr = parseStr(file);
25184
- if (!prStr) throw new Error(`${err}(\u{5B9A}\u{4F4D}: string)`);
25304
+ if (!prStr) throw new Error(`${err}(定位: string)`);
25185
25305
  return prStr;
25186
25306
  }
25187
25307
  throw new Error(errmesg ?? err);
@@ -25279,7 +25399,7 @@ and limitations under the License.
25279
25399
  };
25280
25400
  if (options?.avoidSenderIDWithAt) {
25281
25401
  const ok = this.dans.every((d)=>d.senderID.endsWith(`@${platform_PlatformVideoSource.Bilibili}`));
25282
- if (!ok) throw new Error("\u5B58\u5728\u5176\u4ED6\u6765\u6E90\u7684senderID\uFF0C\u8BF7\u5173\u95ED\u8BE5\u529F\u80FD\u518D\u8BD5\uFF01");
25402
+ if (!ok) throw new Error('存在其他来源的senderID,请关闭该功能再试!');
25283
25403
  }
25284
25404
  const builder = new Builder({
25285
25405
  ignoreAttributes: false
@@ -25318,6 +25438,25 @@ and limitations under the License.
25318
25438
  const json = data.commandDms;
25319
25439
  return new src_UniPool(json.map((d)=>UniDM.fromBiliCommand(d, d.oid, options)), options);
25320
25440
  }
25441
+ static fromBiliUp(json, options) {
25442
+ return new src_UniPool(json.data.result.map((d)=>{
25443
+ const attrBin = d.attrs ? d.attrs.split(',').map(Number).reduce((bin, bitPosition)=>bin | 1 << bitPosition - 1, 0) : 0;
25444
+ return UniDM.fromBili({
25445
+ id: BigInt(d.id_str || d.id),
25446
+ progress: d.progress / 1000,
25447
+ mode: d.mode,
25448
+ fontsize: d.fontsize,
25449
+ color: Number.parseInt(d.color, 16),
25450
+ mid: d.mid,
25451
+ midHash: d.mid_hash,
25452
+ content: d.msg,
25453
+ ctime: BigInt(d.ctime),
25454
+ pool: d.pool,
25455
+ attr: attrBin,
25456
+ oid: BigInt(d.oid)
25457
+ }, BigInt(d.oid), options);
25458
+ }), options);
25459
+ }
25321
25460
  static fromDplayer(json, playerID, domain = 'other', options) {
25322
25461
  return new src_UniPool(json.data.map((d)=>UniDM.fromDplayer({
25323
25462
  content: d[4],
@@ -25414,14 +25553,16 @@ and limitations under the License.
25414
25553
  static fromASS(ass, options) {
25415
25554
  return parseAssRawField(ass, options);
25416
25555
  }
25417
- toASS(canvasCtx, options = {
25418
- substyle: {}
25419
- }) {
25556
+ toASS(canvasCtx, options) {
25557
+ const defaultOptions = {
25558
+ substyle: {}
25559
+ };
25560
+ const finalOptions = options ?? defaultOptions;
25420
25561
  const fn = this.shared.SOID;
25421
25562
  return generateASS(this, {
25422
25563
  filename: fn,
25423
25564
  title: fn,
25424
- ...options
25565
+ ...finalOptions
25425
25566
  }, canvasCtx);
25426
25567
  }
25427
25568
  }