Abracadabra 魔曰

文本防和谐工具组件,由 Abracadabra 项目支持。

// ==UserScript==
// @name        Abracadabra 魔曰
// @description 文本防和谐工具组件,由 Abracadabra 项目支持。
// @version     v3.0.11
// @run-at      document-idle
// @supportURL  https://github.com/SheepChef/Abracadabra
// @author      SheepChef
// @icon64      https://abracadabra-demo.pages.dev/assets/favicon.png
// @namespace   shef.cc
// @license     GPLv3
// @match       https://tieba.baidu.com/*
// @match       https://www.bilibili.com/video/*
// ==/UserScript==

(function() {
  "use strict";
  var __defProp = Object.defineProperty;
  var __typeError = (msg) => {
    throw TypeError(msg);
  };
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
  var _input, _output, _res;
  const version = "3.7.7";
  const VERSION = version;
  const _hasBuffer = typeof Buffer === "function";
  const _TD = typeof TextDecoder === "function" ? new TextDecoder() : void 0;
  const _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0;
  const b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  const b64chs = Array.prototype.slice.call(b64ch);
  const b64tab = ((a) => {
    let tab = {};
    a.forEach((c, i) => tab[c] = i);
    return tab;
  })(b64chs);
  const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
  const _fromCC = String.fromCharCode.bind(String);
  const _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : (it) => new Uint8Array(Array.prototype.slice.call(it, 0));
  const _mkUriSafe = (src) => src.replace(/=/g, "").replace(/[+\/]/g, (m0) => m0 == "+" ? "-" : "_");
  const _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, "");
  const btoaPolyfill = (bin) => {
    let u32, c0, c1, c2, asc = "";
    const pad = bin.length % 3;
    for (let i = 0; i < bin.length; ) {
      if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255)
        throw new TypeError("invalid character found");
      u32 = c0 << 16 | c1 << 8 | c2;
      asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63];
    }
    return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc;
  };
  const _btoa = typeof btoa === "function" ? (bin) => btoa(bin) : _hasBuffer ? (bin) => Buffer.from(bin, "binary").toString("base64") : btoaPolyfill;
  const _fromUint8Array = _hasBuffer ? (u8a) => Buffer.from(u8a).toString("base64") : (u8a) => {
    const maxargs = 4096;
    let strs = [];
    for (let i = 0, l = u8a.length; i < l; i += maxargs) {
      strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));
    }
    return _btoa(strs.join(""));
  };
  const fromUint8Array = (u8a, urlsafe = false) => urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);
  const cb_utob = (c) => {
    if (c.length < 2) {
      var cc = c.charCodeAt(0);
      return cc < 128 ? c : cc < 2048 ? _fromCC(192 | cc >>> 6) + _fromCC(128 | cc & 63) : _fromCC(224 | cc >>> 12 & 15) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
    } else {
      var cc = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320);
      return _fromCC(240 | cc >>> 18 & 7) + _fromCC(128 | cc >>> 12 & 63) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
    }
  };
  const re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
  const utob = (u) => u.replace(re_utob, cb_utob);
  const _encode = _hasBuffer ? (s) => Buffer.from(s, "utf8").toString("base64") : _TE ? (s) => _fromUint8Array(_TE.encode(s)) : (s) => _btoa(utob(s));
  const encode = (src, urlsafe = false) => urlsafe ? _mkUriSafe(_encode(src)) : _encode(src);
  const encodeURI = (src) => encode(src, true);
  const re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
  const cb_btou = (cccc) => {
    switch (cccc.length) {
      case 4:
        var cp = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp - 65536;
        return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320);
      case 3:
        return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2));
      default:
        return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1));
    }
  };
  const btou = (b) => b.replace(re_btou, cb_btou);
  const atobPolyfill = (asc) => {
    asc = asc.replace(/\s+/g, "");
    if (!b64re.test(asc))
      throw new TypeError("malformed base64.");
    asc += "==".slice(2 - (asc.length & 3));
    let u24, bin = "", r1, r2;
    for (let i = 0; i < asc.length; ) {
      u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]);
      bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
    }
    return bin;
  };
  const _atob = typeof atob === "function" ? (asc) => atob(_tidyB64(asc)) : _hasBuffer ? (asc) => Buffer.from(asc, "base64").toString("binary") : atobPolyfill;
  const _toUint8Array = _hasBuffer ? (a) => _U8Afrom(Buffer.from(a, "base64")) : (a) => _U8Afrom(_atob(a).split("").map((c) => c.charCodeAt(0)));
  const toUint8Array = (a) => _toUint8Array(_unURI(a));
  const _decode = _hasBuffer ? (a) => Buffer.from(a, "base64").toString("utf8") : _TD ? (a) => _TD.decode(_toUint8Array(a)) : (a) => btou(_atob(a));
  const _unURI = (a) => _tidyB64(a.replace(/[-_]/g, (m0) => m0 == "-" ? "+" : "/"));
  const decode = (src) => _decode(_unURI(src));
  const isValid = (src) => {
    if (typeof src !== "string")
      return false;
    const s = src.replace(/\s+/g, "").replace(/={0,2}$/, "");
    return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s);
  };
  const _noEnum = (v) => {
    return {
      value: v,
      enumerable: false,
      writable: true,
      configurable: true
    };
  };
  const extendString = function() {
    const _add = (name, body) => Object.defineProperty(String.prototype, name, _noEnum(body));
    _add("fromBase64", function() {
      return decode(this);
    });
    _add("toBase64", function(urlsafe) {
      return encode(this, urlsafe);
    });
    _add("toBase64URI", function() {
      return encode(this, true);
    });
    _add("toBase64URL", function() {
      return encode(this, true);
    });
    _add("toUint8Array", function() {
      return toUint8Array(this);
    });
  };
  const extendUint8Array = function() {
    const _add = (name, body) => Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));
    _add("toBase64", function(urlsafe) {
      return fromUint8Array(this, urlsafe);
    });
    _add("toBase64URI", function() {
      return fromUint8Array(this, true);
    });
    _add("toBase64URL", function() {
      return fromUint8Array(this, true);
    });
  };
  const extendBuiltins = () => {
    extendString();
    extendUint8Array();
  };
  const gBase64 = {
    version,
    VERSION,
    atob: _atob,
    atobPolyfill,
    btoa: _btoa,
    btoaPolyfill,
    fromBase64: decode,
    toBase64: encode,
    encode,
    encodeURI,
    encodeURL: encodeURI,
    utob,
    btou,
    decode,
    isValid,
    fromUint8Array,
    toUint8Array,
    extendString,
    extendUint8Array,
    extendBuiltins
  };
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
  function getDefaultExportFromCjs(x) {
    return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
  }
  function getAugmentedNamespace(n) {
    if (n.__esModule) return n;
    var f = n.default;
    if (typeof f == "function") {
      var a = function a2() {
        if (this instanceof a2) {
          return Reflect.construct(f, arguments, this.constructor);
        }
        return f.apply(this, arguments);
      };
      a.prototype = f.prototype;
    } else a = {};
    Object.defineProperty(a, "__esModule", { value: true });
    Object.keys(n).forEach(function(k) {
      var d = Object.getOwnPropertyDescriptor(n, k);
      Object.defineProperty(a, k, d.get ? d : {
        enumerable: true,
        get: function() {
          return n[k];
        }
      });
    });
    return a;
  }
  var cryptoJs = { exports: {} };
  function commonjsRequire(path) {
    throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
  }
  var core = { exports: {} };
  const __viteBrowserExternal = {};
  const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
    __proto__: null,
    default: __viteBrowserExternal
  }, Symbol.toStringTag, { value: "Module" }));
  const require$$0 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);
  var hasRequiredCore;
  function requireCore() {
    if (hasRequiredCore) return core.exports;
    hasRequiredCore = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory();
        }
      })(commonjsGlobal, function() {
        var CryptoJS2 = CryptoJS2 || function(Math2, undefined$1) {
          var crypto;
          if (typeof window !== "undefined" && window.crypto) {
            crypto = window.crypto;
          }
          if (typeof self !== "undefined" && self.crypto) {
            crypto = self.crypto;
          }
          if (typeof globalThis !== "undefined" && globalThis.crypto) {
            crypto = globalThis.crypto;
          }
          if (!crypto && typeof window !== "undefined" && window.msCrypto) {
            crypto = window.msCrypto;
          }
          if (!crypto && typeof commonjsGlobal !== "undefined" && commonjsGlobal.crypto) {
            crypto = commonjsGlobal.crypto;
          }
          if (!crypto && typeof commonjsRequire === "function") {
            try {
              crypto = require$$0;
            } catch (err2) {
            }
          }
          var cryptoSecureRandomInt = function() {
            if (crypto) {
              if (typeof crypto.getRandomValues === "function") {
                try {
                  return crypto.getRandomValues(new Uint32Array(1))[0];
                } catch (err2) {
                }
              }
              if (typeof crypto.randomBytes === "function") {
                try {
                  return crypto.randomBytes(4).readInt32LE();
                } catch (err2) {
                }
              }
            }
            throw new Error("Native crypto module could not be used to get secure random number.");
          };
          var create = Object.create || /* @__PURE__ */ function() {
            function F() {
            }
            return function(obj) {
              var subtype;
              F.prototype = obj;
              subtype = new F();
              F.prototype = null;
              return subtype;
            };
          }();
          var C = {};
          var C_lib = C.lib = {};
          var Base = C_lib.Base = /* @__PURE__ */ function() {
            return {
              /**
               * Creates a new object that inherits from this object.
               *
               * @param {Object} overrides Properties to copy into the new object.
               *
               * @return {Object} The new object.
               *
               * @static
               *
               * @example
               *
               *     var MyType = CryptoJS.lib.Base.extend({
               *         field: 'value',
               *
               *         method: function () {
               *         }
               *     });
               */
              extend: function(overrides) {
                var subtype = create(this);
                if (overrides) {
                  subtype.mixIn(overrides);
                }
                if (!subtype.hasOwnProperty("init") || this.init === subtype.init) {
                  subtype.init = function() {
                    subtype.$super.init.apply(this, arguments);
                  };
                }
                subtype.init.prototype = subtype;
                subtype.$super = this;
                return subtype;
              },
              /**
               * Extends this object and runs the init method.
               * Arguments to create() will be passed to init().
               *
               * @return {Object} The new object.
               *
               * @static
               *
               * @example
               *
               *     var instance = MyType.create();
               */
              create: function() {
                var instance = this.extend();
                instance.init.apply(instance, arguments);
                return instance;
              },
              /**
               * Initializes a newly created object.
               * Override this method to add some logic when your objects are created.
               *
               * @example
               *
               *     var MyType = CryptoJS.lib.Base.extend({
               *         init: function () {
               *             // ...
               *         }
               *     });
               */
              init: function() {
              },
              /**
               * Copies properties into this object.
               *
               * @param {Object} properties The properties to mix in.
               *
               * @example
               *
               *     MyType.mixIn({
               *         field: 'value'
               *     });
               */
              mixIn: function(properties) {
                for (var propertyName in properties) {
                  if (properties.hasOwnProperty(propertyName)) {
                    this[propertyName] = properties[propertyName];
                  }
                }
                if (properties.hasOwnProperty("toString")) {
                  this.toString = properties.toString;
                }
              },
              /**
               * Creates a copy of this object.
               *
               * @return {Object} The clone.
               *
               * @example
               *
               *     var clone = instance.clone();
               */
              clone: function() {
                return this.init.prototype.extend(this);
              }
            };
          }();
          var WordArray = C_lib.WordArray = Base.extend({
            /**
             * Initializes a newly created word array.
             *
             * @param {Array} words (Optional) An array of 32-bit words.
             * @param {number} sigBytes (Optional) The number of significant bytes in the words.
             *
             * @example
             *
             *     var wordArray = CryptoJS.lib.WordArray.create();
             *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);
             *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);
             */
            init: function(words, sigBytes) {
              words = this.words = words || [];
              if (sigBytes != undefined$1) {
                this.sigBytes = sigBytes;
              } else {
                this.sigBytes = words.length * 4;
              }
            },
            /**
             * Converts this word array to a string.
             *
             * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex
             *
             * @return {string} The stringified word array.
             *
             * @example
             *
             *     var string = wordArray + '';
             *     var string = wordArray.toString();
             *     var string = wordArray.toString(CryptoJS.enc.Utf8);
             */
            toString: function(encoder) {
              return (encoder || Hex).stringify(this);
            },
            /**
             * Concatenates a word array to this word array.
             *
             * @param {WordArray} wordArray The word array to append.
             *
             * @return {WordArray} This word array.
             *
             * @example
             *
             *     wordArray1.concat(wordArray2);
             */
            concat: function(wordArray) {
              var thisWords = this.words;
              var thatWords = wordArray.words;
              var thisSigBytes = this.sigBytes;
              var thatSigBytes = wordArray.sigBytes;
              this.clamp();
              if (thisSigBytes % 4) {
                for (var i = 0; i < thatSigBytes; i++) {
                  var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                  thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8;
                }
              } else {
                for (var j = 0; j < thatSigBytes; j += 4) {
                  thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2];
                }
              }
              this.sigBytes += thatSigBytes;
              return this;
            },
            /**
             * Removes insignificant bits.
             *
             * @example
             *
             *     wordArray.clamp();
             */
            clamp: function() {
              var words = this.words;
              var sigBytes = this.sigBytes;
              words[sigBytes >>> 2] &= 4294967295 << 32 - sigBytes % 4 * 8;
              words.length = Math2.ceil(sigBytes / 4);
            },
            /**
             * Creates a copy of this word array.
             *
             * @return {WordArray} The clone.
             *
             * @example
             *
             *     var clone = wordArray.clone();
             */
            clone: function() {
              var clone = Base.clone.call(this);
              clone.words = this.words.slice(0);
              return clone;
            },
            /**
             * Creates a word array filled with random bytes.
             *
             * @param {number} nBytes The number of random bytes to generate.
             *
             * @return {WordArray} The random word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.lib.WordArray.random(16);
             */
            random: function(nBytes) {
              var words = [];
              for (var i = 0; i < nBytes; i += 4) {
                words.push(cryptoSecureRandomInt());
              }
              return new WordArray.init(words, nBytes);
            }
          });
          var C_enc = C.enc = {};
          var Hex = C_enc.Hex = {
            /**
             * Converts a word array to a hex string.
             *
             * @param {WordArray} wordArray The word array.
             *
             * @return {string} The hex string.
             *
             * @static
             *
             * @example
             *
             *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);
             */
            stringify: function(wordArray) {
              var words = wordArray.words;
              var sigBytes = wordArray.sigBytes;
              var hexChars = [];
              for (var i = 0; i < sigBytes; i++) {
                var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                hexChars.push((bite >>> 4).toString(16));
                hexChars.push((bite & 15).toString(16));
              }
              return hexChars.join("");
            },
            /**
             * Converts a hex string to a word array.
             *
             * @param {string} hexStr The hex string.
             *
             * @return {WordArray} The word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.enc.Hex.parse(hexString);
             */
            parse: function(hexStr) {
              var hexStrLength = hexStr.length;
              var words = [];
              for (var i = 0; i < hexStrLength; i += 2) {
                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4;
              }
              return new WordArray.init(words, hexStrLength / 2);
            }
          };
          var Latin1 = C_enc.Latin1 = {
            /**
             * Converts a word array to a Latin1 string.
             *
             * @param {WordArray} wordArray The word array.
             *
             * @return {string} The Latin1 string.
             *
             * @static
             *
             * @example
             *
             *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
             */
            stringify: function(wordArray) {
              var words = wordArray.words;
              var sigBytes = wordArray.sigBytes;
              var latin1Chars = [];
              for (var i = 0; i < sigBytes; i++) {
                var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                latin1Chars.push(String.fromCharCode(bite));
              }
              return latin1Chars.join("");
            },
            /**
             * Converts a Latin1 string to a word array.
             *
             * @param {string} latin1Str The Latin1 string.
             *
             * @return {WordArray} The word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
             */
            parse: function(latin1Str) {
              var latin1StrLength = latin1Str.length;
              var words = [];
              for (var i = 0; i < latin1StrLength; i++) {
                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8;
              }
              return new WordArray.init(words, latin1StrLength);
            }
          };
          var Utf8 = C_enc.Utf8 = {
            /**
             * Converts a word array to a UTF-8 string.
             *
             * @param {WordArray} wordArray The word array.
             *
             * @return {string} The UTF-8 string.
             *
             * @static
             *
             * @example
             *
             *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
             */
            stringify: function(wordArray) {
              try {
                return decodeURIComponent(escape(Latin1.stringify(wordArray)));
              } catch (e) {
                throw new Error("Malformed UTF-8 data");
              }
            },
            /**
             * Converts a UTF-8 string to a word array.
             *
             * @param {string} utf8Str The UTF-8 string.
             *
             * @return {WordArray} The word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
             */
            parse: function(utf8Str) {
              return Latin1.parse(unescape(encodeURIComponent(utf8Str)));
            }
          };
          var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({
            /**
             * Resets this block algorithm's data buffer to its initial state.
             *
             * @example
             *
             *     bufferedBlockAlgorithm.reset();
             */
            reset: function() {
              this._data = new WordArray.init();
              this._nDataBytes = 0;
            },
            /**
             * Adds new data to this block algorithm's buffer.
             *
             * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.
             *
             * @example
             *
             *     bufferedBlockAlgorithm._append('data');
             *     bufferedBlockAlgorithm._append(wordArray);
             */
            _append: function(data) {
              if (typeof data == "string") {
                data = Utf8.parse(data);
              }
              this._data.concat(data);
              this._nDataBytes += data.sigBytes;
            },
            /**
             * Processes available data blocks.
             *
             * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.
             *
             * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.
             *
             * @return {WordArray} The processed data.
             *
             * @example
             *
             *     var processedData = bufferedBlockAlgorithm._process();
             *     var processedData = bufferedBlockAlgorithm._process(!!'flush');
             */
            _process: function(doFlush) {
              var processedWords;
              var data = this._data;
              var dataWords = data.words;
              var dataSigBytes = data.sigBytes;
              var blockSize = this.blockSize;
              var blockSizeBytes = blockSize * 4;
              var nBlocksReady = dataSigBytes / blockSizeBytes;
              if (doFlush) {
                nBlocksReady = Math2.ceil(nBlocksReady);
              } else {
                nBlocksReady = Math2.max((nBlocksReady | 0) - this._minBufferSize, 0);
              }
              var nWordsReady = nBlocksReady * blockSize;
              var nBytesReady = Math2.min(nWordsReady * 4, dataSigBytes);
              if (nWordsReady) {
                for (var offset = 0; offset < nWordsReady; offset += blockSize) {
                  this._doProcessBlock(dataWords, offset);
                }
                processedWords = dataWords.splice(0, nWordsReady);
                data.sigBytes -= nBytesReady;
              }
              return new WordArray.init(processedWords, nBytesReady);
            },
            /**
             * Creates a copy of this object.
             *
             * @return {Object} The clone.
             *
             * @example
             *
             *     var clone = bufferedBlockAlgorithm.clone();
             */
            clone: function() {
              var clone = Base.clone.call(this);
              clone._data = this._data.clone();
              return clone;
            },
            _minBufferSize: 0
          });
          C_lib.Hasher = BufferedBlockAlgorithm.extend({
            /**
             * Configuration options.
             */
            cfg: Base.extend(),
            /**
             * Initializes a newly created hasher.
             *
             * @param {Object} cfg (Optional) The configuration options to use for this hash computation.
             *
             * @example
             *
             *     var hasher = CryptoJS.algo.SHA256.create();
             */
            init: function(cfg) {
              this.cfg = this.cfg.extend(cfg);
              this.reset();
            },
            /**
             * Resets this hasher to its initial state.
             *
             * @example
             *
             *     hasher.reset();
             */
            reset: function() {
              BufferedBlockAlgorithm.reset.call(this);
              this._doReset();
            },
            /**
             * Updates this hasher with a message.
             *
             * @param {WordArray|string} messageUpdate The message to append.
             *
             * @return {Hasher} This hasher.
             *
             * @example
             *
             *     hasher.update('message');
             *     hasher.update(wordArray);
             */
            update: function(messageUpdate) {
              this._append(messageUpdate);
              this._process();
              return this;
            },
            /**
             * Finalizes the hash computation.
             * Note that the finalize operation is effectively a destructive, read-once operation.
             *
             * @param {WordArray|string} messageUpdate (Optional) A final message update.
             *
             * @return {WordArray} The hash.
             *
             * @example
             *
             *     var hash = hasher.finalize();
             *     var hash = hasher.finalize('message');
             *     var hash = hasher.finalize(wordArray);
             */
            finalize: function(messageUpdate) {
              if (messageUpdate) {
                this._append(messageUpdate);
              }
              var hash = this._doFinalize();
              return hash;
            },
            blockSize: 512 / 32,
            /**
             * Creates a shortcut function to a hasher's object interface.
             *
             * @param {Hasher} hasher The hasher to create a helper for.
             *
             * @return {Function} The shortcut function.
             *
             * @static
             *
             * @example
             *
             *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);
             */
            _createHelper: function(hasher) {
              return function(message, cfg) {
                return new hasher.init(cfg).finalize(message);
              };
            },
            /**
             * Creates a shortcut function to the HMAC's object interface.
             *
             * @param {Hasher} hasher The hasher to use in this HMAC helper.
             *
             * @return {Function} The shortcut function.
             *
             * @static
             *
             * @example
             *
             *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);
             */
            _createHmacHelper: function(hasher) {
              return function(message, key) {
                return new C_algo.HMAC.init(hasher, key).finalize(message);
              };
            }
          });
          var C_algo = C.algo = {};
          return C;
        }(Math);
        return CryptoJS2;
      });
    })(core);
    return core.exports;
  }
  var x64Core = { exports: {} };
  var hasRequiredX64Core;
  function requireX64Core() {
    if (hasRequiredX64Core) return x64Core.exports;
    hasRequiredX64Core = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function(undefined$1) {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var Base = C_lib.Base;
          var X32WordArray = C_lib.WordArray;
          var C_x64 = C.x64 = {};
          C_x64.Word = Base.extend({
            /**
             * Initializes a newly created 64-bit word.
             *
             * @param {number} high The high 32 bits.
             * @param {number} low The low 32 bits.
             *
             * @example
             *
             *     var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);
             */
            init: function(high, low) {
              this.high = high;
              this.low = low;
            }
            /**
             * Bitwise NOTs this word.
             *
             * @return {X64Word} A new x64-Word object after negating.
             *
             * @example
             *
             *     var negated = x64Word.not();
             */
            // not: function () {
            // var high = ~this.high;
            // var low = ~this.low;
            // return X64Word.create(high, low);
            // },
            /**
             * Bitwise ANDs this word with the passed word.
             *
             * @param {X64Word} word The x64-Word to AND with this word.
             *
             * @return {X64Word} A new x64-Word object after ANDing.
             *
             * @example
             *
             *     var anded = x64Word.and(anotherX64Word);
             */
            // and: function (word) {
            // var high = this.high & word.high;
            // var low = this.low & word.low;
            // return X64Word.create(high, low);
            // },
            /**
             * Bitwise ORs this word with the passed word.
             *
             * @param {X64Word} word The x64-Word to OR with this word.
             *
             * @return {X64Word} A new x64-Word object after ORing.
             *
             * @example
             *
             *     var ored = x64Word.or(anotherX64Word);
             */
            // or: function (word) {
            // var high = this.high | word.high;
            // var low = this.low | word.low;
            // return X64Word.create(high, low);
            // },
            /**
             * Bitwise XORs this word with the passed word.
             *
             * @param {X64Word} word The x64-Word to XOR with this word.
             *
             * @return {X64Word} A new x64-Word object after XORing.
             *
             * @example
             *
             *     var xored = x64Word.xor(anotherX64Word);
             */
            // xor: function (word) {
            // var high = this.high ^ word.high;
            // var low = this.low ^ word.low;
            // return X64Word.create(high, low);
            // },
            /**
             * Shifts this word n bits to the left.
             *
             * @param {number} n The number of bits to shift.
             *
             * @return {X64Word} A new x64-Word object after shifting.
             *
             * @example
             *
             *     var shifted = x64Word.shiftL(25);
             */
            // shiftL: function (n) {
            // if (n < 32) {
            // var high = (this.high << n) | (this.low >>> (32 - n));
            // var low = this.low << n;
            // } else {
            // var high = this.low << (n - 32);
            // var low = 0;
            // }
            // return X64Word.create(high, low);
            // },
            /**
             * Shifts this word n bits to the right.
             *
             * @param {number} n The number of bits to shift.
             *
             * @return {X64Word} A new x64-Word object after shifting.
             *
             * @example
             *
             *     var shifted = x64Word.shiftR(7);
             */
            // shiftR: function (n) {
            // if (n < 32) {
            // var low = (this.low >>> n) | (this.high << (32 - n));
            // var high = this.high >>> n;
            // } else {
            // var low = this.high >>> (n - 32);
            // var high = 0;
            // }
            // return X64Word.create(high, low);
            // },
            /**
             * Rotates this word n bits to the left.
             *
             * @param {number} n The number of bits to rotate.
             *
             * @return {X64Word} A new x64-Word object after rotating.
             *
             * @example
             *
             *     var rotated = x64Word.rotL(25);
             */
            // rotL: function (n) {
            // return this.shiftL(n).or(this.shiftR(64 - n));
            // },
            /**
             * Rotates this word n bits to the right.
             *
             * @param {number} n The number of bits to rotate.
             *
             * @return {X64Word} A new x64-Word object after rotating.
             *
             * @example
             *
             *     var rotated = x64Word.rotR(7);
             */
            // rotR: function (n) {
            // return this.shiftR(n).or(this.shiftL(64 - n));
            // },
            /**
             * Adds this word with the passed word.
             *
             * @param {X64Word} word The x64-Word to add with this word.
             *
             * @return {X64Word} A new x64-Word object after adding.
             *
             * @example
             *
             *     var added = x64Word.add(anotherX64Word);
             */
            // add: function (word) {
            // var low = (this.low + word.low) | 0;
            // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;
            // var high = (this.high + word.high + carry) | 0;
            // return X64Word.create(high, low);
            // }
          });
          C_x64.WordArray = Base.extend({
            /**
             * Initializes a newly created word array.
             *
             * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.
             * @param {number} sigBytes (Optional) The number of significant bytes in the words.
             *
             * @example
             *
             *     var wordArray = CryptoJS.x64.WordArray.create();
             *
             *     var wordArray = CryptoJS.x64.WordArray.create([
             *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),
             *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
             *     ]);
             *
             *     var wordArray = CryptoJS.x64.WordArray.create([
             *         CryptoJS.x64.Word.create(0x00010203, 0x04050607),
             *         CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)
             *     ], 10);
             */
            init: function(words, sigBytes) {
              words = this.words = words || [];
              if (sigBytes != undefined$1) {
                this.sigBytes = sigBytes;
              } else {
                this.sigBytes = words.length * 8;
              }
            },
            /**
             * Converts this 64-bit word array to a 32-bit word array.
             *
             * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.
             *
             * @example
             *
             *     var x32WordArray = x64WordArray.toX32();
             */
            toX32: function() {
              var x64Words = this.words;
              var x64WordsLength = x64Words.length;
              var x32Words = [];
              for (var i = 0; i < x64WordsLength; i++) {
                var x64Word = x64Words[i];
                x32Words.push(x64Word.high);
                x32Words.push(x64Word.low);
              }
              return X32WordArray.create(x32Words, this.sigBytes);
            },
            /**
             * Creates a copy of this word array.
             *
             * @return {X64WordArray} The clone.
             *
             * @example
             *
             *     var clone = x64WordArray.clone();
             */
            clone: function() {
              var clone = Base.clone.call(this);
              var words = clone.words = this.words.slice(0);
              var wordsLength = words.length;
              for (var i = 0; i < wordsLength; i++) {
                words[i] = words[i].clone();
              }
              return clone;
            }
          });
        })();
        return CryptoJS2;
      });
    })(x64Core);
    return x64Core.exports;
  }
  var libTypedarrays = { exports: {} };
  var hasRequiredLibTypedarrays;
  function requireLibTypedarrays() {
    if (hasRequiredLibTypedarrays) return libTypedarrays.exports;
    hasRequiredLibTypedarrays = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          if (typeof ArrayBuffer != "function") {
            return;
          }
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var superInit = WordArray.init;
          var subInit = WordArray.init = function(typedArray) {
            if (typedArray instanceof ArrayBuffer) {
              typedArray = new Uint8Array(typedArray);
            }
            if (typedArray instanceof Int8Array || typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray || typedArray instanceof Int16Array || typedArray instanceof Uint16Array || typedArray instanceof Int32Array || typedArray instanceof Uint32Array || typedArray instanceof Float32Array || typedArray instanceof Float64Array) {
              typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);
            }
            if (typedArray instanceof Uint8Array) {
              var typedArrayByteLength = typedArray.byteLength;
              var words = [];
              for (var i = 0; i < typedArrayByteLength; i++) {
                words[i >>> 2] |= typedArray[i] << 24 - i % 4 * 8;
              }
              superInit.call(this, words, typedArrayByteLength);
            } else {
              superInit.apply(this, arguments);
            }
          };
          subInit.prototype = WordArray;
        })();
        return CryptoJS2.lib.WordArray;
      });
    })(libTypedarrays);
    return libTypedarrays.exports;
  }
  var encUtf16 = { exports: {} };
  var hasRequiredEncUtf16;
  function requireEncUtf16() {
    if (hasRequiredEncUtf16) return encUtf16.exports;
    hasRequiredEncUtf16 = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var C_enc = C.enc;
          C_enc.Utf16 = C_enc.Utf16BE = {
            /**
             * Converts a word array to a UTF-16 BE string.
             *
             * @param {WordArray} wordArray The word array.
             *
             * @return {string} The UTF-16 BE string.
             *
             * @static
             *
             * @example
             *
             *     var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);
             */
            stringify: function(wordArray) {
              var words = wordArray.words;
              var sigBytes = wordArray.sigBytes;
              var utf16Chars = [];
              for (var i = 0; i < sigBytes; i += 2) {
                var codePoint = words[i >>> 2] >>> 16 - i % 4 * 8 & 65535;
                utf16Chars.push(String.fromCharCode(codePoint));
              }
              return utf16Chars.join("");
            },
            /**
             * Converts a UTF-16 BE string to a word array.
             *
             * @param {string} utf16Str The UTF-16 BE string.
             *
             * @return {WordArray} The word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.enc.Utf16.parse(utf16String);
             */
            parse: function(utf16Str) {
              var utf16StrLength = utf16Str.length;
              var words = [];
              for (var i = 0; i < utf16StrLength; i++) {
                words[i >>> 1] |= utf16Str.charCodeAt(i) << 16 - i % 2 * 16;
              }
              return WordArray.create(words, utf16StrLength * 2);
            }
          };
          C_enc.Utf16LE = {
            /**
             * Converts a word array to a UTF-16 LE string.
             *
             * @param {WordArray} wordArray The word array.
             *
             * @return {string} The UTF-16 LE string.
             *
             * @static
             *
             * @example
             *
             *     var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);
             */
            stringify: function(wordArray) {
              var words = wordArray.words;
              var sigBytes = wordArray.sigBytes;
              var utf16Chars = [];
              for (var i = 0; i < sigBytes; i += 2) {
                var codePoint = swapEndian(words[i >>> 2] >>> 16 - i % 4 * 8 & 65535);
                utf16Chars.push(String.fromCharCode(codePoint));
              }
              return utf16Chars.join("");
            },
            /**
             * Converts a UTF-16 LE string to a word array.
             *
             * @param {string} utf16Str The UTF-16 LE string.
             *
             * @return {WordArray} The word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);
             */
            parse: function(utf16Str) {
              var utf16StrLength = utf16Str.length;
              var words = [];
              for (var i = 0; i < utf16StrLength; i++) {
                words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << 16 - i % 2 * 16);
              }
              return WordArray.create(words, utf16StrLength * 2);
            }
          };
          function swapEndian(word) {
            return word << 8 & 4278255360 | word >>> 8 & 16711935;
          }
        })();
        return CryptoJS2.enc.Utf16;
      });
    })(encUtf16);
    return encUtf16.exports;
  }
  var encBase64 = { exports: {} };
  var hasRequiredEncBase64;
  function requireEncBase64() {
    if (hasRequiredEncBase64) return encBase64.exports;
    hasRequiredEncBase64 = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var C_enc = C.enc;
          C_enc.Base64 = {
            /**
             * Converts a word array to a Base64 string.
             *
             * @param {WordArray} wordArray The word array.
             *
             * @return {string} The Base64 string.
             *
             * @static
             *
             * @example
             *
             *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);
             */
            stringify: function(wordArray) {
              var words = wordArray.words;
              var sigBytes = wordArray.sigBytes;
              var map = this._map;
              wordArray.clamp();
              var base64Chars = [];
              for (var i = 0; i < sigBytes; i += 3) {
                var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
                var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
                var triplet = byte1 << 16 | byte2 << 8 | byte3;
                for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
                  base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
                }
              }
              var paddingChar = map.charAt(64);
              if (paddingChar) {
                while (base64Chars.length % 4) {
                  base64Chars.push(paddingChar);
                }
              }
              return base64Chars.join("");
            },
            /**
             * Converts a Base64 string to a word array.
             *
             * @param {string} base64Str The Base64 string.
             *
             * @return {WordArray} The word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.enc.Base64.parse(base64String);
             */
            parse: function(base64Str) {
              var base64StrLength = base64Str.length;
              var map = this._map;
              var reverseMap = this._reverseMap;
              if (!reverseMap) {
                reverseMap = this._reverseMap = [];
                for (var j = 0; j < map.length; j++) {
                  reverseMap[map.charCodeAt(j)] = j;
                }
              }
              var paddingChar = map.charAt(64);
              if (paddingChar) {
                var paddingIndex = base64Str.indexOf(paddingChar);
                if (paddingIndex !== -1) {
                  base64StrLength = paddingIndex;
                }
              }
              return parseLoop(base64Str, base64StrLength, reverseMap);
            },
            _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
          };
          function parseLoop(base64Str, base64StrLength, reverseMap) {
            var words = [];
            var nBytes = 0;
            for (var i = 0; i < base64StrLength; i++) {
              if (i % 4) {
                var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
                var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
                var bitsCombined = bits1 | bits2;
                words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
                nBytes++;
              }
            }
            return WordArray.create(words, nBytes);
          }
        })();
        return CryptoJS2.enc.Base64;
      });
    })(encBase64);
    return encBase64.exports;
  }
  var encBase64url = { exports: {} };
  var hasRequiredEncBase64url;
  function requireEncBase64url() {
    if (hasRequiredEncBase64url) return encBase64url.exports;
    hasRequiredEncBase64url = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var C_enc = C.enc;
          C_enc.Base64url = {
            /**
             * Converts a word array to a Base64url string.
             *
             * @param {WordArray} wordArray The word array.
             *
             * @param {boolean} urlSafe Whether to use url safe
             *
             * @return {string} The Base64url string.
             *
             * @static
             *
             * @example
             *
             *     var base64String = CryptoJS.enc.Base64url.stringify(wordArray);
             */
            stringify: function(wordArray, urlSafe) {
              if (urlSafe === void 0) {
                urlSafe = true;
              }
              var words = wordArray.words;
              var sigBytes = wordArray.sigBytes;
              var map = urlSafe ? this._safe_map : this._map;
              wordArray.clamp();
              var base64Chars = [];
              for (var i = 0; i < sigBytes; i += 3) {
                var byte1 = words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
                var byte2 = words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
                var byte3 = words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
                var triplet = byte1 << 16 | byte2 << 8 | byte3;
                for (var j = 0; j < 4 && i + j * 0.75 < sigBytes; j++) {
                  base64Chars.push(map.charAt(triplet >>> 6 * (3 - j) & 63));
                }
              }
              var paddingChar = map.charAt(64);
              if (paddingChar) {
                while (base64Chars.length % 4) {
                  base64Chars.push(paddingChar);
                }
              }
              return base64Chars.join("");
            },
            /**
             * Converts a Base64url string to a word array.
             *
             * @param {string} base64Str The Base64url string.
             *
             * @param {boolean} urlSafe Whether to use url safe
             *
             * @return {WordArray} The word array.
             *
             * @static
             *
             * @example
             *
             *     var wordArray = CryptoJS.enc.Base64url.parse(base64String);
             */
            parse: function(base64Str, urlSafe) {
              if (urlSafe === void 0) {
                urlSafe = true;
              }
              var base64StrLength = base64Str.length;
              var map = urlSafe ? this._safe_map : this._map;
              var reverseMap = this._reverseMap;
              if (!reverseMap) {
                reverseMap = this._reverseMap = [];
                for (var j = 0; j < map.length; j++) {
                  reverseMap[map.charCodeAt(j)] = j;
                }
              }
              var paddingChar = map.charAt(64);
              if (paddingChar) {
                var paddingIndex = base64Str.indexOf(paddingChar);
                if (paddingIndex !== -1) {
                  base64StrLength = paddingIndex;
                }
              }
              return parseLoop(base64Str, base64StrLength, reverseMap);
            },
            _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
            _safe_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
          };
          function parseLoop(base64Str, base64StrLength, reverseMap) {
            var words = [];
            var nBytes = 0;
            for (var i = 0; i < base64StrLength; i++) {
              if (i % 4) {
                var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << i % 4 * 2;
                var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> 6 - i % 4 * 2;
                var bitsCombined = bits1 | bits2;
                words[nBytes >>> 2] |= bitsCombined << 24 - nBytes % 4 * 8;
                nBytes++;
              }
            }
            return WordArray.create(words, nBytes);
          }
        })();
        return CryptoJS2.enc.Base64url;
      });
    })(encBase64url);
    return encBase64url.exports;
  }
  var md5 = { exports: {} };
  var hasRequiredMd5;
  function requireMd5() {
    if (hasRequiredMd5) return md5.exports;
    hasRequiredMd5 = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function(Math2) {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var Hasher = C_lib.Hasher;
          var C_algo = C.algo;
          var T = [];
          (function() {
            for (var i = 0; i < 64; i++) {
              T[i] = Math2.abs(Math2.sin(i + 1)) * 4294967296 | 0;
            }
          })();
          var MD5 = C_algo.MD5 = Hasher.extend({
            _doReset: function() {
              this._hash = new WordArray.init([
                1732584193,
                4023233417,
                2562383102,
                271733878
              ]);
            },
            _doProcessBlock: function(M, offset) {
              for (var i = 0; i < 16; i++) {
                var offset_i = offset + i;
                var M_offset_i = M[offset_i];
                M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 16711935 | (M_offset_i << 24 | M_offset_i >>> 8) & 4278255360;
              }
              var H = this._hash.words;
              var M_offset_0 = M[offset + 0];
              var M_offset_1 = M[offset + 1];
              var M_offset_2 = M[offset + 2];
              var M_offset_3 = M[offset + 3];
              var M_offset_4 = M[offset + 4];
              var M_offset_5 = M[offset + 5];
              var M_offset_6 = M[offset + 6];
              var M_offset_7 = M[offset + 7];
              var M_offset_8 = M[offset + 8];
              var M_offset_9 = M[offset + 9];
              var M_offset_10 = M[offset + 10];
              var M_offset_11 = M[offset + 11];
              var M_offset_12 = M[offset + 12];
              var M_offset_13 = M[offset + 13];
              var M_offset_14 = M[offset + 14];
              var M_offset_15 = M[offset + 15];
              var a = H[0];
              var b = H[1];
              var c = H[2];
              var d = H[3];
              a = FF(a, b, c, d, M_offset_0, 7, T[0]);
              d = FF(d, a, b, c, M_offset_1, 12, T[1]);
              c = FF(c, d, a, b, M_offset_2, 17, T[2]);
              b = FF(b, c, d, a, M_offset_3, 22, T[3]);
              a = FF(a, b, c, d, M_offset_4, 7, T[4]);
              d = FF(d, a, b, c, M_offset_5, 12, T[5]);
              c = FF(c, d, a, b, M_offset_6, 17, T[6]);
              b = FF(b, c, d, a, M_offset_7, 22, T[7]);
              a = FF(a, b, c, d, M_offset_8, 7, T[8]);
              d = FF(d, a, b, c, M_offset_9, 12, T[9]);
              c = FF(c, d, a, b, M_offset_10, 17, T[10]);
              b = FF(b, c, d, a, M_offset_11, 22, T[11]);
              a = FF(a, b, c, d, M_offset_12, 7, T[12]);
              d = FF(d, a, b, c, M_offset_13, 12, T[13]);
              c = FF(c, d, a, b, M_offset_14, 17, T[14]);
              b = FF(b, c, d, a, M_offset_15, 22, T[15]);
              a = GG(a, b, c, d, M_offset_1, 5, T[16]);
              d = GG(d, a, b, c, M_offset_6, 9, T[17]);
              c = GG(c, d, a, b, M_offset_11, 14, T[18]);
              b = GG(b, c, d, a, M_offset_0, 20, T[19]);
              a = GG(a, b, c, d, M_offset_5, 5, T[20]);
              d = GG(d, a, b, c, M_offset_10, 9, T[21]);
              c = GG(c, d, a, b, M_offset_15, 14, T[22]);
              b = GG(b, c, d, a, M_offset_4, 20, T[23]);
              a = GG(a, b, c, d, M_offset_9, 5, T[24]);
              d = GG(d, a, b, c, M_offset_14, 9, T[25]);
              c = GG(c, d, a, b, M_offset_3, 14, T[26]);
              b = GG(b, c, d, a, M_offset_8, 20, T[27]);
              a = GG(a, b, c, d, M_offset_13, 5, T[28]);
              d = GG(d, a, b, c, M_offset_2, 9, T[29]);
              c = GG(c, d, a, b, M_offset_7, 14, T[30]);
              b = GG(b, c, d, a, M_offset_12, 20, T[31]);
              a = HH(a, b, c, d, M_offset_5, 4, T[32]);
              d = HH(d, a, b, c, M_offset_8, 11, T[33]);
              c = HH(c, d, a, b, M_offset_11, 16, T[34]);
              b = HH(b, c, d, a, M_offset_14, 23, T[35]);
              a = HH(a, b, c, d, M_offset_1, 4, T[36]);
              d = HH(d, a, b, c, M_offset_4, 11, T[37]);
              c = HH(c, d, a, b, M_offset_7, 16, T[38]);
              b = HH(b, c, d, a, M_offset_10, 23, T[39]);
              a = HH(a, b, c, d, M_offset_13, 4, T[40]);
              d = HH(d, a, b, c, M_offset_0, 11, T[41]);
              c = HH(c, d, a, b, M_offset_3, 16, T[42]);
              b = HH(b, c, d, a, M_offset_6, 23, T[43]);
              a = HH(a, b, c, d, M_offset_9, 4, T[44]);
              d = HH(d, a, b, c, M_offset_12, 11, T[45]);
              c = HH(c, d, a, b, M_offset_15, 16, T[46]);
              b = HH(b, c, d, a, M_offset_2, 23, T[47]);
              a = II(a, b, c, d, M_offset_0, 6, T[48]);
              d = II(d, a, b, c, M_offset_7, 10, T[49]);
              c = II(c, d, a, b, M_offset_14, 15, T[50]);
              b = II(b, c, d, a, M_offset_5, 21, T[51]);
              a = II(a, b, c, d, M_offset_12, 6, T[52]);
              d = II(d, a, b, c, M_offset_3, 10, T[53]);
              c = II(c, d, a, b, M_offset_10, 15, T[54]);
              b = II(b, c, d, a, M_offset_1, 21, T[55]);
              a = II(a, b, c, d, M_offset_8, 6, T[56]);
              d = II(d, a, b, c, M_offset_15, 10, T[57]);
              c = II(c, d, a, b, M_offset_6, 15, T[58]);
              b = II(b, c, d, a, M_offset_13, 21, T[59]);
              a = II(a, b, c, d, M_offset_4, 6, T[60]);
              d = II(d, a, b, c, M_offset_11, 10, T[61]);
              c = II(c, d, a, b, M_offset_2, 15, T[62]);
              b = II(b, c, d, a, M_offset_9, 21, T[63]);
              H[0] = H[0] + a | 0;
              H[1] = H[1] + b | 0;
              H[2] = H[2] + c | 0;
              H[3] = H[3] + d | 0;
            },
            _doFinalize: function() {
              var data = this._data;
              var dataWords = data.words;
              var nBitsTotal = this._nDataBytes * 8;
              var nBitsLeft = data.sigBytes * 8;
              dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
              var nBitsTotalH = Math2.floor(nBitsTotal / 4294967296);
              var nBitsTotalL = nBitsTotal;
              dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = (nBitsTotalH << 8 | nBitsTotalH >>> 24) & 16711935 | (nBitsTotalH << 24 | nBitsTotalH >>> 8) & 4278255360;
              dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotalL << 8 | nBitsTotalL >>> 24) & 16711935 | (nBitsTotalL << 24 | nBitsTotalL >>> 8) & 4278255360;
              data.sigBytes = (dataWords.length + 1) * 4;
              this._process();
              var hash = this._hash;
              var H = hash.words;
              for (var i = 0; i < 4; i++) {
                var H_i = H[i];
                H[i] = (H_i << 8 | H_i >>> 24) & 16711935 | (H_i << 24 | H_i >>> 8) & 4278255360;
              }
              return hash;
            },
            clone: function() {
              var clone = Hasher.clone.call(this);
              clone._hash = this._hash.clone();
              return clone;
            }
          });
          function FF(a, b, c, d, x, s, t) {
            var n = a + (b & c | ~b & d) + x + t;
            return (n << s | n >>> 32 - s) + b;
          }
          function GG(a, b, c, d, x, s, t) {
            var n = a + (b & d | c & ~d) + x + t;
            return (n << s | n >>> 32 - s) + b;
          }
          function HH(a, b, c, d, x, s, t) {
            var n = a + (b ^ c ^ d) + x + t;
            return (n << s | n >>> 32 - s) + b;
          }
          function II(a, b, c, d, x, s, t) {
            var n = a + (c ^ (b | ~d)) + x + t;
            return (n << s | n >>> 32 - s) + b;
          }
          C.MD5 = Hasher._createHelper(MD5);
          C.HmacMD5 = Hasher._createHmacHelper(MD5);
        })(Math);
        return CryptoJS2.MD5;
      });
    })(md5);
    return md5.exports;
  }
  var sha1 = { exports: {} };
  var hasRequiredSha1;
  function requireSha1() {
    if (hasRequiredSha1) return sha1.exports;
    hasRequiredSha1 = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var Hasher = C_lib.Hasher;
          var C_algo = C.algo;
          var W = [];
          var SHA1 = C_algo.SHA1 = Hasher.extend({
            _doReset: function() {
              this._hash = new WordArray.init([
                1732584193,
                4023233417,
                2562383102,
                271733878,
                3285377520
              ]);
            },
            _doProcessBlock: function(M, offset) {
              var H = this._hash.words;
              var a = H[0];
              var b = H[1];
              var c = H[2];
              var d = H[3];
              var e = H[4];
              for (var i = 0; i < 80; i++) {
                if (i < 16) {
                  W[i] = M[offset + i] | 0;
                } else {
                  var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];
                  W[i] = n << 1 | n >>> 31;
                }
                var t = (a << 5 | a >>> 27) + e + W[i];
                if (i < 20) {
                  t += (b & c | ~b & d) + 1518500249;
                } else if (i < 40) {
                  t += (b ^ c ^ d) + 1859775393;
                } else if (i < 60) {
                  t += (b & c | b & d | c & d) - 1894007588;
                } else {
                  t += (b ^ c ^ d) - 899497514;
                }
                e = d;
                d = c;
                c = b << 30 | b >>> 2;
                b = a;
                a = t;
              }
              H[0] = H[0] + a | 0;
              H[1] = H[1] + b | 0;
              H[2] = H[2] + c | 0;
              H[3] = H[3] + d | 0;
              H[4] = H[4] + e | 0;
            },
            _doFinalize: function() {
              var data = this._data;
              var dataWords = data.words;
              var nBitsTotal = this._nDataBytes * 8;
              var nBitsLeft = data.sigBytes * 8;
              dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
              dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor(nBitsTotal / 4294967296);
              dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
              data.sigBytes = dataWords.length * 4;
              this._process();
              return this._hash;
            },
            clone: function() {
              var clone = Hasher.clone.call(this);
              clone._hash = this._hash.clone();
              return clone;
            }
          });
          C.SHA1 = Hasher._createHelper(SHA1);
          C.HmacSHA1 = Hasher._createHmacHelper(SHA1);
        })();
        return CryptoJS2.SHA1;
      });
    })(sha1);
    return sha1.exports;
  }
  var sha256 = { exports: {} };
  var hasRequiredSha256;
  function requireSha256() {
    if (hasRequiredSha256) return sha256.exports;
    hasRequiredSha256 = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function(Math2) {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var Hasher = C_lib.Hasher;
          var C_algo = C.algo;
          var H = [];
          var K = [];
          (function() {
            function isPrime(n2) {
              var sqrtN = Math2.sqrt(n2);
              for (var factor = 2; factor <= sqrtN; factor++) {
                if (!(n2 % factor)) {
                  return false;
                }
              }
              return true;
            }
            function getFractionalBits(n2) {
              return (n2 - (n2 | 0)) * 4294967296 | 0;
            }
            var n = 2;
            var nPrime = 0;
            while (nPrime < 64) {
              if (isPrime(n)) {
                if (nPrime < 8) {
                  H[nPrime] = getFractionalBits(Math2.pow(n, 1 / 2));
                }
                K[nPrime] = getFractionalBits(Math2.pow(n, 1 / 3));
                nPrime++;
              }
              n++;
            }
          })();
          var W = [];
          var SHA256 = C_algo.SHA256 = Hasher.extend({
            _doReset: function() {
              this._hash = new WordArray.init(H.slice(0));
            },
            _doProcessBlock: function(M, offset) {
              var H2 = this._hash.words;
              var a = H2[0];
              var b = H2[1];
              var c = H2[2];
              var d = H2[3];
              var e = H2[4];
              var f = H2[5];
              var g = H2[6];
              var h = H2[7];
              for (var i = 0; i < 64; i++) {
                if (i < 16) {
                  W[i] = M[offset + i] | 0;
                } else {
                  var gamma0x = W[i - 15];
                  var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;
                  var gamma1x = W[i - 2];
                  var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;
                  W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
                }
                var ch = e & f ^ ~e & g;
                var maj = a & b ^ a & c ^ b & c;
                var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);
                var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);
                var t1 = h + sigma1 + ch + K[i] + W[i];
                var t2 = sigma0 + maj;
                h = g;
                g = f;
                f = e;
                e = d + t1 | 0;
                d = c;
                c = b;
                b = a;
                a = t1 + t2 | 0;
              }
              H2[0] = H2[0] + a | 0;
              H2[1] = H2[1] + b | 0;
              H2[2] = H2[2] + c | 0;
              H2[3] = H2[3] + d | 0;
              H2[4] = H2[4] + e | 0;
              H2[5] = H2[5] + f | 0;
              H2[6] = H2[6] + g | 0;
              H2[7] = H2[7] + h | 0;
            },
            _doFinalize: function() {
              var data = this._data;
              var dataWords = data.words;
              var nBitsTotal = this._nDataBytes * 8;
              var nBitsLeft = data.sigBytes * 8;
              dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
              dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math2.floor(nBitsTotal / 4294967296);
              dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal;
              data.sigBytes = dataWords.length * 4;
              this._process();
              return this._hash;
            },
            clone: function() {
              var clone = Hasher.clone.call(this);
              clone._hash = this._hash.clone();
              return clone;
            }
          });
          C.SHA256 = Hasher._createHelper(SHA256);
          C.HmacSHA256 = Hasher._createHmacHelper(SHA256);
        })(Math);
        return CryptoJS2.SHA256;
      });
    })(sha256);
    return sha256.exports;
  }
  var sha224 = { exports: {} };
  var hasRequiredSha224;
  function requireSha224() {
    if (hasRequiredSha224) return sha224.exports;
    hasRequiredSha224 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireSha256());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var C_algo = C.algo;
          var SHA256 = C_algo.SHA256;
          var SHA224 = C_algo.SHA224 = SHA256.extend({
            _doReset: function() {
              this._hash = new WordArray.init([
                3238371032,
                914150663,
                812702999,
                4144912697,
                4290775857,
                1750603025,
                1694076839,
                3204075428
              ]);
            },
            _doFinalize: function() {
              var hash = SHA256._doFinalize.call(this);
              hash.sigBytes -= 4;
              return hash;
            }
          });
          C.SHA224 = SHA256._createHelper(SHA224);
          C.HmacSHA224 = SHA256._createHmacHelper(SHA224);
        })();
        return CryptoJS2.SHA224;
      });
    })(sha224);
    return sha224.exports;
  }
  var sha512 = { exports: {} };
  var hasRequiredSha512;
  function requireSha512() {
    if (hasRequiredSha512) return sha512.exports;
    hasRequiredSha512 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireX64Core());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var Hasher = C_lib.Hasher;
          var C_x64 = C.x64;
          var X64Word = C_x64.Word;
          var X64WordArray = C_x64.WordArray;
          var C_algo = C.algo;
          function X64Word_create() {
            return X64Word.create.apply(X64Word, arguments);
          }
          var K = [
            X64Word_create(1116352408, 3609767458),
            X64Word_create(1899447441, 602891725),
            X64Word_create(3049323471, 3964484399),
            X64Word_create(3921009573, 2173295548),
            X64Word_create(961987163, 4081628472),
            X64Word_create(1508970993, 3053834265),
            X64Word_create(2453635748, 2937671579),
            X64Word_create(2870763221, 3664609560),
            X64Word_create(3624381080, 2734883394),
            X64Word_create(310598401, 1164996542),
            X64Word_create(607225278, 1323610764),
            X64Word_create(1426881987, 3590304994),
            X64Word_create(1925078388, 4068182383),
            X64Word_create(2162078206, 991336113),
            X64Word_create(2614888103, 633803317),
            X64Word_create(3248222580, 3479774868),
            X64Word_create(3835390401, 2666613458),
            X64Word_create(4022224774, 944711139),
            X64Word_create(264347078, 2341262773),
            X64Word_create(604807628, 2007800933),
            X64Word_create(770255983, 1495990901),
            X64Word_create(1249150122, 1856431235),
            X64Word_create(1555081692, 3175218132),
            X64Word_create(1996064986, 2198950837),
            X64Word_create(2554220882, 3999719339),
            X64Word_create(2821834349, 766784016),
            X64Word_create(2952996808, 2566594879),
            X64Word_create(3210313671, 3203337956),
            X64Word_create(3336571891, 1034457026),
            X64Word_create(3584528711, 2466948901),
            X64Word_create(113926993, 3758326383),
            X64Word_create(338241895, 168717936),
            X64Word_create(666307205, 1188179964),
            X64Word_create(773529912, 1546045734),
            X64Word_create(1294757372, 1522805485),
            X64Word_create(1396182291, 2643833823),
            X64Word_create(1695183700, 2343527390),
            X64Word_create(1986661051, 1014477480),
            X64Word_create(2177026350, 1206759142),
            X64Word_create(2456956037, 344077627),
            X64Word_create(2730485921, 1290863460),
            X64Word_create(2820302411, 3158454273),
            X64Word_create(3259730800, 3505952657),
            X64Word_create(3345764771, 106217008),
            X64Word_create(3516065817, 3606008344),
            X64Word_create(3600352804, 1432725776),
            X64Word_create(4094571909, 1467031594),
            X64Word_create(275423344, 851169720),
            X64Word_create(430227734, 3100823752),
            X64Word_create(506948616, 1363258195),
            X64Word_create(659060556, 3750685593),
            X64Word_create(883997877, 3785050280),
            X64Word_create(958139571, 3318307427),
            X64Word_create(1322822218, 3812723403),
            X64Word_create(1537002063, 2003034995),
            X64Word_create(1747873779, 3602036899),
            X64Word_create(1955562222, 1575990012),
            X64Word_create(2024104815, 1125592928),
            X64Word_create(2227730452, 2716904306),
            X64Word_create(2361852424, 442776044),
            X64Word_create(2428436474, 593698344),
            X64Word_create(2756734187, 3733110249),
            X64Word_create(3204031479, 2999351573),
            X64Word_create(3329325298, 3815920427),
            X64Word_create(3391569614, 3928383900),
            X64Word_create(3515267271, 566280711),
            X64Word_create(3940187606, 3454069534),
            X64Word_create(4118630271, 4000239992),
            X64Word_create(116418474, 1914138554),
            X64Word_create(174292421, 2731055270),
            X64Word_create(289380356, 3203993006),
            X64Word_create(460393269, 320620315),
            X64Word_create(685471733, 587496836),
            X64Word_create(852142971, 1086792851),
            X64Word_create(1017036298, 365543100),
            X64Word_create(1126000580, 2618297676),
            X64Word_create(1288033470, 3409855158),
            X64Word_create(1501505948, 4234509866),
            X64Word_create(1607167915, 987167468),
            X64Word_create(1816402316, 1246189591)
          ];
          var W = [];
          (function() {
            for (var i = 0; i < 80; i++) {
              W[i] = X64Word_create();
            }
          })();
          var SHA512 = C_algo.SHA512 = Hasher.extend({
            _doReset: function() {
              this._hash = new X64WordArray.init([
                new X64Word.init(1779033703, 4089235720),
                new X64Word.init(3144134277, 2227873595),
                new X64Word.init(1013904242, 4271175723),
                new X64Word.init(2773480762, 1595750129),
                new X64Word.init(1359893119, 2917565137),
                new X64Word.init(2600822924, 725511199),
                new X64Word.init(528734635, 4215389547),
                new X64Word.init(1541459225, 327033209)
              ]);
            },
            _doProcessBlock: function(M, offset) {
              var H = this._hash.words;
              var H0 = H[0];
              var H1 = H[1];
              var H2 = H[2];
              var H3 = H[3];
              var H4 = H[4];
              var H5 = H[5];
              var H6 = H[6];
              var H7 = H[7];
              var H0h = H0.high;
              var H0l = H0.low;
              var H1h = H1.high;
              var H1l = H1.low;
              var H2h = H2.high;
              var H2l = H2.low;
              var H3h = H3.high;
              var H3l = H3.low;
              var H4h = H4.high;
              var H4l = H4.low;
              var H5h = H5.high;
              var H5l = H5.low;
              var H6h = H6.high;
              var H6l = H6.low;
              var H7h = H7.high;
              var H7l = H7.low;
              var ah = H0h;
              var al = H0l;
              var bh = H1h;
              var bl = H1l;
              var ch = H2h;
              var cl = H2l;
              var dh = H3h;
              var dl = H3l;
              var eh = H4h;
              var el = H4l;
              var fh = H5h;
              var fl = H5l;
              var gh = H6h;
              var gl = H6l;
              var hh = H7h;
              var hl = H7l;
              for (var i = 0; i < 80; i++) {
                var Wil;
                var Wih;
                var Wi = W[i];
                if (i < 16) {
                  Wih = Wi.high = M[offset + i * 2] | 0;
                  Wil = Wi.low = M[offset + i * 2 + 1] | 0;
                } else {
                  var gamma0x = W[i - 15];
                  var gamma0xh = gamma0x.high;
                  var gamma0xl = gamma0x.low;
                  var gamma0h = (gamma0xh >>> 1 | gamma0xl << 31) ^ (gamma0xh >>> 8 | gamma0xl << 24) ^ gamma0xh >>> 7;
                  var gamma0l = (gamma0xl >>> 1 | gamma0xh << 31) ^ (gamma0xl >>> 8 | gamma0xh << 24) ^ (gamma0xl >>> 7 | gamma0xh << 25);
                  var gamma1x = W[i - 2];
                  var gamma1xh = gamma1x.high;
                  var gamma1xl = gamma1x.low;
                  var gamma1h = (gamma1xh >>> 19 | gamma1xl << 13) ^ (gamma1xh << 3 | gamma1xl >>> 29) ^ gamma1xh >>> 6;
                  var gamma1l = (gamma1xl >>> 19 | gamma1xh << 13) ^ (gamma1xl << 3 | gamma1xh >>> 29) ^ (gamma1xl >>> 6 | gamma1xh << 26);
                  var Wi7 = W[i - 7];
                  var Wi7h = Wi7.high;
                  var Wi7l = Wi7.low;
                  var Wi16 = W[i - 16];
                  var Wi16h = Wi16.high;
                  var Wi16l = Wi16.low;
                  Wil = gamma0l + Wi7l;
                  Wih = gamma0h + Wi7h + (Wil >>> 0 < gamma0l >>> 0 ? 1 : 0);
                  Wil = Wil + gamma1l;
                  Wih = Wih + gamma1h + (Wil >>> 0 < gamma1l >>> 0 ? 1 : 0);
                  Wil = Wil + Wi16l;
                  Wih = Wih + Wi16h + (Wil >>> 0 < Wi16l >>> 0 ? 1 : 0);
                  Wi.high = Wih;
                  Wi.low = Wil;
                }
                var chh = eh & fh ^ ~eh & gh;
                var chl = el & fl ^ ~el & gl;
                var majh = ah & bh ^ ah & ch ^ bh & ch;
                var majl = al & bl ^ al & cl ^ bl & cl;
                var sigma0h = (ah >>> 28 | al << 4) ^ (ah << 30 | al >>> 2) ^ (ah << 25 | al >>> 7);
                var sigma0l = (al >>> 28 | ah << 4) ^ (al << 30 | ah >>> 2) ^ (al << 25 | ah >>> 7);
                var sigma1h = (eh >>> 14 | el << 18) ^ (eh >>> 18 | el << 14) ^ (eh << 23 | el >>> 9);
                var sigma1l = (el >>> 14 | eh << 18) ^ (el >>> 18 | eh << 14) ^ (el << 23 | eh >>> 9);
                var Ki = K[i];
                var Kih = Ki.high;
                var Kil = Ki.low;
                var t1l = hl + sigma1l;
                var t1h = hh + sigma1h + (t1l >>> 0 < hl >>> 0 ? 1 : 0);
                var t1l = t1l + chl;
                var t1h = t1h + chh + (t1l >>> 0 < chl >>> 0 ? 1 : 0);
                var t1l = t1l + Kil;
                var t1h = t1h + Kih + (t1l >>> 0 < Kil >>> 0 ? 1 : 0);
                var t1l = t1l + Wil;
                var t1h = t1h + Wih + (t1l >>> 0 < Wil >>> 0 ? 1 : 0);
                var t2l = sigma0l + majl;
                var t2h = sigma0h + majh + (t2l >>> 0 < sigma0l >>> 0 ? 1 : 0);
                hh = gh;
                hl = gl;
                gh = fh;
                gl = fl;
                fh = eh;
                fl = el;
                el = dl + t1l | 0;
                eh = dh + t1h + (el >>> 0 < dl >>> 0 ? 1 : 0) | 0;
                dh = ch;
                dl = cl;
                ch = bh;
                cl = bl;
                bh = ah;
                bl = al;
                al = t1l + t2l | 0;
                ah = t1h + t2h + (al >>> 0 < t1l >>> 0 ? 1 : 0) | 0;
              }
              H0l = H0.low = H0l + al;
              H0.high = H0h + ah + (H0l >>> 0 < al >>> 0 ? 1 : 0);
              H1l = H1.low = H1l + bl;
              H1.high = H1h + bh + (H1l >>> 0 < bl >>> 0 ? 1 : 0);
              H2l = H2.low = H2l + cl;
              H2.high = H2h + ch + (H2l >>> 0 < cl >>> 0 ? 1 : 0);
              H3l = H3.low = H3l + dl;
              H3.high = H3h + dh + (H3l >>> 0 < dl >>> 0 ? 1 : 0);
              H4l = H4.low = H4l + el;
              H4.high = H4h + eh + (H4l >>> 0 < el >>> 0 ? 1 : 0);
              H5l = H5.low = H5l + fl;
              H5.high = H5h + fh + (H5l >>> 0 < fl >>> 0 ? 1 : 0);
              H6l = H6.low = H6l + gl;
              H6.high = H6h + gh + (H6l >>> 0 < gl >>> 0 ? 1 : 0);
              H7l = H7.low = H7l + hl;
              H7.high = H7h + hh + (H7l >>> 0 < hl >>> 0 ? 1 : 0);
            },
            _doFinalize: function() {
              var data = this._data;
              var dataWords = data.words;
              var nBitsTotal = this._nDataBytes * 8;
              var nBitsLeft = data.sigBytes * 8;
              dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
              dataWords[(nBitsLeft + 128 >>> 10 << 5) + 30] = Math.floor(nBitsTotal / 4294967296);
              dataWords[(nBitsLeft + 128 >>> 10 << 5) + 31] = nBitsTotal;
              data.sigBytes = dataWords.length * 4;
              this._process();
              var hash = this._hash.toX32();
              return hash;
            },
            clone: function() {
              var clone = Hasher.clone.call(this);
              clone._hash = this._hash.clone();
              return clone;
            },
            blockSize: 1024 / 32
          });
          C.SHA512 = Hasher._createHelper(SHA512);
          C.HmacSHA512 = Hasher._createHmacHelper(SHA512);
        })();
        return CryptoJS2.SHA512;
      });
    })(sha512);
    return sha512.exports;
  }
  var sha384 = { exports: {} };
  var hasRequiredSha384;
  function requireSha384() {
    if (hasRequiredSha384) return sha384.exports;
    hasRequiredSha384 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireX64Core(), requireSha512());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_x64 = C.x64;
          var X64Word = C_x64.Word;
          var X64WordArray = C_x64.WordArray;
          var C_algo = C.algo;
          var SHA512 = C_algo.SHA512;
          var SHA384 = C_algo.SHA384 = SHA512.extend({
            _doReset: function() {
              this._hash = new X64WordArray.init([
                new X64Word.init(3418070365, 3238371032),
                new X64Word.init(1654270250, 914150663),
                new X64Word.init(2438529370, 812702999),
                new X64Word.init(355462360, 4144912697),
                new X64Word.init(1731405415, 4290775857),
                new X64Word.init(2394180231, 1750603025),
                new X64Word.init(3675008525, 1694076839),
                new X64Word.init(1203062813, 3204075428)
              ]);
            },
            _doFinalize: function() {
              var hash = SHA512._doFinalize.call(this);
              hash.sigBytes -= 16;
              return hash;
            }
          });
          C.SHA384 = SHA512._createHelper(SHA384);
          C.HmacSHA384 = SHA512._createHmacHelper(SHA384);
        })();
        return CryptoJS2.SHA384;
      });
    })(sha384);
    return sha384.exports;
  }
  var sha3 = { exports: {} };
  var hasRequiredSha3;
  function requireSha3() {
    if (hasRequiredSha3) return sha3.exports;
    hasRequiredSha3 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireX64Core());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function(Math2) {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var Hasher = C_lib.Hasher;
          var C_x64 = C.x64;
          var X64Word = C_x64.Word;
          var C_algo = C.algo;
          var RHO_OFFSETS = [];
          var PI_INDEXES = [];
          var ROUND_CONSTANTS = [];
          (function() {
            var x = 1, y = 0;
            for (var t = 0; t < 24; t++) {
              RHO_OFFSETS[x + 5 * y] = (t + 1) * (t + 2) / 2 % 64;
              var newX = y % 5;
              var newY = (2 * x + 3 * y) % 5;
              x = newX;
              y = newY;
            }
            for (var x = 0; x < 5; x++) {
              for (var y = 0; y < 5; y++) {
                PI_INDEXES[x + 5 * y] = y + (2 * x + 3 * y) % 5 * 5;
              }
            }
            var LFSR = 1;
            for (var i = 0; i < 24; i++) {
              var roundConstantMsw = 0;
              var roundConstantLsw = 0;
              for (var j = 0; j < 7; j++) {
                if (LFSR & 1) {
                  var bitPosition = (1 << j) - 1;
                  if (bitPosition < 32) {
                    roundConstantLsw ^= 1 << bitPosition;
                  } else {
                    roundConstantMsw ^= 1 << bitPosition - 32;
                  }
                }
                if (LFSR & 128) {
                  LFSR = LFSR << 1 ^ 113;
                } else {
                  LFSR <<= 1;
                }
              }
              ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);
            }
          })();
          var T = [];
          (function() {
            for (var i = 0; i < 25; i++) {
              T[i] = X64Word.create();
            }
          })();
          var SHA3 = C_algo.SHA3 = Hasher.extend({
            /**
             * Configuration options.
             *
             * @property {number} outputLength
             *   The desired number of bits in the output hash.
             *   Only values permitted are: 224, 256, 384, 512.
             *   Default: 512
             */
            cfg: Hasher.cfg.extend({
              outputLength: 512
            }),
            _doReset: function() {
              var state = this._state = [];
              for (var i = 0; i < 25; i++) {
                state[i] = new X64Word.init();
              }
              this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;
            },
            _doProcessBlock: function(M, offset) {
              var state = this._state;
              var nBlockSizeLanes = this.blockSize / 2;
              for (var i = 0; i < nBlockSizeLanes; i++) {
                var M2i = M[offset + 2 * i];
                var M2i1 = M[offset + 2 * i + 1];
                M2i = (M2i << 8 | M2i >>> 24) & 16711935 | (M2i << 24 | M2i >>> 8) & 4278255360;
                M2i1 = (M2i1 << 8 | M2i1 >>> 24) & 16711935 | (M2i1 << 24 | M2i1 >>> 8) & 4278255360;
                var lane = state[i];
                lane.high ^= M2i1;
                lane.low ^= M2i;
              }
              for (var round = 0; round < 24; round++) {
                for (var x = 0; x < 5; x++) {
                  var tMsw = 0, tLsw = 0;
                  for (var y = 0; y < 5; y++) {
                    var lane = state[x + 5 * y];
                    tMsw ^= lane.high;
                    tLsw ^= lane.low;
                  }
                  var Tx = T[x];
                  Tx.high = tMsw;
                  Tx.low = tLsw;
                }
                for (var x = 0; x < 5; x++) {
                  var Tx4 = T[(x + 4) % 5];
                  var Tx1 = T[(x + 1) % 5];
                  var Tx1Msw = Tx1.high;
                  var Tx1Lsw = Tx1.low;
                  var tMsw = Tx4.high ^ (Tx1Msw << 1 | Tx1Lsw >>> 31);
                  var tLsw = Tx4.low ^ (Tx1Lsw << 1 | Tx1Msw >>> 31);
                  for (var y = 0; y < 5; y++) {
                    var lane = state[x + 5 * y];
                    lane.high ^= tMsw;
                    lane.low ^= tLsw;
                  }
                }
                for (var laneIndex = 1; laneIndex < 25; laneIndex++) {
                  var tMsw;
                  var tLsw;
                  var lane = state[laneIndex];
                  var laneMsw = lane.high;
                  var laneLsw = lane.low;
                  var rhoOffset = RHO_OFFSETS[laneIndex];
                  if (rhoOffset < 32) {
                    tMsw = laneMsw << rhoOffset | laneLsw >>> 32 - rhoOffset;
                    tLsw = laneLsw << rhoOffset | laneMsw >>> 32 - rhoOffset;
                  } else {
                    tMsw = laneLsw << rhoOffset - 32 | laneMsw >>> 64 - rhoOffset;
                    tLsw = laneMsw << rhoOffset - 32 | laneLsw >>> 64 - rhoOffset;
                  }
                  var TPiLane = T[PI_INDEXES[laneIndex]];
                  TPiLane.high = tMsw;
                  TPiLane.low = tLsw;
                }
                var T0 = T[0];
                var state0 = state[0];
                T0.high = state0.high;
                T0.low = state0.low;
                for (var x = 0; x < 5; x++) {
                  for (var y = 0; y < 5; y++) {
                    var laneIndex = x + 5 * y;
                    var lane = state[laneIndex];
                    var TLane = T[laneIndex];
                    var Tx1Lane = T[(x + 1) % 5 + 5 * y];
                    var Tx2Lane = T[(x + 2) % 5 + 5 * y];
                    lane.high = TLane.high ^ ~Tx1Lane.high & Tx2Lane.high;
                    lane.low = TLane.low ^ ~Tx1Lane.low & Tx2Lane.low;
                  }
                }
                var lane = state[0];
                var roundConstant = ROUND_CONSTANTS[round];
                lane.high ^= roundConstant.high;
                lane.low ^= roundConstant.low;
              }
            },
            _doFinalize: function() {
              var data = this._data;
              var dataWords = data.words;
              this._nDataBytes * 8;
              var nBitsLeft = data.sigBytes * 8;
              var blockSizeBits = this.blockSize * 32;
              dataWords[nBitsLeft >>> 5] |= 1 << 24 - nBitsLeft % 32;
              dataWords[(Math2.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits >>> 5) - 1] |= 128;
              data.sigBytes = dataWords.length * 4;
              this._process();
              var state = this._state;
              var outputLengthBytes = this.cfg.outputLength / 8;
              var outputLengthLanes = outputLengthBytes / 8;
              var hashWords = [];
              for (var i = 0; i < outputLengthLanes; i++) {
                var lane = state[i];
                var laneMsw = lane.high;
                var laneLsw = lane.low;
                laneMsw = (laneMsw << 8 | laneMsw >>> 24) & 16711935 | (laneMsw << 24 | laneMsw >>> 8) & 4278255360;
                laneLsw = (laneLsw << 8 | laneLsw >>> 24) & 16711935 | (laneLsw << 24 | laneLsw >>> 8) & 4278255360;
                hashWords.push(laneLsw);
                hashWords.push(laneMsw);
              }
              return new WordArray.init(hashWords, outputLengthBytes);
            },
            clone: function() {
              var clone = Hasher.clone.call(this);
              var state = clone._state = this._state.slice(0);
              for (var i = 0; i < 25; i++) {
                state[i] = state[i].clone();
              }
              return clone;
            }
          });
          C.SHA3 = Hasher._createHelper(SHA3);
          C.HmacSHA3 = Hasher._createHmacHelper(SHA3);
        })(Math);
        return CryptoJS2.SHA3;
      });
    })(sha3);
    return sha3.exports;
  }
  var ripemd160 = { exports: {} };
  var hasRequiredRipemd160;
  function requireRipemd160() {
    if (hasRequiredRipemd160) return ripemd160.exports;
    hasRequiredRipemd160 = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function(Math2) {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var Hasher = C_lib.Hasher;
          var C_algo = C.algo;
          var _zl = WordArray.create([
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10,
            11,
            12,
            13,
            14,
            15,
            7,
            4,
            13,
            1,
            10,
            6,
            15,
            3,
            12,
            0,
            9,
            5,
            2,
            14,
            11,
            8,
            3,
            10,
            14,
            4,
            9,
            15,
            8,
            1,
            2,
            7,
            0,
            6,
            13,
            11,
            5,
            12,
            1,
            9,
            11,
            10,
            0,
            8,
            12,
            4,
            13,
            3,
            7,
            15,
            14,
            5,
            6,
            2,
            4,
            0,
            5,
            9,
            7,
            12,
            2,
            10,
            14,
            1,
            3,
            8,
            11,
            6,
            15,
            13
          ]);
          var _zr = WordArray.create([
            5,
            14,
            7,
            0,
            9,
            2,
            11,
            4,
            13,
            6,
            15,
            8,
            1,
            10,
            3,
            12,
            6,
            11,
            3,
            7,
            0,
            13,
            5,
            10,
            14,
            15,
            8,
            12,
            4,
            9,
            1,
            2,
            15,
            5,
            1,
            3,
            7,
            14,
            6,
            9,
            11,
            8,
            12,
            2,
            10,
            0,
            4,
            13,
            8,
            6,
            4,
            1,
            3,
            11,
            15,
            0,
            5,
            12,
            2,
            13,
            9,
            7,
            10,
            14,
            12,
            15,
            10,
            4,
            1,
            5,
            8,
            7,
            6,
            2,
            13,
            14,
            0,
            3,
            9,
            11
          ]);
          var _sl = WordArray.create([
            11,
            14,
            15,
            12,
            5,
            8,
            7,
            9,
            11,
            13,
            14,
            15,
            6,
            7,
            9,
            8,
            7,
            6,
            8,
            13,
            11,
            9,
            7,
            15,
            7,
            12,
            15,
            9,
            11,
            7,
            13,
            12,
            11,
            13,
            6,
            7,
            14,
            9,
            13,
            15,
            14,
            8,
            13,
            6,
            5,
            12,
            7,
            5,
            11,
            12,
            14,
            15,
            14,
            15,
            9,
            8,
            9,
            14,
            5,
            6,
            8,
            6,
            5,
            12,
            9,
            15,
            5,
            11,
            6,
            8,
            13,
            12,
            5,
            12,
            13,
            14,
            11,
            8,
            5,
            6
          ]);
          var _sr = WordArray.create([
            8,
            9,
            9,
            11,
            13,
            15,
            15,
            5,
            7,
            7,
            8,
            11,
            14,
            14,
            12,
            6,
            9,
            13,
            15,
            7,
            12,
            8,
            9,
            11,
            7,
            7,
            12,
            7,
            6,
            15,
            13,
            11,
            9,
            7,
            15,
            11,
            8,
            6,
            6,
            14,
            12,
            13,
            5,
            14,
            13,
            13,
            7,
            5,
            15,
            5,
            8,
            11,
            14,
            14,
            6,
            14,
            6,
            9,
            12,
            9,
            12,
            5,
            15,
            8,
            8,
            5,
            12,
            9,
            12,
            5,
            14,
            6,
            8,
            13,
            6,
            5,
            15,
            13,
            11,
            11
          ]);
          var _hl = WordArray.create([0, 1518500249, 1859775393, 2400959708, 2840853838]);
          var _hr = WordArray.create([1352829926, 1548603684, 1836072691, 2053994217, 0]);
          var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({
            _doReset: function() {
              this._hash = WordArray.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
            },
            _doProcessBlock: function(M, offset) {
              for (var i = 0; i < 16; i++) {
                var offset_i = offset + i;
                var M_offset_i = M[offset_i];
                M[offset_i] = (M_offset_i << 8 | M_offset_i >>> 24) & 16711935 | (M_offset_i << 24 | M_offset_i >>> 8) & 4278255360;
              }
              var H = this._hash.words;
              var hl = _hl.words;
              var hr = _hr.words;
              var zl = _zl.words;
              var zr = _zr.words;
              var sl = _sl.words;
              var sr = _sr.words;
              var al, bl, cl, dl, el;
              var ar, br, cr, dr, er;
              ar = al = H[0];
              br = bl = H[1];
              cr = cl = H[2];
              dr = dl = H[3];
              er = el = H[4];
              var t;
              for (var i = 0; i < 80; i += 1) {
                t = al + M[offset + zl[i]] | 0;
                if (i < 16) {
                  t += f1(bl, cl, dl) + hl[0];
                } else if (i < 32) {
                  t += f2(bl, cl, dl) + hl[1];
                } else if (i < 48) {
                  t += f3(bl, cl, dl) + hl[2];
                } else if (i < 64) {
                  t += f4(bl, cl, dl) + hl[3];
                } else {
                  t += f5(bl, cl, dl) + hl[4];
                }
                t = t | 0;
                t = rotl(t, sl[i]);
                t = t + el | 0;
                al = el;
                el = dl;
                dl = rotl(cl, 10);
                cl = bl;
                bl = t;
                t = ar + M[offset + zr[i]] | 0;
                if (i < 16) {
                  t += f5(br, cr, dr) + hr[0];
                } else if (i < 32) {
                  t += f4(br, cr, dr) + hr[1];
                } else if (i < 48) {
                  t += f3(br, cr, dr) + hr[2];
                } else if (i < 64) {
                  t += f2(br, cr, dr) + hr[3];
                } else {
                  t += f1(br, cr, dr) + hr[4];
                }
                t = t | 0;
                t = rotl(t, sr[i]);
                t = t + er | 0;
                ar = er;
                er = dr;
                dr = rotl(cr, 10);
                cr = br;
                br = t;
              }
              t = H[1] + cl + dr | 0;
              H[1] = H[2] + dl + er | 0;
              H[2] = H[3] + el + ar | 0;
              H[3] = H[4] + al + br | 0;
              H[4] = H[0] + bl + cr | 0;
              H[0] = t;
            },
            _doFinalize: function() {
              var data = this._data;
              var dataWords = data.words;
              var nBitsTotal = this._nDataBytes * 8;
              var nBitsLeft = data.sigBytes * 8;
              dataWords[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32;
              dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = (nBitsTotal << 8 | nBitsTotal >>> 24) & 16711935 | (nBitsTotal << 24 | nBitsTotal >>> 8) & 4278255360;
              data.sigBytes = (dataWords.length + 1) * 4;
              this._process();
              var hash = this._hash;
              var H = hash.words;
              for (var i = 0; i < 5; i++) {
                var H_i = H[i];
                H[i] = (H_i << 8 | H_i >>> 24) & 16711935 | (H_i << 24 | H_i >>> 8) & 4278255360;
              }
              return hash;
            },
            clone: function() {
              var clone = Hasher.clone.call(this);
              clone._hash = this._hash.clone();
              return clone;
            }
          });
          function f1(x, y, z) {
            return x ^ y ^ z;
          }
          function f2(x, y, z) {
            return x & y | ~x & z;
          }
          function f3(x, y, z) {
            return (x | ~y) ^ z;
          }
          function f4(x, y, z) {
            return x & z | y & ~z;
          }
          function f5(x, y, z) {
            return x ^ (y | ~z);
          }
          function rotl(x, n) {
            return x << n | x >>> 32 - n;
          }
          C.RIPEMD160 = Hasher._createHelper(RIPEMD160);
          C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);
        })();
        return CryptoJS2.RIPEMD160;
      });
    })(ripemd160);
    return ripemd160.exports;
  }
  var hmac = { exports: {} };
  var hasRequiredHmac;
  function requireHmac() {
    if (hasRequiredHmac) return hmac.exports;
    hasRequiredHmac = 1;
    (function(module, exports) {
      (function(root, factory) {
        {
          module.exports = factory(requireCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var Base = C_lib.Base;
          var C_enc = C.enc;
          var Utf8 = C_enc.Utf8;
          var C_algo = C.algo;
          C_algo.HMAC = Base.extend({
            /**
             * Initializes a newly created HMAC.
             *
             * @param {Hasher} hasher The hash algorithm to use.
             * @param {WordArray|string} key The secret key.
             *
             * @example
             *
             *     var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);
             */
            init: function(hasher, key) {
              hasher = this._hasher = new hasher.init();
              if (typeof key == "string") {
                key = Utf8.parse(key);
              }
              var hasherBlockSize = hasher.blockSize;
              var hasherBlockSizeBytes = hasherBlockSize * 4;
              if (key.sigBytes > hasherBlockSizeBytes) {
                key = hasher.finalize(key);
              }
              key.clamp();
              var oKey = this._oKey = key.clone();
              var iKey = this._iKey = key.clone();
              var oKeyWords = oKey.words;
              var iKeyWords = iKey.words;
              for (var i = 0; i < hasherBlockSize; i++) {
                oKeyWords[i] ^= 1549556828;
                iKeyWords[i] ^= 909522486;
              }
              oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;
              this.reset();
            },
            /**
             * Resets this HMAC to its initial state.
             *
             * @example
             *
             *     hmacHasher.reset();
             */
            reset: function() {
              var hasher = this._hasher;
              hasher.reset();
              hasher.update(this._iKey);
            },
            /**
             * Updates this HMAC with a message.
             *
             * @param {WordArray|string} messageUpdate The message to append.
             *
             * @return {HMAC} This HMAC instance.
             *
             * @example
             *
             *     hmacHasher.update('message');
             *     hmacHasher.update(wordArray);
             */
            update: function(messageUpdate) {
              this._hasher.update(messageUpdate);
              return this;
            },
            /**
             * Finalizes the HMAC computation.
             * Note that the finalize operation is effectively a destructive, read-once operation.
             *
             * @param {WordArray|string} messageUpdate (Optional) A final message update.
             *
             * @return {WordArray} The HMAC.
             *
             * @example
             *
             *     var hmac = hmacHasher.finalize();
             *     var hmac = hmacHasher.finalize('message');
             *     var hmac = hmacHasher.finalize(wordArray);
             */
            finalize: function(messageUpdate) {
              var hasher = this._hasher;
              var innerHash = hasher.finalize(messageUpdate);
              hasher.reset();
              var hmac2 = hasher.finalize(this._oKey.clone().concat(innerHash));
              return hmac2;
            }
          });
        })();
      });
    })(hmac);
    return hmac.exports;
  }
  var pbkdf2 = { exports: {} };
  var hasRequiredPbkdf2;
  function requirePbkdf2() {
    if (hasRequiredPbkdf2) return pbkdf2.exports;
    hasRequiredPbkdf2 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireSha256(), requireHmac());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var Base = C_lib.Base;
          var WordArray = C_lib.WordArray;
          var C_algo = C.algo;
          var SHA256 = C_algo.SHA256;
          var HMAC = C_algo.HMAC;
          var PBKDF2 = C_algo.PBKDF2 = Base.extend({
            /**
             * Configuration options.
             *
             * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
             * @property {Hasher} hasher The hasher to use. Default: SHA256
             * @property {number} iterations The number of iterations to perform. Default: 250000
             */
            cfg: Base.extend({
              keySize: 128 / 32,
              hasher: SHA256,
              iterations: 25e4
            }),
            /**
             * Initializes a newly created key derivation function.
             *
             * @param {Object} cfg (Optional) The configuration options to use for the derivation.
             *
             * @example
             *
             *     var kdf = CryptoJS.algo.PBKDF2.create();
             *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });
             *     var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });
             */
            init: function(cfg) {
              this.cfg = this.cfg.extend(cfg);
            },
            /**
             * Computes the Password-Based Key Derivation Function 2.
             *
             * @param {WordArray|string} password The password.
             * @param {WordArray|string} salt A salt.
             *
             * @return {WordArray} The derived key.
             *
             * @example
             *
             *     var key = kdf.compute(password, salt);
             */
            compute: function(password, salt) {
              var cfg = this.cfg;
              var hmac2 = HMAC.create(cfg.hasher, password);
              var derivedKey = WordArray.create();
              var blockIndex = WordArray.create([1]);
              var derivedKeyWords = derivedKey.words;
              var blockIndexWords = blockIndex.words;
              var keySize = cfg.keySize;
              var iterations = cfg.iterations;
              while (derivedKeyWords.length < keySize) {
                var block = hmac2.update(salt).finalize(blockIndex);
                hmac2.reset();
                var blockWords = block.words;
                var blockWordsLength = blockWords.length;
                var intermediate = block;
                for (var i = 1; i < iterations; i++) {
                  intermediate = hmac2.finalize(intermediate);
                  hmac2.reset();
                  var intermediateWords = intermediate.words;
                  for (var j = 0; j < blockWordsLength; j++) {
                    blockWords[j] ^= intermediateWords[j];
                  }
                }
                derivedKey.concat(block);
                blockIndexWords[0]++;
              }
              derivedKey.sigBytes = keySize * 4;
              return derivedKey;
            }
          });
          C.PBKDF2 = function(password, salt, cfg) {
            return PBKDF2.create(cfg).compute(password, salt);
          };
        })();
        return CryptoJS2.PBKDF2;
      });
    })(pbkdf2);
    return pbkdf2.exports;
  }
  var evpkdf = { exports: {} };
  var hasRequiredEvpkdf;
  function requireEvpkdf() {
    if (hasRequiredEvpkdf) return evpkdf.exports;
    hasRequiredEvpkdf = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireSha1(), requireHmac());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var Base = C_lib.Base;
          var WordArray = C_lib.WordArray;
          var C_algo = C.algo;
          var MD5 = C_algo.MD5;
          var EvpKDF = C_algo.EvpKDF = Base.extend({
            /**
             * Configuration options.
             *
             * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)
             * @property {Hasher} hasher The hash algorithm to use. Default: MD5
             * @property {number} iterations The number of iterations to perform. Default: 1
             */
            cfg: Base.extend({
              keySize: 128 / 32,
              hasher: MD5,
              iterations: 1
            }),
            /**
             * Initializes a newly created key derivation function.
             *
             * @param {Object} cfg (Optional) The configuration options to use for the derivation.
             *
             * @example
             *
             *     var kdf = CryptoJS.algo.EvpKDF.create();
             *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });
             *     var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });
             */
            init: function(cfg) {
              this.cfg = this.cfg.extend(cfg);
            },
            /**
             * Derives a key from a password.
             *
             * @param {WordArray|string} password The password.
             * @param {WordArray|string} salt A salt.
             *
             * @return {WordArray} The derived key.
             *
             * @example
             *
             *     var key = kdf.compute(password, salt);
             */
            compute: function(password, salt) {
              var block;
              var cfg = this.cfg;
              var hasher = cfg.hasher.create();
              var derivedKey = WordArray.create();
              var derivedKeyWords = derivedKey.words;
              var keySize = cfg.keySize;
              var iterations = cfg.iterations;
              while (derivedKeyWords.length < keySize) {
                if (block) {
                  hasher.update(block);
                }
                block = hasher.update(password).finalize(salt);
                hasher.reset();
                for (var i = 1; i < iterations; i++) {
                  block = hasher.finalize(block);
                  hasher.reset();
                }
                derivedKey.concat(block);
              }
              derivedKey.sigBytes = keySize * 4;
              return derivedKey;
            }
          });
          C.EvpKDF = function(password, salt, cfg) {
            return EvpKDF.create(cfg).compute(password, salt);
          };
        })();
        return CryptoJS2.EvpKDF;
      });
    })(evpkdf);
    return evpkdf.exports;
  }
  var cipherCore = { exports: {} };
  var hasRequiredCipherCore;
  function requireCipherCore() {
    if (hasRequiredCipherCore) return cipherCore.exports;
    hasRequiredCipherCore = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireEvpkdf());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.lib.Cipher || function(undefined$1) {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var Base = C_lib.Base;
          var WordArray = C_lib.WordArray;
          var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;
          var C_enc = C.enc;
          C_enc.Utf8;
          var Base64 = C_enc.Base64;
          var C_algo = C.algo;
          var EvpKDF = C_algo.EvpKDF;
          var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({
            /**
             * Configuration options.
             *
             * @property {WordArray} iv The IV to use for this operation.
             */
            cfg: Base.extend(),
            /**
             * Creates this cipher in encryption mode.
             *
             * @param {WordArray} key The key.
             * @param {Object} cfg (Optional) The configuration options to use for this operation.
             *
             * @return {Cipher} A cipher instance.
             *
             * @static
             *
             * @example
             *
             *     var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });
             */
            createEncryptor: function(key, cfg) {
              return this.create(this._ENC_XFORM_MODE, key, cfg);
            },
            /**
             * Creates this cipher in decryption mode.
             *
             * @param {WordArray} key The key.
             * @param {Object} cfg (Optional) The configuration options to use for this operation.
             *
             * @return {Cipher} A cipher instance.
             *
             * @static
             *
             * @example
             *
             *     var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });
             */
            createDecryptor: function(key, cfg) {
              return this.create(this._DEC_XFORM_MODE, key, cfg);
            },
            /**
             * Initializes a newly created cipher.
             *
             * @param {number} xformMode Either the encryption or decryption transormation mode constant.
             * @param {WordArray} key The key.
             * @param {Object} cfg (Optional) The configuration options to use for this operation.
             *
             * @example
             *
             *     var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });
             */
            init: function(xformMode, key, cfg) {
              this.cfg = this.cfg.extend(cfg);
              this._xformMode = xformMode;
              this._key = key;
              this.reset();
            },
            /**
             * Resets this cipher to its initial state.
             *
             * @example
             *
             *     cipher.reset();
             */
            reset: function() {
              BufferedBlockAlgorithm.reset.call(this);
              this._doReset();
            },
            /**
             * Adds data to be encrypted or decrypted.
             *
             * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.
             *
             * @return {WordArray} The data after processing.
             *
             * @example
             *
             *     var encrypted = cipher.process('data');
             *     var encrypted = cipher.process(wordArray);
             */
            process: function(dataUpdate) {
              this._append(dataUpdate);
              return this._process();
            },
            /**
             * Finalizes the encryption or decryption process.
             * Note that the finalize operation is effectively a destructive, read-once operation.
             *
             * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.
             *
             * @return {WordArray} The data after final processing.
             *
             * @example
             *
             *     var encrypted = cipher.finalize();
             *     var encrypted = cipher.finalize('data');
             *     var encrypted = cipher.finalize(wordArray);
             */
            finalize: function(dataUpdate) {
              if (dataUpdate) {
                this._append(dataUpdate);
              }
              var finalProcessedData = this._doFinalize();
              return finalProcessedData;
            },
            keySize: 128 / 32,
            ivSize: 128 / 32,
            _ENC_XFORM_MODE: 1,
            _DEC_XFORM_MODE: 2,
            /**
             * Creates shortcut functions to a cipher's object interface.
             *
             * @param {Cipher} cipher The cipher to create a helper for.
             *
             * @return {Object} An object with encrypt and decrypt shortcut functions.
             *
             * @static
             *
             * @example
             *
             *     var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);
             */
            _createHelper: /* @__PURE__ */ function() {
              function selectCipherStrategy(key) {
                if (typeof key == "string") {
                  return PasswordBasedCipher;
                } else {
                  return SerializableCipher;
                }
              }
              return function(cipher) {
                return {
                  encrypt: function(message, key, cfg) {
                    return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);
                  },
                  decrypt: function(ciphertext, key, cfg) {
                    return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);
                  }
                };
              };
            }()
          });
          C_lib.StreamCipher = Cipher.extend({
            _doFinalize: function() {
              var finalProcessedBlocks = this._process(true);
              return finalProcessedBlocks;
            },
            blockSize: 1
          });
          var C_mode = C.mode = {};
          var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({
            /**
             * Creates this mode for encryption.
             *
             * @param {Cipher} cipher A block cipher instance.
             * @param {Array} iv The IV words.
             *
             * @static
             *
             * @example
             *
             *     var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);
             */
            createEncryptor: function(cipher, iv) {
              return this.Encryptor.create(cipher, iv);
            },
            /**
             * Creates this mode for decryption.
             *
             * @param {Cipher} cipher A block cipher instance.
             * @param {Array} iv The IV words.
             *
             * @static
             *
             * @example
             *
             *     var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);
             */
            createDecryptor: function(cipher, iv) {
              return this.Decryptor.create(cipher, iv);
            },
            /**
             * Initializes a newly created mode.
             *
             * @param {Cipher} cipher A block cipher instance.
             * @param {Array} iv The IV words.
             *
             * @example
             *
             *     var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);
             */
            init: function(cipher, iv) {
              this._cipher = cipher;
              this._iv = iv;
            }
          });
          var CBC = C_mode.CBC = function() {
            var CBC2 = BlockCipherMode.extend();
            CBC2.Encryptor = CBC2.extend({
              /**
               * Processes the data block at offset.
               *
               * @param {Array} words The data words to operate on.
               * @param {number} offset The offset where the block starts.
               *
               * @example
               *
               *     mode.processBlock(data.words, offset);
               */
              processBlock: function(words, offset) {
                var cipher = this._cipher;
                var blockSize = cipher.blockSize;
                xorBlock.call(this, words, offset, blockSize);
                cipher.encryptBlock(words, offset);
                this._prevBlock = words.slice(offset, offset + blockSize);
              }
            });
            CBC2.Decryptor = CBC2.extend({
              /**
               * Processes the data block at offset.
               *
               * @param {Array} words The data words to operate on.
               * @param {number} offset The offset where the block starts.
               *
               * @example
               *
               *     mode.processBlock(data.words, offset);
               */
              processBlock: function(words, offset) {
                var cipher = this._cipher;
                var blockSize = cipher.blockSize;
                var thisBlock = words.slice(offset, offset + blockSize);
                cipher.decryptBlock(words, offset);
                xorBlock.call(this, words, offset, blockSize);
                this._prevBlock = thisBlock;
              }
            });
            function xorBlock(words, offset, blockSize) {
              var block;
              var iv = this._iv;
              if (iv) {
                block = iv;
                this._iv = undefined$1;
              } else {
                block = this._prevBlock;
              }
              for (var i = 0; i < blockSize; i++) {
                words[offset + i] ^= block[i];
              }
            }
            return CBC2;
          }();
          var C_pad = C.pad = {};
          var Pkcs7 = C_pad.Pkcs7 = {
            /**
             * Pads data using the algorithm defined in PKCS #5/7.
             *
             * @param {WordArray} data The data to pad.
             * @param {number} blockSize The multiple that the data should be padded to.
             *
             * @static
             *
             * @example
             *
             *     CryptoJS.pad.Pkcs7.pad(wordArray, 4);
             */
            pad: function(data, blockSize) {
              var blockSizeBytes = blockSize * 4;
              var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
              var paddingWord = nPaddingBytes << 24 | nPaddingBytes << 16 | nPaddingBytes << 8 | nPaddingBytes;
              var paddingWords = [];
              for (var i = 0; i < nPaddingBytes; i += 4) {
                paddingWords.push(paddingWord);
              }
              var padding = WordArray.create(paddingWords, nPaddingBytes);
              data.concat(padding);
            },
            /**
             * Unpads data that had been padded using the algorithm defined in PKCS #5/7.
             *
             * @param {WordArray} data The data to unpad.
             *
             * @static
             *
             * @example
             *
             *     CryptoJS.pad.Pkcs7.unpad(wordArray);
             */
            unpad: function(data) {
              var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
              data.sigBytes -= nPaddingBytes;
            }
          };
          C_lib.BlockCipher = Cipher.extend({
            /**
             * Configuration options.
             *
             * @property {Mode} mode The block mode to use. Default: CBC
             * @property {Padding} padding The padding strategy to use. Default: Pkcs7
             */
            cfg: Cipher.cfg.extend({
              mode: CBC,
              padding: Pkcs7
            }),
            reset: function() {
              var modeCreator;
              Cipher.reset.call(this);
              var cfg = this.cfg;
              var iv = cfg.iv;
              var mode = cfg.mode;
              if (this._xformMode == this._ENC_XFORM_MODE) {
                modeCreator = mode.createEncryptor;
              } else {
                modeCreator = mode.createDecryptor;
                this._minBufferSize = 1;
              }
              if (this._mode && this._mode.__creator == modeCreator) {
                this._mode.init(this, iv && iv.words);
              } else {
                this._mode = modeCreator.call(mode, this, iv && iv.words);
                this._mode.__creator = modeCreator;
              }
            },
            _doProcessBlock: function(words, offset) {
              this._mode.processBlock(words, offset);
            },
            _doFinalize: function() {
              var finalProcessedBlocks;
              var padding = this.cfg.padding;
              if (this._xformMode == this._ENC_XFORM_MODE) {
                padding.pad(this._data, this.blockSize);
                finalProcessedBlocks = this._process(true);
              } else {
                finalProcessedBlocks = this._process(true);
                padding.unpad(finalProcessedBlocks);
              }
              return finalProcessedBlocks;
            },
            blockSize: 128 / 32
          });
          var CipherParams = C_lib.CipherParams = Base.extend({
            /**
             * Initializes a newly created cipher params object.
             *
             * @param {Object} cipherParams An object with any of the possible cipher parameters.
             *
             * @example
             *
             *     var cipherParams = CryptoJS.lib.CipherParams.create({
             *         ciphertext: ciphertextWordArray,
             *         key: keyWordArray,
             *         iv: ivWordArray,
             *         salt: saltWordArray,
             *         algorithm: CryptoJS.algo.AES,
             *         mode: CryptoJS.mode.CBC,
             *         padding: CryptoJS.pad.PKCS7,
             *         blockSize: 4,
             *         formatter: CryptoJS.format.OpenSSL
             *     });
             */
            init: function(cipherParams) {
              this.mixIn(cipherParams);
            },
            /**
             * Converts this cipher params object to a string.
             *
             * @param {Format} formatter (Optional) The formatting strategy to use.
             *
             * @return {string} The stringified cipher params.
             *
             * @throws Error If neither the formatter nor the default formatter is set.
             *
             * @example
             *
             *     var string = cipherParams + '';
             *     var string = cipherParams.toString();
             *     var string = cipherParams.toString(CryptoJS.format.OpenSSL);
             */
            toString: function(formatter) {
              return (formatter || this.formatter).stringify(this);
            }
          });
          var C_format = C.format = {};
          var OpenSSLFormatter = C_format.OpenSSL = {
            /**
             * Converts a cipher params object to an OpenSSL-compatible string.
             *
             * @param {CipherParams} cipherParams The cipher params object.
             *
             * @return {string} The OpenSSL-compatible string.
             *
             * @static
             *
             * @example
             *
             *     var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);
             */
            stringify: function(cipherParams) {
              var wordArray;
              var ciphertext = cipherParams.ciphertext;
              var salt = cipherParams.salt;
              if (salt) {
                wordArray = WordArray.create([1398893684, 1701076831]).concat(salt).concat(ciphertext);
              } else {
                wordArray = ciphertext;
              }
              return wordArray.toString(Base64);
            },
            /**
             * Converts an OpenSSL-compatible string to a cipher params object.
             *
             * @param {string} openSSLStr The OpenSSL-compatible string.
             *
             * @return {CipherParams} The cipher params object.
             *
             * @static
             *
             * @example
             *
             *     var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);
             */
            parse: function(openSSLStr) {
              var salt;
              var ciphertext = Base64.parse(openSSLStr);
              var ciphertextWords = ciphertext.words;
              if (ciphertextWords[0] == 1398893684 && ciphertextWords[1] == 1701076831) {
                salt = WordArray.create(ciphertextWords.slice(2, 4));
                ciphertextWords.splice(0, 4);
                ciphertext.sigBytes -= 16;
              }
              return CipherParams.create({ ciphertext, salt });
            }
          };
          var SerializableCipher = C_lib.SerializableCipher = Base.extend({
            /**
             * Configuration options.
             *
             * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL
             */
            cfg: Base.extend({
              format: OpenSSLFormatter
            }),
            /**
             * Encrypts a message.
             *
             * @param {Cipher} cipher The cipher algorithm to use.
             * @param {WordArray|string} message The message to encrypt.
             * @param {WordArray} key The key.
             * @param {Object} cfg (Optional) The configuration options to use for this operation.
             *
             * @return {CipherParams} A cipher params object.
             *
             * @static
             *
             * @example
             *
             *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);
             *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });
             *     var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });
             */
            encrypt: function(cipher, message, key, cfg) {
              cfg = this.cfg.extend(cfg);
              var encryptor = cipher.createEncryptor(key, cfg);
              var ciphertext = encryptor.finalize(message);
              var cipherCfg = encryptor.cfg;
              return CipherParams.create({
                ciphertext,
                key,
                iv: cipherCfg.iv,
                algorithm: cipher,
                mode: cipherCfg.mode,
                padding: cipherCfg.padding,
                blockSize: cipher.blockSize,
                formatter: cfg.format
              });
            },
            /**
             * Decrypts serialized ciphertext.
             *
             * @param {Cipher} cipher The cipher algorithm to use.
             * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
             * @param {WordArray} key The key.
             * @param {Object} cfg (Optional) The configuration options to use for this operation.
             *
             * @return {WordArray} The plaintext.
             *
             * @static
             *
             * @example
             *
             *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });
             *     var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });
             */
            decrypt: function(cipher, ciphertext, key, cfg) {
              cfg = this.cfg.extend(cfg);
              ciphertext = this._parse(ciphertext, cfg.format);
              var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);
              return plaintext;
            },
            /**
             * Converts serialized ciphertext to CipherParams,
             * else assumed CipherParams already and returns ciphertext unchanged.
             *
             * @param {CipherParams|string} ciphertext The ciphertext.
             * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.
             *
             * @return {CipherParams} The unserialized ciphertext.
             *
             * @static
             *
             * @example
             *
             *     var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);
             */
            _parse: function(ciphertext, format) {
              if (typeof ciphertext == "string") {
                return format.parse(ciphertext, this);
              } else {
                return ciphertext;
              }
            }
          });
          var C_kdf = C.kdf = {};
          var OpenSSLKdf = C_kdf.OpenSSL = {
            /**
             * Derives a key and IV from a password.
             *
             * @param {string} password The password to derive from.
             * @param {number} keySize The size in words of the key to generate.
             * @param {number} ivSize The size in words of the IV to generate.
             * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.
             *
             * @return {CipherParams} A cipher params object with the key, IV, and salt.
             *
             * @static
             *
             * @example
             *
             *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);
             *     var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');
             */
            execute: function(password, keySize, ivSize, salt, hasher) {
              if (!salt) {
                salt = WordArray.random(64 / 8);
              }
              if (!hasher) {
                var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);
              } else {
                var key = EvpKDF.create({ keySize: keySize + ivSize, hasher }).compute(password, salt);
              }
              var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);
              key.sigBytes = keySize * 4;
              return CipherParams.create({ key, iv, salt });
            }
          };
          var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({
            /**
             * Configuration options.
             *
             * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL
             */
            cfg: SerializableCipher.cfg.extend({
              kdf: OpenSSLKdf
            }),
            /**
             * Encrypts a message using a password.
             *
             * @param {Cipher} cipher The cipher algorithm to use.
             * @param {WordArray|string} message The message to encrypt.
             * @param {string} password The password.
             * @param {Object} cfg (Optional) The configuration options to use for this operation.
             *
             * @return {CipherParams} A cipher params object.
             *
             * @static
             *
             * @example
             *
             *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');
             *     var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });
             */
            encrypt: function(cipher, message, password, cfg) {
              cfg = this.cfg.extend(cfg);
              var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, cfg.salt, cfg.hasher);
              cfg.iv = derivedParams.iv;
              var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);
              ciphertext.mixIn(derivedParams);
              return ciphertext;
            },
            /**
             * Decrypts serialized ciphertext using a password.
             *
             * @param {Cipher} cipher The cipher algorithm to use.
             * @param {CipherParams|string} ciphertext The ciphertext to decrypt.
             * @param {string} password The password.
             * @param {Object} cfg (Optional) The configuration options to use for this operation.
             *
             * @return {WordArray} The plaintext.
             *
             * @static
             *
             * @example
             *
             *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });
             *     var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });
             */
            decrypt: function(cipher, ciphertext, password, cfg) {
              cfg = this.cfg.extend(cfg);
              ciphertext = this._parse(ciphertext, cfg.format);
              var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt, cfg.hasher);
              cfg.iv = derivedParams.iv;
              var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);
              return plaintext;
            }
          });
        }();
      });
    })(cipherCore);
    return cipherCore.exports;
  }
  var modeCfb = { exports: {} };
  var hasRequiredModeCfb;
  function requireModeCfb() {
    if (hasRequiredModeCfb) return modeCfb.exports;
    hasRequiredModeCfb = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.mode.CFB = function() {
          var CFB = CryptoJS2.lib.BlockCipherMode.extend();
          CFB.Encryptor = CFB.extend({
            processBlock: function(words, offset) {
              var cipher = this._cipher;
              var blockSize = cipher.blockSize;
              generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
              this._prevBlock = words.slice(offset, offset + blockSize);
            }
          });
          CFB.Decryptor = CFB.extend({
            processBlock: function(words, offset) {
              var cipher = this._cipher;
              var blockSize = cipher.blockSize;
              var thisBlock = words.slice(offset, offset + blockSize);
              generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);
              this._prevBlock = thisBlock;
            }
          });
          function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {
            var keystream;
            var iv = this._iv;
            if (iv) {
              keystream = iv.slice(0);
              this._iv = void 0;
            } else {
              keystream = this._prevBlock;
            }
            cipher.encryptBlock(keystream, 0);
            for (var i = 0; i < blockSize; i++) {
              words[offset + i] ^= keystream[i];
            }
          }
          return CFB;
        }();
        return CryptoJS2.mode.CFB;
      });
    })(modeCfb);
    return modeCfb.exports;
  }
  var modeCtr = { exports: {} };
  var hasRequiredModeCtr;
  function requireModeCtr() {
    if (hasRequiredModeCtr) return modeCtr.exports;
    hasRequiredModeCtr = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.mode.CTR = function() {
          var CTR = CryptoJS2.lib.BlockCipherMode.extend();
          var Encryptor = CTR.Encryptor = CTR.extend({
            processBlock: function(words, offset) {
              var cipher = this._cipher;
              var blockSize = cipher.blockSize;
              var iv = this._iv;
              var counter = this._counter;
              if (iv) {
                counter = this._counter = iv.slice(0);
                this._iv = void 0;
              }
              var keystream = counter.slice(0);
              cipher.encryptBlock(keystream, 0);
              counter[blockSize - 1] = counter[blockSize - 1] + 1 | 0;
              for (var i = 0; i < blockSize; i++) {
                words[offset + i] ^= keystream[i];
              }
            }
          });
          CTR.Decryptor = Encryptor;
          return CTR;
        }();
        return CryptoJS2.mode.CTR;
      });
    })(modeCtr);
    return modeCtr.exports;
  }
  var modeCtrGladman = { exports: {} };
  var hasRequiredModeCtrGladman;
  function requireModeCtrGladman() {
    if (hasRequiredModeCtrGladman) return modeCtrGladman.exports;
    hasRequiredModeCtrGladman = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.mode.CTRGladman = function() {
          var CTRGladman = CryptoJS2.lib.BlockCipherMode.extend();
          function incWord(word) {
            if ((word >> 24 & 255) === 255) {
              var b1 = word >> 16 & 255;
              var b2 = word >> 8 & 255;
              var b3 = word & 255;
              if (b1 === 255) {
                b1 = 0;
                if (b2 === 255) {
                  b2 = 0;
                  if (b3 === 255) {
                    b3 = 0;
                  } else {
                    ++b3;
                  }
                } else {
                  ++b2;
                }
              } else {
                ++b1;
              }
              word = 0;
              word += b1 << 16;
              word += b2 << 8;
              word += b3;
            } else {
              word += 1 << 24;
            }
            return word;
          }
          function incCounter(counter) {
            if ((counter[0] = incWord(counter[0])) === 0) {
              counter[1] = incWord(counter[1]);
            }
            return counter;
          }
          var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({
            processBlock: function(words, offset) {
              var cipher = this._cipher;
              var blockSize = cipher.blockSize;
              var iv = this._iv;
              var counter = this._counter;
              if (iv) {
                counter = this._counter = iv.slice(0);
                this._iv = void 0;
              }
              incCounter(counter);
              var keystream = counter.slice(0);
              cipher.encryptBlock(keystream, 0);
              for (var i = 0; i < blockSize; i++) {
                words[offset + i] ^= keystream[i];
              }
            }
          });
          CTRGladman.Decryptor = Encryptor;
          return CTRGladman;
        }();
        return CryptoJS2.mode.CTRGladman;
      });
    })(modeCtrGladman);
    return modeCtrGladman.exports;
  }
  var modeOfb = { exports: {} };
  var hasRequiredModeOfb;
  function requireModeOfb() {
    if (hasRequiredModeOfb) return modeOfb.exports;
    hasRequiredModeOfb = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.mode.OFB = function() {
          var OFB = CryptoJS2.lib.BlockCipherMode.extend();
          var Encryptor = OFB.Encryptor = OFB.extend({
            processBlock: function(words, offset) {
              var cipher = this._cipher;
              var blockSize = cipher.blockSize;
              var iv = this._iv;
              var keystream = this._keystream;
              if (iv) {
                keystream = this._keystream = iv.slice(0);
                this._iv = void 0;
              }
              cipher.encryptBlock(keystream, 0);
              for (var i = 0; i < blockSize; i++) {
                words[offset + i] ^= keystream[i];
              }
            }
          });
          OFB.Decryptor = Encryptor;
          return OFB;
        }();
        return CryptoJS2.mode.OFB;
      });
    })(modeOfb);
    return modeOfb.exports;
  }
  var modeEcb = { exports: {} };
  var hasRequiredModeEcb;
  function requireModeEcb() {
    if (hasRequiredModeEcb) return modeEcb.exports;
    hasRequiredModeEcb = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.mode.ECB = function() {
          var ECB = CryptoJS2.lib.BlockCipherMode.extend();
          ECB.Encryptor = ECB.extend({
            processBlock: function(words, offset) {
              this._cipher.encryptBlock(words, offset);
            }
          });
          ECB.Decryptor = ECB.extend({
            processBlock: function(words, offset) {
              this._cipher.decryptBlock(words, offset);
            }
          });
          return ECB;
        }();
        return CryptoJS2.mode.ECB;
      });
    })(modeEcb);
    return modeEcb.exports;
  }
  var padAnsix923 = { exports: {} };
  var hasRequiredPadAnsix923;
  function requirePadAnsix923() {
    if (hasRequiredPadAnsix923) return padAnsix923.exports;
    hasRequiredPadAnsix923 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.pad.AnsiX923 = {
          pad: function(data, blockSize) {
            var dataSigBytes = data.sigBytes;
            var blockSizeBytes = blockSize * 4;
            var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;
            var lastBytePos = dataSigBytes + nPaddingBytes - 1;
            data.clamp();
            data.words[lastBytePos >>> 2] |= nPaddingBytes << 24 - lastBytePos % 4 * 8;
            data.sigBytes += nPaddingBytes;
          },
          unpad: function(data) {
            var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
            data.sigBytes -= nPaddingBytes;
          }
        };
        return CryptoJS2.pad.Ansix923;
      });
    })(padAnsix923);
    return padAnsix923.exports;
  }
  var padIso10126 = { exports: {} };
  var hasRequiredPadIso10126;
  function requirePadIso10126() {
    if (hasRequiredPadIso10126) return padIso10126.exports;
    hasRequiredPadIso10126 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.pad.Iso10126 = {
          pad: function(data, blockSize) {
            var blockSizeBytes = blockSize * 4;
            var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;
            data.concat(CryptoJS2.lib.WordArray.random(nPaddingBytes - 1)).concat(CryptoJS2.lib.WordArray.create([nPaddingBytes << 24], 1));
          },
          unpad: function(data) {
            var nPaddingBytes = data.words[data.sigBytes - 1 >>> 2] & 255;
            data.sigBytes -= nPaddingBytes;
          }
        };
        return CryptoJS2.pad.Iso10126;
      });
    })(padIso10126);
    return padIso10126.exports;
  }
  var padIso97971 = { exports: {} };
  var hasRequiredPadIso97971;
  function requirePadIso97971() {
    if (hasRequiredPadIso97971) return padIso97971.exports;
    hasRequiredPadIso97971 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.pad.Iso97971 = {
          pad: function(data, blockSize) {
            data.concat(CryptoJS2.lib.WordArray.create([2147483648], 1));
            CryptoJS2.pad.ZeroPadding.pad(data, blockSize);
          },
          unpad: function(data) {
            CryptoJS2.pad.ZeroPadding.unpad(data);
            data.sigBytes--;
          }
        };
        return CryptoJS2.pad.Iso97971;
      });
    })(padIso97971);
    return padIso97971.exports;
  }
  var padZeropadding = { exports: {} };
  var hasRequiredPadZeropadding;
  function requirePadZeropadding() {
    if (hasRequiredPadZeropadding) return padZeropadding.exports;
    hasRequiredPadZeropadding = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.pad.ZeroPadding = {
          pad: function(data, blockSize) {
            var blockSizeBytes = blockSize * 4;
            data.clamp();
            data.sigBytes += blockSizeBytes - (data.sigBytes % blockSizeBytes || blockSizeBytes);
          },
          unpad: function(data) {
            var dataWords = data.words;
            var i = data.sigBytes - 1;
            for (var i = data.sigBytes - 1; i >= 0; i--) {
              if (dataWords[i >>> 2] >>> 24 - i % 4 * 8 & 255) {
                data.sigBytes = i + 1;
                break;
              }
            }
          }
        };
        return CryptoJS2.pad.ZeroPadding;
      });
    })(padZeropadding);
    return padZeropadding.exports;
  }
  var padNopadding = { exports: {} };
  var hasRequiredPadNopadding;
  function requirePadNopadding() {
    if (hasRequiredPadNopadding) return padNopadding.exports;
    hasRequiredPadNopadding = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        CryptoJS2.pad.NoPadding = {
          pad: function() {
          },
          unpad: function() {
          }
        };
        return CryptoJS2.pad.NoPadding;
      });
    })(padNopadding);
    return padNopadding.exports;
  }
  var formatHex = { exports: {} };
  var hasRequiredFormatHex;
  function requireFormatHex() {
    if (hasRequiredFormatHex) return formatHex.exports;
    hasRequiredFormatHex = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function(undefined$1) {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var CipherParams = C_lib.CipherParams;
          var C_enc = C.enc;
          var Hex = C_enc.Hex;
          var C_format = C.format;
          C_format.Hex = {
            /**
             * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.
             *
             * @param {CipherParams} cipherParams The cipher params object.
             *
             * @return {string} The hexadecimally encoded string.
             *
             * @static
             *
             * @example
             *
             *     var hexString = CryptoJS.format.Hex.stringify(cipherParams);
             */
            stringify: function(cipherParams) {
              return cipherParams.ciphertext.toString(Hex);
            },
            /**
             * Converts a hexadecimally encoded ciphertext string to a cipher params object.
             *
             * @param {string} input The hexadecimally encoded string.
             *
             * @return {CipherParams} The cipher params object.
             *
             * @static
             *
             * @example
             *
             *     var cipherParams = CryptoJS.format.Hex.parse(hexString);
             */
            parse: function(input) {
              var ciphertext = Hex.parse(input);
              return CipherParams.create({ ciphertext });
            }
          };
        })();
        return CryptoJS2.format.Hex;
      });
    })(formatHex);
    return formatHex.exports;
  }
  var aes = { exports: {} };
  var hasRequiredAes;
  function requireAes() {
    if (hasRequiredAes) return aes.exports;
    hasRequiredAes = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var BlockCipher = C_lib.BlockCipher;
          var C_algo = C.algo;
          var SBOX = [];
          var INV_SBOX = [];
          var SUB_MIX_0 = [];
          var SUB_MIX_1 = [];
          var SUB_MIX_2 = [];
          var SUB_MIX_3 = [];
          var INV_SUB_MIX_0 = [];
          var INV_SUB_MIX_1 = [];
          var INV_SUB_MIX_2 = [];
          var INV_SUB_MIX_3 = [];
          (function() {
            var d = [];
            for (var i = 0; i < 256; i++) {
              if (i < 128) {
                d[i] = i << 1;
              } else {
                d[i] = i << 1 ^ 283;
              }
            }
            var x = 0;
            var xi = 0;
            for (var i = 0; i < 256; i++) {
              var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;
              sx = sx >>> 8 ^ sx & 255 ^ 99;
              SBOX[x] = sx;
              INV_SBOX[sx] = x;
              var x2 = d[x];
              var x4 = d[x2];
              var x8 = d[x4];
              var t = d[sx] * 257 ^ sx * 16843008;
              SUB_MIX_0[x] = t << 24 | t >>> 8;
              SUB_MIX_1[x] = t << 16 | t >>> 16;
              SUB_MIX_2[x] = t << 8 | t >>> 24;
              SUB_MIX_3[x] = t;
              var t = x8 * 16843009 ^ x4 * 65537 ^ x2 * 257 ^ x * 16843008;
              INV_SUB_MIX_0[sx] = t << 24 | t >>> 8;
              INV_SUB_MIX_1[sx] = t << 16 | t >>> 16;
              INV_SUB_MIX_2[sx] = t << 8 | t >>> 24;
              INV_SUB_MIX_3[sx] = t;
              if (!x) {
                x = xi = 1;
              } else {
                x = x2 ^ d[d[d[x8 ^ x2]]];
                xi ^= d[d[xi]];
              }
            }
          })();
          var RCON = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54];
          var AES = C_algo.AES = BlockCipher.extend({
            _doReset: function() {
              var t;
              if (this._nRounds && this._keyPriorReset === this._key) {
                return;
              }
              var key = this._keyPriorReset = this._key;
              var keyWords = key.words;
              var keySize = key.sigBytes / 4;
              var nRounds = this._nRounds = keySize + 6;
              var ksRows = (nRounds + 1) * 4;
              var keySchedule = this._keySchedule = [];
              for (var ksRow = 0; ksRow < ksRows; ksRow++) {
                if (ksRow < keySize) {
                  keySchedule[ksRow] = keyWords[ksRow];
                } else {
                  t = keySchedule[ksRow - 1];
                  if (!(ksRow % keySize)) {
                    t = t << 8 | t >>> 24;
                    t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 255] << 16 | SBOX[t >>> 8 & 255] << 8 | SBOX[t & 255];
                    t ^= RCON[ksRow / keySize | 0] << 24;
                  } else if (keySize > 6 && ksRow % keySize == 4) {
                    t = SBOX[t >>> 24] << 24 | SBOX[t >>> 16 & 255] << 16 | SBOX[t >>> 8 & 255] << 8 | SBOX[t & 255];
                  }
                  keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;
                }
              }
              var invKeySchedule = this._invKeySchedule = [];
              for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {
                var ksRow = ksRows - invKsRow;
                if (invKsRow % 4) {
                  var t = keySchedule[ksRow];
                } else {
                  var t = keySchedule[ksRow - 4];
                }
                if (invKsRow < 4 || ksRow <= 4) {
                  invKeySchedule[invKsRow] = t;
                } else {
                  invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[t >>> 16 & 255]] ^ INV_SUB_MIX_2[SBOX[t >>> 8 & 255]] ^ INV_SUB_MIX_3[SBOX[t & 255]];
                }
              }
            },
            encryptBlock: function(M, offset) {
              this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);
            },
            decryptBlock: function(M, offset) {
              var t = M[offset + 1];
              M[offset + 1] = M[offset + 3];
              M[offset + 3] = t;
              this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);
              var t = M[offset + 1];
              M[offset + 1] = M[offset + 3];
              M[offset + 3] = t;
            },
            _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_02, SUB_MIX_12, SUB_MIX_22, SUB_MIX_32, SBOX2) {
              var nRounds = this._nRounds;
              var s0 = M[offset] ^ keySchedule[0];
              var s1 = M[offset + 1] ^ keySchedule[1];
              var s2 = M[offset + 2] ^ keySchedule[2];
              var s3 = M[offset + 3] ^ keySchedule[3];
              var ksRow = 4;
              for (var round = 1; round < nRounds; round++) {
                var t0 = SUB_MIX_02[s0 >>> 24] ^ SUB_MIX_12[s1 >>> 16 & 255] ^ SUB_MIX_22[s2 >>> 8 & 255] ^ SUB_MIX_32[s3 & 255] ^ keySchedule[ksRow++];
                var t1 = SUB_MIX_02[s1 >>> 24] ^ SUB_MIX_12[s2 >>> 16 & 255] ^ SUB_MIX_22[s3 >>> 8 & 255] ^ SUB_MIX_32[s0 & 255] ^ keySchedule[ksRow++];
                var t2 = SUB_MIX_02[s2 >>> 24] ^ SUB_MIX_12[s3 >>> 16 & 255] ^ SUB_MIX_22[s0 >>> 8 & 255] ^ SUB_MIX_32[s1 & 255] ^ keySchedule[ksRow++];
                var t3 = SUB_MIX_02[s3 >>> 24] ^ SUB_MIX_12[s0 >>> 16 & 255] ^ SUB_MIX_22[s1 >>> 8 & 255] ^ SUB_MIX_32[s2 & 255] ^ keySchedule[ksRow++];
                s0 = t0;
                s1 = t1;
                s2 = t2;
                s3 = t3;
              }
              var t0 = (SBOX2[s0 >>> 24] << 24 | SBOX2[s1 >>> 16 & 255] << 16 | SBOX2[s2 >>> 8 & 255] << 8 | SBOX2[s3 & 255]) ^ keySchedule[ksRow++];
              var t1 = (SBOX2[s1 >>> 24] << 24 | SBOX2[s2 >>> 16 & 255] << 16 | SBOX2[s3 >>> 8 & 255] << 8 | SBOX2[s0 & 255]) ^ keySchedule[ksRow++];
              var t2 = (SBOX2[s2 >>> 24] << 24 | SBOX2[s3 >>> 16 & 255] << 16 | SBOX2[s0 >>> 8 & 255] << 8 | SBOX2[s1 & 255]) ^ keySchedule[ksRow++];
              var t3 = (SBOX2[s3 >>> 24] << 24 | SBOX2[s0 >>> 16 & 255] << 16 | SBOX2[s1 >>> 8 & 255] << 8 | SBOX2[s2 & 255]) ^ keySchedule[ksRow++];
              M[offset] = t0;
              M[offset + 1] = t1;
              M[offset + 2] = t2;
              M[offset + 3] = t3;
            },
            keySize: 256 / 32
          });
          C.AES = BlockCipher._createHelper(AES);
        })();
        return CryptoJS2.AES;
      });
    })(aes);
    return aes.exports;
  }
  var tripledes = { exports: {} };
  var hasRequiredTripledes;
  function requireTripledes() {
    if (hasRequiredTripledes) return tripledes.exports;
    hasRequiredTripledes = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var WordArray = C_lib.WordArray;
          var BlockCipher = C_lib.BlockCipher;
          var C_algo = C.algo;
          var PC1 = [
            57,
            49,
            41,
            33,
            25,
            17,
            9,
            1,
            58,
            50,
            42,
            34,
            26,
            18,
            10,
            2,
            59,
            51,
            43,
            35,
            27,
            19,
            11,
            3,
            60,
            52,
            44,
            36,
            63,
            55,
            47,
            39,
            31,
            23,
            15,
            7,
            62,
            54,
            46,
            38,
            30,
            22,
            14,
            6,
            61,
            53,
            45,
            37,
            29,
            21,
            13,
            5,
            28,
            20,
            12,
            4
          ];
          var PC2 = [
            14,
            17,
            11,
            24,
            1,
            5,
            3,
            28,
            15,
            6,
            21,
            10,
            23,
            19,
            12,
            4,
            26,
            8,
            16,
            7,
            27,
            20,
            13,
            2,
            41,
            52,
            31,
            37,
            47,
            55,
            30,
            40,
            51,
            45,
            33,
            48,
            44,
            49,
            39,
            56,
            34,
            53,
            46,
            42,
            50,
            36,
            29,
            32
          ];
          var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
          var SBOX_P = [
            {
              0: 8421888,
              268435456: 32768,
              536870912: 8421378,
              805306368: 2,
              1073741824: 512,
              1342177280: 8421890,
              1610612736: 8389122,
              1879048192: 8388608,
              2147483648: 514,
              2415919104: 8389120,
              2684354560: 33280,
              2952790016: 8421376,
              3221225472: 32770,
              3489660928: 8388610,
              3758096384: 0,
              4026531840: 33282,
              134217728: 0,
              402653184: 8421890,
              671088640: 33282,
              939524096: 32768,
              1207959552: 8421888,
              1476395008: 512,
              1744830464: 8421378,
              2013265920: 2,
              2281701376: 8389120,
              2550136832: 33280,
              2818572288: 8421376,
              3087007744: 8389122,
              3355443200: 8388610,
              3623878656: 32770,
              3892314112: 514,
              4160749568: 8388608,
              1: 32768,
              268435457: 2,
              536870913: 8421888,
              805306369: 8388608,
              1073741825: 8421378,
              1342177281: 33280,
              1610612737: 512,
              1879048193: 8389122,
              2147483649: 8421890,
              2415919105: 8421376,
              2684354561: 8388610,
              2952790017: 33282,
              3221225473: 514,
              3489660929: 8389120,
              3758096385: 32770,
              4026531841: 0,
              134217729: 8421890,
              402653185: 8421376,
              671088641: 8388608,
              939524097: 512,
              1207959553: 32768,
              1476395009: 8388610,
              1744830465: 2,
              2013265921: 33282,
              2281701377: 32770,
              2550136833: 8389122,
              2818572289: 514,
              3087007745: 8421888,
              3355443201: 8389120,
              3623878657: 0,
              3892314113: 33280,
              4160749569: 8421378
            },
            {
              0: 1074282512,
              16777216: 16384,
              33554432: 524288,
              50331648: 1074266128,
              67108864: 1073741840,
              83886080: 1074282496,
              100663296: 1073758208,
              117440512: 16,
              134217728: 540672,
              150994944: 1073758224,
              167772160: 1073741824,
              184549376: 540688,
              201326592: 524304,
              218103808: 0,
              234881024: 16400,
              251658240: 1074266112,
              8388608: 1073758208,
              25165824: 540688,
              41943040: 16,
              58720256: 1073758224,
              75497472: 1074282512,
              92274688: 1073741824,
              109051904: 524288,
              125829120: 1074266128,
              142606336: 524304,
              159383552: 0,
              176160768: 16384,
              192937984: 1074266112,
              209715200: 1073741840,
              226492416: 540672,
              243269632: 1074282496,
              260046848: 16400,
              268435456: 0,
              285212672: 1074266128,
              301989888: 1073758224,
              318767104: 1074282496,
              335544320: 1074266112,
              352321536: 16,
              369098752: 540688,
              385875968: 16384,
              402653184: 16400,
              419430400: 524288,
              436207616: 524304,
              452984832: 1073741840,
              469762048: 540672,
              486539264: 1073758208,
              503316480: 1073741824,
              520093696: 1074282512,
              276824064: 540688,
              293601280: 524288,
              310378496: 1074266112,
              327155712: 16384,
              343932928: 1073758208,
              360710144: 1074282512,
              377487360: 16,
              394264576: 1073741824,
              411041792: 1074282496,
              427819008: 1073741840,
              444596224: 1073758224,
              461373440: 524304,
              478150656: 0,
              494927872: 16400,
              511705088: 1074266128,
              528482304: 540672
            },
            {
              0: 260,
              1048576: 0,
              2097152: 67109120,
              3145728: 65796,
              4194304: 65540,
              5242880: 67108868,
              6291456: 67174660,
              7340032: 67174400,
              8388608: 67108864,
              9437184: 67174656,
              10485760: 65792,
              11534336: 67174404,
              12582912: 67109124,
              13631488: 65536,
              14680064: 4,
              15728640: 256,
              524288: 67174656,
              1572864: 67174404,
              2621440: 0,
              3670016: 67109120,
              4718592: 67108868,
              5767168: 65536,
              6815744: 65540,
              7864320: 260,
              8912896: 4,
              9961472: 256,
              11010048: 67174400,
              12058624: 65796,
              13107200: 65792,
              14155776: 67109124,
              15204352: 67174660,
              16252928: 67108864,
              16777216: 67174656,
              17825792: 65540,
              18874368: 65536,
              19922944: 67109120,
              20971520: 256,
              22020096: 67174660,
              23068672: 67108868,
              24117248: 0,
              25165824: 67109124,
              26214400: 67108864,
              27262976: 4,
              28311552: 65792,
              29360128: 67174400,
              30408704: 260,
              31457280: 65796,
              32505856: 67174404,
              17301504: 67108864,
              18350080: 260,
              19398656: 67174656,
              20447232: 0,
              21495808: 65540,
              22544384: 67109120,
              23592960: 256,
              24641536: 67174404,
              25690112: 65536,
              26738688: 67174660,
              27787264: 65796,
              28835840: 67108868,
              29884416: 67109124,
              30932992: 67174400,
              31981568: 4,
              33030144: 65792
            },
            {
              0: 2151682048,
              65536: 2147487808,
              131072: 4198464,
              196608: 2151677952,
              262144: 0,
              327680: 4198400,
              393216: 2147483712,
              458752: 4194368,
              524288: 2147483648,
              589824: 4194304,
              655360: 64,
              720896: 2147487744,
              786432: 2151678016,
              851968: 4160,
              917504: 4096,
              983040: 2151682112,
              32768: 2147487808,
              98304: 64,
              163840: 2151678016,
              229376: 2147487744,
              294912: 4198400,
              360448: 2151682112,
              425984: 0,
              491520: 2151677952,
              557056: 4096,
              622592: 2151682048,
              688128: 4194304,
              753664: 4160,
              819200: 2147483648,
              884736: 4194368,
              950272: 4198464,
              1015808: 2147483712,
              1048576: 4194368,
              1114112: 4198400,
              1179648: 2147483712,
              1245184: 0,
              1310720: 4160,
              1376256: 2151678016,
              1441792: 2151682048,
              1507328: 2147487808,
              1572864: 2151682112,
              1638400: 2147483648,
              1703936: 2151677952,
              1769472: 4198464,
              1835008: 2147487744,
              1900544: 4194304,
              1966080: 64,
              2031616: 4096,
              1081344: 2151677952,
              1146880: 2151682112,
              1212416: 0,
              1277952: 4198400,
              1343488: 4194368,
              1409024: 2147483648,
              1474560: 2147487808,
              1540096: 64,
              1605632: 2147483712,
              1671168: 4096,
              1736704: 2147487744,
              1802240: 2151678016,
              1867776: 4160,
              1933312: 2151682048,
              1998848: 4194304,
              2064384: 4198464
            },
            {
              0: 128,
              4096: 17039360,
              8192: 262144,
              12288: 536870912,
              16384: 537133184,
              20480: 16777344,
              24576: 553648256,
              28672: 262272,
              32768: 16777216,
              36864: 537133056,
              40960: 536871040,
              45056: 553910400,
              49152: 553910272,
              53248: 0,
              57344: 17039488,
              61440: 553648128,
              2048: 17039488,
              6144: 553648256,
              10240: 128,
              14336: 17039360,
              18432: 262144,
              22528: 537133184,
              26624: 553910272,
              30720: 536870912,
              34816: 537133056,
              38912: 0,
              43008: 553910400,
              47104: 16777344,
              51200: 536871040,
              55296: 553648128,
              59392: 16777216,
              63488: 262272,
              65536: 262144,
              69632: 128,
              73728: 536870912,
              77824: 553648256,
              81920: 16777344,
              86016: 553910272,
              90112: 537133184,
              94208: 16777216,
              98304: 553910400,
              102400: 553648128,
              106496: 17039360,
              110592: 537133056,
              114688: 262272,
              118784: 536871040,
              122880: 0,
              126976: 17039488,
              67584: 553648256,
              71680: 16777216,
              75776: 17039360,
              79872: 537133184,
              83968: 536870912,
              88064: 17039488,
              92160: 128,
              96256: 553910272,
              100352: 262272,
              104448: 553910400,
              108544: 0,
              112640: 553648128,
              116736: 16777344,
              120832: 262144,
              124928: 537133056,
              129024: 536871040
            },
            {
              0: 268435464,
              256: 8192,
              512: 270532608,
              768: 270540808,
              1024: 268443648,
              1280: 2097152,
              1536: 2097160,
              1792: 268435456,
              2048: 0,
              2304: 268443656,
              2560: 2105344,
              2816: 8,
              3072: 270532616,
              3328: 2105352,
              3584: 8200,
              3840: 270540800,
              128: 270532608,
              384: 270540808,
              640: 8,
              896: 2097152,
              1152: 2105352,
              1408: 268435464,
              1664: 268443648,
              1920: 8200,
              2176: 2097160,
              2432: 8192,
              2688: 268443656,
              2944: 270532616,
              3200: 0,
              3456: 270540800,
              3712: 2105344,
              3968: 268435456,
              4096: 268443648,
              4352: 270532616,
              4608: 270540808,
              4864: 8200,
              5120: 2097152,
              5376: 268435456,
              5632: 268435464,
              5888: 2105344,
              6144: 2105352,
              6400: 0,
              6656: 8,
              6912: 270532608,
              7168: 8192,
              7424: 268443656,
              7680: 270540800,
              7936: 2097160,
              4224: 8,
              4480: 2105344,
              4736: 2097152,
              4992: 268435464,
              5248: 268443648,
              5504: 8200,
              5760: 270540808,
              6016: 270532608,
              6272: 270540800,
              6528: 270532616,
              6784: 8192,
              7040: 2105352,
              7296: 2097160,
              7552: 0,
              7808: 268435456,
              8064: 268443656
            },
            {
              0: 1048576,
              16: 33555457,
              32: 1024,
              48: 1049601,
              64: 34604033,
              80: 0,
              96: 1,
              112: 34603009,
              128: 33555456,
              144: 1048577,
              160: 33554433,
              176: 34604032,
              192: 34603008,
              208: 1025,
              224: 1049600,
              240: 33554432,
              8: 34603009,
              24: 0,
              40: 33555457,
              56: 34604032,
              72: 1048576,
              88: 33554433,
              104: 33554432,
              120: 1025,
              136: 1049601,
              152: 33555456,
              168: 34603008,
              184: 1048577,
              200: 1024,
              216: 34604033,
              232: 1,
              248: 1049600,
              256: 33554432,
              272: 1048576,
              288: 33555457,
              304: 34603009,
              320: 1048577,
              336: 33555456,
              352: 34604032,
              368: 1049601,
              384: 1025,
              400: 34604033,
              416: 1049600,
              432: 1,
              448: 0,
              464: 34603008,
              480: 33554433,
              496: 1024,
              264: 1049600,
              280: 33555457,
              296: 34603009,
              312: 1,
              328: 33554432,
              344: 1048576,
              360: 1025,
              376: 34604032,
              392: 33554433,
              408: 34603008,
              424: 0,
              440: 34604033,
              456: 1049601,
              472: 1024,
              488: 33555456,
              504: 1048577
            },
            {
              0: 134219808,
              1: 131072,
              2: 134217728,
              3: 32,
              4: 131104,
              5: 134350880,
              6: 134350848,
              7: 2048,
              8: 134348800,
              9: 134219776,
              10: 133120,
              11: 134348832,
              12: 2080,
              13: 0,
              14: 134217760,
              15: 133152,
              2147483648: 2048,
              2147483649: 134350880,
              2147483650: 134219808,
              2147483651: 134217728,
              2147483652: 134348800,
              2147483653: 133120,
              2147483654: 133152,
              2147483655: 32,
              2147483656: 134217760,
              2147483657: 2080,
              2147483658: 131104,
              2147483659: 134350848,
              2147483660: 0,
              2147483661: 134348832,
              2147483662: 134219776,
              2147483663: 131072,
              16: 133152,
              17: 134350848,
              18: 32,
              19: 2048,
              20: 134219776,
              21: 134217760,
              22: 134348832,
              23: 131072,
              24: 0,
              25: 131104,
              26: 134348800,
              27: 134219808,
              28: 134350880,
              29: 133120,
              30: 2080,
              31: 134217728,
              2147483664: 131072,
              2147483665: 2048,
              2147483666: 134348832,
              2147483667: 133152,
              2147483668: 32,
              2147483669: 134348800,
              2147483670: 134217728,
              2147483671: 134219808,
              2147483672: 134350880,
              2147483673: 134217760,
              2147483674: 134219776,
              2147483675: 0,
              2147483676: 133120,
              2147483677: 2080,
              2147483678: 131104,
              2147483679: 134350848
            }
          ];
          var SBOX_MASK = [
            4160749569,
            528482304,
            33030144,
            2064384,
            129024,
            8064,
            504,
            2147483679
          ];
          var DES = C_algo.DES = BlockCipher.extend({
            _doReset: function() {
              var key = this._key;
              var keyWords = key.words;
              var keyBits = [];
              for (var i = 0; i < 56; i++) {
                var keyBitPos = PC1[i] - 1;
                keyBits[i] = keyWords[keyBitPos >>> 5] >>> 31 - keyBitPos % 32 & 1;
              }
              var subKeys = this._subKeys = [];
              for (var nSubKey = 0; nSubKey < 16; nSubKey++) {
                var subKey = subKeys[nSubKey] = [];
                var bitShift = BIT_SHIFTS[nSubKey];
                for (var i = 0; i < 24; i++) {
                  subKey[i / 6 | 0] |= keyBits[(PC2[i] - 1 + bitShift) % 28] << 31 - i % 6;
                  subKey[4 + (i / 6 | 0)] |= keyBits[28 + (PC2[i + 24] - 1 + bitShift) % 28] << 31 - i % 6;
                }
                subKey[0] = subKey[0] << 1 | subKey[0] >>> 31;
                for (var i = 1; i < 7; i++) {
                  subKey[i] = subKey[i] >>> (i - 1) * 4 + 3;
                }
                subKey[7] = subKey[7] << 5 | subKey[7] >>> 27;
              }
              var invSubKeys = this._invSubKeys = [];
              for (var i = 0; i < 16; i++) {
                invSubKeys[i] = subKeys[15 - i];
              }
            },
            encryptBlock: function(M, offset) {
              this._doCryptBlock(M, offset, this._subKeys);
            },
            decryptBlock: function(M, offset) {
              this._doCryptBlock(M, offset, this._invSubKeys);
            },
            _doCryptBlock: function(M, offset, subKeys) {
              this._lBlock = M[offset];
              this._rBlock = M[offset + 1];
              exchangeLR.call(this, 4, 252645135);
              exchangeLR.call(this, 16, 65535);
              exchangeRL.call(this, 2, 858993459);
              exchangeRL.call(this, 8, 16711935);
              exchangeLR.call(this, 1, 1431655765);
              for (var round = 0; round < 16; round++) {
                var subKey = subKeys[round];
                var lBlock = this._lBlock;
                var rBlock = this._rBlock;
                var f = 0;
                for (var i = 0; i < 8; i++) {
                  f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];
                }
                this._lBlock = rBlock;
                this._rBlock = lBlock ^ f;
              }
              var t = this._lBlock;
              this._lBlock = this._rBlock;
              this._rBlock = t;
              exchangeLR.call(this, 1, 1431655765);
              exchangeRL.call(this, 8, 16711935);
              exchangeRL.call(this, 2, 858993459);
              exchangeLR.call(this, 16, 65535);
              exchangeLR.call(this, 4, 252645135);
              M[offset] = this._lBlock;
              M[offset + 1] = this._rBlock;
            },
            keySize: 64 / 32,
            ivSize: 64 / 32,
            blockSize: 64 / 32
          });
          function exchangeLR(offset, mask) {
            var t = (this._lBlock >>> offset ^ this._rBlock) & mask;
            this._rBlock ^= t;
            this._lBlock ^= t << offset;
          }
          function exchangeRL(offset, mask) {
            var t = (this._rBlock >>> offset ^ this._lBlock) & mask;
            this._lBlock ^= t;
            this._rBlock ^= t << offset;
          }
          C.DES = BlockCipher._createHelper(DES);
          var TripleDES = C_algo.TripleDES = BlockCipher.extend({
            _doReset: function() {
              var key = this._key;
              var keyWords = key.words;
              if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {
                throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");
              }
              var key1 = keyWords.slice(0, 2);
              var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);
              var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);
              this._des1 = DES.createEncryptor(WordArray.create(key1));
              this._des2 = DES.createEncryptor(WordArray.create(key2));
              this._des3 = DES.createEncryptor(WordArray.create(key3));
            },
            encryptBlock: function(M, offset) {
              this._des1.encryptBlock(M, offset);
              this._des2.decryptBlock(M, offset);
              this._des3.encryptBlock(M, offset);
            },
            decryptBlock: function(M, offset) {
              this._des3.decryptBlock(M, offset);
              this._des2.encryptBlock(M, offset);
              this._des1.decryptBlock(M, offset);
            },
            keySize: 192 / 32,
            ivSize: 64 / 32,
            blockSize: 64 / 32
          });
          C.TripleDES = BlockCipher._createHelper(TripleDES);
        })();
        return CryptoJS2.TripleDES;
      });
    })(tripledes);
    return tripledes.exports;
  }
  var rc4 = { exports: {} };
  var hasRequiredRc4;
  function requireRc4() {
    if (hasRequiredRc4) return rc4.exports;
    hasRequiredRc4 = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var StreamCipher = C_lib.StreamCipher;
          var C_algo = C.algo;
          var RC4 = C_algo.RC4 = StreamCipher.extend({
            _doReset: function() {
              var key = this._key;
              var keyWords = key.words;
              var keySigBytes = key.sigBytes;
              var S = this._S = [];
              for (var i = 0; i < 256; i++) {
                S[i] = i;
              }
              for (var i = 0, j = 0; i < 256; i++) {
                var keyByteIndex = i % keySigBytes;
                var keyByte = keyWords[keyByteIndex >>> 2] >>> 24 - keyByteIndex % 4 * 8 & 255;
                j = (j + S[i] + keyByte) % 256;
                var t = S[i];
                S[i] = S[j];
                S[j] = t;
              }
              this._i = this._j = 0;
            },
            _doProcessBlock: function(M, offset) {
              M[offset] ^= generateKeystreamWord.call(this);
            },
            keySize: 256 / 32,
            ivSize: 0
          });
          function generateKeystreamWord() {
            var S = this._S;
            var i = this._i;
            var j = this._j;
            var keystreamWord = 0;
            for (var n = 0; n < 4; n++) {
              i = (i + 1) % 256;
              j = (j + S[i]) % 256;
              var t = S[i];
              S[i] = S[j];
              S[j] = t;
              keystreamWord |= S[(S[i] + S[j]) % 256] << 24 - n * 8;
            }
            this._i = i;
            this._j = j;
            return keystreamWord;
          }
          C.RC4 = StreamCipher._createHelper(RC4);
          var RC4Drop = C_algo.RC4Drop = RC4.extend({
            /**
             * Configuration options.
             *
             * @property {number} drop The number of keystream words to drop. Default 192
             */
            cfg: RC4.cfg.extend({
              drop: 192
            }),
            _doReset: function() {
              RC4._doReset.call(this);
              for (var i = this.cfg.drop; i > 0; i--) {
                generateKeystreamWord.call(this);
              }
            }
          });
          C.RC4Drop = StreamCipher._createHelper(RC4Drop);
        })();
        return CryptoJS2.RC4;
      });
    })(rc4);
    return rc4.exports;
  }
  var rabbit = { exports: {} };
  var hasRequiredRabbit;
  function requireRabbit() {
    if (hasRequiredRabbit) return rabbit.exports;
    hasRequiredRabbit = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var StreamCipher = C_lib.StreamCipher;
          var C_algo = C.algo;
          var S = [];
          var C_ = [];
          var G = [];
          var Rabbit = C_algo.Rabbit = StreamCipher.extend({
            _doReset: function() {
              var K = this._key.words;
              var iv = this.cfg.iv;
              for (var i = 0; i < 4; i++) {
                K[i] = (K[i] << 8 | K[i] >>> 24) & 16711935 | (K[i] << 24 | K[i] >>> 8) & 4278255360;
              }
              var X = this._X = [
                K[0],
                K[3] << 16 | K[2] >>> 16,
                K[1],
                K[0] << 16 | K[3] >>> 16,
                K[2],
                K[1] << 16 | K[0] >>> 16,
                K[3],
                K[2] << 16 | K[1] >>> 16
              ];
              var C2 = this._C = [
                K[2] << 16 | K[2] >>> 16,
                K[0] & 4294901760 | K[1] & 65535,
                K[3] << 16 | K[3] >>> 16,
                K[1] & 4294901760 | K[2] & 65535,
                K[0] << 16 | K[0] >>> 16,
                K[2] & 4294901760 | K[3] & 65535,
                K[1] << 16 | K[1] >>> 16,
                K[3] & 4294901760 | K[0] & 65535
              ];
              this._b = 0;
              for (var i = 0; i < 4; i++) {
                nextState.call(this);
              }
              for (var i = 0; i < 8; i++) {
                C2[i] ^= X[i + 4 & 7];
              }
              if (iv) {
                var IV = iv.words;
                var IV_0 = IV[0];
                var IV_1 = IV[1];
                var i0 = (IV_0 << 8 | IV_0 >>> 24) & 16711935 | (IV_0 << 24 | IV_0 >>> 8) & 4278255360;
                var i2 = (IV_1 << 8 | IV_1 >>> 24) & 16711935 | (IV_1 << 24 | IV_1 >>> 8) & 4278255360;
                var i1 = i0 >>> 16 | i2 & 4294901760;
                var i3 = i2 << 16 | i0 & 65535;
                C2[0] ^= i0;
                C2[1] ^= i1;
                C2[2] ^= i2;
                C2[3] ^= i3;
                C2[4] ^= i0;
                C2[5] ^= i1;
                C2[6] ^= i2;
                C2[7] ^= i3;
                for (var i = 0; i < 4; i++) {
                  nextState.call(this);
                }
              }
            },
            _doProcessBlock: function(M, offset) {
              var X = this._X;
              nextState.call(this);
              S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
              S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
              S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
              S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
              for (var i = 0; i < 4; i++) {
                S[i] = (S[i] << 8 | S[i] >>> 24) & 16711935 | (S[i] << 24 | S[i] >>> 8) & 4278255360;
                M[offset + i] ^= S[i];
              }
            },
            blockSize: 128 / 32,
            ivSize: 64 / 32
          });
          function nextState() {
            var X = this._X;
            var C2 = this._C;
            for (var i = 0; i < 8; i++) {
              C_[i] = C2[i];
            }
            C2[0] = C2[0] + 1295307597 + this._b | 0;
            C2[1] = C2[1] + 3545052371 + (C2[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
            C2[2] = C2[2] + 886263092 + (C2[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
            C2[3] = C2[3] + 1295307597 + (C2[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
            C2[4] = C2[4] + 3545052371 + (C2[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
            C2[5] = C2[5] + 886263092 + (C2[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
            C2[6] = C2[6] + 1295307597 + (C2[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
            C2[7] = C2[7] + 3545052371 + (C2[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
            this._b = C2[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
            for (var i = 0; i < 8; i++) {
              var gx = X[i] + C2[i];
              var ga = gx & 65535;
              var gb = gx >>> 16;
              var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
              var gl = ((gx & 4294901760) * gx | 0) + ((gx & 65535) * gx | 0);
              G[i] = gh ^ gl;
            }
            X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
            X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
            X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
            X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
            X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
            X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
            X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
            X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
          }
          C.Rabbit = StreamCipher._createHelper(Rabbit);
        })();
        return CryptoJS2.Rabbit;
      });
    })(rabbit);
    return rabbit.exports;
  }
  var rabbitLegacy = { exports: {} };
  var hasRequiredRabbitLegacy;
  function requireRabbitLegacy() {
    if (hasRequiredRabbitLegacy) return rabbitLegacy.exports;
    hasRequiredRabbitLegacy = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var StreamCipher = C_lib.StreamCipher;
          var C_algo = C.algo;
          var S = [];
          var C_ = [];
          var G = [];
          var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({
            _doReset: function() {
              var K = this._key.words;
              var iv = this.cfg.iv;
              var X = this._X = [
                K[0],
                K[3] << 16 | K[2] >>> 16,
                K[1],
                K[0] << 16 | K[3] >>> 16,
                K[2],
                K[1] << 16 | K[0] >>> 16,
                K[3],
                K[2] << 16 | K[1] >>> 16
              ];
              var C2 = this._C = [
                K[2] << 16 | K[2] >>> 16,
                K[0] & 4294901760 | K[1] & 65535,
                K[3] << 16 | K[3] >>> 16,
                K[1] & 4294901760 | K[2] & 65535,
                K[0] << 16 | K[0] >>> 16,
                K[2] & 4294901760 | K[3] & 65535,
                K[1] << 16 | K[1] >>> 16,
                K[3] & 4294901760 | K[0] & 65535
              ];
              this._b = 0;
              for (var i = 0; i < 4; i++) {
                nextState.call(this);
              }
              for (var i = 0; i < 8; i++) {
                C2[i] ^= X[i + 4 & 7];
              }
              if (iv) {
                var IV = iv.words;
                var IV_0 = IV[0];
                var IV_1 = IV[1];
                var i0 = (IV_0 << 8 | IV_0 >>> 24) & 16711935 | (IV_0 << 24 | IV_0 >>> 8) & 4278255360;
                var i2 = (IV_1 << 8 | IV_1 >>> 24) & 16711935 | (IV_1 << 24 | IV_1 >>> 8) & 4278255360;
                var i1 = i0 >>> 16 | i2 & 4294901760;
                var i3 = i2 << 16 | i0 & 65535;
                C2[0] ^= i0;
                C2[1] ^= i1;
                C2[2] ^= i2;
                C2[3] ^= i3;
                C2[4] ^= i0;
                C2[5] ^= i1;
                C2[6] ^= i2;
                C2[7] ^= i3;
                for (var i = 0; i < 4; i++) {
                  nextState.call(this);
                }
              }
            },
            _doProcessBlock: function(M, offset) {
              var X = this._X;
              nextState.call(this);
              S[0] = X[0] ^ X[5] >>> 16 ^ X[3] << 16;
              S[1] = X[2] ^ X[7] >>> 16 ^ X[5] << 16;
              S[2] = X[4] ^ X[1] >>> 16 ^ X[7] << 16;
              S[3] = X[6] ^ X[3] >>> 16 ^ X[1] << 16;
              for (var i = 0; i < 4; i++) {
                S[i] = (S[i] << 8 | S[i] >>> 24) & 16711935 | (S[i] << 24 | S[i] >>> 8) & 4278255360;
                M[offset + i] ^= S[i];
              }
            },
            blockSize: 128 / 32,
            ivSize: 64 / 32
          });
          function nextState() {
            var X = this._X;
            var C2 = this._C;
            for (var i = 0; i < 8; i++) {
              C_[i] = C2[i];
            }
            C2[0] = C2[0] + 1295307597 + this._b | 0;
            C2[1] = C2[1] + 3545052371 + (C2[0] >>> 0 < C_[0] >>> 0 ? 1 : 0) | 0;
            C2[2] = C2[2] + 886263092 + (C2[1] >>> 0 < C_[1] >>> 0 ? 1 : 0) | 0;
            C2[3] = C2[3] + 1295307597 + (C2[2] >>> 0 < C_[2] >>> 0 ? 1 : 0) | 0;
            C2[4] = C2[4] + 3545052371 + (C2[3] >>> 0 < C_[3] >>> 0 ? 1 : 0) | 0;
            C2[5] = C2[5] + 886263092 + (C2[4] >>> 0 < C_[4] >>> 0 ? 1 : 0) | 0;
            C2[6] = C2[6] + 1295307597 + (C2[5] >>> 0 < C_[5] >>> 0 ? 1 : 0) | 0;
            C2[7] = C2[7] + 3545052371 + (C2[6] >>> 0 < C_[6] >>> 0 ? 1 : 0) | 0;
            this._b = C2[7] >>> 0 < C_[7] >>> 0 ? 1 : 0;
            for (var i = 0; i < 8; i++) {
              var gx = X[i] + C2[i];
              var ga = gx & 65535;
              var gb = gx >>> 16;
              var gh = ((ga * ga >>> 17) + ga * gb >>> 15) + gb * gb;
              var gl = ((gx & 4294901760) * gx | 0) + ((gx & 65535) * gx | 0);
              G[i] = gh ^ gl;
            }
            X[0] = G[0] + (G[7] << 16 | G[7] >>> 16) + (G[6] << 16 | G[6] >>> 16) | 0;
            X[1] = G[1] + (G[0] << 8 | G[0] >>> 24) + G[7] | 0;
            X[2] = G[2] + (G[1] << 16 | G[1] >>> 16) + (G[0] << 16 | G[0] >>> 16) | 0;
            X[3] = G[3] + (G[2] << 8 | G[2] >>> 24) + G[1] | 0;
            X[4] = G[4] + (G[3] << 16 | G[3] >>> 16) + (G[2] << 16 | G[2] >>> 16) | 0;
            X[5] = G[5] + (G[4] << 8 | G[4] >>> 24) + G[3] | 0;
            X[6] = G[6] + (G[5] << 16 | G[5] >>> 16) + (G[4] << 16 | G[4] >>> 16) | 0;
            X[7] = G[7] + (G[6] << 8 | G[6] >>> 24) + G[5] | 0;
          }
          C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);
        })();
        return CryptoJS2.RabbitLegacy;
      });
    })(rabbitLegacy);
    return rabbitLegacy.exports;
  }
  var blowfish = { exports: {} };
  var hasRequiredBlowfish;
  function requireBlowfish() {
    if (hasRequiredBlowfish) return blowfish.exports;
    hasRequiredBlowfish = 1;
    (function(module, exports) {
      (function(root, factory, undef) {
        {
          module.exports = factory(requireCore(), requireEncBase64(), requireMd5(), requireEvpkdf(), requireCipherCore());
        }
      })(commonjsGlobal, function(CryptoJS2) {
        (function() {
          var C = CryptoJS2;
          var C_lib = C.lib;
          var BlockCipher = C_lib.BlockCipher;
          var C_algo = C.algo;
          const N = 16;
          const ORIG_P = [
            608135816,
            2242054355,
            320440878,
            57701188,
            2752067618,
            698298832,
            137296536,
            3964562569,
            1160258022,
            953160567,
            3193202383,
            887688300,
            3232508343,
            3380367581,
            1065670069,
            3041331479,
            2450970073,
            2306472731
          ];
          const ORIG_S = [
            [
              3509652390,
              2564797868,
              805139163,
              3491422135,
              3101798381,
              1780907670,
              3128725573,
              4046225305,
              614570311,
              3012652279,
              134345442,
              2240740374,
              1667834072,
              1901547113,
              2757295779,
              4103290238,
              227898511,
              1921955416,
              1904987480,
              2182433518,
              2069144605,
              3260701109,
              2620446009,
              720527379,
              3318853667,
              677414384,
              3393288472,
              3101374703,
              2390351024,
              1614419982,
              1822297739,
              2954791486,
              3608508353,
              3174124327,
              2024746970,
              1432378464,
              3864339955,
              2857741204,
              1464375394,
              1676153920,
              1439316330,
              715854006,
              3033291828,
              289532110,
              2706671279,
              2087905683,
              3018724369,
              1668267050,
              732546397,
              1947742710,
              3462151702,
              2609353502,
              2950085171,
              1814351708,
              2050118529,
              680887927,
              999245976,
              1800124847,
              3300911131,
              1713906067,
              1641548236,
              4213287313,
              1216130144,
              1575780402,
              4018429277,
              3917837745,
              3693486850,
              3949271944,
              596196993,
              3549867205,
              258830323,
              2213823033,
              772490370,
              2760122372,
              1774776394,
              2652871518,
              566650946,
              4142492826,
              1728879713,
              2882767088,
              1783734482,
              3629395816,
              2517608232,
              2874225571,
              1861159788,
              326777828,
              3124490320,
              2130389656,
              2716951837,
              967770486,
              1724537150,
              2185432712,
              2364442137,
              1164943284,
              2105845187,
              998989502,
              3765401048,
              2244026483,
              1075463327,
              1455516326,
              1322494562,
              910128902,
              469688178,
              1117454909,
              936433444,
              3490320968,
              3675253459,
              1240580251,
              122909385,
              2157517691,
              634681816,
              4142456567,
              3825094682,
              3061402683,
              2540495037,
              79693498,
              3249098678,
              1084186820,
              1583128258,
              426386531,
              1761308591,
              1047286709,
              322548459,
              995290223,
              1845252383,
              2603652396,
              3431023940,
              2942221577,
              3202600964,
              3727903485,
              1712269319,
              422464435,
              3234572375,
              1170764815,
              3523960633,
              3117677531,
              1434042557,
              442511882,
              3600875718,
              1076654713,
              1738483198,
              4213154764,
              2393238008,
              3677496056,
              1014306527,
              4251020053,
              793779912,
              2902807211,
              842905082,
              4246964064,
              1395751752,
              1040244610,
              2656851899,
              3396308128,
              445077038,
              3742853595,
              3577915638,
              679411651,
              2892444358,
              2354009459,
              1767581616,
              3150600392,
              3791627101,
              3102740896,
              284835224,
              4246832056,
              1258075500,
              768725851,
              2589189241,
              3069724005,
              3532540348,
              1274779536,
              3789419226,
              2764799539,
              1660621633,
              3471099624,
              4011903706,
              913787905,
              3497959166,
              737222580,
              2514213453,
              2928710040,
              3937242737,
              1804850592,
              3499020752,
              2949064160,
              2386320175,
              2390070455,
              2415321851,
              4061277028,
              2290661394,
              2416832540,
              1336762016,
              1754252060,
              3520065937,
              3014181293,
              791618072,
              3188594551,
              3933548030,
              2332172193,
              3852520463,
              3043980520,
              413987798,
              3465142937,
              3030929376,
              4245938359,
              2093235073,
              3534596313,
              375366246,
              2157278981,
              2479649556,
              555357303,
              3870105701,
              2008414854,
              3344188149,
              4221384143,
              3956125452,
              2067696032,
              3594591187,
              2921233993,
              2428461,
              544322398,
              577241275,
              1471733935,
              610547355,
              4027169054,
              1432588573,
              1507829418,
              2025931657,
              3646575487,
              545086370,
              48609733,
              2200306550,
              1653985193,
              298326376,
              1316178497,
              3007786442,
              2064951626,
              458293330,
              2589141269,
              3591329599,
              3164325604,
              727753846,
              2179363840,
              146436021,
              1461446943,
              4069977195,
              705550613,
              3059967265,
              3887724982,
              4281599278,
              3313849956,
              1404054877,
              2845806497,
              146425753,
              1854211946
            ],
            [
              1266315497,
              3048417604,
              3681880366,
              3289982499,
              290971e4,
              1235738493,
              2632868024,
              2414719590,
              3970600049,
              1771706367,
              1449415276,
              3266420449,
              422970021,
              1963543593,
              2690192192,
              3826793022,
              1062508698,
              1531092325,
              1804592342,
              2583117782,
              2714934279,
              4024971509,
              1294809318,
              4028980673,
              1289560198,
              2221992742,
              1669523910,
              35572830,
              157838143,
              1052438473,
              1016535060,
              1802137761,
              1753167236,
              1386275462,
              3080475397,
              2857371447,
              1040679964,
              2145300060,
              2390574316,
              1461121720,
              2956646967,
              4031777805,
              4028374788,
              33600511,
              2920084762,
              1018524850,
              629373528,
              3691585981,
              3515945977,
              2091462646,
              2486323059,
              586499841,
              988145025,
              935516892,
              3367335476,
              2599673255,
              2839830854,
              265290510,
              3972581182,
              2759138881,
              3795373465,
              1005194799,
              847297441,
              406762289,
              1314163512,
              1332590856,
              1866599683,
              4127851711,
              750260880,
              613907577,
              1450815602,
              3165620655,
              3734664991,
              3650291728,
              3012275730,
              3704569646,
              1427272223,
              778793252,
              1343938022,
              2676280711,
              2052605720,
              1946737175,
              3164576444,
              3914038668,
              3967478842,
              3682934266,
              1661551462,
              3294938066,
              4011595847,
              840292616,
              3712170807,
              616741398,
              312560963,
              711312465,
              1351876610,
              322626781,
              1910503582,
              271666773,
              2175563734,
              1594956187,
              70604529,
              3617834859,
              1007753275,
              1495573769,
              4069517037,
              2549218298,
              2663038764,
              504708206,
              2263041392,
              3941167025,
              2249088522,
              1514023603,
              1998579484,
              1312622330,
              694541497,
              2582060303,
              2151582166,
              1382467621,
              776784248,
              2618340202,
              3323268794,
              2497899128,
              2784771155,
              503983604,
              4076293799,
              907881277,
              423175695,
              432175456,
              1378068232,
              4145222326,
              3954048622,
              3938656102,
              3820766613,
              2793130115,
              2977904593,
              26017576,
              3274890735,
              3194772133,
              1700274565,
              1756076034,
              4006520079,
              3677328699,
              720338349,
              1533947780,
              354530856,
              688349552,
              3973924725,
              1637815568,
              332179504,
              3949051286,
              53804574,
              2852348879,
              3044236432,
              1282449977,
              3583942155,
              3416972820,
              4006381244,
              1617046695,
              2628476075,
              3002303598,
              1686838959,
              431878346,
              2686675385,
              1700445008,
              1080580658,
              1009431731,
              832498133,
              3223435511,
              2605976345,
              2271191193,
              2516031870,
              1648197032,
              4164389018,
              2548247927,
              300782431,
              375919233,
              238389289,
              3353747414,
              2531188641,
              2019080857,
              1475708069,
              455242339,
              2609103871,
              448939670,
              3451063019,
              1395535956,
              2413381860,
              1841049896,
              1491858159,
              885456874,
              4264095073,
              4001119347,
              1565136089,
              3898914787,
              1108368660,
              540939232,
              1173283510,
              2745871338,
              3681308437,
              4207628240,
              3343053890,
              4016749493,
              1699691293,
              1103962373,
              3625875870,
              2256883143,
              3830138730,
              1031889488,
              3479347698,
              1535977030,
              4236805024,
              3251091107,
              2132092099,
              1774941330,
              1199868427,
              1452454533,
              157007616,
              2904115357,
              342012276,
              595725824,
              1480756522,
              206960106,
              497939518,
              591360097,
              863170706,
              2375253569,
              3596610801,
              1814182875,
              2094937945,
              3421402208,
              1082520231,
              3463918190,
              2785509508,
              435703966,
              3908032597,
              1641649973,
              2842273706,
              3305899714,
              1510255612,
              2148256476,
              2655287854,
              3276092548,
              4258621189,
              236887753,
              3681803219,
              274041037,
              1734335097,
              3815195456,
              3317970021,
              1899903192,
              1026095262,
              4050517792,
              356393447,
              2410691914,
              3873677099,
              3682840055
            ],
            [
              3913112168,
              2491498743,
              4132185628,
              2489919796,
              1091903735,
              1979897079,
              3170134830,
              3567386728,
              3557303409,
              857797738,
              1136121015,
              1342202287,
              507115054,
              2535736646,
              337727348,
              3213592640,
              1301675037,
              2528481711,
              1895095763,
              1721773893,
              3216771564,
              62756741,
              2142006736,
              835421444,
              2531993523,
              1442658625,
              3659876326,
              2882144922,
              676362277,
              1392781812,
              170690266,
              3921047035,
              1759253602,
              3611846912,
              1745797284,
              664899054,
              1329594018,
              3901205900,
              3045908486,
              2062866102,
              2865634940,
              3543621612,
              3464012697,
              1080764994,
              553557557,
              3656615353,
              3996768171,
              991055499,
              499776247,
              1265440854,
              648242737,
              3940784050,
              980351604,
              3713745714,
              1749149687,
              3396870395,
              4211799374,
              3640570775,
              1161844396,
              3125318951,
              1431517754,
              545492359,
              4268468663,
              3499529547,
              1437099964,
              2702547544,
              3433638243,
              2581715763,
              2787789398,
              1060185593,
              1593081372,
              2418618748,
              4260947970,
              69676912,
              2159744348,
              86519011,
              2512459080,
              3838209314,
              1220612927,
              3339683548,
              133810670,
              1090789135,
              1078426020,
              1569222167,
              845107691,
              3583754449,
              4072456591,
              1091646820,
              628848692,
              1613405280,
              3757631651,
              526609435,
              236106946,
              48312990,
              2942717905,
              3402727701,
              1797494240,
              859738849,
              992217954,
              4005476642,
              2243076622,
              3870952857,
              3732016268,
              765654824,
              3490871365,
              2511836413,
              1685915746,
              3888969200,
              1414112111,
              2273134842,
              3281911079,
              4080962846,
              172450625,
              2569994100,
              980381355,
              4109958455,
              2819808352,
              2716589560,
              2568741196,
              3681446669,
              3329971472,
              1835478071,
              660984891,
              3704678404,
              4045999559,
              3422617507,
              3040415634,
              1762651403,
              1719377915,
              3470491036,
              2693910283,
              3642056355,
              3138596744,
              1364962596,
              2073328063,
              1983633131,
              926494387,
              3423689081,
              2150032023,
              4096667949,
              1749200295,
              3328846651,
              309677260,
              2016342300,
              1779581495,
              3079819751,
              111262694,
              1274766160,
              443224088,
              298511866,
              1025883608,
              3806446537,
              1145181785,
              168956806,
              3641502830,
              3584813610,
              1689216846,
              3666258015,
              3200248200,
              1692713982,
              2646376535,
              4042768518,
              1618508792,
              1610833997,
              3523052358,
              4130873264,
              2001055236,
              3610705100,
              2202168115,
              4028541809,
              2961195399,
              1006657119,
              2006996926,
              3186142756,
              1430667929,
              3210227297,
              1314452623,
              4074634658,
              4101304120,
              2273951170,
              1399257539,
              3367210612,
              3027628629,
              1190975929,
              2062231137,
              2333990788,
              2221543033,
              2438960610,
              1181637006,
              548689776,
              2362791313,
              3372408396,
              3104550113,
              3145860560,
              296247880,
              1970579870,
              3078560182,
              3769228297,
              1714227617,
              3291629107,
              3898220290,
              166772364,
              1251581989,
              493813264,
              448347421,
              195405023,
              2709975567,
              677966185,
              3703036547,
              1463355134,
              2715995803,
              1338867538,
              1343315457,
              2802222074,
              2684532164,
              233230375,
              2599980071,
              2000651841,
              3277868038,
              1638401717,
              4028070440,
              3237316320,
              6314154,
              819756386,
              300326615,
              590932579,
              1405279636,
              3267499572,
              3150704214,
              2428286686,
              3959192993,
              3461946742,
              1862657033,
              1266418056,
              963775037,
              2089974820,
              2263052895,
              1917689273,
              448879540,
              3550394620,
              3981727096,
              150775221,
              3627908307,
              1303187396,
              508620638,
              2975983352,
              2726630617,
              1817252668,
              1876281319,
              1457606340,
              908771278,
              3720792119,
              3617206836,
              2455994898,
              1729034894,
              1080033504
            ],
            [
              976866871,
              3556439503,
              2881648439,
              1522871579,
              1555064734,
              1336096578,
              3548522304,
              2579274686,
              3574697629,
              3205460757,
              3593280638,
              3338716283,
              3079412587,
              564236357,
              2993598910,
              1781952180,
              1464380207,
              3163844217,
              3332601554,
              1699332808,
              1393555694,
              1183702653,
              3581086237,
              1288719814,
              691649499,
              2847557200,
              2895455976,
              3193889540,
              2717570544,
              1781354906,
              1676643554,
              2592534050,
              3230253752,
              1126444790,
              2770207658,
              2633158820,
              2210423226,
              2615765581,
              2414155088,
              3127139286,
              673620729,
              2805611233,
              1269405062,
              4015350505,
              3341807571,
              4149409754,
              1057255273,
              2012875353,
              2162469141,
              2276492801,
              2601117357,
              993977747,
              3918593370,
              2654263191,
              753973209,
              36408145,
              2530585658,
              25011837,
              3520020182,
              2088578344,
              530523599,
              2918365339,
              1524020338,
              1518925132,
              3760827505,
              3759777254,
              1202760957,
              3985898139,
              3906192525,
              674977740,
              4174734889,
              2031300136,
              2019492241,
              3983892565,
              4153806404,
              3822280332,
              352677332,
              2297720250,
              60907813,
              90501309,
              3286998549,
              1016092578,
              2535922412,
              2839152426,
              457141659,
              509813237,
              4120667899,
              652014361,
              1966332200,
              2975202805,
              55981186,
              2327461051,
              676427537,
              3255491064,
              2882294119,
              3433927263,
              1307055953,
              942726286,
              933058658,
              2468411793,
              3933900994,
              4215176142,
              1361170020,
              2001714738,
              2830558078,
              3274259782,
              1222529897,
              1679025792,
              2729314320,
              3714953764,
              1770335741,
              151462246,
              3013232138,
              1682292957,
              1483529935,
              471910574,
              1539241949,
              458788160,
              3436315007,
              1807016891,
              3718408830,
              978976581,
              1043663428,
              3165965781,
              1927990952,
              4200891579,
              2372276910,
              3208408903,
              3533431907,
              1412390302,
              2931980059,
              4132332400,
              1947078029,
              3881505623,
              4168226417,
              2941484381,
              1077988104,
              1320477388,
              886195818,
              18198404,
              3786409e3,
              2509781533,
              112762804,
              3463356488,
              1866414978,
              891333506,
              18488651,
              661792760,
              1628790961,
              3885187036,
              3141171499,
              876946877,
              2693282273,
              1372485963,
              791857591,
              2686433993,
              3759982718,
              3167212022,
              3472953795,
              2716379847,
              445679433,
              3561995674,
              3504004811,
              3574258232,
              54117162,
              3331405415,
              2381918588,
              3769707343,
              4154350007,
              1140177722,
              4074052095,
              668550556,
              3214352940,
              367459370,
              261225585,
              2610173221,
              4209349473,
              3468074219,
              3265815641,
              314222801,
              3066103646,
              3808782860,
              282218597,
              3406013506,
              3773591054,
              379116347,
              1285071038,
              846784868,
              2669647154,
              3771962079,
              3550491691,
              2305946142,
              453669953,
              1268987020,
              3317592352,
              3279303384,
              3744833421,
              2610507566,
              3859509063,
              266596637,
              3847019092,
              517658769,
              3462560207,
              3443424879,
              370717030,
              4247526661,
              2224018117,
              4143653529,
              4112773975,
              2788324899,
              2477274417,
              1456262402,
              2901442914,
              1517677493,
              1846949527,
              2295493580,
              3734397586,
              2176403920,
              1280348187,
              1908823572,
              3871786941,
              846861322,
              1172426758,
              3287448474,
              3383383037,
              1655181056,
              3139813346,
              901632758,
              1897031941,
              2986607138,
              3066810236,
              3447102507,
              1393639104,
              373351379,
              950779232,
              625454576,
              3124240540,
              4148612726,
              2007998917,
              544563296,
              2244738638,
              2330496472,
              2058025392,
              1291430526,
              424198748,
              50039436,
              29584100,
              3605783033,
              2429876329,
              2791104160,
              1057563949,
              3255363231,
              3075367218,
              3463963227,
              1469046755,
              985887462
            ]
          ];
          var BLOWFISH_CTX = {
            pbox: [],
            sbox: []
          };
          function F(ctx, x) {
            let a = x >> 24 & 255;
            let b = x >> 16 & 255;
            let c = x >> 8 & 255;
            let d = x & 255;
            let y = ctx.sbox[0][a] + ctx.sbox[1][b];
            y = y ^ ctx.sbox[2][c];
            y = y + ctx.sbox[3][d];
            return y;
          }
          function BlowFish_Encrypt(ctx, left, right) {
            let Xl = left;
            let Xr = right;
            let temp;
            for (let i = 0; i < N; ++i) {
              Xl = Xl ^ ctx.pbox[i];
              Xr = F(ctx, Xl) ^ Xr;
              temp = Xl;
              Xl = Xr;
              Xr = temp;
            }
            temp = Xl;
            Xl = Xr;
            Xr = temp;
            Xr = Xr ^ ctx.pbox[N];
            Xl = Xl ^ ctx.pbox[N + 1];
            return { left: Xl, right: Xr };
          }
          function BlowFish_Decrypt(ctx, left, right) {
            let Xl = left;
            let Xr = right;
            let temp;
            for (let i = N + 1; i > 1; --i) {
              Xl = Xl ^ ctx.pbox[i];
              Xr = F(ctx, Xl) ^ Xr;
              temp = Xl;
              Xl = Xr;
              Xr = temp;
            }
            temp = Xl;
            Xl = Xr;
            Xr = temp;
            Xr = Xr ^ ctx.pbox[1];
            Xl = Xl ^ ctx.pbox[0];
            return { left: Xl, right: Xr };
          }
          function BlowFishInit(ctx, key, keysize) {
            for (let Row = 0; Row < 4; Row++) {
              ctx.sbox[Row] = [];
              for (let Col = 0; Col < 256; Col++) {
                ctx.sbox[Row][Col] = ORIG_S[Row][Col];
              }
            }
            let keyIndex = 0;
            for (let index = 0; index < N + 2; index++) {
              ctx.pbox[index] = ORIG_P[index] ^ key[keyIndex];
              keyIndex++;
              if (keyIndex >= keysize) {
                keyIndex = 0;
              }
            }
            let Data1 = 0;
            let Data2 = 0;
            let res = 0;
            for (let i = 0; i < N + 2; i += 2) {
              res = BlowFish_Encrypt(ctx, Data1, Data2);
              Data1 = res.left;
              Data2 = res.right;
              ctx.pbox[i] = Data1;
              ctx.pbox[i + 1] = Data2;
            }
            for (let i = 0; i < 4; i++) {
              for (let j = 0; j < 256; j += 2) {
                res = BlowFish_Encrypt(ctx, Data1, Data2);
                Data1 = res.left;
                Data2 = res.right;
                ctx.sbox[i][j] = Data1;
                ctx.sbox[i][j + 1] = Data2;
              }
            }
            return true;
          }
          var Blowfish = C_algo.Blowfish = BlockCipher.extend({
            _doReset: function() {
              if (this._keyPriorReset === this._key) {
                return;
              }
              var key = this._keyPriorReset = this._key;
              var keyWords = key.words;
              var keySize = key.sigBytes / 4;
              BlowFishInit(BLOWFISH_CTX, keyWords, keySize);
            },
            encryptBlock: function(M, offset) {
              var res = BlowFish_Encrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);
              M[offset] = res.left;
              M[offset + 1] = res.right;
            },
            decryptBlock: function(M, offset) {
              var res = BlowFish_Decrypt(BLOWFISH_CTX, M[offset], M[offset + 1]);
              M[offset] = res.left;
              M[offset + 1] = res.right;
            },
            blockSize: 64 / 32,
            keySize: 128 / 32,
            ivSize: 64 / 32
          });
          C.Blowfish = BlockCipher._createHelper(Blowfish);
        })();
        return CryptoJS2.Blowfish;
      });
    })(blowfish);
    return blowfish.exports;
  }
  (function(module, exports) {
    (function(root, factory, undef) {
      {
        module.exports = factory(requireCore(), requireX64Core(), requireLibTypedarrays(), requireEncUtf16(), requireEncBase64(), requireEncBase64url(), requireMd5(), requireSha1(), requireSha256(), requireSha224(), requireSha512(), requireSha384(), requireSha3(), requireRipemd160(), requireHmac(), requirePbkdf2(), requireEvpkdf(), requireCipherCore(), requireModeCfb(), requireModeCtr(), requireModeCtrGladman(), requireModeOfb(), requireModeEcb(), requirePadAnsix923(), requirePadIso10126(), requirePadIso97971(), requirePadZeropadding(), requirePadNopadding(), requireFormatHex(), requireAes(), requireTripledes(), requireRc4(), requireRabbit(), requireRabbitLegacy(), requireBlowfish());
      }
    })(commonjsGlobal, function(CryptoJS2) {
      return CryptoJS2;
    });
  })(cryptoJs);
  var cryptoJsExports = cryptoJs.exports;
  const CryptoJS = /* @__PURE__ */ getDefaultExportFromCjs(cryptoJsExports);
  const Z_FIXED$1 = 4;
  const Z_BINARY = 0;
  const Z_TEXT = 1;
  const Z_UNKNOWN$1 = 2;
  function zero$1(buf) {
    let len = buf.length;
    while (--len >= 0) {
      buf[len] = 0;
    }
  }
  const STORED_BLOCK = 0;
  const STATIC_TREES = 1;
  const DYN_TREES = 2;
  const MIN_MATCH$1 = 3;
  const MAX_MATCH$1 = 258;
  const LENGTH_CODES$1 = 29;
  const LITERALS$1 = 256;
  const L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;
  const D_CODES$1 = 30;
  const BL_CODES$1 = 19;
  const HEAP_SIZE$1 = 2 * L_CODES$1 + 1;
  const MAX_BITS$1 = 15;
  const Buf_size = 16;
  const MAX_BL_BITS = 7;
  const END_BLOCK = 256;
  const REP_3_6 = 16;
  const REPZ_3_10 = 17;
  const REPZ_11_138 = 18;
  const extra_lbits = (
    /* extra bits for each length code */
    new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0])
  );
  const extra_dbits = (
    /* extra bits for each distance code */
    new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13])
  );
  const extra_blbits = (
    /* extra bits for each bit length code */
    new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7])
  );
  const bl_order = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
  const DIST_CODE_LEN = 512;
  const static_ltree = new Array((L_CODES$1 + 2) * 2);
  zero$1(static_ltree);
  const static_dtree = new Array(D_CODES$1 * 2);
  zero$1(static_dtree);
  const _dist_code = new Array(DIST_CODE_LEN);
  zero$1(_dist_code);
  const _length_code = new Array(MAX_MATCH$1 - MIN_MATCH$1 + 1);
  zero$1(_length_code);
  const base_length = new Array(LENGTH_CODES$1);
  zero$1(base_length);
  const base_dist = new Array(D_CODES$1);
  zero$1(base_dist);
  function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {
    this.static_tree = static_tree;
    this.extra_bits = extra_bits;
    this.extra_base = extra_base;
    this.elems = elems;
    this.max_length = max_length;
    this.has_stree = static_tree && static_tree.length;
  }
  let static_l_desc;
  let static_d_desc;
  let static_bl_desc;
  function TreeDesc(dyn_tree, stat_desc) {
    this.dyn_tree = dyn_tree;
    this.max_code = 0;
    this.stat_desc = stat_desc;
  }
  const d_code = (dist) => {
    return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
  };
  const put_short = (s, w) => {
    s.pending_buf[s.pending++] = w & 255;
    s.pending_buf[s.pending++] = w >>> 8 & 255;
  };
  const send_bits = (s, value, length) => {
    if (s.bi_valid > Buf_size - length) {
      s.bi_buf |= value << s.bi_valid & 65535;
      put_short(s, s.bi_buf);
      s.bi_buf = value >> Buf_size - s.bi_valid;
      s.bi_valid += length - Buf_size;
    } else {
      s.bi_buf |= value << s.bi_valid & 65535;
      s.bi_valid += length;
    }
  };
  const send_code = (s, c, tree) => {
    send_bits(
      s,
      tree[c * 2],
      tree[c * 2 + 1]
      /*.Len*/
    );
  };
  const bi_reverse = (code, len) => {
    let res = 0;
    do {
      res |= code & 1;
      code >>>= 1;
      res <<= 1;
    } while (--len > 0);
    return res >>> 1;
  };
  const bi_flush = (s) => {
    if (s.bi_valid === 16) {
      put_short(s, s.bi_buf);
      s.bi_buf = 0;
      s.bi_valid = 0;
    } else if (s.bi_valid >= 8) {
      s.pending_buf[s.pending++] = s.bi_buf & 255;
      s.bi_buf >>= 8;
      s.bi_valid -= 8;
    }
  };
  const gen_bitlen = (s, desc) => {
    const tree = desc.dyn_tree;
    const max_code = desc.max_code;
    const stree = desc.stat_desc.static_tree;
    const has_stree = desc.stat_desc.has_stree;
    const extra = desc.stat_desc.extra_bits;
    const base = desc.stat_desc.extra_base;
    const max_length = desc.stat_desc.max_length;
    let h;
    let n, m;
    let bits;
    let xbits;
    let f;
    let overflow = 0;
    for (bits = 0; bits <= MAX_BITS$1; bits++) {
      s.bl_count[bits] = 0;
    }
    tree[s.heap[s.heap_max] * 2 + 1] = 0;
    for (h = s.heap_max + 1; h < HEAP_SIZE$1; h++) {
      n = s.heap[h];
      bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;
      if (bits > max_length) {
        bits = max_length;
        overflow++;
      }
      tree[n * 2 + 1] = bits;
      if (n > max_code) {
        continue;
      }
      s.bl_count[bits]++;
      xbits = 0;
      if (n >= base) {
        xbits = extra[n - base];
      }
      f = tree[n * 2];
      s.opt_len += f * (bits + xbits);
      if (has_stree) {
        s.static_len += f * (stree[n * 2 + 1] + xbits);
      }
    }
    if (overflow === 0) {
      return;
    }
    do {
      bits = max_length - 1;
      while (s.bl_count[bits] === 0) {
        bits--;
      }
      s.bl_count[bits]--;
      s.bl_count[bits + 1] += 2;
      s.bl_count[max_length]--;
      overflow -= 2;
    } while (overflow > 0);
    for (bits = max_length; bits !== 0; bits--) {
      n = s.bl_count[bits];
      while (n !== 0) {
        m = s.heap[--h];
        if (m > max_code) {
          continue;
        }
        if (tree[m * 2 + 1] !== bits) {
          s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];
          tree[m * 2 + 1] = bits;
        }
        n--;
      }
    }
  };
  const gen_codes = (tree, max_code, bl_count) => {
    const next_code = new Array(MAX_BITS$1 + 1);
    let code = 0;
    let bits;
    let n;
    for (bits = 1; bits <= MAX_BITS$1; bits++) {
      code = code + bl_count[bits - 1] << 1;
      next_code[bits] = code;
    }
    for (n = 0; n <= max_code; n++) {
      let len = tree[n * 2 + 1];
      if (len === 0) {
        continue;
      }
      tree[n * 2] = bi_reverse(next_code[len]++, len);
    }
  };
  const tr_static_init = () => {
    let n;
    let bits;
    let length;
    let code;
    let dist;
    const bl_count = new Array(MAX_BITS$1 + 1);
    length = 0;
    for (code = 0; code < LENGTH_CODES$1 - 1; code++) {
      base_length[code] = length;
      for (n = 0; n < 1 << extra_lbits[code]; n++) {
        _length_code[length++] = code;
      }
    }
    _length_code[length - 1] = code;
    dist = 0;
    for (code = 0; code < 16; code++) {
      base_dist[code] = dist;
      for (n = 0; n < 1 << extra_dbits[code]; n++) {
        _dist_code[dist++] = code;
      }
    }
    dist >>= 7;
    for (; code < D_CODES$1; code++) {
      base_dist[code] = dist << 7;
      for (n = 0; n < 1 << extra_dbits[code] - 7; n++) {
        _dist_code[256 + dist++] = code;
      }
    }
    for (bits = 0; bits <= MAX_BITS$1; bits++) {
      bl_count[bits] = 0;
    }
    n = 0;
    while (n <= 143) {
      static_ltree[n * 2 + 1] = 8;
      n++;
      bl_count[8]++;
    }
    while (n <= 255) {
      static_ltree[n * 2 + 1] = 9;
      n++;
      bl_count[9]++;
    }
    while (n <= 279) {
      static_ltree[n * 2 + 1] = 7;
      n++;
      bl_count[7]++;
    }
    while (n <= 287) {
      static_ltree[n * 2 + 1] = 8;
      n++;
      bl_count[8]++;
    }
    gen_codes(static_ltree, L_CODES$1 + 1, bl_count);
    for (n = 0; n < D_CODES$1; n++) {
      static_dtree[n * 2 + 1] = 5;
      static_dtree[n * 2] = bi_reverse(n, 5);
    }
    static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS$1 + 1, L_CODES$1, MAX_BITS$1);
    static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES$1, MAX_BITS$1);
    static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES$1, MAX_BL_BITS);
  };
  const init_block = (s) => {
    let n;
    for (n = 0; n < L_CODES$1; n++) {
      s.dyn_ltree[n * 2] = 0;
    }
    for (n = 0; n < D_CODES$1; n++) {
      s.dyn_dtree[n * 2] = 0;
    }
    for (n = 0; n < BL_CODES$1; n++) {
      s.bl_tree[n * 2] = 0;
    }
    s.dyn_ltree[END_BLOCK * 2] = 1;
    s.opt_len = s.static_len = 0;
    s.sym_next = s.matches = 0;
  };
  const bi_windup = (s) => {
    if (s.bi_valid > 8) {
      put_short(s, s.bi_buf);
    } else if (s.bi_valid > 0) {
      s.pending_buf[s.pending++] = s.bi_buf;
    }
    s.bi_buf = 0;
    s.bi_valid = 0;
  };
  const smaller = (tree, n, m, depth) => {
    const _n2 = n * 2;
    const _m2 = m * 2;
    return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m];
  };
  const pqdownheap = (s, tree, k) => {
    const v = s.heap[k];
    let j = k << 1;
    while (j <= s.heap_len) {
      if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
        j++;
      }
      if (smaller(tree, v, s.heap[j], s.depth)) {
        break;
      }
      s.heap[k] = s.heap[j];
      k = j;
      j <<= 1;
    }
    s.heap[k] = v;
  };
  const compress_block = (s, ltree, dtree) => {
    let dist;
    let lc;
    let sx = 0;
    let code;
    let extra;
    if (s.sym_next !== 0) {
      do {
        dist = s.pending_buf[s.sym_buf + sx++] & 255;
        dist += (s.pending_buf[s.sym_buf + sx++] & 255) << 8;
        lc = s.pending_buf[s.sym_buf + sx++];
        if (dist === 0) {
          send_code(s, lc, ltree);
        } else {
          code = _length_code[lc];
          send_code(s, code + LITERALS$1 + 1, ltree);
          extra = extra_lbits[code];
          if (extra !== 0) {
            lc -= base_length[code];
            send_bits(s, lc, extra);
          }
          dist--;
          code = d_code(dist);
          send_code(s, code, dtree);
          extra = extra_dbits[code];
          if (extra !== 0) {
            dist -= base_dist[code];
            send_bits(s, dist, extra);
          }
        }
      } while (sx < s.sym_next);
    }
    send_code(s, END_BLOCK, ltree);
  };
  const build_tree = (s, desc) => {
    const tree = desc.dyn_tree;
    const stree = desc.stat_desc.static_tree;
    const has_stree = desc.stat_desc.has_stree;
    const elems = desc.stat_desc.elems;
    let n, m;
    let max_code = -1;
    let node;
    s.heap_len = 0;
    s.heap_max = HEAP_SIZE$1;
    for (n = 0; n < elems; n++) {
      if (tree[n * 2] !== 0) {
        s.heap[++s.heap_len] = max_code = n;
        s.depth[n] = 0;
      } else {
        tree[n * 2 + 1] = 0;
      }
    }
    while (s.heap_len < 2) {
      node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0;
      tree[node * 2] = 1;
      s.depth[node] = 0;
      s.opt_len--;
      if (has_stree) {
        s.static_len -= stree[node * 2 + 1];
      }
    }
    desc.max_code = max_code;
    for (n = s.heap_len >> 1; n >= 1; n--) {
      pqdownheap(s, tree, n);
    }
    node = elems;
    do {
      n = s.heap[
        1
        /*SMALLEST*/
      ];
      s.heap[
        1
        /*SMALLEST*/
      ] = s.heap[s.heap_len--];
      pqdownheap(
        s,
        tree,
        1
        /*SMALLEST*/
      );
      m = s.heap[
        1
        /*SMALLEST*/
      ];
      s.heap[--s.heap_max] = n;
      s.heap[--s.heap_max] = m;
      tree[node * 2] = tree[n * 2] + tree[m * 2];
      s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
      tree[n * 2 + 1] = tree[m * 2 + 1] = node;
      s.heap[
        1
        /*SMALLEST*/
      ] = node++;
      pqdownheap(
        s,
        tree,
        1
        /*SMALLEST*/
      );
    } while (s.heap_len >= 2);
    s.heap[--s.heap_max] = s.heap[
      1
      /*SMALLEST*/
    ];
    gen_bitlen(s, desc);
    gen_codes(tree, max_code, s.bl_count);
  };
  const scan_tree = (s, tree, max_code) => {
    let n;
    let prevlen = -1;
    let curlen;
    let nextlen = tree[0 * 2 + 1];
    let count = 0;
    let max_count = 7;
    let min_count = 4;
    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;
    }
    tree[(max_code + 1) * 2 + 1] = 65535;
    for (n = 0; n <= max_code; n++) {
      curlen = nextlen;
      nextlen = tree[(n + 1) * 2 + 1];
      if (++count < max_count && curlen === nextlen) {
        continue;
      } else if (count < min_count) {
        s.bl_tree[curlen * 2] += count;
      } else if (curlen !== 0) {
        if (curlen !== prevlen) {
          s.bl_tree[curlen * 2]++;
        }
        s.bl_tree[REP_3_6 * 2]++;
      } else if (count <= 10) {
        s.bl_tree[REPZ_3_10 * 2]++;
      } else {
        s.bl_tree[REPZ_11_138 * 2]++;
      }
      count = 0;
      prevlen = curlen;
      if (nextlen === 0) {
        max_count = 138;
        min_count = 3;
      } else if (curlen === nextlen) {
        max_count = 6;
        min_count = 3;
      } else {
        max_count = 7;
        min_count = 4;
      }
    }
  };
  const send_tree = (s, tree, max_code) => {
    let n;
    let prevlen = -1;
    let curlen;
    let nextlen = tree[0 * 2 + 1];
    let count = 0;
    let max_count = 7;
    let min_count = 4;
    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;
    }
    for (n = 0; n <= max_code; n++) {
      curlen = nextlen;
      nextlen = tree[(n + 1) * 2 + 1];
      if (++count < max_count && curlen === nextlen) {
        continue;
      } else if (count < min_count) {
        do {
          send_code(s, curlen, s.bl_tree);
        } while (--count !== 0);
      } else if (curlen !== 0) {
        if (curlen !== prevlen) {
          send_code(s, curlen, s.bl_tree);
          count--;
        }
        send_code(s, REP_3_6, s.bl_tree);
        send_bits(s, count - 3, 2);
      } else if (count <= 10) {
        send_code(s, REPZ_3_10, s.bl_tree);
        send_bits(s, count - 3, 3);
      } else {
        send_code(s, REPZ_11_138, s.bl_tree);
        send_bits(s, count - 11, 7);
      }
      count = 0;
      prevlen = curlen;
      if (nextlen === 0) {
        max_count = 138;
        min_count = 3;
      } else if (curlen === nextlen) {
        max_count = 6;
        min_count = 3;
      } else {
        max_count = 7;
        min_count = 4;
      }
    }
  };
  const build_bl_tree = (s) => {
    let max_blindex;
    scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
    scan_tree(s, s.dyn_dtree, s.d_desc.max_code);
    build_tree(s, s.bl_desc);
    for (max_blindex = BL_CODES$1 - 1; max_blindex >= 3; max_blindex--) {
      if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) {
        break;
      }
    }
    s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
    return max_blindex;
  };
  const send_all_trees = (s, lcodes, dcodes, blcodes) => {
    let rank2;
    send_bits(s, lcodes - 257, 5);
    send_bits(s, dcodes - 1, 5);
    send_bits(s, blcodes - 4, 4);
    for (rank2 = 0; rank2 < blcodes; rank2++) {
      send_bits(s, s.bl_tree[bl_order[rank2] * 2 + 1], 3);
    }
    send_tree(s, s.dyn_ltree, lcodes - 1);
    send_tree(s, s.dyn_dtree, dcodes - 1);
  };
  const detect_data_type = (s) => {
    let block_mask = 4093624447;
    let n;
    for (n = 0; n <= 31; n++, block_mask >>>= 1) {
      if (block_mask & 1 && s.dyn_ltree[n * 2] !== 0) {
        return Z_BINARY;
      }
    }
    if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) {
      return Z_TEXT;
    }
    for (n = 32; n < LITERALS$1; n++) {
      if (s.dyn_ltree[n * 2] !== 0) {
        return Z_TEXT;
      }
    }
    return Z_BINARY;
  };
  let static_init_done = false;
  const _tr_init$1 = (s) => {
    if (!static_init_done) {
      tr_static_init();
      static_init_done = true;
    }
    s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);
    s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);
    s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);
    s.bi_buf = 0;
    s.bi_valid = 0;
    init_block(s);
  };
  const _tr_stored_block$1 = (s, buf, stored_len, last) => {
    send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);
    bi_windup(s);
    put_short(s, stored_len);
    put_short(s, ~stored_len);
    if (stored_len) {
      s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);
    }
    s.pending += stored_len;
  };
  const _tr_align$1 = (s) => {
    send_bits(s, STATIC_TREES << 1, 3);
    send_code(s, END_BLOCK, static_ltree);
    bi_flush(s);
  };
  const _tr_flush_block$1 = (s, buf, stored_len, last) => {
    let opt_lenb, static_lenb;
    let max_blindex = 0;
    if (s.level > 0) {
      if (s.strm.data_type === Z_UNKNOWN$1) {
        s.strm.data_type = detect_data_type(s);
      }
      build_tree(s, s.l_desc);
      build_tree(s, s.d_desc);
      max_blindex = build_bl_tree(s);
      opt_lenb = s.opt_len + 3 + 7 >>> 3;
      static_lenb = s.static_len + 3 + 7 >>> 3;
      if (static_lenb <= opt_lenb) {
        opt_lenb = static_lenb;
      }
    } else {
      opt_lenb = static_lenb = stored_len + 5;
    }
    if (stored_len + 4 <= opt_lenb && buf !== -1) {
      _tr_stored_block$1(s, buf, stored_len, last);
    } else if (s.strategy === Z_FIXED$1 || static_lenb === opt_lenb) {
      send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
      compress_block(s, static_ltree, static_dtree);
    } else {
      send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
      send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
      compress_block(s, s.dyn_ltree, s.dyn_dtree);
    }
    init_block(s);
    if (last) {
      bi_windup(s);
    }
  };
  const _tr_tally$1 = (s, dist, lc) => {
    s.pending_buf[s.sym_buf + s.sym_next++] = dist;
    s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;
    s.pending_buf[s.sym_buf + s.sym_next++] = lc;
    if (dist === 0) {
      s.dyn_ltree[lc * 2]++;
    } else {
      s.matches++;
      dist--;
      s.dyn_ltree[(_length_code[lc] + LITERALS$1 + 1) * 2]++;
      s.dyn_dtree[d_code(dist) * 2]++;
    }
    return s.sym_next === s.sym_end;
  };
  var _tr_init_1 = _tr_init$1;
  var _tr_stored_block_1 = _tr_stored_block$1;
  var _tr_flush_block_1 = _tr_flush_block$1;
  var _tr_tally_1 = _tr_tally$1;
  var _tr_align_1 = _tr_align$1;
  var trees = {
    _tr_init: _tr_init_1,
    _tr_stored_block: _tr_stored_block_1,
    _tr_flush_block: _tr_flush_block_1,
    _tr_tally: _tr_tally_1,
    _tr_align: _tr_align_1
  };
  const adler32 = (adler, buf, len, pos) => {
    let s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0;
    while (len !== 0) {
      n = len > 2e3 ? 2e3 : len;
      len -= n;
      do {
        s1 = s1 + buf[pos++] | 0;
        s2 = s2 + s1 | 0;
      } while (--n);
      s1 %= 65521;
      s2 %= 65521;
    }
    return s1 | s2 << 16 | 0;
  };
  var adler32_1 = adler32;
  const makeTable = () => {
    let c, table = [];
    for (var n = 0; n < 256; n++) {
      c = n;
      for (var k = 0; k < 8; k++) {
        c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1;
      }
      table[n] = c;
    }
    return table;
  };
  const crcTable = new Uint32Array(makeTable());
  const crc32 = (crc, buf, len, pos) => {
    const t = crcTable;
    const end = pos + len;
    crc ^= -1;
    for (let i = pos; i < end; i++) {
      crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255];
    }
    return crc ^ -1;
  };
  var crc32_1 = crc32;
  var messages = {
    2: "need dictionary",
    /* Z_NEED_DICT       2  */
    1: "stream end",
    /* Z_STREAM_END      1  */
    0: "",
    /* Z_OK              0  */
    "-1": "file error",
    /* Z_ERRNO         (-1) */
    "-2": "stream error",
    /* Z_STREAM_ERROR  (-2) */
    "-3": "data error",
    /* Z_DATA_ERROR    (-3) */
    "-4": "insufficient memory",
    /* Z_MEM_ERROR     (-4) */
    "-5": "buffer error",
    /* Z_BUF_ERROR     (-5) */
    "-6": "incompatible version"
    /* Z_VERSION_ERROR (-6) */
  };
  var constants$2 = {
    /* Allowed flush values; see deflate() and inflate() below for details */
    Z_NO_FLUSH: 0,
    Z_PARTIAL_FLUSH: 1,
    Z_SYNC_FLUSH: 2,
    Z_FULL_FLUSH: 3,
    Z_FINISH: 4,
    Z_BLOCK: 5,
    Z_TREES: 6,
    /* Return codes for the compression/decompression functions. Negative values
    * are errors, positive values are used for special but normal events.
    */
    Z_OK: 0,
    Z_STREAM_END: 1,
    Z_NEED_DICT: 2,
    Z_ERRNO: -1,
    Z_STREAM_ERROR: -2,
    Z_DATA_ERROR: -3,
    Z_MEM_ERROR: -4,
    Z_BUF_ERROR: -5,
    //Z_VERSION_ERROR: -6,
    /* compression levels */
    Z_NO_COMPRESSION: 0,
    Z_BEST_SPEED: 1,
    Z_BEST_COMPRESSION: 9,
    Z_DEFAULT_COMPRESSION: -1,
    Z_FILTERED: 1,
    Z_HUFFMAN_ONLY: 2,
    Z_RLE: 3,
    Z_FIXED: 4,
    Z_DEFAULT_STRATEGY: 0,
    /* Possible values of the data_type field (though see inflate()) */
    Z_BINARY: 0,
    Z_TEXT: 1,
    //Z_ASCII:                1, // = Z_TEXT (deprecated)
    Z_UNKNOWN: 2,
    /* The deflate compression method */
    Z_DEFLATED: 8
    //Z_NULL:                 null // Use -1 or null inline, depending on var type
  };
  const { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = trees;
  const {
    Z_NO_FLUSH: Z_NO_FLUSH$2,
    Z_PARTIAL_FLUSH,
    Z_FULL_FLUSH: Z_FULL_FLUSH$1,
    Z_FINISH: Z_FINISH$3,
    Z_BLOCK: Z_BLOCK$1,
    Z_OK: Z_OK$3,
    Z_STREAM_END: Z_STREAM_END$3,
    Z_STREAM_ERROR: Z_STREAM_ERROR$2,
    Z_DATA_ERROR: Z_DATA_ERROR$2,
    Z_BUF_ERROR: Z_BUF_ERROR$1,
    Z_DEFAULT_COMPRESSION: Z_DEFAULT_COMPRESSION$1,
    Z_FILTERED,
    Z_HUFFMAN_ONLY,
    Z_RLE,
    Z_FIXED,
    Z_DEFAULT_STRATEGY: Z_DEFAULT_STRATEGY$1,
    Z_UNKNOWN,
    Z_DEFLATED: Z_DEFLATED$2
  } = constants$2;
  const MAX_MEM_LEVEL = 9;
  const MAX_WBITS$1 = 15;
  const DEF_MEM_LEVEL = 8;
  const LENGTH_CODES = 29;
  const LITERALS = 256;
  const L_CODES = LITERALS + 1 + LENGTH_CODES;
  const D_CODES = 30;
  const BL_CODES = 19;
  const HEAP_SIZE = 2 * L_CODES + 1;
  const MAX_BITS = 15;
  const MIN_MATCH = 3;
  const MAX_MATCH = 258;
  const MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1;
  const PRESET_DICT = 32;
  const INIT_STATE = 42;
  const GZIP_STATE = 57;
  const EXTRA_STATE = 69;
  const NAME_STATE = 73;
  const COMMENT_STATE = 91;
  const HCRC_STATE = 103;
  const BUSY_STATE = 113;
  const FINISH_STATE = 666;
  const BS_NEED_MORE = 1;
  const BS_BLOCK_DONE = 2;
  const BS_FINISH_STARTED = 3;
  const BS_FINISH_DONE = 4;
  const OS_CODE = 3;
  const err = (strm, errorCode) => {
    strm.msg = messages[errorCode];
    return errorCode;
  };
  const rank = (f) => {
    return f * 2 - (f > 4 ? 9 : 0);
  };
  const zero = (buf) => {
    let len = buf.length;
    while (--len >= 0) {
      buf[len] = 0;
    }
  };
  const slide_hash = (s) => {
    let n, m;
    let p;
    let wsize = s.w_size;
    n = s.hash_size;
    p = n;
    do {
      m = s.head[--p];
      s.head[p] = m >= wsize ? m - wsize : 0;
    } while (--n);
    n = wsize;
    p = n;
    do {
      m = s.prev[--p];
      s.prev[p] = m >= wsize ? m - wsize : 0;
    } while (--n);
  };
  let HASH_ZLIB = (s, prev, data) => (prev << s.hash_shift ^ data) & s.hash_mask;
  let HASH = HASH_ZLIB;
  const flush_pending = (strm) => {
    const s = strm.state;
    let len = s.pending;
    if (len > strm.avail_out) {
      len = strm.avail_out;
    }
    if (len === 0) {
      return;
    }
    strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);
    strm.next_out += len;
    s.pending_out += len;
    strm.total_out += len;
    strm.avail_out -= len;
    s.pending -= len;
    if (s.pending === 0) {
      s.pending_out = 0;
    }
  };
  const flush_block_only = (s, last) => {
    _tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last);
    s.block_start = s.strstart;
    flush_pending(s.strm);
  };
  const put_byte = (s, b) => {
    s.pending_buf[s.pending++] = b;
  };
  const putShortMSB = (s, b) => {
    s.pending_buf[s.pending++] = b >>> 8 & 255;
    s.pending_buf[s.pending++] = b & 255;
  };
  const read_buf = (strm, buf, start, size) => {
    let len = strm.avail_in;
    if (len > size) {
      len = size;
    }
    if (len === 0) {
      return 0;
    }
    strm.avail_in -= len;
    buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);
    if (strm.state.wrap === 1) {
      strm.adler = adler32_1(strm.adler, buf, len, start);
    } else if (strm.state.wrap === 2) {
      strm.adler = crc32_1(strm.adler, buf, len, start);
    }
    strm.next_in += len;
    strm.total_in += len;
    return len;
  };
  const longest_match = (s, cur_match) => {
    let chain_length = s.max_chain_length;
    let scan = s.strstart;
    let match;
    let len;
    let best_len = s.prev_length;
    let nice_match = s.nice_match;
    const limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0;
    const _win = s.window;
    const wmask = s.w_mask;
    const prev = s.prev;
    const strend = s.strstart + MAX_MATCH;
    let scan_end1 = _win[scan + best_len - 1];
    let scan_end = _win[scan + best_len];
    if (s.prev_length >= s.good_match) {
      chain_length >>= 2;
    }
    if (nice_match > s.lookahead) {
      nice_match = s.lookahead;
    }
    do {
      match = cur_match;
      if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) {
        continue;
      }
      scan += 2;
      match++;
      do {
      } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend);
      len = MAX_MATCH - (strend - scan);
      scan = strend - MAX_MATCH;
      if (len > best_len) {
        s.match_start = cur_match;
        best_len = len;
        if (len >= nice_match) {
          break;
        }
        scan_end1 = _win[scan + best_len - 1];
        scan_end = _win[scan + best_len];
      }
    } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);
    if (best_len <= s.lookahead) {
      return best_len;
    }
    return s.lookahead;
  };
  const fill_window = (s) => {
    const _w_size = s.w_size;
    let n, more, str;
    do {
      more = s.window_size - s.lookahead - s.strstart;
      if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {
        s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);
        s.match_start -= _w_size;
        s.strstart -= _w_size;
        s.block_start -= _w_size;
        if (s.insert > s.strstart) {
          s.insert = s.strstart;
        }
        slide_hash(s);
        more += _w_size;
      }
      if (s.strm.avail_in === 0) {
        break;
      }
      n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
      s.lookahead += n;
      if (s.lookahead + s.insert >= MIN_MATCH) {
        str = s.strstart - s.insert;
        s.ins_h = s.window[str];
        s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);
        while (s.insert) {
          s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);
          s.prev[str & s.w_mask] = s.head[s.ins_h];
          s.head[s.ins_h] = str;
          str++;
          s.insert--;
          if (s.lookahead + s.insert < MIN_MATCH) {
            break;
          }
        }
      }
    } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);
  };
  const deflate_stored = (s, flush) => {
    let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;
    let len, left, have, last = 0;
    let used = s.strm.avail_in;
    do {
      len = 65535;
      have = s.bi_valid + 42 >> 3;
      if (s.strm.avail_out < have) {
        break;
      }
      have = s.strm.avail_out - have;
      left = s.strstart - s.block_start;
      if (len > left + s.strm.avail_in) {
        len = left + s.strm.avail_in;
      }
      if (len > have) {
        len = have;
      }
      if (len < min_block && (len === 0 && flush !== Z_FINISH$3 || flush === Z_NO_FLUSH$2 || len !== left + s.strm.avail_in)) {
        break;
      }
      last = flush === Z_FINISH$3 && len === left + s.strm.avail_in ? 1 : 0;
      _tr_stored_block(s, 0, 0, last);
      s.pending_buf[s.pending - 4] = len;
      s.pending_buf[s.pending - 3] = len >> 8;
      s.pending_buf[s.pending - 2] = ~len;
      s.pending_buf[s.pending - 1] = ~len >> 8;
      flush_pending(s.strm);
      if (left) {
        if (left > len) {
          left = len;
        }
        s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);
        s.strm.next_out += left;
        s.strm.avail_out -= left;
        s.strm.total_out += left;
        s.block_start += left;
        len -= left;
      }
      if (len) {
        read_buf(s.strm, s.strm.output, s.strm.next_out, len);
        s.strm.next_out += len;
        s.strm.avail_out -= len;
        s.strm.total_out += len;
      }
    } while (last === 0);
    used -= s.strm.avail_in;
    if (used) {
      if (used >= s.w_size) {
        s.matches = 2;
        s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);
        s.strstart = s.w_size;
        s.insert = s.strstart;
      } else {
        if (s.window_size - s.strstart <= used) {
          s.strstart -= s.w_size;
          s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);
          if (s.matches < 2) {
            s.matches++;
          }
          if (s.insert > s.strstart) {
            s.insert = s.strstart;
          }
        }
        s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);
        s.strstart += used;
        s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;
      }
      s.block_start = s.strstart;
    }
    if (s.high_water < s.strstart) {
      s.high_water = s.strstart;
    }
    if (last) {
      return BS_FINISH_DONE;
    }
    if (flush !== Z_NO_FLUSH$2 && flush !== Z_FINISH$3 && s.strm.avail_in === 0 && s.strstart === s.block_start) {
      return BS_BLOCK_DONE;
    }
    have = s.window_size - s.strstart;
    if (s.strm.avail_in > have && s.block_start >= s.w_size) {
      s.block_start -= s.w_size;
      s.strstart -= s.w_size;
      s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);
      if (s.matches < 2) {
        s.matches++;
      }
      have += s.w_size;
      if (s.insert > s.strstart) {
        s.insert = s.strstart;
      }
    }
    if (have > s.strm.avail_in) {
      have = s.strm.avail_in;
    }
    if (have) {
      read_buf(s.strm, s.window, s.strstart, have);
      s.strstart += have;
      s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;
    }
    if (s.high_water < s.strstart) {
      s.high_water = s.strstart;
    }
    have = s.bi_valid + 42 >> 3;
    have = s.pending_buf_size - have > 65535 ? 65535 : s.pending_buf_size - have;
    min_block = have > s.w_size ? s.w_size : have;
    left = s.strstart - s.block_start;
    if (left >= min_block || (left || flush === Z_FINISH$3) && flush !== Z_NO_FLUSH$2 && s.strm.avail_in === 0 && left <= have) {
      len = left > have ? have : left;
      last = flush === Z_FINISH$3 && s.strm.avail_in === 0 && len === left ? 1 : 0;
      _tr_stored_block(s, s.block_start, len, last);
      s.block_start += len;
      flush_pending(s.strm);
    }
    return last ? BS_FINISH_STARTED : BS_NEED_MORE;
  };
  const deflate_fast = (s, flush) => {
    let hash_head;
    let bflush;
    for (; ; ) {
      if (s.lookahead < MIN_LOOKAHEAD) {
        fill_window(s);
        if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {
          return BS_NEED_MORE;
        }
        if (s.lookahead === 0) {
          break;
        }
      }
      hash_head = 0;
      if (s.lookahead >= MIN_MATCH) {
        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
        hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
        s.head[s.ins_h] = s.strstart;
      }
      if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {
        s.match_length = longest_match(s, hash_head);
      }
      if (s.match_length >= MIN_MATCH) {
        bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);
        s.lookahead -= s.match_length;
        if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) {
          s.match_length--;
          do {
            s.strstart++;
            s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
            hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
            s.head[s.ins_h] = s.strstart;
          } while (--s.match_length !== 0);
          s.strstart++;
        } else {
          s.strstart += s.match_length;
          s.match_length = 0;
          s.ins_h = s.window[s.strstart];
          s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);
        }
      } else {
        bflush = _tr_tally(s, 0, s.window[s.strstart]);
        s.lookahead--;
        s.strstart++;
      }
      if (bflush) {
        flush_block_only(s, false);
        if (s.strm.avail_out === 0) {
          return BS_NEED_MORE;
        }
      }
    }
    s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
    if (flush === Z_FINISH$3) {
      flush_block_only(s, true);
      if (s.strm.avail_out === 0) {
        return BS_FINISH_STARTED;
      }
      return BS_FINISH_DONE;
    }
    if (s.sym_next) {
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
    }
    return BS_BLOCK_DONE;
  };
  const deflate_slow = (s, flush) => {
    let hash_head;
    let bflush;
    let max_insert;
    for (; ; ) {
      if (s.lookahead < MIN_LOOKAHEAD) {
        fill_window(s);
        if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH$2) {
          return BS_NEED_MORE;
        }
        if (s.lookahead === 0) {
          break;
        }
      }
      hash_head = 0;
      if (s.lookahead >= MIN_MATCH) {
        s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
        hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
        s.head[s.ins_h] = s.strstart;
      }
      s.prev_length = s.match_length;
      s.prev_match = s.match_start;
      s.match_length = MIN_MATCH - 1;
      if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) {
        s.match_length = longest_match(s, hash_head);
        if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) {
          s.match_length = MIN_MATCH - 1;
        }
      }
      if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
        max_insert = s.strstart + s.lookahead - MIN_MATCH;
        bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
        s.lookahead -= s.prev_length - 1;
        s.prev_length -= 2;
        do {
          if (++s.strstart <= max_insert) {
            s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);
            hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
            s.head[s.ins_h] = s.strstart;
          }
        } while (--s.prev_length !== 0);
        s.match_available = 0;
        s.match_length = MIN_MATCH - 1;
        s.strstart++;
        if (bflush) {
          flush_block_only(s, false);
          if (s.strm.avail_out === 0) {
            return BS_NEED_MORE;
          }
        }
      } else if (s.match_available) {
        bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);
        if (bflush) {
          flush_block_only(s, false);
        }
        s.strstart++;
        s.lookahead--;
        if (s.strm.avail_out === 0) {
          return BS_NEED_MORE;
        }
      } else {
        s.match_available = 1;
        s.strstart++;
        s.lookahead--;
      }
    }
    if (s.match_available) {
      bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);
      s.match_available = 0;
    }
    s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
    if (flush === Z_FINISH$3) {
      flush_block_only(s, true);
      if (s.strm.avail_out === 0) {
        return BS_FINISH_STARTED;
      }
      return BS_FINISH_DONE;
    }
    if (s.sym_next) {
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
    }
    return BS_BLOCK_DONE;
  };
  const deflate_rle = (s, flush) => {
    let bflush;
    let prev;
    let scan, strend;
    const _win = s.window;
    for (; ; ) {
      if (s.lookahead <= MAX_MATCH) {
        fill_window(s);
        if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH$2) {
          return BS_NEED_MORE;
        }
        if (s.lookahead === 0) {
          break;
        }
      }
      s.match_length = 0;
      if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
        scan = s.strstart - 1;
        prev = _win[scan];
        if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
          strend = s.strstart + MAX_MATCH;
          do {
          } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend);
          s.match_length = MAX_MATCH - (strend - scan);
          if (s.match_length > s.lookahead) {
            s.match_length = s.lookahead;
          }
        }
      }
      if (s.match_length >= MIN_MATCH) {
        bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);
        s.lookahead -= s.match_length;
        s.strstart += s.match_length;
        s.match_length = 0;
      } else {
        bflush = _tr_tally(s, 0, s.window[s.strstart]);
        s.lookahead--;
        s.strstart++;
      }
      if (bflush) {
        flush_block_only(s, false);
        if (s.strm.avail_out === 0) {
          return BS_NEED_MORE;
        }
      }
    }
    s.insert = 0;
    if (flush === Z_FINISH$3) {
      flush_block_only(s, true);
      if (s.strm.avail_out === 0) {
        return BS_FINISH_STARTED;
      }
      return BS_FINISH_DONE;
    }
    if (s.sym_next) {
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
    }
    return BS_BLOCK_DONE;
  };
  const deflate_huff = (s, flush) => {
    let bflush;
    for (; ; ) {
      if (s.lookahead === 0) {
        fill_window(s);
        if (s.lookahead === 0) {
          if (flush === Z_NO_FLUSH$2) {
            return BS_NEED_MORE;
          }
          break;
        }
      }
      s.match_length = 0;
      bflush = _tr_tally(s, 0, s.window[s.strstart]);
      s.lookahead--;
      s.strstart++;
      if (bflush) {
        flush_block_only(s, false);
        if (s.strm.avail_out === 0) {
          return BS_NEED_MORE;
        }
      }
    }
    s.insert = 0;
    if (flush === Z_FINISH$3) {
      flush_block_only(s, true);
      if (s.strm.avail_out === 0) {
        return BS_FINISH_STARTED;
      }
      return BS_FINISH_DONE;
    }
    if (s.sym_next) {
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
    }
    return BS_BLOCK_DONE;
  };
  function Config(good_length, max_lazy, nice_length, max_chain, func) {
    this.good_length = good_length;
    this.max_lazy = max_lazy;
    this.nice_length = nice_length;
    this.max_chain = max_chain;
    this.func = func;
  }
  const configuration_table = [
    /*      good lazy nice chain */
    new Config(0, 0, 0, 0, deflate_stored),
    /* 0 store only */
    new Config(4, 4, 8, 4, deflate_fast),
    /* 1 max speed, no lazy matches */
    new Config(4, 5, 16, 8, deflate_fast),
    /* 2 */
    new Config(4, 6, 32, 32, deflate_fast),
    /* 3 */
    new Config(4, 4, 16, 16, deflate_slow),
    /* 4 lazy matches */
    new Config(8, 16, 32, 32, deflate_slow),
    /* 5 */
    new Config(8, 16, 128, 128, deflate_slow),
    /* 6 */
    new Config(8, 32, 128, 256, deflate_slow),
    /* 7 */
    new Config(32, 128, 258, 1024, deflate_slow),
    /* 8 */
    new Config(32, 258, 258, 4096, deflate_slow)
    /* 9 max compression */
  ];
  const lm_init = (s) => {
    s.window_size = 2 * s.w_size;
    zero(s.head);
    s.max_lazy_match = configuration_table[s.level].max_lazy;
    s.good_match = configuration_table[s.level].good_length;
    s.nice_match = configuration_table[s.level].nice_length;
    s.max_chain_length = configuration_table[s.level].max_chain;
    s.strstart = 0;
    s.block_start = 0;
    s.lookahead = 0;
    s.insert = 0;
    s.match_length = s.prev_length = MIN_MATCH - 1;
    s.match_available = 0;
    s.ins_h = 0;
  };
  function DeflateState() {
    this.strm = null;
    this.status = 0;
    this.pending_buf = null;
    this.pending_buf_size = 0;
    this.pending_out = 0;
    this.pending = 0;
    this.wrap = 0;
    this.gzhead = null;
    this.gzindex = 0;
    this.method = Z_DEFLATED$2;
    this.last_flush = -1;
    this.w_size = 0;
    this.w_bits = 0;
    this.w_mask = 0;
    this.window = null;
    this.window_size = 0;
    this.prev = null;
    this.head = null;
    this.ins_h = 0;
    this.hash_size = 0;
    this.hash_bits = 0;
    this.hash_mask = 0;
    this.hash_shift = 0;
    this.block_start = 0;
    this.match_length = 0;
    this.prev_match = 0;
    this.match_available = 0;
    this.strstart = 0;
    this.match_start = 0;
    this.lookahead = 0;
    this.prev_length = 0;
    this.max_chain_length = 0;
    this.max_lazy_match = 0;
    this.level = 0;
    this.strategy = 0;
    this.good_match = 0;
    this.nice_match = 0;
    this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);
    this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);
    this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);
    zero(this.dyn_ltree);
    zero(this.dyn_dtree);
    zero(this.bl_tree);
    this.l_desc = null;
    this.d_desc = null;
    this.bl_desc = null;
    this.bl_count = new Uint16Array(MAX_BITS + 1);
    this.heap = new Uint16Array(2 * L_CODES + 1);
    zero(this.heap);
    this.heap_len = 0;
    this.heap_max = 0;
    this.depth = new Uint16Array(2 * L_CODES + 1);
    zero(this.depth);
    this.sym_buf = 0;
    this.lit_bufsize = 0;
    this.sym_next = 0;
    this.sym_end = 0;
    this.opt_len = 0;
    this.static_len = 0;
    this.matches = 0;
    this.insert = 0;
    this.bi_buf = 0;
    this.bi_valid = 0;
  }
  const deflateStateCheck = (strm) => {
    if (!strm) {
      return 1;
    }
    const s = strm.state;
    if (!s || s.strm !== strm || s.status !== INIT_STATE && //#ifdef GZIP
    s.status !== GZIP_STATE && //#endif
    s.status !== EXTRA_STATE && s.status !== NAME_STATE && s.status !== COMMENT_STATE && s.status !== HCRC_STATE && s.status !== BUSY_STATE && s.status !== FINISH_STATE) {
      return 1;
    }
    return 0;
  };
  const deflateResetKeep = (strm) => {
    if (deflateStateCheck(strm)) {
      return err(strm, Z_STREAM_ERROR$2);
    }
    strm.total_in = strm.total_out = 0;
    strm.data_type = Z_UNKNOWN;
    const s = strm.state;
    s.pending = 0;
    s.pending_out = 0;
    if (s.wrap < 0) {
      s.wrap = -s.wrap;
    }
    s.status = //#ifdef GZIP
    s.wrap === 2 ? GZIP_STATE : (
      //#endif
      s.wrap ? INIT_STATE : BUSY_STATE
    );
    strm.adler = s.wrap === 2 ? 0 : 1;
    s.last_flush = -2;
    _tr_init(s);
    return Z_OK$3;
  };
  const deflateReset = (strm) => {
    const ret = deflateResetKeep(strm);
    if (ret === Z_OK$3) {
      lm_init(strm.state);
    }
    return ret;
  };
  const deflateSetHeader = (strm, head) => {
    if (deflateStateCheck(strm) || strm.state.wrap !== 2) {
      return Z_STREAM_ERROR$2;
    }
    strm.state.gzhead = head;
    return Z_OK$3;
  };
  const deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {
    if (!strm) {
      return Z_STREAM_ERROR$2;
    }
    let wrap = 1;
    if (level === Z_DEFAULT_COMPRESSION$1) {
      level = 6;
    }
    if (windowBits < 0) {
      wrap = 0;
      windowBits = -windowBits;
    } else if (windowBits > 15) {
      wrap = 2;
      windowBits -= 16;
    }
    if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED$2 || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED || windowBits === 8 && wrap !== 1) {
      return err(strm, Z_STREAM_ERROR$2);
    }
    if (windowBits === 8) {
      windowBits = 9;
    }
    const s = new DeflateState();
    strm.state = s;
    s.strm = strm;
    s.status = INIT_STATE;
    s.wrap = wrap;
    s.gzhead = null;
    s.w_bits = windowBits;
    s.w_size = 1 << s.w_bits;
    s.w_mask = s.w_size - 1;
    s.hash_bits = memLevel + 7;
    s.hash_size = 1 << s.hash_bits;
    s.hash_mask = s.hash_size - 1;
    s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);
    s.window = new Uint8Array(s.w_size * 2);
    s.head = new Uint16Array(s.hash_size);
    s.prev = new Uint16Array(s.w_size);
    s.lit_bufsize = 1 << memLevel + 6;
    s.pending_buf_size = s.lit_bufsize * 4;
    s.pending_buf = new Uint8Array(s.pending_buf_size);
    s.sym_buf = s.lit_bufsize;
    s.sym_end = (s.lit_bufsize - 1) * 3;
    s.level = level;
    s.strategy = strategy;
    s.method = method;
    return deflateReset(strm);
  };
  const deflateInit = (strm, level) => {
    return deflateInit2(strm, level, Z_DEFLATED$2, MAX_WBITS$1, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY$1);
  };
  const deflate$2 = (strm, flush) => {
    if (deflateStateCheck(strm) || flush > Z_BLOCK$1 || flush < 0) {
      return strm ? err(strm, Z_STREAM_ERROR$2) : Z_STREAM_ERROR$2;
    }
    const s = strm.state;
    if (!strm.output || strm.avail_in !== 0 && !strm.input || s.status === FINISH_STATE && flush !== Z_FINISH$3) {
      return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR$1 : Z_STREAM_ERROR$2);
    }
    const old_flush = s.last_flush;
    s.last_flush = flush;
    if (s.pending !== 0) {
      flush_pending(strm);
      if (strm.avail_out === 0) {
        s.last_flush = -1;
        return Z_OK$3;
      }
    } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH$3) {
      return err(strm, Z_BUF_ERROR$1);
    }
    if (s.status === FINISH_STATE && strm.avail_in !== 0) {
      return err(strm, Z_BUF_ERROR$1);
    }
    if (s.status === INIT_STATE && s.wrap === 0) {
      s.status = BUSY_STATE;
    }
    if (s.status === INIT_STATE) {
      let header = Z_DEFLATED$2 + (s.w_bits - 8 << 4) << 8;
      let level_flags = -1;
      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
        level_flags = 0;
      } else if (s.level < 6) {
        level_flags = 1;
      } else if (s.level === 6) {
        level_flags = 2;
      } else {
        level_flags = 3;
      }
      header |= level_flags << 6;
      if (s.strstart !== 0) {
        header |= PRESET_DICT;
      }
      header += 31 - header % 31;
      putShortMSB(s, header);
      if (s.strstart !== 0) {
        putShortMSB(s, strm.adler >>> 16);
        putShortMSB(s, strm.adler & 65535);
      }
      strm.adler = 1;
      s.status = BUSY_STATE;
      flush_pending(strm);
      if (s.pending !== 0) {
        s.last_flush = -1;
        return Z_OK$3;
      }
    }
    if (s.status === GZIP_STATE) {
      strm.adler = 0;
      put_byte(s, 31);
      put_byte(s, 139);
      put_byte(s, 8);
      if (!s.gzhead) {
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);
        put_byte(s, OS_CODE);
        s.status = BUSY_STATE;
        flush_pending(strm);
        if (s.pending !== 0) {
          s.last_flush = -1;
          return Z_OK$3;
        }
      } else {
        put_byte(
          s,
          (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16)
        );
        put_byte(s, s.gzhead.time & 255);
        put_byte(s, s.gzhead.time >> 8 & 255);
        put_byte(s, s.gzhead.time >> 16 & 255);
        put_byte(s, s.gzhead.time >> 24 & 255);
        put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0);
        put_byte(s, s.gzhead.os & 255);
        if (s.gzhead.extra && s.gzhead.extra.length) {
          put_byte(s, s.gzhead.extra.length & 255);
          put_byte(s, s.gzhead.extra.length >> 8 & 255);
        }
        if (s.gzhead.hcrc) {
          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending, 0);
        }
        s.gzindex = 0;
        s.status = EXTRA_STATE;
      }
    }
    if (s.status === EXTRA_STATE) {
      if (s.gzhead.extra) {
        let beg = s.pending;
        let left = (s.gzhead.extra.length & 65535) - s.gzindex;
        while (s.pending + left > s.pending_buf_size) {
          let copy = s.pending_buf_size - s.pending;
          s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);
          s.pending = s.pending_buf_size;
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          s.gzindex += copy;
          flush_pending(strm);
          if (s.pending !== 0) {
            s.last_flush = -1;
            return Z_OK$3;
          }
          beg = 0;
          left -= copy;
        }
        let gzhead_extra = new Uint8Array(s.gzhead.extra);
        s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);
        s.pending += left;
        if (s.gzhead.hcrc && s.pending > beg) {
          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
        }
        s.gzindex = 0;
      }
      s.status = NAME_STATE;
    }
    if (s.status === NAME_STATE) {
      if (s.gzhead.name) {
        let beg = s.pending;
        let val;
        do {
          if (s.pending === s.pending_buf_size) {
            if (s.gzhead.hcrc && s.pending > beg) {
              strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
            }
            flush_pending(strm);
            if (s.pending !== 0) {
              s.last_flush = -1;
              return Z_OK$3;
            }
            beg = 0;
          }
          if (s.gzindex < s.gzhead.name.length) {
            val = s.gzhead.name.charCodeAt(s.gzindex++) & 255;
          } else {
            val = 0;
          }
          put_byte(s, val);
        } while (val !== 0);
        if (s.gzhead.hcrc && s.pending > beg) {
          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
        }
        s.gzindex = 0;
      }
      s.status = COMMENT_STATE;
    }
    if (s.status === COMMENT_STATE) {
      if (s.gzhead.comment) {
        let beg = s.pending;
        let val;
        do {
          if (s.pending === s.pending_buf_size) {
            if (s.gzhead.hcrc && s.pending > beg) {
              strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
            }
            flush_pending(strm);
            if (s.pending !== 0) {
              s.last_flush = -1;
              return Z_OK$3;
            }
            beg = 0;
          }
          if (s.gzindex < s.gzhead.comment.length) {
            val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255;
          } else {
            val = 0;
          }
          put_byte(s, val);
        } while (val !== 0);
        if (s.gzhead.hcrc && s.pending > beg) {
          strm.adler = crc32_1(strm.adler, s.pending_buf, s.pending - beg, beg);
        }
      }
      s.status = HCRC_STATE;
    }
    if (s.status === HCRC_STATE) {
      if (s.gzhead.hcrc) {
        if (s.pending + 2 > s.pending_buf_size) {
          flush_pending(strm);
          if (s.pending !== 0) {
            s.last_flush = -1;
            return Z_OK$3;
          }
        }
        put_byte(s, strm.adler & 255);
        put_byte(s, strm.adler >> 8 & 255);
        strm.adler = 0;
      }
      s.status = BUSY_STATE;
      flush_pending(strm);
      if (s.pending !== 0) {
        s.last_flush = -1;
        return Z_OK$3;
      }
    }
    if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH$2 && s.status !== FINISH_STATE) {
      let bstate = s.level === 0 ? deflate_stored(s, flush) : s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush);
      if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
        s.status = FINISH_STATE;
      }
      if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
        if (strm.avail_out === 0) {
          s.last_flush = -1;
        }
        return Z_OK$3;
      }
      if (bstate === BS_BLOCK_DONE) {
        if (flush === Z_PARTIAL_FLUSH) {
          _tr_align(s);
        } else if (flush !== Z_BLOCK$1) {
          _tr_stored_block(s, 0, 0, false);
          if (flush === Z_FULL_FLUSH$1) {
            zero(s.head);
            if (s.lookahead === 0) {
              s.strstart = 0;
              s.block_start = 0;
              s.insert = 0;
            }
          }
        }
        flush_pending(strm);
        if (strm.avail_out === 0) {
          s.last_flush = -1;
          return Z_OK$3;
        }
      }
    }
    if (flush !== Z_FINISH$3) {
      return Z_OK$3;
    }
    if (s.wrap <= 0) {
      return Z_STREAM_END$3;
    }
    if (s.wrap === 2) {
      put_byte(s, strm.adler & 255);
      put_byte(s, strm.adler >> 8 & 255);
      put_byte(s, strm.adler >> 16 & 255);
      put_byte(s, strm.adler >> 24 & 255);
      put_byte(s, strm.total_in & 255);
      put_byte(s, strm.total_in >> 8 & 255);
      put_byte(s, strm.total_in >> 16 & 255);
      put_byte(s, strm.total_in >> 24 & 255);
    } else {
      putShortMSB(s, strm.adler >>> 16);
      putShortMSB(s, strm.adler & 65535);
    }
    flush_pending(strm);
    if (s.wrap > 0) {
      s.wrap = -s.wrap;
    }
    return s.pending !== 0 ? Z_OK$3 : Z_STREAM_END$3;
  };
  const deflateEnd = (strm) => {
    if (deflateStateCheck(strm)) {
      return Z_STREAM_ERROR$2;
    }
    const status = strm.state.status;
    strm.state = null;
    return status === BUSY_STATE ? err(strm, Z_DATA_ERROR$2) : Z_OK$3;
  };
  const deflateSetDictionary = (strm, dictionary) => {
    let dictLength = dictionary.length;
    if (deflateStateCheck(strm)) {
      return Z_STREAM_ERROR$2;
    }
    const s = strm.state;
    const wrap = s.wrap;
    if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) {
      return Z_STREAM_ERROR$2;
    }
    if (wrap === 1) {
      strm.adler = adler32_1(strm.adler, dictionary, dictLength, 0);
    }
    s.wrap = 0;
    if (dictLength >= s.w_size) {
      if (wrap === 0) {
        zero(s.head);
        s.strstart = 0;
        s.block_start = 0;
        s.insert = 0;
      }
      let tmpDict = new Uint8Array(s.w_size);
      tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);
      dictionary = tmpDict;
      dictLength = s.w_size;
    }
    const avail = strm.avail_in;
    const next = strm.next_in;
    const input = strm.input;
    strm.avail_in = dictLength;
    strm.next_in = 0;
    strm.input = dictionary;
    fill_window(s);
    while (s.lookahead >= MIN_MATCH) {
      let str = s.strstart;
      let n = s.lookahead - (MIN_MATCH - 1);
      do {
        s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);
        s.prev[str & s.w_mask] = s.head[s.ins_h];
        s.head[s.ins_h] = str;
        str++;
      } while (--n);
      s.strstart = str;
      s.lookahead = MIN_MATCH - 1;
      fill_window(s);
    }
    s.strstart += s.lookahead;
    s.block_start = s.strstart;
    s.insert = s.lookahead;
    s.lookahead = 0;
    s.match_length = s.prev_length = MIN_MATCH - 1;
    s.match_available = 0;
    strm.next_in = next;
    strm.input = input;
    strm.avail_in = avail;
    s.wrap = wrap;
    return Z_OK$3;
  };
  var deflateInit_1 = deflateInit;
  var deflateInit2_1 = deflateInit2;
  var deflateReset_1 = deflateReset;
  var deflateResetKeep_1 = deflateResetKeep;
  var deflateSetHeader_1 = deflateSetHeader;
  var deflate_2$1 = deflate$2;
  var deflateEnd_1 = deflateEnd;
  var deflateSetDictionary_1 = deflateSetDictionary;
  var deflateInfo = "pako deflate (from Nodeca project)";
  var deflate_1$2 = {
    deflateInit: deflateInit_1,
    deflateInit2: deflateInit2_1,
    deflateReset: deflateReset_1,
    deflateResetKeep: deflateResetKeep_1,
    deflateSetHeader: deflateSetHeader_1,
    deflate: deflate_2$1,
    deflateEnd: deflateEnd_1,
    deflateSetDictionary: deflateSetDictionary_1,
    deflateInfo
  };
  const _has = (obj, key) => {
    return Object.prototype.hasOwnProperty.call(obj, key);
  };
  var assign = function(obj) {
    const sources = Array.prototype.slice.call(arguments, 1);
    while (sources.length) {
      const source = sources.shift();
      if (!source) {
        continue;
      }
      if (typeof source !== "object") {
        throw new TypeError(source + "must be non-object");
      }
      for (const p in source) {
        if (_has(source, p)) {
          obj[p] = source[p];
        }
      }
    }
    return obj;
  };
  var flattenChunks = (chunks) => {
    let len = 0;
    for (let i = 0, l = chunks.length; i < l; i++) {
      len += chunks[i].length;
    }
    const result = new Uint8Array(len);
    for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {
      let chunk = chunks[i];
      result.set(chunk, pos);
      pos += chunk.length;
    }
    return result;
  };
  var common = {
    assign,
    flattenChunks
  };
  let STR_APPLY_UIA_OK = true;
  try {
    String.fromCharCode.apply(null, new Uint8Array(1));
  } catch (__) {
    STR_APPLY_UIA_OK = false;
  }
  const _utf8len = new Uint8Array(256);
  for (let q = 0; q < 256; q++) {
    _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;
  }
  _utf8len[254] = _utf8len[254] = 1;
  var string2buf = (str) => {
    if (typeof TextEncoder === "function" && TextEncoder.prototype.encode) {
      return new TextEncoder().encode(str);
    }
    let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;
    for (m_pos = 0; m_pos < str_len; m_pos++) {
      c = str.charCodeAt(m_pos);
      if ((c & 64512) === 55296 && m_pos + 1 < str_len) {
        c2 = str.charCodeAt(m_pos + 1);
        if ((c2 & 64512) === 56320) {
          c = 65536 + (c - 55296 << 10) + (c2 - 56320);
          m_pos++;
        }
      }
      buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4;
    }
    buf = new Uint8Array(buf_len);
    for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
      c = str.charCodeAt(m_pos);
      if ((c & 64512) === 55296 && m_pos + 1 < str_len) {
        c2 = str.charCodeAt(m_pos + 1);
        if ((c2 & 64512) === 56320) {
          c = 65536 + (c - 55296 << 10) + (c2 - 56320);
          m_pos++;
        }
      }
      if (c < 128) {
        buf[i++] = c;
      } else if (c < 2048) {
        buf[i++] = 192 | c >>> 6;
        buf[i++] = 128 | c & 63;
      } else if (c < 65536) {
        buf[i++] = 224 | c >>> 12;
        buf[i++] = 128 | c >>> 6 & 63;
        buf[i++] = 128 | c & 63;
      } else {
        buf[i++] = 240 | c >>> 18;
        buf[i++] = 128 | c >>> 12 & 63;
        buf[i++] = 128 | c >>> 6 & 63;
        buf[i++] = 128 | c & 63;
      }
    }
    return buf;
  };
  const buf2binstring = (buf, len) => {
    if (len < 65534) {
      if (buf.subarray && STR_APPLY_UIA_OK) {
        return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));
      }
    }
    let result = "";
    for (let i = 0; i < len; i++) {
      result += String.fromCharCode(buf[i]);
    }
    return result;
  };
  var buf2string = (buf, max) => {
    const len = max || buf.length;
    if (typeof TextDecoder === "function" && TextDecoder.prototype.decode) {
      return new TextDecoder().decode(buf.subarray(0, max));
    }
    let i, out;
    const utf16buf = new Array(len * 2);
    for (out = 0, i = 0; i < len; ) {
      let c = buf[i++];
      if (c < 128) {
        utf16buf[out++] = c;
        continue;
      }
      let c_len = _utf8len[c];
      if (c_len > 4) {
        utf16buf[out++] = 65533;
        i += c_len - 1;
        continue;
      }
      c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;
      while (c_len > 1 && i < len) {
        c = c << 6 | buf[i++] & 63;
        c_len--;
      }
      if (c_len > 1) {
        utf16buf[out++] = 65533;
        continue;
      }
      if (c < 65536) {
        utf16buf[out++] = c;
      } else {
        c -= 65536;
        utf16buf[out++] = 55296 | c >> 10 & 1023;
        utf16buf[out++] = 56320 | c & 1023;
      }
    }
    return buf2binstring(utf16buf, out);
  };
  var utf8border = (buf, max) => {
    max = max || buf.length;
    if (max > buf.length) {
      max = buf.length;
    }
    let pos = max - 1;
    while (pos >= 0 && (buf[pos] & 192) === 128) {
      pos--;
    }
    if (pos < 0) {
      return max;
    }
    if (pos === 0) {
      return max;
    }
    return pos + _utf8len[buf[pos]] > max ? pos : max;
  };
  var strings = {
    string2buf,
    buf2string,
    utf8border
  };
  function ZStream() {
    this.input = null;
    this.next_in = 0;
    this.avail_in = 0;
    this.total_in = 0;
    this.output = null;
    this.next_out = 0;
    this.avail_out = 0;
    this.total_out = 0;
    this.msg = "";
    this.state = null;
    this.data_type = 2;
    this.adler = 0;
  }
  var zstream = ZStream;
  const toString$1 = Object.prototype.toString;
  const {
    Z_NO_FLUSH: Z_NO_FLUSH$1,
    Z_SYNC_FLUSH,
    Z_FULL_FLUSH,
    Z_FINISH: Z_FINISH$2,
    Z_OK: Z_OK$2,
    Z_STREAM_END: Z_STREAM_END$2,
    Z_DEFAULT_COMPRESSION,
    Z_DEFAULT_STRATEGY,
    Z_DEFLATED: Z_DEFLATED$1
  } = constants$2;
  function Deflate$1(options) {
    this.options = common.assign({
      level: Z_DEFAULT_COMPRESSION,
      method: Z_DEFLATED$1,
      chunkSize: 16384,
      windowBits: 15,
      memLevel: 8,
      strategy: Z_DEFAULT_STRATEGY
    }, options || {});
    let opt = this.options;
    if (opt.raw && opt.windowBits > 0) {
      opt.windowBits = -opt.windowBits;
    } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) {
      opt.windowBits += 16;
    }
    this.err = 0;
    this.msg = "";
    this.ended = false;
    this.chunks = [];
    this.strm = new zstream();
    this.strm.avail_out = 0;
    let status = deflate_1$2.deflateInit2(
      this.strm,
      opt.level,
      opt.method,
      opt.windowBits,
      opt.memLevel,
      opt.strategy
    );
    if (status !== Z_OK$2) {
      throw new Error(messages[status]);
    }
    if (opt.header) {
      deflate_1$2.deflateSetHeader(this.strm, opt.header);
    }
    if (opt.dictionary) {
      let dict;
      if (typeof opt.dictionary === "string") {
        dict = strings.string2buf(opt.dictionary);
      } else if (toString$1.call(opt.dictionary) === "[object ArrayBuffer]") {
        dict = new Uint8Array(opt.dictionary);
      } else {
        dict = opt.dictionary;
      }
      status = deflate_1$2.deflateSetDictionary(this.strm, dict);
      if (status !== Z_OK$2) {
        throw new Error(messages[status]);
      }
      this._dict_set = true;
    }
  }
  Deflate$1.prototype.push = function(data, flush_mode) {
    const strm = this.strm;
    const chunkSize = this.options.chunkSize;
    let status, _flush_mode;
    if (this.ended) {
      return false;
    }
    if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;
    else _flush_mode = flush_mode === true ? Z_FINISH$2 : Z_NO_FLUSH$1;
    if (typeof data === "string") {
      strm.input = strings.string2buf(data);
    } else if (toString$1.call(data) === "[object ArrayBuffer]") {
      strm.input = new Uint8Array(data);
    } else {
      strm.input = data;
    }
    strm.next_in = 0;
    strm.avail_in = strm.input.length;
    for (; ; ) {
      if (strm.avail_out === 0) {
        strm.output = new Uint8Array(chunkSize);
        strm.next_out = 0;
        strm.avail_out = chunkSize;
      }
      if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {
        this.onData(strm.output.subarray(0, strm.next_out));
        strm.avail_out = 0;
        continue;
      }
      status = deflate_1$2.deflate(strm, _flush_mode);
      if (status === Z_STREAM_END$2) {
        if (strm.next_out > 0) {
          this.onData(strm.output.subarray(0, strm.next_out));
        }
        status = deflate_1$2.deflateEnd(this.strm);
        this.onEnd(status);
        this.ended = true;
        return status === Z_OK$2;
      }
      if (strm.avail_out === 0) {
        this.onData(strm.output);
        continue;
      }
      if (_flush_mode > 0 && strm.next_out > 0) {
        this.onData(strm.output.subarray(0, strm.next_out));
        strm.avail_out = 0;
        continue;
      }
      if (strm.avail_in === 0) break;
    }
    return true;
  };
  Deflate$1.prototype.onData = function(chunk) {
    this.chunks.push(chunk);
  };
  Deflate$1.prototype.onEnd = function(status) {
    if (status === Z_OK$2) {
      this.result = common.flattenChunks(this.chunks);
    }
    this.chunks = [];
    this.err = status;
    this.msg = this.strm.msg;
  };
  function deflate$1(input, options) {
    const deflator = new Deflate$1(options);
    deflator.push(input, true);
    if (deflator.err) {
      throw deflator.msg || messages[deflator.err];
    }
    return deflator.result;
  }
  function deflateRaw$1(input, options) {
    options = options || {};
    options.raw = true;
    return deflate$1(input, options);
  }
  function gzip$1(input, options) {
    options = options || {};
    options.gzip = true;
    return deflate$1(input, options);
  }
  var Deflate_1$1 = Deflate$1;
  var deflate_2 = deflate$1;
  var deflateRaw_1$1 = deflateRaw$1;
  var gzip_1$1 = gzip$1;
  var constants$1 = constants$2;
  var deflate_1$1 = {
    Deflate: Deflate_1$1,
    deflate: deflate_2,
    deflateRaw: deflateRaw_1$1,
    gzip: gzip_1$1,
    constants: constants$1
  };
  const BAD$1 = 16209;
  const TYPE$1 = 16191;
  var inffast = function inflate_fast(strm, start) {
    let _in;
    let last;
    let _out;
    let beg;
    let end;
    let dmax;
    let wsize;
    let whave;
    let wnext;
    let s_window;
    let hold;
    let bits;
    let lcode;
    let dcode;
    let lmask;
    let dmask;
    let here;
    let op;
    let len;
    let dist;
    let from;
    let from_source;
    let input, output;
    const state = strm.state;
    _in = strm.next_in;
    input = strm.input;
    last = _in + (strm.avail_in - 5);
    _out = strm.next_out;
    output = strm.output;
    beg = _out - (start - strm.avail_out);
    end = _out + (strm.avail_out - 257);
    dmax = state.dmax;
    wsize = state.wsize;
    whave = state.whave;
    wnext = state.wnext;
    s_window = state.window;
    hold = state.hold;
    bits = state.bits;
    lcode = state.lencode;
    dcode = state.distcode;
    lmask = (1 << state.lenbits) - 1;
    dmask = (1 << state.distbits) - 1;
    top:
      do {
        if (bits < 15) {
          hold += input[_in++] << bits;
          bits += 8;
          hold += input[_in++] << bits;
          bits += 8;
        }
        here = lcode[hold & lmask];
        dolen:
          for (; ; ) {
            op = here >>> 24;
            hold >>>= op;
            bits -= op;
            op = here >>> 16 & 255;
            if (op === 0) {
              output[_out++] = here & 65535;
            } else if (op & 16) {
              len = here & 65535;
              op &= 15;
              if (op) {
                if (bits < op) {
                  hold += input[_in++] << bits;
                  bits += 8;
                }
                len += hold & (1 << op) - 1;
                hold >>>= op;
                bits -= op;
              }
              if (bits < 15) {
                hold += input[_in++] << bits;
                bits += 8;
                hold += input[_in++] << bits;
                bits += 8;
              }
              here = dcode[hold & dmask];
              dodist:
                for (; ; ) {
                  op = here >>> 24;
                  hold >>>= op;
                  bits -= op;
                  op = here >>> 16 & 255;
                  if (op & 16) {
                    dist = here & 65535;
                    op &= 15;
                    if (bits < op) {
                      hold += input[_in++] << bits;
                      bits += 8;
                      if (bits < op) {
                        hold += input[_in++] << bits;
                        bits += 8;
                      }
                    }
                    dist += hold & (1 << op) - 1;
                    if (dist > dmax) {
                      strm.msg = "invalid distance too far back";
                      state.mode = BAD$1;
                      break top;
                    }
                    hold >>>= op;
                    bits -= op;
                    op = _out - beg;
                    if (dist > op) {
                      op = dist - op;
                      if (op > whave) {
                        if (state.sane) {
                          strm.msg = "invalid distance too far back";
                          state.mode = BAD$1;
                          break top;
                        }
                      }
                      from = 0;
                      from_source = s_window;
                      if (wnext === 0) {
                        from += wsize - op;
                        if (op < len) {
                          len -= op;
                          do {
                            output[_out++] = s_window[from++];
                          } while (--op);
                          from = _out - dist;
                          from_source = output;
                        }
                      } else if (wnext < op) {
                        from += wsize + wnext - op;
                        op -= wnext;
                        if (op < len) {
                          len -= op;
                          do {
                            output[_out++] = s_window[from++];
                          } while (--op);
                          from = 0;
                          if (wnext < len) {
                            op = wnext;
                            len -= op;
                            do {
                              output[_out++] = s_window[from++];
                            } while (--op);
                            from = _out - dist;
                            from_source = output;
                          }
                        }
                      } else {
                        from += wnext - op;
                        if (op < len) {
                          len -= op;
                          do {
                            output[_out++] = s_window[from++];
                          } while (--op);
                          from = _out - dist;
                          from_source = output;
                        }
                      }
                      while (len > 2) {
                        output[_out++] = from_source[from++];
                        output[_out++] = from_source[from++];
                        output[_out++] = from_source[from++];
                        len -= 3;
                      }
                      if (len) {
                        output[_out++] = from_source[from++];
                        if (len > 1) {
                          output[_out++] = from_source[from++];
                        }
                      }
                    } else {
                      from = _out - dist;
                      do {
                        output[_out++] = output[from++];
                        output[_out++] = output[from++];
                        output[_out++] = output[from++];
                        len -= 3;
                      } while (len > 2);
                      if (len) {
                        output[_out++] = output[from++];
                        if (len > 1) {
                          output[_out++] = output[from++];
                        }
                      }
                    }
                  } else if ((op & 64) === 0) {
                    here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
                    continue dodist;
                  } else {
                    strm.msg = "invalid distance code";
                    state.mode = BAD$1;
                    break top;
                  }
                  break;
                }
            } else if ((op & 64) === 0) {
              here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
              continue dolen;
            } else if (op & 32) {
              state.mode = TYPE$1;
              break top;
            } else {
              strm.msg = "invalid literal/length code";
              state.mode = BAD$1;
              break top;
            }
            break;
          }
      } while (_in < last && _out < end);
    len = bits >> 3;
    _in -= len;
    bits -= len << 3;
    hold &= (1 << bits) - 1;
    strm.next_in = _in;
    strm.next_out = _out;
    strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);
    strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
    state.hold = hold;
    state.bits = bits;
    return;
  };
  const MAXBITS = 15;
  const ENOUGH_LENS$1 = 852;
  const ENOUGH_DISTS$1 = 592;
  const CODES$1 = 0;
  const LENS$1 = 1;
  const DISTS$1 = 2;
  const lbase = new Uint16Array([
    /* Length codes 257..285 base */
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    13,
    15,
    17,
    19,
    23,
    27,
    31,
    35,
    43,
    51,
    59,
    67,
    83,
    99,
    115,
    131,
    163,
    195,
    227,
    258,
    0,
    0
  ]);
  const lext = new Uint8Array([
    /* Length codes 257..285 extra */
    16,
    16,
    16,
    16,
    16,
    16,
    16,
    16,
    17,
    17,
    17,
    17,
    18,
    18,
    18,
    18,
    19,
    19,
    19,
    19,
    20,
    20,
    20,
    20,
    21,
    21,
    21,
    21,
    16,
    72,
    78
  ]);
  const dbase = new Uint16Array([
    /* Distance codes 0..29 base */
    1,
    2,
    3,
    4,
    5,
    7,
    9,
    13,
    17,
    25,
    33,
    49,
    65,
    97,
    129,
    193,
    257,
    385,
    513,
    769,
    1025,
    1537,
    2049,
    3073,
    4097,
    6145,
    8193,
    12289,
    16385,
    24577,
    0,
    0
  ]);
  const dext = new Uint8Array([
    /* Distance codes 0..29 extra */
    16,
    16,
    16,
    16,
    17,
    17,
    18,
    18,
    19,
    19,
    20,
    20,
    21,
    21,
    22,
    22,
    23,
    23,
    24,
    24,
    25,
    25,
    26,
    26,
    27,
    27,
    28,
    28,
    29,
    29,
    64,
    64
  ]);
  const inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) => {
    const bits = opts.bits;
    let len = 0;
    let sym = 0;
    let min = 0, max = 0;
    let root = 0;
    let curr = 0;
    let drop = 0;
    let left = 0;
    let used = 0;
    let huff = 0;
    let incr;
    let fill;
    let low;
    let mask;
    let next;
    let base = null;
    let match;
    const count = new Uint16Array(MAXBITS + 1);
    const offs = new Uint16Array(MAXBITS + 1);
    let extra = null;
    let here_bits, here_op, here_val;
    for (len = 0; len <= MAXBITS; len++) {
      count[len] = 0;
    }
    for (sym = 0; sym < codes; sym++) {
      count[lens[lens_index + sym]]++;
    }
    root = bits;
    for (max = MAXBITS; max >= 1; max--) {
      if (count[max] !== 0) {
        break;
      }
    }
    if (root > max) {
      root = max;
    }
    if (max === 0) {
      table[table_index++] = 1 << 24 | 64 << 16 | 0;
      table[table_index++] = 1 << 24 | 64 << 16 | 0;
      opts.bits = 1;
      return 0;
    }
    for (min = 1; min < max; min++) {
      if (count[min] !== 0) {
        break;
      }
    }
    if (root < min) {
      root = min;
    }
    left = 1;
    for (len = 1; len <= MAXBITS; len++) {
      left <<= 1;
      left -= count[len];
      if (left < 0) {
        return -1;
      }
    }
    if (left > 0 && (type === CODES$1 || max !== 1)) {
      return -1;
    }
    offs[1] = 0;
    for (len = 1; len < MAXBITS; len++) {
      offs[len + 1] = offs[len] + count[len];
    }
    for (sym = 0; sym < codes; sym++) {
      if (lens[lens_index + sym] !== 0) {
        work[offs[lens[lens_index + sym]]++] = sym;
      }
    }
    if (type === CODES$1) {
      base = extra = work;
      match = 20;
    } else if (type === LENS$1) {
      base = lbase;
      extra = lext;
      match = 257;
    } else {
      base = dbase;
      extra = dext;
      match = 0;
    }
    huff = 0;
    sym = 0;
    len = min;
    next = table_index;
    curr = root;
    drop = 0;
    low = -1;
    used = 1 << root;
    mask = used - 1;
    if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) {
      return 1;
    }
    for (; ; ) {
      here_bits = len - drop;
      if (work[sym] + 1 < match) {
        here_op = 0;
        here_val = work[sym];
      } else if (work[sym] >= match) {
        here_op = extra[work[sym] - match];
        here_val = base[work[sym] - match];
      } else {
        here_op = 32 + 64;
        here_val = 0;
      }
      incr = 1 << len - drop;
      fill = 1 << curr;
      min = fill;
      do {
        fill -= incr;
        table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
      } while (fill !== 0);
      incr = 1 << len - 1;
      while (huff & incr) {
        incr >>= 1;
      }
      if (incr !== 0) {
        huff &= incr - 1;
        huff += incr;
      } else {
        huff = 0;
      }
      sym++;
      if (--count[len] === 0) {
        if (len === max) {
          break;
        }
        len = lens[lens_index + work[sym]];
      }
      if (len > root && (huff & mask) !== low) {
        if (drop === 0) {
          drop = root;
        }
        next += min;
        curr = len - drop;
        left = 1 << curr;
        while (curr + drop < max) {
          left -= count[curr + drop];
          if (left <= 0) {
            break;
          }
          curr++;
          left <<= 1;
        }
        used += 1 << curr;
        if (type === LENS$1 && used > ENOUGH_LENS$1 || type === DISTS$1 && used > ENOUGH_DISTS$1) {
          return 1;
        }
        low = huff & mask;
        table[low] = root << 24 | curr << 16 | next - table_index | 0;
      }
    }
    if (huff !== 0) {
      table[next + huff] = len - drop << 24 | 64 << 16 | 0;
    }
    opts.bits = root;
    return 0;
  };
  var inftrees = inflate_table;
  const CODES = 0;
  const LENS = 1;
  const DISTS = 2;
  const {
    Z_FINISH: Z_FINISH$1,
    Z_BLOCK,
    Z_TREES,
    Z_OK: Z_OK$1,
    Z_STREAM_END: Z_STREAM_END$1,
    Z_NEED_DICT: Z_NEED_DICT$1,
    Z_STREAM_ERROR: Z_STREAM_ERROR$1,
    Z_DATA_ERROR: Z_DATA_ERROR$1,
    Z_MEM_ERROR: Z_MEM_ERROR$1,
    Z_BUF_ERROR,
    Z_DEFLATED
  } = constants$2;
  const HEAD = 16180;
  const FLAGS = 16181;
  const TIME = 16182;
  const OS = 16183;
  const EXLEN = 16184;
  const EXTRA = 16185;
  const NAME = 16186;
  const COMMENT = 16187;
  const HCRC = 16188;
  const DICTID = 16189;
  const DICT = 16190;
  const TYPE = 16191;
  const TYPEDO = 16192;
  const STORED = 16193;
  const COPY_ = 16194;
  const COPY = 16195;
  const TABLE = 16196;
  const LENLENS = 16197;
  const CODELENS = 16198;
  const LEN_ = 16199;
  const LEN = 16200;
  const LENEXT = 16201;
  const DIST = 16202;
  const DISTEXT = 16203;
  const MATCH = 16204;
  const LIT = 16205;
  const CHECK = 16206;
  const LENGTH = 16207;
  const DONE = 16208;
  const BAD = 16209;
  const MEM = 16210;
  const SYNC = 16211;
  const ENOUGH_LENS = 852;
  const ENOUGH_DISTS = 592;
  const MAX_WBITS = 15;
  const DEF_WBITS = MAX_WBITS;
  const zswap32 = (q) => {
    return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);
  };
  function InflateState() {
    this.strm = null;
    this.mode = 0;
    this.last = false;
    this.wrap = 0;
    this.havedict = false;
    this.flags = 0;
    this.dmax = 0;
    this.check = 0;
    this.total = 0;
    this.head = null;
    this.wbits = 0;
    this.wsize = 0;
    this.whave = 0;
    this.wnext = 0;
    this.window = null;
    this.hold = 0;
    this.bits = 0;
    this.length = 0;
    this.offset = 0;
    this.extra = 0;
    this.lencode = null;
    this.distcode = null;
    this.lenbits = 0;
    this.distbits = 0;
    this.ncode = 0;
    this.nlen = 0;
    this.ndist = 0;
    this.have = 0;
    this.next = null;
    this.lens = new Uint16Array(320);
    this.work = new Uint16Array(288);
    this.lendyn = null;
    this.distdyn = null;
    this.sane = 0;
    this.back = 0;
    this.was = 0;
  }
  const inflateStateCheck = (strm) => {
    if (!strm) {
      return 1;
    }
    const state = strm.state;
    if (!state || state.strm !== strm || state.mode < HEAD || state.mode > SYNC) {
      return 1;
    }
    return 0;
  };
  const inflateResetKeep = (strm) => {
    if (inflateStateCheck(strm)) {
      return Z_STREAM_ERROR$1;
    }
    const state = strm.state;
    strm.total_in = strm.total_out = state.total = 0;
    strm.msg = "";
    if (state.wrap) {
      strm.adler = state.wrap & 1;
    }
    state.mode = HEAD;
    state.last = 0;
    state.havedict = 0;
    state.flags = -1;
    state.dmax = 32768;
    state.head = null;
    state.hold = 0;
    state.bits = 0;
    state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);
    state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);
    state.sane = 1;
    state.back = -1;
    return Z_OK$1;
  };
  const inflateReset = (strm) => {
    if (inflateStateCheck(strm)) {
      return Z_STREAM_ERROR$1;
    }
    const state = strm.state;
    state.wsize = 0;
    state.whave = 0;
    state.wnext = 0;
    return inflateResetKeep(strm);
  };
  const inflateReset2 = (strm, windowBits) => {
    let wrap;
    if (inflateStateCheck(strm)) {
      return Z_STREAM_ERROR$1;
    }
    const state = strm.state;
    if (windowBits < 0) {
      wrap = 0;
      windowBits = -windowBits;
    } else {
      wrap = (windowBits >> 4) + 5;
      if (windowBits < 48) {
        windowBits &= 15;
      }
    }
    if (windowBits && (windowBits < 8 || windowBits > 15)) {
      return Z_STREAM_ERROR$1;
    }
    if (state.window !== null && state.wbits !== windowBits) {
      state.window = null;
    }
    state.wrap = wrap;
    state.wbits = windowBits;
    return inflateReset(strm);
  };
  const inflateInit2 = (strm, windowBits) => {
    if (!strm) {
      return Z_STREAM_ERROR$1;
    }
    const state = new InflateState();
    strm.state = state;
    state.strm = strm;
    state.window = null;
    state.mode = HEAD;
    const ret = inflateReset2(strm, windowBits);
    if (ret !== Z_OK$1) {
      strm.state = null;
    }
    return ret;
  };
  const inflateInit = (strm) => {
    return inflateInit2(strm, DEF_WBITS);
  };
  let virgin = true;
  let lenfix, distfix;
  const fixedtables = (state) => {
    if (virgin) {
      lenfix = new Int32Array(512);
      distfix = new Int32Array(32);
      let sym = 0;
      while (sym < 144) {
        state.lens[sym++] = 8;
      }
      while (sym < 256) {
        state.lens[sym++] = 9;
      }
      while (sym < 280) {
        state.lens[sym++] = 7;
      }
      while (sym < 288) {
        state.lens[sym++] = 8;
      }
      inftrees(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });
      sym = 0;
      while (sym < 32) {
        state.lens[sym++] = 5;
      }
      inftrees(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });
      virgin = false;
    }
    state.lencode = lenfix;
    state.lenbits = 9;
    state.distcode = distfix;
    state.distbits = 5;
  };
  const updatewindow = (strm, src, end, copy) => {
    let dist;
    const state = strm.state;
    if (state.window === null) {
      state.wsize = 1 << state.wbits;
      state.wnext = 0;
      state.whave = 0;
      state.window = new Uint8Array(state.wsize);
    }
    if (copy >= state.wsize) {
      state.window.set(src.subarray(end - state.wsize, end), 0);
      state.wnext = 0;
      state.whave = state.wsize;
    } else {
      dist = state.wsize - state.wnext;
      if (dist > copy) {
        dist = copy;
      }
      state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);
      copy -= dist;
      if (copy) {
        state.window.set(src.subarray(end - copy, end), 0);
        state.wnext = copy;
        state.whave = state.wsize;
      } else {
        state.wnext += dist;
        if (state.wnext === state.wsize) {
          state.wnext = 0;
        }
        if (state.whave < state.wsize) {
          state.whave += dist;
        }
      }
    }
    return 0;
  };
  const inflate$2 = (strm, flush) => {
    let state;
    let input, output;
    let next;
    let put;
    let have, left;
    let hold;
    let bits;
    let _in, _out;
    let copy;
    let from;
    let from_source;
    let here = 0;
    let here_bits, here_op, here_val;
    let last_bits, last_op, last_val;
    let len;
    let ret;
    const hbuf = new Uint8Array(4);
    let opts;
    let n;
    const order = (
      /* permutation of code lengths */
      new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15])
    );
    if (inflateStateCheck(strm) || !strm.output || !strm.input && strm.avail_in !== 0) {
      return Z_STREAM_ERROR$1;
    }
    state = strm.state;
    if (state.mode === TYPE) {
      state.mode = TYPEDO;
    }
    put = strm.next_out;
    output = strm.output;
    left = strm.avail_out;
    next = strm.next_in;
    input = strm.input;
    have = strm.avail_in;
    hold = state.hold;
    bits = state.bits;
    _in = have;
    _out = left;
    ret = Z_OK$1;
    inf_leave:
      for (; ; ) {
        switch (state.mode) {
          case HEAD:
            if (state.wrap === 0) {
              state.mode = TYPEDO;
              break;
            }
            while (bits < 16) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            if (state.wrap & 2 && hold === 35615) {
              if (state.wbits === 0) {
                state.wbits = 15;
              }
              state.check = 0;
              hbuf[0] = hold & 255;
              hbuf[1] = hold >>> 8 & 255;
              state.check = crc32_1(state.check, hbuf, 2, 0);
              hold = 0;
              bits = 0;
              state.mode = FLAGS;
              break;
            }
            if (state.head) {
              state.head.done = false;
            }
            if (!(state.wrap & 1) || /* check if zlib header allowed */
            (((hold & 255) << 8) + (hold >> 8)) % 31) {
              strm.msg = "incorrect header check";
              state.mode = BAD;
              break;
            }
            if ((hold & 15) !== Z_DEFLATED) {
              strm.msg = "unknown compression method";
              state.mode = BAD;
              break;
            }
            hold >>>= 4;
            bits -= 4;
            len = (hold & 15) + 8;
            if (state.wbits === 0) {
              state.wbits = len;
            }
            if (len > 15 || len > state.wbits) {
              strm.msg = "invalid window size";
              state.mode = BAD;
              break;
            }
            state.dmax = 1 << state.wbits;
            state.flags = 0;
            strm.adler = state.check = 1;
            state.mode = hold & 512 ? DICTID : TYPE;
            hold = 0;
            bits = 0;
            break;
          case FLAGS:
            while (bits < 16) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            state.flags = hold;
            if ((state.flags & 255) !== Z_DEFLATED) {
              strm.msg = "unknown compression method";
              state.mode = BAD;
              break;
            }
            if (state.flags & 57344) {
              strm.msg = "unknown header flags set";
              state.mode = BAD;
              break;
            }
            if (state.head) {
              state.head.text = hold >> 8 & 1;
            }
            if (state.flags & 512 && state.wrap & 4) {
              hbuf[0] = hold & 255;
              hbuf[1] = hold >>> 8 & 255;
              state.check = crc32_1(state.check, hbuf, 2, 0);
            }
            hold = 0;
            bits = 0;
            state.mode = TIME;
          case TIME:
            while (bits < 32) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            if (state.head) {
              state.head.time = hold;
            }
            if (state.flags & 512 && state.wrap & 4) {
              hbuf[0] = hold & 255;
              hbuf[1] = hold >>> 8 & 255;
              hbuf[2] = hold >>> 16 & 255;
              hbuf[3] = hold >>> 24 & 255;
              state.check = crc32_1(state.check, hbuf, 4, 0);
            }
            hold = 0;
            bits = 0;
            state.mode = OS;
          case OS:
            while (bits < 16) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            if (state.head) {
              state.head.xflags = hold & 255;
              state.head.os = hold >> 8;
            }
            if (state.flags & 512 && state.wrap & 4) {
              hbuf[0] = hold & 255;
              hbuf[1] = hold >>> 8 & 255;
              state.check = crc32_1(state.check, hbuf, 2, 0);
            }
            hold = 0;
            bits = 0;
            state.mode = EXLEN;
          case EXLEN:
            if (state.flags & 1024) {
              while (bits < 16) {
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              state.length = hold;
              if (state.head) {
                state.head.extra_len = hold;
              }
              if (state.flags & 512 && state.wrap & 4) {
                hbuf[0] = hold & 255;
                hbuf[1] = hold >>> 8 & 255;
                state.check = crc32_1(state.check, hbuf, 2, 0);
              }
              hold = 0;
              bits = 0;
            } else if (state.head) {
              state.head.extra = null;
            }
            state.mode = EXTRA;
          case EXTRA:
            if (state.flags & 1024) {
              copy = state.length;
              if (copy > have) {
                copy = have;
              }
              if (copy) {
                if (state.head) {
                  len = state.head.extra_len - state.length;
                  if (!state.head.extra) {
                    state.head.extra = new Uint8Array(state.head.extra_len);
                  }
                  state.head.extra.set(
                    input.subarray(
                      next,
                      // extra field is limited to 65536 bytes
                      // - no need for additional size check
                      next + copy
                    ),
                    /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
                    len
                  );
                }
                if (state.flags & 512 && state.wrap & 4) {
                  state.check = crc32_1(state.check, input, copy, next);
                }
                have -= copy;
                next += copy;
                state.length -= copy;
              }
              if (state.length) {
                break inf_leave;
              }
            }
            state.length = 0;
            state.mode = NAME;
          case NAME:
            if (state.flags & 2048) {
              if (have === 0) {
                break inf_leave;
              }
              copy = 0;
              do {
                len = input[next + copy++];
                if (state.head && len && state.length < 65536) {
                  state.head.name += String.fromCharCode(len);
                }
              } while (len && copy < have);
              if (state.flags & 512 && state.wrap & 4) {
                state.check = crc32_1(state.check, input, copy, next);
              }
              have -= copy;
              next += copy;
              if (len) {
                break inf_leave;
              }
            } else if (state.head) {
              state.head.name = null;
            }
            state.length = 0;
            state.mode = COMMENT;
          case COMMENT:
            if (state.flags & 4096) {
              if (have === 0) {
                break inf_leave;
              }
              copy = 0;
              do {
                len = input[next + copy++];
                if (state.head && len && state.length < 65536) {
                  state.head.comment += String.fromCharCode(len);
                }
              } while (len && copy < have);
              if (state.flags & 512 && state.wrap & 4) {
                state.check = crc32_1(state.check, input, copy, next);
              }
              have -= copy;
              next += copy;
              if (len) {
                break inf_leave;
              }
            } else if (state.head) {
              state.head.comment = null;
            }
            state.mode = HCRC;
          case HCRC:
            if (state.flags & 512) {
              while (bits < 16) {
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              if (state.wrap & 4 && hold !== (state.check & 65535)) {
                strm.msg = "header crc mismatch";
                state.mode = BAD;
                break;
              }
              hold = 0;
              bits = 0;
            }
            if (state.head) {
              state.head.hcrc = state.flags >> 9 & 1;
              state.head.done = true;
            }
            strm.adler = state.check = 0;
            state.mode = TYPE;
            break;
          case DICTID:
            while (bits < 32) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            strm.adler = state.check = zswap32(hold);
            hold = 0;
            bits = 0;
            state.mode = DICT;
          case DICT:
            if (state.havedict === 0) {
              strm.next_out = put;
              strm.avail_out = left;
              strm.next_in = next;
              strm.avail_in = have;
              state.hold = hold;
              state.bits = bits;
              return Z_NEED_DICT$1;
            }
            strm.adler = state.check = 1;
            state.mode = TYPE;
          case TYPE:
            if (flush === Z_BLOCK || flush === Z_TREES) {
              break inf_leave;
            }
          case TYPEDO:
            if (state.last) {
              hold >>>= bits & 7;
              bits -= bits & 7;
              state.mode = CHECK;
              break;
            }
            while (bits < 3) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            state.last = hold & 1;
            hold >>>= 1;
            bits -= 1;
            switch (hold & 3) {
              case 0:
                state.mode = STORED;
                break;
              case 1:
                fixedtables(state);
                state.mode = LEN_;
                if (flush === Z_TREES) {
                  hold >>>= 2;
                  bits -= 2;
                  break inf_leave;
                }
                break;
              case 2:
                state.mode = TABLE;
                break;
              case 3:
                strm.msg = "invalid block type";
                state.mode = BAD;
            }
            hold >>>= 2;
            bits -= 2;
            break;
          case STORED:
            hold >>>= bits & 7;
            bits -= bits & 7;
            while (bits < 32) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
              strm.msg = "invalid stored block lengths";
              state.mode = BAD;
              break;
            }
            state.length = hold & 65535;
            hold = 0;
            bits = 0;
            state.mode = COPY_;
            if (flush === Z_TREES) {
              break inf_leave;
            }
          case COPY_:
            state.mode = COPY;
          case COPY:
            copy = state.length;
            if (copy) {
              if (copy > have) {
                copy = have;
              }
              if (copy > left) {
                copy = left;
              }
              if (copy === 0) {
                break inf_leave;
              }
              output.set(input.subarray(next, next + copy), put);
              have -= copy;
              next += copy;
              left -= copy;
              put += copy;
              state.length -= copy;
              break;
            }
            state.mode = TYPE;
            break;
          case TABLE:
            while (bits < 14) {
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            state.nlen = (hold & 31) + 257;
            hold >>>= 5;
            bits -= 5;
            state.ndist = (hold & 31) + 1;
            hold >>>= 5;
            bits -= 5;
            state.ncode = (hold & 15) + 4;
            hold >>>= 4;
            bits -= 4;
            if (state.nlen > 286 || state.ndist > 30) {
              strm.msg = "too many length or distance symbols";
              state.mode = BAD;
              break;
            }
            state.have = 0;
            state.mode = LENLENS;
          case LENLENS:
            while (state.have < state.ncode) {
              while (bits < 3) {
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              state.lens[order[state.have++]] = hold & 7;
              hold >>>= 3;
              bits -= 3;
            }
            while (state.have < 19) {
              state.lens[order[state.have++]] = 0;
            }
            state.lencode = state.lendyn;
            state.lenbits = 7;
            opts = { bits: state.lenbits };
            ret = inftrees(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
            state.lenbits = opts.bits;
            if (ret) {
              strm.msg = "invalid code lengths set";
              state.mode = BAD;
              break;
            }
            state.have = 0;
            state.mode = CODELENS;
          case CODELENS:
            while (state.have < state.nlen + state.ndist) {
              for (; ; ) {
                here = state.lencode[hold & (1 << state.lenbits) - 1];
                here_bits = here >>> 24;
                here_op = here >>> 16 & 255;
                here_val = here & 65535;
                if (here_bits <= bits) {
                  break;
                }
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              if (here_val < 16) {
                hold >>>= here_bits;
                bits -= here_bits;
                state.lens[state.have++] = here_val;
              } else {
                if (here_val === 16) {
                  n = here_bits + 2;
                  while (bits < n) {
                    if (have === 0) {
                      break inf_leave;
                    }
                    have--;
                    hold += input[next++] << bits;
                    bits += 8;
                  }
                  hold >>>= here_bits;
                  bits -= here_bits;
                  if (state.have === 0) {
                    strm.msg = "invalid bit length repeat";
                    state.mode = BAD;
                    break;
                  }
                  len = state.lens[state.have - 1];
                  copy = 3 + (hold & 3);
                  hold >>>= 2;
                  bits -= 2;
                } else if (here_val === 17) {
                  n = here_bits + 3;
                  while (bits < n) {
                    if (have === 0) {
                      break inf_leave;
                    }
                    have--;
                    hold += input[next++] << bits;
                    bits += 8;
                  }
                  hold >>>= here_bits;
                  bits -= here_bits;
                  len = 0;
                  copy = 3 + (hold & 7);
                  hold >>>= 3;
                  bits -= 3;
                } else {
                  n = here_bits + 7;
                  while (bits < n) {
                    if (have === 0) {
                      break inf_leave;
                    }
                    have--;
                    hold += input[next++] << bits;
                    bits += 8;
                  }
                  hold >>>= here_bits;
                  bits -= here_bits;
                  len = 0;
                  copy = 11 + (hold & 127);
                  hold >>>= 7;
                  bits -= 7;
                }
                if (state.have + copy > state.nlen + state.ndist) {
                  strm.msg = "invalid bit length repeat";
                  state.mode = BAD;
                  break;
                }
                while (copy--) {
                  state.lens[state.have++] = len;
                }
              }
            }
            if (state.mode === BAD) {
              break;
            }
            if (state.lens[256] === 0) {
              strm.msg = "invalid code -- missing end-of-block";
              state.mode = BAD;
              break;
            }
            state.lenbits = 9;
            opts = { bits: state.lenbits };
            ret = inftrees(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
            state.lenbits = opts.bits;
            if (ret) {
              strm.msg = "invalid literal/lengths set";
              state.mode = BAD;
              break;
            }
            state.distbits = 6;
            state.distcode = state.distdyn;
            opts = { bits: state.distbits };
            ret = inftrees(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
            state.distbits = opts.bits;
            if (ret) {
              strm.msg = "invalid distances set";
              state.mode = BAD;
              break;
            }
            state.mode = LEN_;
            if (flush === Z_TREES) {
              break inf_leave;
            }
          case LEN_:
            state.mode = LEN;
          case LEN:
            if (have >= 6 && left >= 258) {
              strm.next_out = put;
              strm.avail_out = left;
              strm.next_in = next;
              strm.avail_in = have;
              state.hold = hold;
              state.bits = bits;
              inffast(strm, _out);
              put = strm.next_out;
              output = strm.output;
              left = strm.avail_out;
              next = strm.next_in;
              input = strm.input;
              have = strm.avail_in;
              hold = state.hold;
              bits = state.bits;
              if (state.mode === TYPE) {
                state.back = -1;
              }
              break;
            }
            state.back = 0;
            for (; ; ) {
              here = state.lencode[hold & (1 << state.lenbits) - 1];
              here_bits = here >>> 24;
              here_op = here >>> 16 & 255;
              here_val = here & 65535;
              if (here_bits <= bits) {
                break;
              }
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            if (here_op && (here_op & 240) === 0) {
              last_bits = here_bits;
              last_op = here_op;
              last_val = here_val;
              for (; ; ) {
                here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
                here_bits = here >>> 24;
                here_op = here >>> 16 & 255;
                here_val = here & 65535;
                if (last_bits + here_bits <= bits) {
                  break;
                }
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              hold >>>= last_bits;
              bits -= last_bits;
              state.back += last_bits;
            }
            hold >>>= here_bits;
            bits -= here_bits;
            state.back += here_bits;
            state.length = here_val;
            if (here_op === 0) {
              state.mode = LIT;
              break;
            }
            if (here_op & 32) {
              state.back = -1;
              state.mode = TYPE;
              break;
            }
            if (here_op & 64) {
              strm.msg = "invalid literal/length code";
              state.mode = BAD;
              break;
            }
            state.extra = here_op & 15;
            state.mode = LENEXT;
          case LENEXT:
            if (state.extra) {
              n = state.extra;
              while (bits < n) {
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              state.length += hold & (1 << state.extra) - 1;
              hold >>>= state.extra;
              bits -= state.extra;
              state.back += state.extra;
            }
            state.was = state.length;
            state.mode = DIST;
          case DIST:
            for (; ; ) {
              here = state.distcode[hold & (1 << state.distbits) - 1];
              here_bits = here >>> 24;
              here_op = here >>> 16 & 255;
              here_val = here & 65535;
              if (here_bits <= bits) {
                break;
              }
              if (have === 0) {
                break inf_leave;
              }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            if ((here_op & 240) === 0) {
              last_bits = here_bits;
              last_op = here_op;
              last_val = here_val;
              for (; ; ) {
                here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
                here_bits = here >>> 24;
                here_op = here >>> 16 & 255;
                here_val = here & 65535;
                if (last_bits + here_bits <= bits) {
                  break;
                }
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              hold >>>= last_bits;
              bits -= last_bits;
              state.back += last_bits;
            }
            hold >>>= here_bits;
            bits -= here_bits;
            state.back += here_bits;
            if (here_op & 64) {
              strm.msg = "invalid distance code";
              state.mode = BAD;
              break;
            }
            state.offset = here_val;
            state.extra = here_op & 15;
            state.mode = DISTEXT;
          case DISTEXT:
            if (state.extra) {
              n = state.extra;
              while (bits < n) {
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              state.offset += hold & (1 << state.extra) - 1;
              hold >>>= state.extra;
              bits -= state.extra;
              state.back += state.extra;
            }
            if (state.offset > state.dmax) {
              strm.msg = "invalid distance too far back";
              state.mode = BAD;
              break;
            }
            state.mode = MATCH;
          case MATCH:
            if (left === 0) {
              break inf_leave;
            }
            copy = _out - left;
            if (state.offset > copy) {
              copy = state.offset - copy;
              if (copy > state.whave) {
                if (state.sane) {
                  strm.msg = "invalid distance too far back";
                  state.mode = BAD;
                  break;
                }
              }
              if (copy > state.wnext) {
                copy -= state.wnext;
                from = state.wsize - copy;
              } else {
                from = state.wnext - copy;
              }
              if (copy > state.length) {
                copy = state.length;
              }
              from_source = state.window;
            } else {
              from_source = output;
              from = put - state.offset;
              copy = state.length;
            }
            if (copy > left) {
              copy = left;
            }
            left -= copy;
            state.length -= copy;
            do {
              output[put++] = from_source[from++];
            } while (--copy);
            if (state.length === 0) {
              state.mode = LEN;
            }
            break;
          case LIT:
            if (left === 0) {
              break inf_leave;
            }
            output[put++] = state.length;
            left--;
            state.mode = LEN;
            break;
          case CHECK:
            if (state.wrap) {
              while (bits < 32) {
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold |= input[next++] << bits;
                bits += 8;
              }
              _out -= left;
              strm.total_out += _out;
              state.total += _out;
              if (state.wrap & 4 && _out) {
                strm.adler = state.check = /*UPDATE_CHECK(state.check, put - _out, _out);*/
                state.flags ? crc32_1(state.check, output, _out, put - _out) : adler32_1(state.check, output, _out, put - _out);
              }
              _out = left;
              if (state.wrap & 4 && (state.flags ? hold : zswap32(hold)) !== state.check) {
                strm.msg = "incorrect data check";
                state.mode = BAD;
                break;
              }
              hold = 0;
              bits = 0;
            }
            state.mode = LENGTH;
          case LENGTH:
            if (state.wrap && state.flags) {
              while (bits < 32) {
                if (have === 0) {
                  break inf_leave;
                }
                have--;
                hold += input[next++] << bits;
                bits += 8;
              }
              if (state.wrap & 4 && hold !== (state.total & 4294967295)) {
                strm.msg = "incorrect length check";
                state.mode = BAD;
                break;
              }
              hold = 0;
              bits = 0;
            }
            state.mode = DONE;
          case DONE:
            ret = Z_STREAM_END$1;
            break inf_leave;
          case BAD:
            ret = Z_DATA_ERROR$1;
            break inf_leave;
          case MEM:
            return Z_MEM_ERROR$1;
          case SYNC:
          default:
            return Z_STREAM_ERROR$1;
        }
      }
    strm.next_out = put;
    strm.avail_out = left;
    strm.next_in = next;
    strm.avail_in = have;
    state.hold = hold;
    state.bits = bits;
    if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH$1)) {
      if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;
    }
    _in -= strm.avail_in;
    _out -= strm.avail_out;
    strm.total_in += _in;
    strm.total_out += _out;
    state.total += _out;
    if (state.wrap & 4 && _out) {
      strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/
      state.flags ? crc32_1(state.check, output, _out, strm.next_out - _out) : adler32_1(state.check, output, _out, strm.next_out - _out);
    }
    strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
    if ((_in === 0 && _out === 0 || flush === Z_FINISH$1) && ret === Z_OK$1) {
      ret = Z_BUF_ERROR;
    }
    return ret;
  };
  const inflateEnd = (strm) => {
    if (inflateStateCheck(strm)) {
      return Z_STREAM_ERROR$1;
    }
    let state = strm.state;
    if (state.window) {
      state.window = null;
    }
    strm.state = null;
    return Z_OK$1;
  };
  const inflateGetHeader = (strm, head) => {
    if (inflateStateCheck(strm)) {
      return Z_STREAM_ERROR$1;
    }
    const state = strm.state;
    if ((state.wrap & 2) === 0) {
      return Z_STREAM_ERROR$1;
    }
    state.head = head;
    head.done = false;
    return Z_OK$1;
  };
  const inflateSetDictionary = (strm, dictionary) => {
    const dictLength = dictionary.length;
    let state;
    let dictid;
    let ret;
    if (inflateStateCheck(strm)) {
      return Z_STREAM_ERROR$1;
    }
    state = strm.state;
    if (state.wrap !== 0 && state.mode !== DICT) {
      return Z_STREAM_ERROR$1;
    }
    if (state.mode === DICT) {
      dictid = 1;
      dictid = adler32_1(dictid, dictionary, dictLength, 0);
      if (dictid !== state.check) {
        return Z_DATA_ERROR$1;
      }
    }
    ret = updatewindow(strm, dictionary, dictLength, dictLength);
    if (ret) {
      state.mode = MEM;
      return Z_MEM_ERROR$1;
    }
    state.havedict = 1;
    return Z_OK$1;
  };
  var inflateReset_1 = inflateReset;
  var inflateReset2_1 = inflateReset2;
  var inflateResetKeep_1 = inflateResetKeep;
  var inflateInit_1 = inflateInit;
  var inflateInit2_1 = inflateInit2;
  var inflate_2$1 = inflate$2;
  var inflateEnd_1 = inflateEnd;
  var inflateGetHeader_1 = inflateGetHeader;
  var inflateSetDictionary_1 = inflateSetDictionary;
  var inflateInfo = "pako inflate (from Nodeca project)";
  var inflate_1$2 = {
    inflateReset: inflateReset_1,
    inflateReset2: inflateReset2_1,
    inflateResetKeep: inflateResetKeep_1,
    inflateInit: inflateInit_1,
    inflateInit2: inflateInit2_1,
    inflate: inflate_2$1,
    inflateEnd: inflateEnd_1,
    inflateGetHeader: inflateGetHeader_1,
    inflateSetDictionary: inflateSetDictionary_1,
    inflateInfo
  };
  function GZheader() {
    this.text = 0;
    this.time = 0;
    this.xflags = 0;
    this.os = 0;
    this.extra = null;
    this.extra_len = 0;
    this.name = "";
    this.comment = "";
    this.hcrc = 0;
    this.done = false;
  }
  var gzheader = GZheader;
  const toString = Object.prototype.toString;
  const {
    Z_NO_FLUSH,
    Z_FINISH,
    Z_OK,
    Z_STREAM_END,
    Z_NEED_DICT,
    Z_STREAM_ERROR,
    Z_DATA_ERROR,
    Z_MEM_ERROR
  } = constants$2;
  function Inflate$1(options) {
    this.options = common.assign({
      chunkSize: 1024 * 64,
      windowBits: 15,
      to: ""
    }, options || {});
    const opt = this.options;
    if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
      opt.windowBits = -opt.windowBits;
      if (opt.windowBits === 0) {
        opt.windowBits = -15;
      }
    }
    if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {
      opt.windowBits += 32;
    }
    if (opt.windowBits > 15 && opt.windowBits < 48) {
      if ((opt.windowBits & 15) === 0) {
        opt.windowBits |= 15;
      }
    }
    this.err = 0;
    this.msg = "";
    this.ended = false;
    this.chunks = [];
    this.strm = new zstream();
    this.strm.avail_out = 0;
    let status = inflate_1$2.inflateInit2(
      this.strm,
      opt.windowBits
    );
    if (status !== Z_OK) {
      throw new Error(messages[status]);
    }
    this.header = new gzheader();
    inflate_1$2.inflateGetHeader(this.strm, this.header);
    if (opt.dictionary) {
      if (typeof opt.dictionary === "string") {
        opt.dictionary = strings.string2buf(opt.dictionary);
      } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") {
        opt.dictionary = new Uint8Array(opt.dictionary);
      }
      if (opt.raw) {
        status = inflate_1$2.inflateSetDictionary(this.strm, opt.dictionary);
        if (status !== Z_OK) {
          throw new Error(messages[status]);
        }
      }
    }
  }
  Inflate$1.prototype.push = function(data, flush_mode) {
    const strm = this.strm;
    const chunkSize = this.options.chunkSize;
    const dictionary = this.options.dictionary;
    let status, _flush_mode, last_avail_out;
    if (this.ended) return false;
    if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;
    else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;
    if (toString.call(data) === "[object ArrayBuffer]") {
      strm.input = new Uint8Array(data);
    } else {
      strm.input = data;
    }
    strm.next_in = 0;
    strm.avail_in = strm.input.length;
    for (; ; ) {
      if (strm.avail_out === 0) {
        strm.output = new Uint8Array(chunkSize);
        strm.next_out = 0;
        strm.avail_out = chunkSize;
      }
      status = inflate_1$2.inflate(strm, _flush_mode);
      if (status === Z_NEED_DICT && dictionary) {
        status = inflate_1$2.inflateSetDictionary(strm, dictionary);
        if (status === Z_OK) {
          status = inflate_1$2.inflate(strm, _flush_mode);
        } else if (status === Z_DATA_ERROR) {
          status = Z_NEED_DICT;
        }
      }
      while (strm.avail_in > 0 && status === Z_STREAM_END && strm.state.wrap > 0 && data[strm.next_in] !== 0) {
        inflate_1$2.inflateReset(strm);
        status = inflate_1$2.inflate(strm, _flush_mode);
      }
      switch (status) {
        case Z_STREAM_ERROR:
        case Z_DATA_ERROR:
        case Z_NEED_DICT:
        case Z_MEM_ERROR:
          this.onEnd(status);
          this.ended = true;
          return false;
      }
      last_avail_out = strm.avail_out;
      if (strm.next_out) {
        if (strm.avail_out === 0 || status === Z_STREAM_END) {
          if (this.options.to === "string") {
            let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);
            let tail = strm.next_out - next_out_utf8;
            let utf8str = strings.buf2string(strm.output, next_out_utf8);
            strm.next_out = tail;
            strm.avail_out = chunkSize - tail;
            if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);
            this.onData(utf8str);
          } else {
            this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));
          }
        }
      }
      if (status === Z_OK && last_avail_out === 0) continue;
      if (status === Z_STREAM_END) {
        status = inflate_1$2.inflateEnd(this.strm);
        this.onEnd(status);
        this.ended = true;
        return true;
      }
      if (strm.avail_in === 0) break;
    }
    return true;
  };
  Inflate$1.prototype.onData = function(chunk) {
    this.chunks.push(chunk);
  };
  Inflate$1.prototype.onEnd = function(status) {
    if (status === Z_OK) {
      if (this.options.to === "string") {
        this.result = this.chunks.join("");
      } else {
        this.result = common.flattenChunks(this.chunks);
      }
    }
    this.chunks = [];
    this.err = status;
    this.msg = this.strm.msg;
  };
  function inflate$1(input, options) {
    const inflator = new Inflate$1(options);
    inflator.push(input);
    if (inflator.err) throw inflator.msg || messages[inflator.err];
    return inflator.result;
  }
  function inflateRaw$1(input, options) {
    options = options || {};
    options.raw = true;
    return inflate$1(input, options);
  }
  var Inflate_1$1 = Inflate$1;
  var inflate_2 = inflate$1;
  var inflateRaw_1$1 = inflateRaw$1;
  var ungzip$1 = inflate$1;
  var constants = constants$2;
  var inflate_1$1 = {
    Inflate: Inflate_1$1,
    inflate: inflate_2,
    inflateRaw: inflateRaw_1$1,
    ungzip: ungzip$1,
    constants
  };
  const { Deflate, deflate, deflateRaw, gzip } = deflate_1$1;
  const { Inflate, inflate, inflateRaw, ungzip } = inflate_1$1;
  var Deflate_1 = Deflate;
  var deflate_1 = deflate;
  var deflateRaw_1 = deflateRaw;
  var gzip_1 = gzip;
  var Inflate_1 = Inflate;
  var inflate_1 = inflate;
  var inflateRaw_1 = inflateRaw;
  var ungzip_1 = ungzip;
  var constants_1 = constants$2;
  var pako = {
    Deflate: Deflate_1,
    deflate: deflate_1,
    deflateRaw: deflateRaw_1,
    gzip: gzip_1,
    Inflate: Inflate_1,
    inflate: inflate_1,
    inflateRaw: inflateRaw_1,
    ungzip: ungzip_1,
    constants: constants_1
  };
  var USX_HCODES_DFLT = new Uint8Array([0, 64, 128, 192, 224]);
  var USX_HCODE_LENS_DFLT = new Uint8Array([2, 2, 2, 3, 3]);
  var USX_FREQ_SEQ_DFLT = ['": "', '": ', "</", '="', '":"', "://"];
  var USX_TEMPLATES = [
    "tfff-of-tfTtf:rf:rf.fffZ",
    "tfff-of-tf",
    "(fff) fff-ffff",
    "tf:rf:rf",
    0
  ];
  const USX_ALPHA = 0;
  const USX_SYM = 1;
  const USX_NUM = 2;
  const USX_DICT = 3;
  const USX_DELTA = 4;
  var usx_sets = [
    "\0 etaoinsrlcdhupmbgwfyvkqjxz",
    "\"{}_<>:\n\0[]\\;'	@*&?!^|\r~`\0\0\0",
    "\0,.01925-/34678() =+$%#\0\0\0\0\0"
  ];
  var usx_code_94 = new Array(94);
  var usx_vcodes = new Uint8Array([
    0,
    64,
    96,
    128,
    144,
    160,
    176,
    192,
    208,
    216,
    224,
    228,
    232,
    236,
    238,
    240,
    242,
    244,
    246,
    247,
    248,
    249,
    250,
    251,
    252,
    253,
    254,
    255
  ]);
  var usx_vcode_lens = new Uint8Array([
    2,
    3,
    3,
    4,
    4,
    4,
    4,
    4,
    5,
    5,
    6,
    6,
    6,
    7,
    7,
    7,
    7,
    7,
    8,
    8,
    8,
    8,
    8,
    8,
    8,
    8,
    8,
    8
  ]);
  var usx_freq_codes = new Uint8Array([
    (1 << 5) + 25,
    (1 << 5) + 26,
    (1 << 5) + 27,
    (2 << 5) + 23,
    (2 << 5) + 24,
    (2 << 5) + 25
  ]);
  var NICE_LEN = 5;
  const RPT_CODE = (2 << 5) + 26;
  const TERM_CODE = (2 << 5) + 27;
  const LF_CODE = (1 << 5) + 7;
  const CRLF_CODE = (1 << 5) + 8;
  const CR_CODE = (1 << 5) + 22;
  const TAB_CODE = (1 << 5) + 14;
  const NUM_SPC_CODE = (2 << 5) + 17;
  const UNI_STATE_SPL_CODE = 248;
  const UNI_STATE_SPL_CODE_LEN = 5;
  const UNI_STATE_SW_CODE = 128;
  const UNI_STATE_SW_CODE_LEN = 2;
  const SW_CODE = 0;
  const SW_CODE_LEN = 2;
  const TERM_BYTE_PRESET_1 = 0;
  const TERM_BYTE_PRESET_1_LEN_LOWER = 6;
  const TERM_BYTE_PRESET_1_LEN_UPPER = 4;
  const USX_OFFSET_94 = 33;
  function memset(array, val, size) {
    for (var i = 0; i < size; ++i) {
      array[i] = val;
    }
  }
  var is_inited = 0;
  function init_coder() {
    if (is_inited) return;
    memset(usx_code_94, "\0", 94);
    for (var i = 0; i < 3; i++) {
      for (var j = 0; j < 28; j++) {
        var c = usx_sets[i].charCodeAt(j);
        if (c !== 0 && c > 32) {
          usx_code_94[c - USX_OFFSET_94] = (i << 5) + j;
          if (c >= 97 && c <= 122)
            usx_code_94[c - USX_OFFSET_94 - (97 - 65)] = (i << 5) + j;
        }
      }
    }
    is_inited = 1;
  }
  var usx_mask = new Uint8Array([128, 192, 224, 240, 248, 252, 254, 255]);
  function append_bits(out, olen, ol, code, clen) {
    var cur_bit;
    var blen;
    var a_byte;
    var oidx;
    while (clen > 0) {
      cur_bit = ol % 8;
      blen = clen;
      a_byte = code & usx_mask[blen - 1];
      a_byte >>= cur_bit;
      if (blen + cur_bit > 8) blen = 8 - cur_bit;
      oidx = ol / 8;
      if (oidx < 0 || olen <= oidx) return -1;
      if (cur_bit == 0) out[ol >> 3] = a_byte;
      else out[ol >> 3] |= a_byte;
      code <<= blen;
      ol += blen;
      clen -= blen;
    }
    return ol;
  }
  function append_switch_code(out, olen, ol, state) {
    if (state == USX_DELTA) {
      ol = append_bits(out, olen, ol, UNI_STATE_SPL_CODE, UNI_STATE_SPL_CODE_LEN);
      ol = append_bits(out, olen, ol, UNI_STATE_SW_CODE, UNI_STATE_SW_CODE_LEN);
    } else ol = append_bits(out, olen, ol, SW_CODE, SW_CODE_LEN);
    return ol;
  }
  function append_code(out, olen, ol, code, state, usx_hcodes, usx_hcode_lens) {
    var hcode = code >> 5;
    var vcode = code & 31;
    if (usx_hcode_lens[hcode] == 0 && hcode != USX_ALPHA) return [ol, state];
    switch (hcode) {
      case USX_ALPHA:
        if (state != USX_ALPHA) {
          ol = append_switch_code(out, olen, ol, state);
          ol = append_bits(
            out,
            olen,
            ol,
            usx_hcodes[USX_ALPHA],
            usx_hcode_lens[USX_ALPHA]
          );
          state = USX_ALPHA;
        }
        break;
      case USX_SYM:
        ol = append_switch_code(out, olen, ol, state);
        ol = append_bits(
          out,
          olen,
          ol,
          usx_hcodes[USX_SYM],
          usx_hcode_lens[USX_SYM]
        );
        break;
      case USX_NUM:
        if (state != USX_NUM) {
          ol = append_switch_code(out, olen, ol, state);
          ol = append_bits(
            out,
            olen,
            ol,
            usx_hcodes[USX_NUM],
            usx_hcode_lens[USX_NUM]
          );
          if (usx_sets[hcode].charCodeAt(vcode) >= 48 && usx_sets[hcode].charCodeAt(vcode) <= 57)
            state = USX_NUM;
        }
    }
    return [
      append_bits(out, olen, ol, usx_vcodes[vcode], usx_vcode_lens[vcode]),
      state
    ];
  }
  const count_bit_lens = new Uint8Array([2, 4, 7, 11, 16]);
  const count_adder = [4, 20, 148, 2196, 67732];
  const count_codes = new Uint8Array([1, 130, 195, 228, 244]);
  function encodeCount(out, olen, ol, count) {
    for (var i = 0; i < 5; i++) {
      if (count < count_adder[i]) {
        ol = append_bits(
          out,
          olen,
          ol,
          count_codes[i] & 248,
          count_codes[i] & 7
        );
        var count16 = count - (i > 0 ? count_adder[i - 1] : 0) << 16 - count_bit_lens[i];
        if (count_bit_lens[i] > 8) {
          ol = append_bits(out, olen, ol, count16 >> 8, 8);
          ol = append_bits(out, olen, ol, count16 & 255, count_bit_lens[i] - 8);
        } else ol = append_bits(out, olen, ol, count16 >> 8, count_bit_lens[i]);
        return ol;
      }
    }
    return ol;
  }
  const uni_bit_len = new Uint8Array([6, 12, 14, 16, 21]);
  const uni_adder = [0, 64, 4160, 20544, 86080];
  function encodeUnicode(out, olen, ol, code, prev_code) {
    const codes = new Uint8Array([1, 130, 195, 228, 245, 253]);
    var till = 0;
    var diff = code - prev_code;
    if (diff < 0) diff = -diff;
    for (var i = 0; i < 5; i++) {
      till += 1 << uni_bit_len[i];
      if (diff < till) {
        ol = append_bits(out, olen, ol, codes[i] & 248, codes[i] & 7);
        ol = append_bits(out, olen, ol, prev_code > code ? 128 : 0, 1);
        var val = diff - uni_adder[i];
        if (uni_bit_len[i] > 16) {
          val <<= 24 - uni_bit_len[i];
          ol = append_bits(out, olen, ol, val >> 16, 8);
          ol = append_bits(out, olen, ol, val >> 8 & 255, 8);
          ol = append_bits(out, olen, ol, val & 255, uni_bit_len[i] - 16);
        } else if (uni_bit_len[i] > 8) {
          val <<= 16 - uni_bit_len[i];
          ol = append_bits(out, olen, ol, val >> 8, 8);
          ol = append_bits(out, olen, ol, val & 255, uni_bit_len[i] - 8);
        } else {
          val <<= 8 - uni_bit_len[i];
          ol = append_bits(out, olen, ol, val & 255, uni_bit_len[i]);
        }
        return ol;
      }
    }
    return ol;
  }
  function readUTF8(input, len, l) {
    var ret = 0;
    if (typeof input == "string") {
      ret = input.codePointAt(l);
      return [ret, ret === input.charCodeAt(l) ? 1 : 2];
    }
    var utf8len = 0;
    if (l < len - 1 && (input[l] & 224) == 192 && (input[l + 1] & 192) == 128) {
      utf8len = 2;
      ret = input[l] & 31;
      ret <<= 6;
      ret += input[l + 1] & 63;
      if (ret < 128) ret = 0;
    } else if (l < len - 2 && (input[l] & 240) == 224 && (input[l + 1] & 192) == 128 && (input[l + 2] & 192) == 128) {
      utf8len = 3;
      ret = input[l] & 15;
      ret <<= 6;
      ret += input[l + 1] & 63;
      ret <<= 6;
      ret += input[l + 2] & 63;
      if (ret < 2048) ret = 0;
    } else if (l < len - 3 && (input[l] & 248) == 240 && (input[l + 1] & 192) == 128 && (input[l + 2] & 192) == 128 && (input[l + 3] & 192) == 128) {
      utf8len = 4;
      ret = input[l] & 7;
      ret <<= 6;
      ret += input[l + 1] & 63;
      ret <<= 6;
      ret += input[l + 2] & 63;
      ret <<= 6;
      ret += input[l + 3] & 63;
      if (ret < 65536) ret = 0;
    }
    return [ret, utf8len];
  }
  function matchOccurance(input, len, l, out, olen, ol, state, usx_hcodes, usx_hcode_lens) {
    var j, k;
    var longest_dist = 0;
    var longest_len = 0;
    for (j = l - NICE_LEN; j >= 0; j--) {
      for (k = l; k < len && j + k - l < l; k++) {
        if (input[k] != input[j + k - l]) break;
      }
      while (input[k] >> 6 == 2) k--;
      if (k - l > NICE_LEN - 1) {
        var match_len = k - l - NICE_LEN;
        var match_dist = l - j - NICE_LEN + 1;
        if (match_len > longest_len) {
          longest_len = match_len;
          longest_dist = match_dist;
        }
      }
    }
    if (longest_len > 0) {
      ol = append_switch_code(out, olen, ol, state);
      ol = append_bits(
        out,
        olen,
        ol,
        usx_hcodes[USX_DICT],
        usx_hcode_lens[USX_DICT]
      );
      ol = encodeCount(out, olen, ol, longest_len);
      ol = encodeCount(out, olen, ol, longest_dist);
      l += longest_len + NICE_LEN;
      l--;
      return [l, ol];
    }
    return [-l, ol];
  }
  function matchLine(input, len, l, out, olen, ol, prev_lines, prev_lines_idx, state, usx_hcodes, usx_hcode_lens) {
    var last_ol = ol;
    var last_len = 0;
    var last_dist = 0;
    var last_ctx = 0;
    var line_ctr = 0;
    var j = 0;
    do {
      var i, k;
      var prev_line = prev_lines[prev_lines_idx - line_ctr];
      var line_len = prev_line.length;
      var limit = line_ctr == 0 ? l : line_len;
      for (; j < limit; j++) {
        for (i = l, k = j; k < line_len && k < limit && i < len; k++, i++) {
          if (prev_line[k] !== input[i]) break;
        }
        while (prev_line[k] >> 6 == 2) k--;
        if (k - j >= NICE_LEN) {
          if (last_len > 0) {
            if (j > last_dist) continue;
            ol = last_ol;
          }
          last_len = k - j;
          last_dist = j;
          last_ctx = line_ctr;
          ol = append_switch_code(out, olen, ol, state);
          ol = append_bits(
            out,
            olen,
            ol,
            usx_hcodes[USX_DICT],
            usx_hcode_lens[USX_DICT]
          );
          ol = encodeCount(out, olen, ol, last_len - NICE_LEN);
          ol = encodeCount(out, olen, ol, last_dist);
          ol = encodeCount(out, olen, ol, last_ctx);
          j += last_len;
        }
      }
    } while (line_ctr++ < prev_lines_idx);
    if (last_len > 0) {
      l += last_len;
      l--;
      return [l, ol];
    }
    return [-l, ol];
  }
  function getBaseCode(ch) {
    if (ch >= 48 && ch <= 57) return ch - 48 << 4;
    else if (ch >= 65 && ch <= 70) return ch - 65 + 10 << 4;
    else if (ch >= 97 && ch <= 102) return ch - 97 + 10 << 4;
    return 0;
  }
  const USX_NIB_NUM = 0;
  const USX_NIB_HEX_LOWER = 1;
  const USX_NIB_HEX_UPPER = 2;
  const USX_NIB_NOT = 3;
  function getNibbleType(ch) {
    if (ch >= 48 && ch <= 57) return USX_NIB_NUM;
    else if (ch >= 97 && ch <= 102) return USX_NIB_HEX_LOWER;
    else if (ch >= 65 && ch <= 70) return USX_NIB_HEX_UPPER;
    return USX_NIB_NOT;
  }
  function append_nibble_escape(out, olen, ol, state, usx_hcodes, usx_hcode_lens) {
    ol = append_switch_code(out, olen, ol, state);
    ol = append_bits(out, olen, ol, usx_hcodes[USX_NUM], usx_hcode_lens[USX_NUM]);
    ol = append_bits(out, olen, ol, 0, 2);
    return ol;
  }
  function append_final_bits(out, olen, ol, state, is_all_upper, usx_hcodes, usx_hcode_lens) {
    if (usx_hcode_lens[USX_ALPHA]) {
      if (USX_NUM != state) {
        ol = append_switch_code(out, olen, ol, state);
        ol = append_bits(
          out,
          olen,
          ol,
          usx_hcodes[USX_NUM],
          usx_hcode_lens[USX_NUM]
        );
      }
      ol = append_bits(
        out,
        olen,
        ol,
        usx_vcodes[TERM_CODE & 31],
        usx_vcode_lens[TERM_CODE & 31]
      );
    } else {
      ol = append_bits(
        out,
        olen,
        ol,
        TERM_BYTE_PRESET_1,
        is_all_upper ? TERM_BYTE_PRESET_1_LEN_UPPER : TERM_BYTE_PRESET_1_LEN_LOWER
      );
    }
    ol = append_bits(
      out,
      olen,
      ol,
      ol == 0 || out[(ol - 1) / 8] << (ol - 1 & 7) >= 0 ? 0 : 255,
      8 - ol % 8 & 7
    );
    return ol;
  }
  function compare_arr(arr1, arr2, is_str) {
    if (is_str) return arr1 === arr2;
    else {
      if (arr1.length !== arr2.length) return false;
      for (var i = 0; i < arr2.length; i++) {
        if (arr1.charCodeAt(i) !== arr2[i]) return false;
      }
    }
    return true;
  }
  const usx_spl_code = new Uint8Array([0, 224, 192, 240]);
  const usx_spl_code_len = new Uint8Array([1, 4, 3, 4]);
  function unishox2_compress(input, len, out, usx_hcodes, usx_hcode_lens, usx_freq_seq, usx_templates, ignoreHex) {
    var state;
    var l, ll, ol;
    var c_in, c_next;
    var prev_uni;
    var is_upper, is_all_upper;
    var prev_lines_arr = null;
    var prev_lines_idx;
    if (input instanceof Array) {
      prev_lines_arr = input;
      prev_lines_idx = len;
      input = prev_lines_arr[prev_lines_idx];
      len = input.length;
    }
    var olen = out.length;
    var is_str = typeof input == "string";
    init_coder();
    ol = 0;
    prev_uni = 0;
    state = USX_ALPHA;
    is_all_upper = false;
    ol = append_bits(out, olen, ol, 128, 1);
    for (l = 0; l < len; l++) {
      if (usx_hcode_lens[USX_DICT] > 0 && l < len - NICE_LEN + 1) {
        if (prev_lines_arr !== void 0 && prev_lines_arr != null) {
          [l, ol] = matchLine(
            input,
            len,
            l,
            out,
            olen,
            ol,
            prev_lines_arr,
            prev_lines_idx,
            state,
            usx_hcodes,
            usx_hcode_lens
          );
          if (l > 0) {
            continue;
          } else if (l < 0 && ol < 0) {
            return olen + 1;
          }
          l = -l;
        } else {
          [l, ol] = matchOccurance(
            input,
            len,
            l,
            out,
            olen,
            ol,
            state,
            usx_hcodes,
            usx_hcode_lens
          );
          if (l > 0) {
            continue;
          } else if (l < 0 && ol < 0) {
            return olen + 1;
          }
          l = -l;
        }
      }
      c_in = input[l];
      if (l > 0 && len > 4 && l < len - 4 && usx_hcode_lens[USX_NUM] > 0 && c_in <= (is_str ? "~" : 126)) {
        if (c_in == input[l - 1] && c_in == input[l + 1] && c_in == input[l + 2] && c_in == input[l + 3]) {
          var rpt_count = l + 4;
          while (rpt_count < len && input[rpt_count] == c_in) rpt_count++;
          rpt_count -= l;
          [ol, state] = append_code(
            out,
            olen,
            ol,
            RPT_CODE,
            state,
            usx_hcodes,
            usx_hcode_lens
          );
          ol = encodeCount(out, olen, ol, rpt_count - 4);
          l += rpt_count;
          l--;
          continue;
        }
      }
      if (l <= len - 36 && usx_hcode_lens[USX_NUM] > 0) {
        var hyp_code = is_str ? "-" : 45;
        var hex_type = USX_NIB_NUM;
        if (input[l + 8] === hyp_code && input[l + 13] === hyp_code && input[l + 18] === hyp_code && input[l + 23] === hyp_code) {
          var uid_pos = l;
          for (; uid_pos < l + 36; uid_pos++) {
            var c_uid = is_str ? input.charCodeAt(uid_pos) : input[uid_pos];
            if (c_uid === 45 && (uid_pos == 8 || uid_pos == 13 || uid_pos == 18 || uid_pos == 23))
              continue;
            var nib_type = getNibbleType(c_uid);
            if (nib_type == USX_NIB_NOT || ignoreHex) break;
            if (nib_type != USX_NIB_NUM) {
              if (hex_type != USX_NIB_NUM && hex_type != nib_type) break;
              hex_type = nib_type;
            }
          }
          if (uid_pos == l + 36) {
            ol = append_nibble_escape(
              out,
              olen,
              ol,
              state,
              usx_hcodes,
              usx_hcode_lens
            );
            ol = append_bits(
              out,
              olen,
              ol,
              hex_type == USX_NIB_HEX_LOWER ? 192 : 240,
              hex_type == USX_NIB_HEX_LOWER ? 3 : 5
            );
            for (uid_pos = l; uid_pos < l + 36; uid_pos++) {
              var c_uid = is_str ? input.charCodeAt(uid_pos) : input[uid_pos];
              if (c_uid !== 45)
                ol = append_bits(out, olen, ol, getBaseCode(c_uid), 4);
            }
            l += 35;
            continue;
          }
        }
      }
      if (l < len - 5 && usx_hcode_lens[USX_NUM] > 0) {
        var hex_type = USX_NIB_NUM;
        var hex_len = 0;
        do {
          var c_uid = is_str ? input.charCodeAt(l + hex_len) : input[l + hex_len];
          var nib_type = getNibbleType(c_uid);
          if (nib_type == USX_NIB_NOT || ignoreHex) break;
          if (nib_type != USX_NIB_NUM) {
            if (hex_type != USX_NIB_NUM && hex_type != nib_type) break;
            hex_type = nib_type;
          }
          hex_len++;
        } while (l + hex_len < len);
        if (hex_len > 10 && hex_type == USX_NIB_NUM) hex_type = USX_NIB_HEX_LOWER;
        if ((hex_type == USX_NIB_HEX_LOWER || hex_type == USX_NIB_HEX_UPPER) && hex_len > 3) {
          ol = append_nibble_escape(
            out,
            olen,
            ol,
            state,
            usx_hcodes,
            usx_hcode_lens
          );
          ol = append_bits(
            out,
            olen,
            ol,
            hex_type == USX_NIB_HEX_LOWER ? 128 : 224,
            hex_type == USX_NIB_HEX_LOWER ? 2 : 4
          );
          ol = encodeCount(out, olen, ol, hex_len);
          do {
            var c_uid = is_str ? input.charCodeAt(l) : input[l];
            ol = append_bits(out, olen, ol, getBaseCode(c_uid), 4);
            l++;
          } while (--hex_len > 0);
          l--;
          continue;
        }
      }
      if (usx_templates != null && usx_templates != void 0) {
        var i;
        for (i = 0; i < 5; i++) {
          if (typeof usx_templates[i] == "string") {
            var rem = usx_templates[i].length;
            var j = 0;
            for (; j < rem && l + j < len; j++) {
              var c_t = usx_templates[i][j];
              c_in = is_str ? input.charCodeAt(l + j) : input[l + j];
              if (c_t === "f" || c_t === "F") {
                if (getNibbleType(c_in) != (c_t === "f" ? USX_NIB_HEX_LOWER : USX_NIB_HEX_UPPER) && getNibbleType(c_in) != USX_NIB_NUM) {
                  break;
                }
              } else if (c_t === "r" || c_t === "t" || c_t === "o") {
                if (c_in < 48 || c_in > (c_t === "r" ? 55 : c_t === "t" ? 51 : 49))
                  break;
              } else if (c_t.charCodeAt(0) !== c_in) break;
            }
            if (j / rem > 0.66) {
              rem = rem - j;
              ol = append_nibble_escape(
                out,
                olen,
                ol,
                state,
                usx_hcodes,
                usx_hcode_lens
              );
              ol = append_bits(out, olen, ol, 0, 1);
              ol = append_bits(
                out,
                olen,
                ol,
                count_codes[i] & 248,
                count_codes[i] & 7
              );
              ol = encodeCount(out, olen, ol, rem);
              for (var k = 0; k < j; k++) {
                var c_t = usx_templates[i][k];
                c_in = is_str ? input.charCodeAt(l + k) : input[l + k];
                if (c_t === "f" || c_t === "F") {
                  ol = append_bits(out, olen, ol, getBaseCode(c_in), 4);
                } else if (c_t === "r" || c_t === "t" || c_t === "o") {
                  c_t = c_t === "r" ? 3 : c_t === "t" ? 2 : 1;
                  ol = append_bits(out, olen, ol, c_in - 48 << 8 - c_t, c_t);
                }
              }
              l += j;
              l--;
              break;
            }
          }
        }
        if (i < 5) continue;
      }
      if (usx_freq_seq != null) {
        var i;
        for (i = 0; i < 6; i++) {
          var seq_len = usx_freq_seq[i].length;
          if (len - seq_len >= 0 && l <= len - seq_len) {
            if (usx_hcode_lens[usx_freq_codes[i] >> 5] && compare_arr(
              usx_freq_seq[i].slice(0, seq_len),
              input.slice(l, l + seq_len),
              is_str
            )) {
              [ol, state] = append_code(
                out,
                olen,
                ol,
                usx_freq_codes[i],
                state,
                usx_hcodes,
                usx_hcode_lens
              );
              l += seq_len;
              l--;
              break;
            }
          }
        }
        if (i < 6) continue;
      }
      c_in = is_str ? input.charCodeAt(l) : input[l];
      is_upper = false;
      if (c_in >= 65 && c_in <= 90)
        is_upper = true;
      else {
        if (is_all_upper) {
          is_all_upper = false;
          ol = append_switch_code(out, olen, ol, state);
          ol = append_bits(
            out,
            olen,
            ol,
            usx_hcodes[USX_ALPHA],
            usx_hcode_lens[USX_ALPHA]
          );
          state = USX_ALPHA;
        }
      }
      if (is_upper && !is_all_upper) {
        if (state == USX_NUM) {
          ol = append_switch_code(out, olen, ol, state);
          ol = append_bits(
            out,
            olen,
            ol,
            usx_hcodes[USX_ALPHA],
            usx_hcode_lens[USX_ALPHA]
          );
          state = USX_ALPHA;
        }
        ol = append_switch_code(out, olen, ol, state);
        ol = append_bits(
          out,
          olen,
          ol,
          usx_hcodes[USX_ALPHA],
          usx_hcode_lens[USX_ALPHA]
        );
        if (state == USX_DELTA) {
          state = USX_ALPHA;
          ol = append_switch_code(out, olen, ol, state);
          ol = append_bits(
            out,
            olen,
            ol,
            usx_hcodes[USX_ALPHA],
            usx_hcode_lens[USX_ALPHA]
          );
        }
      }
      c_next = 0;
      if (l + 1 < len) c_next = is_str ? input.charCodeAt(l + 1) : input[l + 1];
      if (c_in >= 32 && c_in <= 126) {
        if (is_upper && !is_all_upper) {
          for (ll = l + 4; ll >= l && ll < len; ll--) {
            var c_u = is_str ? input.charCodeAt(ll) : input[ll];
            if (c_u < 65 || c_u > 90)
              break;
          }
          if (ll == l - 1) {
            ol = append_switch_code(out, olen, ol, state);
            ol = append_bits(
              out,
              olen,
              ol,
              usx_hcodes[USX_ALPHA],
              usx_hcode_lens[USX_ALPHA]
            );
            state = USX_ALPHA;
            is_all_upper = true;
          }
        }
        if (state == USX_DELTA) {
          var ch_idx = " .,".indexOf(String.fromCharCode(c_in));
          if (ch_idx != -1) {
            ol = append_bits(
              out,
              olen,
              ol,
              UNI_STATE_SPL_CODE,
              UNI_STATE_SPL_CODE_LEN
            );
            ol = append_bits(
              out,
              olen,
              ol,
              usx_spl_code[ch_idx],
              usx_spl_code_len[ch_idx]
            );
            continue;
          }
        }
        c_in -= 32;
        if (is_all_upper && is_upper) c_in += 32;
        if (c_in === 0) {
          if (state == USX_NUM)
            ol = append_bits(
              out,
              olen,
              ol,
              usx_vcodes[NUM_SPC_CODE & 31],
              usx_vcode_lens[NUM_SPC_CODE & 31]
            );
          else ol = append_bits(out, olen, ol, usx_vcodes[1], usx_vcode_lens[1]);
        } else {
          c_in = c_in - 1;
          [ol, state] = append_code(
            out,
            olen,
            ol,
            usx_code_94[c_in],
            state,
            usx_hcodes,
            usx_hcode_lens
          );
        }
      } else if (c_in === 13 && c_next === 10) {
        [ol, state] = append_code(
          out,
          olen,
          ol,
          CRLF_CODE,
          state,
          usx_hcodes,
          usx_hcode_lens
        );
        l++;
      } else if (c_in === 10) {
        if (state == USX_DELTA) {
          ol = append_bits(
            out,
            olen,
            ol,
            UNI_STATE_SPL_CODE,
            UNI_STATE_SPL_CODE_LEN
          );
          ol = append_bits(out, olen, ol, 240, 4);
        } else
          [ol, state] = append_code(
            out,
            olen,
            ol,
            LF_CODE,
            state,
            usx_hcodes,
            usx_hcode_lens
          );
      } else if (c_in === 13) {
        [ol, state] = append_code(
          out,
          olen,
          ol,
          CR_CODE,
          state,
          usx_hcodes,
          usx_hcode_lens
        );
      } else if (c_in === 9) {
        [ol, state] = append_code(
          out,
          olen,
          ol,
          TAB_CODE,
          state,
          usx_hcodes,
          usx_hcode_lens
        );
      } else {
        var uni, utf8len, uni2;
        [uni, utf8len] = readUTF8(input, len, l);
        if (uni > 0) {
          l += utf8len;
          if (state != USX_DELTA) {
            [uni2, utf8len] = readUTF8(input, len, l);
            if (uni2 > 0) {
              if (state != USX_ALPHA) {
                ol = append_switch_code(out, olen, ol, state);
                ol = append_bits(
                  out,
                  olen,
                  ol,
                  usx_hcodes[USX_ALPHA],
                  usx_hcode_lens[USX_ALPHA]
                );
              }
              ol = append_switch_code(out, olen, ol, state);
              ol = append_bits(
                out,
                olen,
                ol,
                usx_hcodes[USX_ALPHA],
                usx_hcode_lens[USX_ALPHA]
              );
              ol = append_bits(out, olen, ol, usx_vcodes[1], usx_vcode_lens[1]);
              state = USX_DELTA;
            } else {
              ol = append_switch_code(out, olen, ol, state);
              ol = append_bits(
                out,
                olen,
                ol,
                usx_hcodes[USX_DELTA],
                usx_hcode_lens[USX_DELTA]
              );
            }
          }
          ol = encodeUnicode(out, olen, ol, uni, prev_uni);
          prev_uni = uni;
          l--;
        } else {
          var bin_count = 1;
          for (var bi = l + 1; bi < len; bi++) {
            var c_bi = input[bi];
            if (readUTF8(input, len, bi) > 0) break;
            if (bi < len - 4 && c_bi === input[bi - 1] && c_bi === input[bi + 1] && c_bi === input[bi + 2] && c_bi === input[bi + 3])
              break;
            bin_count++;
          }
          ol = append_nibble_escape(
            out,
            olen,
            ol,
            state,
            usx_hcodes,
            usx_hcode_lens
          );
          ol = append_bits(out, olen, ol, 248, 5);
          ol = encodeCount(out, olen, ol, bin_count);
          do {
            ol = append_bits(out, olen, ol, input[l++], 8);
          } while (--bin_count > 0);
          l--;
        }
      }
    }
    {
      var rst = (ol + 7) / 8;
      ol = append_final_bits(
        out,
        rst,
        ol,
        state,
        is_all_upper,
        usx_hcodes,
        usx_hcode_lens
      );
      return rst;
    }
  }
  function unishox2_compress_simple(input, len, out, feq = USX_FREQ_SEQ_DFLT) {
    let CompressedStrCharArrayTest = new Uint8Array(2048);
    let Op1, Op2;
    Op1 = unishox2_compress(
      input,
      len,
      CompressedStrCharArrayTest,
      USX_HCODES_DFLT,
      USX_HCODE_LENS_DFLT,
      feq,
      USX_TEMPLATES,
      false
    );
    Op2 = unishox2_compress(
      input,
      len,
      CompressedStrCharArrayTest,
      USX_HCODES_DFLT,
      USX_HCODE_LENS_DFLT,
      feq,
      USX_TEMPLATES,
      true
    );
    CompressedStrCharArrayTest = void 0;
    if (Op1 >= Op2) {
      return unishox2_compress(
        input,
        len,
        out,
        USX_HCODES_DFLT,
        USX_HCODE_LENS_DFLT,
        feq,
        USX_TEMPLATES,
        true
      );
    } else {
      return unishox2_compress(
        input,
        len,
        out,
        USX_HCODES_DFLT,
        USX_HCODE_LENS_DFLT,
        feq,
        USX_TEMPLATES,
        false
      );
    }
  }
  function readBit(input, bit_no) {
    return input[bit_no >> 3] & 128 >> bit_no % 8;
  }
  function read8bitCode(input, len, bit_no) {
    var bit_pos = bit_no & 7;
    var char_pos = bit_no >> 3;
    len >>= 3;
    var code = input[char_pos] << bit_pos & 255;
    char_pos++;
    if (char_pos < len) {
      code |= input[char_pos] >> 8 - bit_pos;
    } else code |= 255 >> 8 - bit_pos;
    return [code, bit_no];
  }
  const SECTION_COUNT = 5;
  const usx_vsections = new Uint8Array([127, 191, 223, 239, 255]);
  const usx_vsection_pos = new Uint8Array([0, 4, 8, 12, 20]);
  const usx_vsection_mask = new Uint8Array([127, 63, 31, 15, 15]);
  const usx_vsection_shift = new Uint8Array([5, 4, 3, 1, 0]);
  const usx_vcode_lookup = new Uint8Array([
    (1 << 5) + 0,
    (1 << 5) + 0,
    (2 << 5) + 1,
    (2 << 5) + 2,
    // Section 1
    (3 << 5) + 3,
    (3 << 5) + 4,
    (3 << 5) + 5,
    (3 << 5) + 6,
    // Section 2
    (3 << 5) + 7,
    (3 << 5) + 7,
    (4 << 5) + 8,
    (4 << 5) + 9,
    // Section 3
    (5 << 5) + 10,
    (5 << 5) + 10,
    (5 << 5) + 11,
    (5 << 5) + 11,
    // Section 4
    (5 << 5) + 12,
    (5 << 5) + 12,
    (6 << 5) + 13,
    (6 << 5) + 14,
    (6 << 5) + 15,
    (6 << 5) + 15,
    (6 << 5) + 16,
    (6 << 5) + 16,
    // Section 5
    (6 << 5) + 17,
    (6 << 5) + 17,
    (7 << 5) + 18,
    (7 << 5) + 19,
    (7 << 5) + 20,
    (7 << 5) + 21,
    (7 << 5) + 22,
    (7 << 5) + 23,
    (7 << 5) + 24,
    (7 << 5) + 25,
    (7 << 5) + 26,
    (7 << 5) + 27
  ]);
  function readVCodeIdx(input, len, bit_no) {
    if (bit_no < len) {
      var code;
      [code, bit_no] = read8bitCode(input, len, bit_no);
      var i = 0;
      do {
        if (code <= usx_vsections[i]) {
          var vcode = usx_vcode_lookup[usx_vsection_pos[i] + ((code & usx_vsection_mask[i]) >> usx_vsection_shift[i])];
          bit_no += (vcode >> 5) + 1;
          if (bit_no > len) return [99, bit_no];
          return [vcode & 31, bit_no];
        }
      } while (++i < SECTION_COUNT);
    }
    return [99, bit_no];
  }
  const len_masks = new Uint8Array([
    128,
    192,
    224,
    240,
    248,
    252,
    254,
    255
  ]);
  function readHCodeIdx(input, len, bit_no, usx_hcodes, usx_hcode_lens) {
    if (!usx_hcode_lens[USX_ALPHA]) return [USX_ALPHA, bit_no];
    if (bit_no < len) {
      var code;
      [code, bit_no] = read8bitCode(input, len, bit_no);
      for (var code_pos = 0; code_pos < 5; code_pos++) {
        if (usx_hcode_lens[code_pos] > 0 && (code & len_masks[usx_hcode_lens[code_pos] - 1]) == usx_hcodes[code_pos]) {
          bit_no += usx_hcode_lens[code_pos];
          return [code_pos, bit_no];
        }
      }
    }
    return [99, bit_no];
  }
  function getStepCodeIdx(input, len, bit_no, limit) {
    var idx = 0;
    while (bit_no < len && readBit(input, bit_no) > 0) {
      idx++;
      bit_no++;
      if (idx == limit) return [idx, bit_no];
    }
    if (bit_no >= len) return [99, bit_no];
    bit_no++;
    return [idx, bit_no];
  }
  function getNumFromBits(input, len, bit_no, count) {
    var ret = 0;
    while (count-- > 0 && bit_no < len) {
      ret += readBit(input, bit_no) > 0 ? 1 << count : 0;
      bit_no++;
    }
    return count < 0 ? ret : -1;
  }
  function readCount(input, bit_no, len) {
    var idx = 0;
    [idx, bit_no] = getStepCodeIdx(input, len, bit_no, 4);
    if (idx == 99) return [-1, bit_no];
    if (bit_no + count_bit_lens[idx] - 1 >= len) return [-1, bit_no];
    var count = getNumFromBits(input, len, bit_no, count_bit_lens[idx]) + (idx > 0 ? count_adder[idx - 1] : 0);
    bit_no += count_bit_lens[idx];
    return [count, bit_no];
  }
  function readUnicode(input, bit_no, len) {
    var idx = 0;
    [idx, bit_no] = getStepCodeIdx(input, len, bit_no, 5);
    if (idx == 99) return [2147483392 + 99, bit_no];
    if (idx == 5) {
      [idx, bit_no] = getStepCodeIdx(input, len, bit_no, 4);
      return [2147483392 + idx, bit_no];
    }
    if (idx >= 0) {
      var sign = bit_no < len ? readBit(input, bit_no) : 0;
      bit_no++;
      if (bit_no + uni_bit_len[idx] - 1 >= len) return [2147483392 + 99, bit_no];
      var count = getNumFromBits(input, len, bit_no, uni_bit_len[idx]);
      count += uni_adder[idx];
      bit_no += uni_bit_len[idx];
      return [sign > 0 ? -count : count, bit_no];
    }
    return [0, bit_no];
  }
  function decodeRepeatArray(input, len, out_arr, out, bit_no, prev_lines_arr, prev_lines_idx, usx_hcodes, usx_hcode_lens, usx_freq_seq, usx_templates) {
    var dict_len = 0;
    [dict_len, bit_no] = readCount(input, bit_no, len);
    dict_len += NICE_LEN;
    if (dict_len < NICE_LEN) return [-1, out];
    var dist = 0;
    [dist, bit_no] = readCount(input, bit_no, len);
    if (dist < 0) return [-1, out];
    var ctx = 0;
    [ctx, bit_no] = readCount(input, bit_no, len);
    if (ctx < 0) return [-1, out];
    var line;
    if (ctx == 0) line = out_arr == null ? out : out_arr;
    else {
      if (prev_lines_idx < ctx) return [-1, out];
      if (out_arr == null) {
        line = unishox2_decompress(
          prev_lines_arr,
          prev_lines_idx - ctx,
          null,
          usx_hcodes,
          usx_hcode_lens,
          usx_freq_seq,
          usx_templates
        );
      } else {
        line = new Uint8Array((dist + dict_len) * 2);
        unishox2_decompress(
          prev_lines_arr,
          prev_lines_idx - ctx,
          line,
          usx_hcodes,
          usx_hcode_lens,
          usx_freq_seq,
          usx_templates
        );
      }
    }
    if (out_arr == null) {
      out += typeof line == "string" ? line.substr(dist, dict_len) : line.slice(dist, dict_len);
    } else {
      for (var i = 0; i < dict_len; i++) {
        if (out >= out_arr.length) break;
        out_arr[out] = line[dist + i];
        out++;
      }
    }
    return [bit_no, out];
  }
  function decodeRepeat(input, len, out_arr, out, bit_no) {
    var dict_len = 0;
    [dict_len, bit_no] = readCount(input, bit_no, len);
    dict_len += NICE_LEN;
    if (dict_len < NICE_LEN) return [-1, out];
    var dist = 0;
    [dist, bit_no] = readCount(input, bit_no, len);
    dist += NICE_LEN - 1;
    if (dist < NICE_LEN - 1) return [-1, out];
    if (out_arr == null) {
      if (out.length < dist) return [-1, out];
      out += out.substr(out.length - dist, dict_len);
    } else {
      for (var i = 0; i < dict_len; i++) {
        if (out >= out_arr.length) break;
        out_arr[out] = out_arr[out - dist];
        out++;
      }
    }
    return [bit_no, out];
  }
  function getHexChar(nibble, hex_type) {
    if (nibble >= 0 && nibble <= 9) return String.fromCharCode(48 + nibble);
    else if (hex_type < USX_NIB_HEX_UPPER)
      return String.fromCharCode(97 + nibble - 10);
    return String.fromCharCode(65 + nibble - 10);
  }
  function writeUTF8(out_arr, out, uni) {
    if (uni < 1 << 11) {
      out_arr[out++] = 192 + (uni >> 6);
      out_arr[out++] = 128 + (uni & 63);
    } else if (uni < 1 << 16) {
      out_arr[out++] = 224 + (uni >> 12);
      out_arr[out++] = 128 + (uni >> 6 & 63);
      out_arr[out++] = 128 + (uni & 63);
    } else {
      out_arr[out++] = 240 + (uni >> 18);
      out_arr[out++] = 128 + (uni >> 12 & 63);
      out_arr[out++] = 128 + (uni >> 6 & 63);
      out_arr[out++] = 128 + (uni & 63);
    }
    return out;
  }
  function appendChar(out_arr, out, ch) {
    if (out_arr == null) out += ch;
    else {
      if (out < out_arr.length) out_arr[out++] = ch.charCodeAt(0);
    }
    return out;
  }
  function appendString(out_arr, out, str) {
    if (out_arr == null) out += str;
    else {
      for (var i = 0; i < str.length; i++) {
        if (out >= out_arr.length) break;
        out_arr[out++] = str.charCodeAt(i);
      }
    }
    return out;
  }
  function unishox2_decompress(input, len, out_arr, usx_hcodes, usx_hcode_lens, usx_freq_seq, usx_templates) {
    var dstate;
    var bit_no;
    var h, v;
    var is_all_upper;
    var prev_lines_arr = null;
    var prev_lines_idx;
    init_coder();
    bit_no = 1;
    dstate = h = USX_ALPHA;
    is_all_upper = 0;
    var prev_uni = 0;
    if (input instanceof Array) {
      prev_lines_arr = input;
      prev_lines_idx = len;
      input = prev_lines_arr[prev_lines_idx];
      len = input.length;
    }
    len <<= 3;
    var out = out_arr == null ? "" : 0;
    while (bit_no < len) {
      var orig_bit_no = bit_no;
      if (dstate == USX_DELTA || h == USX_DELTA) {
        if (dstate != USX_DELTA) h = dstate;
        var delta;
        [delta, bit_no] = readUnicode(input, bit_no, len);
        if (delta >> 8 == 8388607) {
          var spl_code_idx = delta & 255;
          if (spl_code_idx == 99) break;
          switch (spl_code_idx) {
            case 0:
              out = appendChar(out_arr, out, " ");
              continue;
            case 1:
              [h, bit_no] = readHCodeIdx(
                input,
                len,
                bit_no,
                usx_hcodes,
                usx_hcode_lens
              );
              if (h == 99) {
                bit_no = len;
                continue;
              }
              if (h == USX_DELTA || h == USX_ALPHA) {
                dstate = h;
                continue;
              }
              if (h == USX_DICT) {
                if (prev_lines_arr == null)
                  [bit_no, out] = decodeRepeat(input, len, out_arr, out, bit_no);
                else {
                  [bit_no, out] = decodeRepeatArray(
                    input,
                    len,
                    out_arr,
                    out,
                    bit_no,
                    prev_lines_arr,
                    prev_lines_idx,
                    usx_hcodes,
                    usx_hcode_lens,
                    usx_freq_seq,
                    usx_templates
                  );
                }
                if (bit_no < 0) return out;
                h = dstate;
                continue;
              }
              break;
            case 2:
              out = appendChar(out_arr, out, ",");
              continue;
            case 3:
              out = appendChar(out_arr, out, ".");
              continue;
            case 4:
              out = appendChar(out_arr, out, String.fromCharCode(10));
              continue;
          }
        } else {
          prev_uni += delta;
          if (prev_uni > 0) {
            if (out_arr == null) out += String.fromCodePoint(prev_uni);
            else out = writeUTF8(out_arr, out, prev_uni);
          }
        }
        if (dstate == USX_DELTA && h == USX_DELTA) continue;
      } else h = dstate;
      var c = "";
      var is_upper = is_all_upper;
      [v, bit_no] = readVCodeIdx(input, len, bit_no);
      if (v == 99 || h == 99) {
        bit_no = orig_bit_no;
        break;
      }
      if (v == 0 && h != USX_SYM) {
        if (bit_no >= len) break;
        if (h != USX_NUM || dstate != USX_DELTA) {
          [h, bit_no] = readHCodeIdx(
            input,
            len,
            bit_no,
            usx_hcodes,
            usx_hcode_lens
          );
          if (h == 99 || bit_no >= len) {
            bit_no = orig_bit_no;
            break;
          }
        }
        if (h == USX_ALPHA) {
          if (dstate == USX_ALPHA) {
            if (usx_hcode_lens[USX_ALPHA] == 0 && TERM_BYTE_PRESET_1 == (read8bitCode(input, len, bit_no - SW_CODE_LEN) & 255 << 8 - (is_all_upper ? TERM_BYTE_PRESET_1_LEN_UPPER : TERM_BYTE_PRESET_1_LEN_LOWER)))
              break;
            if (is_all_upper) {
              is_upper = is_all_upper = 0;
              continue;
            }
            [v, bit_no] = readVCodeIdx(input, len, bit_no);
            if (v == 99) {
              bit_no = orig_bit_no;
              break;
            }
            if (v == 0) {
              [h, bit_no] = readHCodeIdx(
                input,
                len,
                bit_no,
                usx_hcodes,
                usx_hcode_lens
              );
              if (h == 99) {
                bit_no = orig_bit_no;
                break;
              }
              if (h == USX_ALPHA) {
                is_all_upper = 1;
                continue;
              }
            }
            is_upper = 1;
          } else {
            dstate = USX_ALPHA;
            continue;
          }
        } else if (h == USX_DICT) {
          if (prev_lines_arr == null)
            [bit_no, out] = decodeRepeat(input, len, out_arr, out, bit_no);
          else {
            [bit_no, out] = decodeRepeatArray(
              input,
              len,
              out_arr,
              out,
              bit_no,
              prev_lines_arr,
              prev_lines_idx,
              usx_hcodes,
              usx_hcode_lens,
              usx_freq_seq,
              usx_templates
            );
          }
          if (bit_no < 0) break;
          continue;
        } else if (h == USX_DELTA) {
          continue;
        } else {
          if (h != USX_NUM || dstate != USX_DELTA)
            [v, bit_no] = readVCodeIdx(input, len, bit_no);
          if (v == 99) {
            bit_no = orig_bit_no;
            break;
          }
          if (h == USX_NUM && v == 0) {
            var idx;
            [idx, bit_no] = getStepCodeIdx(input, len, bit_no, 5);
            if (idx == 99) break;
            if (idx == 0) {
              [idx, bit_no] = getStepCodeIdx(input, len, bit_no, 4);
              if (idx >= 5) break;
              var rem;
              [rem, bit_no] = readCount(input, bit_no, len);
              if (rem < 0) break;
              if (usx_templates[idx] == null) break;
              var tlen = usx_templates[idx].length;
              if (rem > tlen) break;
              rem = tlen - rem;
              var eof = false;
              for (var j = 0; j < rem; j++) {
                var c_t = usx_templates[idx][j];
                if (c_t === "f" || c_t === "r" || c_t === "t" || c_t === "o" || c_t === "F") {
                  var nibble_len = c_t === "f" || c_t === "F" ? 4 : c_t === "r" ? 3 : c_t === "t" ? 2 : 1;
                  var raw_char = getNumFromBits(input, len, bit_no, nibble_len);
                  if (raw_char < 0) {
                    eof = true;
                    break;
                  }
                  var nibble_char = getHexChar(
                    raw_char,
                    c_t === "f" ? USX_NIB_HEX_LOWER : USX_NIB_HEX_UPPER
                  );
                  out = appendChar(out_arr, out, nibble_char);
                  bit_no += nibble_len;
                } else out = appendChar(out_arr, out, c_t);
              }
              if (eof) break;
            } else if (idx == 5) {
              var bin_count;
              [bin_count, bit_no] = readCount(input, bit_no, len);
              if (bin_count < 0) break;
              if (bin_count == 0)
                break;
              do {
                var raw_char = getNumFromBits(input, len, bit_no, 8);
                if (raw_char < 0) break;
                var bin_byte = String.fromCharCode(raw_char);
                out = appendChar(out_arr, out, bin_byte);
                bit_no += 8;
              } while (--bin_count > 0);
            } else {
              var nibble_count = 0;
              if (idx == 2 || idx == 4) nibble_count = 32;
              else {
                [nibble_count, bit_no] = readCount(input, bit_no, len);
                if (nibble_count < 0) break;
                if (nibble_count == 0)
                  break;
              }
              do {
                var nibble = getNumFromBits(input, len, bit_no, 4);
                if (nibble < 0) break;
                var nibble_char = getHexChar(
                  nibble,
                  idx < 3 ? USX_NIB_HEX_LOWER : USX_NIB_HEX_UPPER
                );
                out = appendChar(out_arr, out, nibble_char);
                if ((idx == 2 || idx == 4) && (nibble_count == 25 || nibble_count == 21 || nibble_count == 17 || nibble_count == 13))
                  out = appendChar(out_arr, out, "-");
                bit_no += 4;
              } while (--nibble_count > 0);
              if (nibble_count > 0) break;
            }
            if (dstate == USX_DELTA) h = USX_DELTA;
            continue;
          }
        }
      }
      if (is_upper && v == 1) {
        h = dstate = USX_DELTA;
        continue;
      }
      if (h < 3 && v < 28) c = usx_sets[h].charAt(v);
      if (c >= "a" && c <= "z") {
        dstate = USX_ALPHA;
        if (is_upper) c = String.fromCharCode(c.charCodeAt(0) - 32);
      } else {
        if (c !== 0 && c.charCodeAt(0) >= 48 && c.charCodeAt(0) <= 57)
          dstate = USX_NUM;
        else if (c.charCodeAt(0) === 0 && c !== "0") {
          if (v == 8) {
            out = appendString(out_arr, out, "\r\n");
          } else if (h == USX_NUM && v == 26) {
            var count;
            [count, bit_no] = readCount(input, bit_no, len);
            if (count < 0) break;
            count += 4;
            var rpt_c = out_arr == null ? out.charAt(out.length - 1) : String.fromCharCode(out_arr[out - 1]);
            while (count--) out = appendChar(out_arr, out, rpt_c);
          } else if (h == USX_SYM && v > 24) {
            v -= 25;
            out = appendString(out_arr, out, usx_freq_seq[v]);
          } else if (h == USX_NUM && v > 22 && v < 26) {
            v -= 23 - 3;
            out = appendString(out_arr, out, usx_freq_seq[v]);
          } else break;
          if (dstate == USX_DELTA) h = USX_DELTA;
          continue;
        }
      }
      if (dstate == USX_DELTA) h = USX_DELTA;
      out = appendChar(out_arr, out, c);
    }
    return out;
  }
  var MersenneTwister = function(seed) {
    if (seed == void 0) {
      seed = (/* @__PURE__ */ new Date()).getTime();
    }
    this.N = 624;
    this.M = 397;
    this.MATRIX_A = 2567483615;
    this.UPPER_MASK = 2147483648;
    this.LOWER_MASK = 2147483647;
    this.mt = new Array(this.N);
    this.mti = this.N + 1;
    if (seed.constructor == Array) {
      this.init_by_array(seed, seed.length);
    } else {
      this.init_seed(seed);
    }
  };
  MersenneTwister.prototype.init_seed = function(s) {
    this.mt[0] = s >>> 0;
    for (this.mti = 1; this.mti < this.N; this.mti++) {
      var s = this.mt[this.mti - 1] ^ this.mt[this.mti - 1] >>> 30;
      this.mt[this.mti] = (((s & 4294901760) >>> 16) * 1812433253 << 16) + (s & 65535) * 1812433253 + this.mti;
      this.mt[this.mti] >>>= 0;
    }
  };
  MersenneTwister.prototype.init_by_array = function(init_key, key_length) {
    var i, j, k;
    this.init_seed(19650218);
    i = 1;
    j = 0;
    k = this.N > key_length ? this.N : key_length;
    for (; k; k--) {
      var s = this.mt[i - 1] ^ this.mt[i - 1] >>> 30;
      this.mt[i] = (this.mt[i] ^ (((s & 4294901760) >>> 16) * 1664525 << 16) + (s & 65535) * 1664525) + init_key[j] + j;
      this.mt[i] >>>= 0;
      i++;
      j++;
      if (i >= this.N) {
        this.mt[0] = this.mt[this.N - 1];
        i = 1;
      }
      if (j >= key_length) j = 0;
    }
    for (k = this.N - 1; k; k--) {
      var s = this.mt[i - 1] ^ this.mt[i - 1] >>> 30;
      this.mt[i] = (this.mt[i] ^ (((s & 4294901760) >>> 16) * 1566083941 << 16) + (s & 65535) * 1566083941) - i;
      this.mt[i] >>>= 0;
      i++;
      if (i >= this.N) {
        this.mt[0] = this.mt[this.N - 1];
        i = 1;
      }
    }
    this.mt[0] = 2147483648;
  };
  MersenneTwister.prototype.random_int = function() {
    var y;
    var mag01 = new Array(0, this.MATRIX_A);
    if (this.mti >= this.N) {
      var kk;
      if (this.mti == this.N + 1)
        this.init_seed(5489);
      for (kk = 0; kk < this.N - this.M; kk++) {
        y = this.mt[kk] & this.UPPER_MASK | this.mt[kk + 1] & this.LOWER_MASK;
        this.mt[kk] = this.mt[kk + this.M] ^ y >>> 1 ^ mag01[y & 1];
      }
      for (; kk < this.N - 1; kk++) {
        y = this.mt[kk] & this.UPPER_MASK | this.mt[kk + 1] & this.LOWER_MASK;
        this.mt[kk] = this.mt[kk + (this.M - this.N)] ^ y >>> 1 ^ mag01[y & 1];
      }
      y = this.mt[this.N - 1] & this.UPPER_MASK | this.mt[0] & this.LOWER_MASK;
      this.mt[this.N - 1] = this.mt[this.M - 1] ^ y >>> 1 ^ mag01[y & 1];
      this.mti = 0;
    }
    y = this.mt[this.mti++];
    y ^= y >>> 11;
    y ^= y << 7 & 2636928640;
    y ^= y << 15 & 4022730752;
    y ^= y >>> 18;
    return y >>> 0;
  };
  MersenneTwister.prototype.random_int31 = function() {
    return this.random_int() >>> 1;
  };
  MersenneTwister.prototype.random_incl = function() {
    return this.random_int() * (1 / 4294967295);
  };
  MersenneTwister.prototype.random = function() {
    return this.random_int() * (1 / 4294967296);
  };
  MersenneTwister.prototype.random_excl = function() {
    return (this.random_int() + 0.5) * (1 / 4294967296);
  };
  MersenneTwister.prototype.random_long = function() {
    var a = this.random_int() >>> 5, b = this.random_int() >>> 6;
    return (a * 67108864 + b) * (1 / 9007199254740992);
  };
  var mersenneTwister = MersenneTwister;
  const MersenneTwister$1 = /* @__PURE__ */ getDefaultExportFromCjs(mersenneTwister);
  const Map$1 = '{"basic":{"alphabet":{"a":["\u8BF7","\u4E0A","\u4E2D","\u4E4B","\u7B49","\u4EBA","\u5230","\u5E74","\u4E2A","\u5C06"],"b":["\u5F97","\u53EF","\u5E76","\u53D1","\u8FC7","\u534F","\u66F2","\u95ED","\u658B","\u5CE6"],"c":["\u9875","\u4E8E","\u800C","\u88AB","\u65E0","\u633D","\u88D5","\u659C","\u7EEA","\u955C"],"d":["\u7531","\u628A","\u597D","\u4ECE","\u4F1A","\u5E15","\u83B9","\u76C8","\u656C","\u7C92"],"e":["\u7684","\u5728","\u4E86","\u662F","\u4E3A","\u6709","\u548C","\u6211","\u4E00","\u4E0E"],"f":["\u7AD9","\u6700","\u53F7","\u53CA","\u80FD","\u8FDF","\u9E2D","\u5448","\u73BB","\u636E"],"g":["\u7740","\u5F88","\u6B64","\u4F46","\u770B","\u6D69","\u9644","\u4F83","\u6C50","\u7EF8"],"h":["\u540D","\u5462","\u53C8","\u56FE","\u554A","\u68C9","\u7545","\u84B8","\u73AB","\u6DFB"],"i":["\u5BF9","\u5730","\u60A8","\u7ED9","\u8FD9","\u4E0B","\u7F51","\u4E5F","\u6765","\u4F60"],"j":["\u66F4","\u5929","\u53BB","\u7528","\u53EA","\u77FD","\u840C","\u9541","\u82AF","\u5938"],"k":["\u7B2C","\u8005","\u6240","\u4E24","\u91CC","\u6C22","\u7F9F","\u7EBD","\u590F","\u6625"],"l":["\u81EA","\u505A","\u524D","\u4E8C","\u4ED6","\u6C26","\u6C40","\u5170","\u7AF9","\u6377"],"m":["\u5BB6","\u70B9","\u8DEF","\u81F3","\u5341","\u9502","\u7FA7","\u6691","\u5915","\u632F"],"n":["\u533A","\u60F3","\u5411","\u4E3B","\u56DB","\u94CD","\u70C3","\u60E0","\u82B3","\u5CA9"],"o":["\u5C31","\u65B0","\u5417","\u8BE5","\u4E0D","\u591A","\u8FD8","\u8981","\u8BA9","\u5927"],"p":["\u5C0F","\u5982","\u6210","\u4F4D","\u5176","\u787C","\u915E","\u8914","\u82D1","\u7B0B"],"q":["\u5427","\u6BCF","\u673A","\u51E0","\u603B","\u78B3","\u94C2","\u6D93","\u7EE3","\u60A6"],"r":["\u8D77","\u5B83","\u5185","\u9AD8","\u6B21","\u6C2E","\u94F5","\u594F","\u9CA4","\u6DF3"],"s":["\u975E","\u5143","\u7C7B","\u4E94","\u4F7F","\u6C27","\u9187","\u8FF7","\u9701","\u7405"],"t":["\u9996","\u8FDB","\u5373","\u6CA1","\u5E02","\u6C16","\u916F","\u7433","\u7EEB","\u6FD1"],"u":["\u540E","\u4E09","\u672C","\u90FD","\u65F6","\u6708","\u6216","\u8BF4","\u5DF2","\u4EE5"],"v":["\u79CD","\u5FEB","\u90A3","\u7BC7","\u4E07","\u94A0","\u7094","\u67EF","\u777F","\u743C"],"w":["\u957F","\u6309","\u62A5","\u6BD4","\u4FE1","\u7845","\u70F7","\u9759","\u6B23","\u675F"],"x":["\u518D","\u5E26","\u624D","\u5168","\u5440","\u78F7","\u70EF","\u67D4","\u96EA","\u51B0"],"y":["\u4E1A","\u5374","\u7248","\u7F8E","\u4EEC","\u786B","\u6849","\u5BD2","\u51BB","\u7396"],"z":["\u50CF","\u8D70","\u6587","\u5404","\u5F53","\u6C2F","\u7F2C","\u5983","\u7409","\u7483"],"A":["\u8D34","\u5219","\u8001","\u751F","\u8FBE","\u5546","\u884C","\u5468","\u8BC1","\u7ECF"],"B":["\u4E8B","\u573A","\u540C","\u5316","\u627E","\u5EFA","\u624B","\u9053","\u95F4","\u5F0F"],"C":["\u7279","\u57CE","\u578B","\u5B9A","\u63A5","\u5C40","\u95EE","\u91CD","\u53EB","\u901A"],"D":["\u4EF6","\u5C11","\u9762","\u91D1","\u8FD1","\u4E70","\u542C","\u5B66","\u89C1","\u79F0"],"E":["\u5199","\u9009","\u7247","\u4F53","\u7EC4","\u5148","\u4EC5","\u522B","\u8868","\u73B0"],"F":["\u96E8","\u6CCA","\u6CE8","\u7EC7","\u8D74","\u8336","\u56E0","\u8BBE","\u73AF","\u9752"],"G":["\u6570","\u5FC3","\u5B50","\u5904","\u4F5C","\u9879","\u8C01","\u5206","\u8F6C","\u5B57"],"H":["\u7802","\u59A5","\u9E66","\u8BFE","\u6817","\u971E","\u9E49","\u7FCC","\u8574","\u61A9"],"I":["\u7554","\u73D1","\u54AB","\u745E","\u73B2","\u90CA","\u86DF","\u6631","\u7949","\u83C1"],"J":["\u94C1","\u5B99","\u8015","\u7434","\u94C3","\u7470","\u65EC","\u8309","\u783A","\u8385"],"K":["\u9487","\u8389","\u7B71","\u68EE","\u66F3","\u82F9","\u8E35","\u6670","\u7825","\u8200"],"L":["\u9506","\u7C9F","\u9B44","\u8F89","\u8C1C","\u9985","\u918B","\u7504","\u97F6","\u6CEA"],"M":["\u948C","\u5018","\u7965","\u5584","\u6CC9","\u60E6","\u94E0","\u9A8F","\u97F5","\u6CE3"],"N":["\u94D1","\u7B51","\u94FF","\u667A","\u7980","\u78CA","\u6868","\u6A80","\u8367","\u94ED"],"O":["\u94AF","\u9A90","\u70DB","\u852C","\u51DB","\u6EAF","\u56F0","\u70AF","\u917F","\u7455"],"P":["\u94F6","\u69BB","\u9A7F","\u7F0E","\u6F9F","\u7ED2","\u83BA","\u8424","\u6845","\u6795"],"Q":["\u9549","\u8D5E","\u747E","\u7A0B","\u6021","\u6F31","\u7A57","\u6E4D","\u6800","\u7686"],"R":["\u7898","\u793C","\u9974","\u8212","\u82B7","\u9E9F","\u6CA5","\u63CF","\u9504","\u58A9"],"S":["\u9521","\u5F70","\u77BB","\u96C5","\u8D2E","\u55B5","\u7FCA","\u95EA","\u7FCE","\u5A49"],"T":["\u94A8","\u54A8","\u6D8C","\u76CA","\u5D69","\u5FA1","\u9976","\u7EBA","\u6829","\u7A14"],"U":["\u94CB","\u9A86","\u6A58","\u672A","\u6CF0","\u9891","\u7425","\u56CD","\u6D63","\u88F3"],"V":["\u9495","\u98D2","\u6D47","\u54E6","\u9014","\u74E2","\u73C0","\u6DA8","\u4ED3","\u68E0"],"W":["\u7941","\u84EC","\u707F","\u90E8","\u6DA7","\u822B","\u66D9","\u822A","\u7901","\u6E21"],"X":["\u65FA","\u5AE6","\u6F2B","\u4F51","\u94A5","\u8C27","\u8475","\u54A9","\u8BF5","\u7EEE"],"Y":["\u9610","\u8BD1","\u953B","\u831C","\u575E","\u780C","\u975B","\u732B","\u82AE","\u7EDA"],"Z":["\u62CC","\u768E","\u7B19","\u6C83","\u609F","\u62D3","\u9068","\u63FD","\u663C","\u8517"]},"numbersymbol":{"0":["\u5361","\u98CE","\u6C34","\u653E","\u82B1","\u94BE","\u5B8F","\u8C0A","\u63A2","\u68CB"],"1":["\u9700","\u5934","\u8BDD","\u66FE","\u697C","\u9499","\u543E","\u604B","\u83F2","\u9065"],"2":["\u8FDE","\u7CFB","\u95E8","\u529B","\u91CF","\u949B","\u82D7","\u6C1B","\u9E64","\u96C0"],"3":["\u4E66","\u4EBF","\u8DDF","\u6DF1","\u65B9","\u9492","\u9E33","\u9E2F","\u7EB8","\u9E22"],"4":["\u82E5","\u4F4E","\u8C08","\u660E","\u767E","\u94EC","\u7FAF","\u5C27","\u821C","\u5146"],"5":["\u5173","\u5BA2","\u8BFB","\u53CC","\u56DE","\u9530","\u7199","\u701A","\u6E0A","\u706F"],"6":["\u8F83","\u54C1","\u561B","\u5355","\u4EF7","\u94B4","\u9611","\u73CA","\u96C1","\u9E42"],"7":["\u5C71","\u897F","\u52A8","\u5382","\u70ED","\u950C","\u9E43","\u9E20","\u6606","\u4ED1"],"8":["\u8A00","\u7B11","\u5EA6","\u6613","\u8EAB","\u9553","\u4E7E","\u5764","\u6F88","\u997A"],"9":["\u4EFD","\u661F","\u5343","\u4ECD","\u529E","\u9517","\u5F57","\u806A","\u6167","\u78CB"],"+":["\u96C6","\u8D39","\u4F20","\u5BA4","\u62C9"],"/":["\u96BE","\u754C","\u6307","\u7BA1","\u5177"],"?":["\u76F8","\u513F","\u674E","\u65E9","\u62FF"],"-":["\u79D1","\u767D","\u6BB5","\u98DE","\u4F4F"],".":["\u5229","\u7EA2","\u677F","\u5149","\u7EA6"],"(":["\u53D8","\u6B3E","\u6797","\u5939","\u9662"],")":["\u670D","\u53E5","\u58F0","\u52A1","\u6E38"],"[":["\u80A1","\u5357","\u793E","\u963F","\u8FDC"],"]":["\u610F","\u6362","\u4E9B","\u5FC5","\u8D5B"],"<":["\u5C4A","\u5B8C","\u4E50","\u5F69","\u8BB2"],">":["\u5C55","\u5E2E","\u4E14","\u7269","\u73ED"],",":["\u4F55","\u6D41","\u5BC6","\u67D0","\u623F"],"|":["\u8BED","\u4E9A","\u5E38","\u9664","\u88C5"],"=":["\u6781","\u8F7D","\u9898","\u521A","\u6C14"],"@":["\u7C73","\u5F71","\u5FB7","\u4E16","\u5750"],"#":["\u5317","\u62DB","\u77ED","\u6D3B","\u65AF"],"!":["\u503C","\u5E97","\u6811","\u54EA","\u4F59"],"~":["\u76D8","\u901F","\u5EA7","\u6C42","\u521B"],"`":["\u68A6","\u8DB3","\u534A","\u89C6","\u5B89"],"$":["\u7A7A","\u6B4C","\u6D3E","\u9876","\u767B"],"%":["\u591C","\u4E91","\u611F","\u5566","\u6B32"],"^":["\u8FB9","\u5DE5","\u773C","\u8857","\u5956"],"&":["\u83B7","\u5360","\u7406","\u4EFB","\u5B9E"],"*":["\u77E5","\u6389","\u8272","\u8BAF","\u514B"],"_":["\u76F4","\u8BC4","\u5F80","\u5C42","\u56ED"],"{":["\u7559","\u9760","\u4EA6","\u7F57","\u8425"],"}":["\u5408","\u5C1A","\u4EA7","\u8BDA","\u6C68"],":":["\u66F1","\u6729","\u6749","\u6778","\u6B69"],";":["\u6BCB","\u6C15","\u6C17","\u6C18","\u6C19"]}},"special":{"DECRYPT":{"JP":["\u685C","\u8FBC","\u51EA","\u96EB","\u5B9F","\u6CA2"],"CN":["\u739A","\u4FDF","\u738A","\u6B24","\u7790","\u73CF"]}}}';
  var RoundFlip$1 = 0;
  var RoundControl$1 = new Uint8Array(32);
  const LETTERS$1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var LETTERS_ROUND_1$1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var LETTERS_ROUND_2$1 = "FbPoDRStyJKAUcdahfVXlqwnOGpHZejzvmrBCigQILxkYMuWTEsN";
  var LETTERS_ROUND_3$1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  const BIG_LETTERS$1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  const NUMBERS$1 = "1234567890";
  const SYMBOLS$1 = "+=_-/?.>,<|`~!@#$%^&*(){}[];:";
  const NUMBERSYMBOL$1 = "1234567890+=_-/?.>,<|`~!@#$%^&*(){}[];:";
  var NUMBERSYMBOL_ROUND_1$1 = "1234567890+=_-/?.>,<|`~!@#$%^&*(){}[];:";
  var NUMBERSYMBOL_ROUND_2$1 = "~3{8}_-$[6(2^&#5|1*%0,<9:`+@7/?.>4=];!)";
  var NUMBERSYMBOL_ROUND_3$1 = "1234567890+=_-/?.>,<|`~!@#$%^&*(){}[];:";
  const SIG_DECRYPT_JP = "\u685C\u8FBC\u51EA\u96EB\u5B9F\u6CA2";
  const SIG_DECRYPT_CN = "\u739A\u4FDF\u738A\u6B24\u7790\u73CF";
  const NULL_STR$1 = "\u5B4E";
  const CHINESE_WEBPAN_LIB$1 = [
    "https://",
    "lanzou",
    "pan.quark.cn",
    "pan.baidu.com",
    "aliyundrive.com",
    "123pan.com"
  ];
  const INTER_WEBPAN_LIB$1 = [
    "https://",
    "mypikpak.com",
    "mega.nz",
    "drive.google.com",
    "sharepoint.com",
    "1drv.ms"
  ];
  const CHINESE_WEBSITE_LIB$1 = [
    "https://",
    "baidu.com",
    "b23.tv",
    "bilibili.com",
    "weibo.com",
    "weixin.qq.com"
  ];
  const INTER_WEBSITE_LIB$1 = [
    "https://",
    "google.com",
    "youtube.com",
    "x.com",
    "twitter.com",
    "telegra.ph"
  ];
  const INTER_WEBSITE_LIB_2$1 = [
    "https://",
    "wikipedia.org",
    "github.com",
    "pages.dev",
    "github.io",
    "netlify.app"
  ];
  const JAPAN_WEBSITE_LIB$1 = [
    "https://",
    "pixiv.net",
    "nicovideo.jp",
    "dlsite.com",
    "line.me",
    "dmm.com"
  ];
  const PIRACY_WEBSITE_LIB$1 = [
    "https://",
    "nyaa.si",
    "bangumi.moe",
    "thepiratebay.org",
    "e-hentai.org",
    "exhentai.org"
  ];
  const GENERIC_TLINK_LIB$1 = [
    "https://",
    "magnet:?xt=urn:btih:",
    "magnet:?xt=urn:sha1:",
    "ed2k://",
    "thunder://",
    "torrent"
  ];
  const GENERIC_LINK_LIB_1$1 = ["https://", ".cn", ".com", ".net", ".org", ".xyz"];
  const GENERIC_LINK_LIB_2$1 = ["https://", ".info", ".moe", ".cc", ".co", ".dev"];
  const GENERIC_LINK_LIB_3$1 = ["https://", ".io", ".us", ".eu", ".jp", ".de"];
  const Map_Obj$1 = JSON.parse(Map$1);
  function AES_256_CTR_E$1(Uint8attr, key, RandomBytes) {
    let KeyHash = CryptoJS.SHA256(key);
    let HashArray = wordArrayToUint8Array$1(KeyHash);
    let TempArray = new Uint8Array(HashArray.byteLength + 2);
    TempArray.set(HashArray, 0);
    TempArray.set([RandomBytes[0], RandomBytes[1]], HashArray.byteLength);
    HashArray = TempArray;
    let HashWithRandom = CryptoJS.lib.WordArray.create(HashArray);
    let KeyHashHash = CryptoJS.SHA256(HashWithRandom);
    let HashHashArray = wordArrayToUint8Array$1(KeyHashHash);
    let ivArray = new Uint8Array(16);
    for (var i = 0; i < 16; i++) {
      ivArray[i] = HashHashArray[i];
    }
    let iv = CryptoJS.lib.WordArray.create(ivArray);
    let msg = CryptoJS.lib.WordArray.create(Uint8attr);
    let Enc = CryptoJS.AES.encrypt(msg, KeyHash, {
      mode: CryptoJS.mode.CTR,
      padding: CryptoJS.pad.NoPadding,
      iv
    });
    return wordArrayToUint8Array$1(Enc.ciphertext);
  }
  function GZIP_COMPRESS$1(Data) {
    let DataOutput = pako.gzip(Data);
    if (DataOutput.byteLength >= Data.byteLength) {
      return Data;
    }
    return DataOutput;
  }
  function GZIP_DECOMPRESS$1(Data) {
    const firstTwoBytes = new Uint8Array(Data.buffer, 0, 2);
    if (firstTwoBytes[0] === 31 && firstTwoBytes[1] === 139) {
      let DataOutput = pako.ungzip(Data);
      return DataOutput;
    } else {
      return Data;
    }
  }
  function UNISHOX_COMPRESS$1(Data) {
    let CompressedStrCharArray = new Uint8Array(2048);
    let Datastr = Uint8ArrayTostring$1(Data);
    let libmark = 255;
    for (let i = 1; i < 6; i++) {
      if (Datastr.indexOf(CHINESE_WEBPAN_LIB$1[i]) != -1) {
        libmark = 254;
        break;
      }
      if (Datastr.indexOf(INTER_WEBPAN_LIB$1[i]) != -1) {
        libmark = 245;
        break;
      }
    }
    if (libmark == 255) {
      for (let i = 1; i < 6; i++) {
        if (Datastr.indexOf(CHINESE_WEBSITE_LIB$1[i]) != -1) {
          libmark = 253;
          break;
        }
        if (Datastr.indexOf(INTER_WEBSITE_LIB$1[i]) != -1) {
          libmark = 252;
          break;
        }
        if (Datastr.indexOf(INTER_WEBSITE_LIB_2$1[i]) != -1) {
          libmark = 244;
          break;
        }
        if (Datastr.indexOf(JAPAN_WEBSITE_LIB$1[i]) != -1) {
          libmark = 251;
          break;
        }
        if (Datastr.indexOf(PIRACY_WEBSITE_LIB$1[i]) != -1) {
          libmark = 250;
          break;
        }
      }
    }
    if (libmark == 255) {
      for (let i = 1; i < 6; i++) {
        if (Datastr.indexOf(GENERIC_TLINK_LIB$1[i]) != -1) {
          libmark = 249;
          break;
        }
        if (Datastr.indexOf(GENERIC_LINK_LIB_1$1[i]) != -1) {
          libmark = 248;
          break;
        }
        if (Datastr.indexOf(GENERIC_LINK_LIB_2$1[i]) != -1) {
          libmark = 247;
          break;
        }
        if (Datastr.indexOf(GENERIC_LINK_LIB_3$1[i]) != -1) {
          libmark = 246;
          break;
        }
      }
    }
    let Outlen;
    switch (libmark) {
      case 255:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray
        );
        break;
      case 254:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          CHINESE_WEBPAN_LIB$1
        );
        break;
      case 245:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          INTER_WEBPAN_LIB$1
        );
        break;
      case 253:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          CHINESE_WEBSITE_LIB$1
        );
        break;
      case 252:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          INTER_WEBSITE_LIB$1
        );
        break;
      case 244:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          INTER_WEBSITE_LIB_2$1
        );
        break;
      case 251:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          JAPAN_WEBSITE_LIB$1
        );
        break;
      case 250:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          PIRACY_WEBSITE_LIB$1
        );
        break;
      case 249:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_TLINK_LIB$1
        );
        break;
      case 248:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_LINK_LIB_1$1
        );
        break;
      case 247:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_LINK_LIB_2$1
        );
        break;
      case 246:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_LINK_LIB_3$1
        );
        break;
    }
    let ResStrCharArray = CompressedStrCharArray.subarray(0, Outlen);
    if (ResStrCharArray.byteLength >= Data.byteLength) {
      return Data;
    }
    let TempArray = new Uint8Array(ResStrCharArray.byteLength + 2);
    TempArray.set(ResStrCharArray, 0);
    TempArray.set([libmark, 255], ResStrCharArray.byteLength);
    ResStrCharArray = TempArray;
    return ResStrCharArray;
  }
  function UNISHOX_DECOMPRESS$1(Data) {
    const lastElement = Data[Data.byteLength - 1];
    const secondLastElement = Data[Data.byteLength - 2];
    if (lastElement != 255 || secondLastElement < 244 || secondLastElement > 255) {
      return Data;
    }
    let libmark = secondLastElement;
    let NewData = Data.subarray(0, Data.byteLength - 2);
    let DecompressedStrCharArray = new Uint8Array(2048);
    let Outlen;
    switch (libmark) {
      case 255:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          USX_FREQ_SEQ_DFLT,
          USX_TEMPLATES
        );
        break;
      case 254:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          CHINESE_WEBPAN_LIB$1,
          USX_TEMPLATES
        );
        break;
      case 245:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          INTER_WEBPAN_LIB$1,
          USX_TEMPLATES
        );
        break;
      case 253:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          CHINESE_WEBSITE_LIB$1,
          USX_TEMPLATES
        );
        break;
      case 252:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          INTER_WEBSITE_LIB$1,
          USX_TEMPLATES
        );
        break;
      case 244:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          INTER_WEBSITE_LIB_2$1,
          USX_TEMPLATES
        );
        break;
      case 251:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          JAPAN_WEBSITE_LIB$1,
          USX_TEMPLATES
        );
        break;
      case 250:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          PIRACY_WEBSITE_LIB$1,
          USX_TEMPLATES
        );
        break;
      case 249:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_TLINK_LIB$1,
          USX_TEMPLATES
        );
        break;
      case 248:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_LINK_LIB_1$1,
          USX_TEMPLATES
        );
        break;
      case 247:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_LINK_LIB_2$1,
          USX_TEMPLATES
        );
        break;
      case 246:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_LINK_LIB_3$1,
          USX_TEMPLATES
        );
        break;
    }
    let ResStrCharArray = DecompressedStrCharArray.subarray(0, Outlen);
    return ResStrCharArray;
  }
  function GetLuhnBit$1(Data) {
    let Digit = new Array();
    let num, digit;
    for (let i = 0; i < Data.byteLength; i++) {
      num = Data[i];
      while (num > 0) {
        digit = num % 10;
        Digit.push(digit);
        num = Math.floor(num / 10);
      }
    }
    let sum = 0;
    let Check = 0;
    for (let i = 0; i < Digit.length; i++) {
      if (i % 2 != 0) {
        Digit[i] = Digit[i] * 2;
        if (Digit[i] >= 10) {
          Digit[i] = Digit[i] % 10 + Math.floor(Digit[i] / 10);
        }
      }
      sum = sum + Digit[i];
    }
    Check = 10 - sum % 10;
    return Check;
  }
  function CheckLuhnBit$1(Data) {
    let DCheck = Data[Data.byteLength - 1];
    let Check = GetLuhnBit$1(Data.subarray(0, Data.byteLength - 1));
    if (Check == DCheck) {
      return true;
    } else {
      return false;
    }
  }
  function RemovePadding$1(Base64String) {
    let PaddingCount = 0;
    for (let i = Base64String.length - 1; i >= Base64String.length - 4; i--) {
      if (Base64String[i] == "=") {
        PaddingCount++;
      }
    }
    return Base64String.slice(0, Base64String.length - PaddingCount);
  }
  function AddPadding$1(Base64String) {
    if (Base64String.length % 4 == 3) {
      return Base64String + "=";
    } else if (Base64String.length % 4 == 2) {
      return Base64String + "==";
    } else {
      return Base64String;
    }
  }
  function wordArrayToUint8Array$1(data) {
    const dataArray = new Uint8Array(data.sigBytes);
    for (let i = 0; i < data.sigBytes; i++) {
      dataArray[i] = data.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
    }
    return dataArray;
  }
  function stringToUint8Array(str) {
    let tempBase64 = gBase64.encode(str);
    return gBase64.toUint8Array(tempBase64);
  }
  function Uint8ArrayTostring$1(fileData) {
    let tempBase64 = gBase64.fromUint8Array(fileData);
    return gBase64.decode(tempBase64);
  }
  function setCharOnIndex(string, index, char) {
    if (index > string.length - 1) return string;
    return string.substring(0, index) + char + string.substring(index + 1);
  }
  function GetRandomIndex$1(length) {
    let MT = new MersenneTwister$1(Math.floor(Math.random() * 1e9));
    let Rand = Math.floor(MT.random() * length);
    return Rand;
  }
  function insertStringAtIndex(str, value, index) {
    return str.slice(0, index) + value + str.slice(index);
  }
  function difference(arr1, arr2) {
    return arr1.filter((item) => !arr2.includes(item));
  }
  function rotateString$1(str, n) {
    return str.slice(n) + str.slice(0, n);
  }
  function LrotateString$1(str, n) {
    return str.slice(str.length - n) + str.slice(0, str.length - n);
  }
  function RoundKeyMatch$1(keyIn) {
    let idx1, idx2;
    let idx1_1, idx2_1;
    let idx1_2, idx2_2;
    idx1 = LETTERS$1.indexOf(keyIn);
    idx2 = NUMBERSYMBOL$1.indexOf(keyIn);
    idx1_1 = LETTERS$1.indexOf(LETTERS_ROUND_1$1[idx1]);
    idx2_1 = NUMBERSYMBOL$1.indexOf(NUMBERSYMBOL_ROUND_1$1[idx2]);
    idx1_2 = LETTERS$1.indexOf(LETTERS_ROUND_2$1[idx1_1]);
    idx2_2 = NUMBERSYMBOL$1.indexOf(NUMBERSYMBOL_ROUND_2$1[idx2_1]);
    if (idx1 != -1) {
      return LETTERS_ROUND_3$1[idx1_2];
    } else if (idx2 != -1) {
      return NUMBERSYMBOL_ROUND_3$1[idx2_2];
    }
    return NULL_STR$1;
  }
  function DRoundKeyMatch$1(keyIn) {
    let idx1, idx2;
    let idx1_1, idx2_1;
    let idx1_2, idx2_2;
    idx1 = LETTERS_ROUND_3$1.indexOf(keyIn);
    idx2 = NUMBERSYMBOL_ROUND_3$1.indexOf(keyIn);
    idx1_1 = LETTERS_ROUND_2$1.indexOf(LETTERS$1[idx1]);
    idx2_1 = NUMBERSYMBOL_ROUND_2$1.indexOf(NUMBERSYMBOL$1[idx2]);
    idx1_2 = LETTERS_ROUND_1$1.indexOf(LETTERS$1[idx1_1]);
    idx2_2 = NUMBERSYMBOL_ROUND_1$1.indexOf(NUMBERSYMBOL$1[idx2_1]);
    if (idx1 != -1) {
      return LETTERS$1[idx1_2];
    } else if (idx2 != -1) {
      return NUMBERSYMBOL$1[idx2_2];
    }
    return NULL_STR$1;
  }
  function RoundKey$1() {
    let ControlNum = 0;
    if (RoundFlip$1 == 32) {
      RoundFlip$1 = 0;
    }
    ControlNum = RoundControl$1[RoundFlip$1] % 10;
    if (ControlNum == 0) {
      ControlNum = 10;
    }
    if (ControlNum % 2 == 0) {
      LETTERS_ROUND_1$1 = rotateString$1(LETTERS_ROUND_1$1, 6);
      NUMBERSYMBOL_ROUND_1$1 = rotateString$1(NUMBERSYMBOL_ROUND_1$1, 6);
      LETTERS_ROUND_2$1 = LrotateString$1(LETTERS_ROUND_2$1, ControlNum * 2);
      NUMBERSYMBOL_ROUND_2$1 = LrotateString$1(NUMBERSYMBOL_ROUND_2$1, ControlNum * 2);
      LETTERS_ROUND_3$1 = rotateString$1(LETTERS_ROUND_3$1, ControlNum / 2 + 1);
      NUMBERSYMBOL_ROUND_3$1 = rotateString$1(
        NUMBERSYMBOL_ROUND_3$1,
        ControlNum / 2 + 1
      );
    } else {
      LETTERS_ROUND_1$1 = LrotateString$1(LETTERS_ROUND_1$1, 3);
      NUMBERSYMBOL_ROUND_1$1 = LrotateString$1(NUMBERSYMBOL_ROUND_1$1, 3);
      LETTERS_ROUND_2$1 = rotateString$1(LETTERS_ROUND_2$1, ControlNum);
      NUMBERSYMBOL_ROUND_2$1 = rotateString$1(NUMBERSYMBOL_ROUND_2$1, ControlNum);
      LETTERS_ROUND_3$1 = LrotateString$1(LETTERS_ROUND_3$1, (ControlNum + 7) / 2);
      NUMBERSYMBOL_ROUND_3$1 = LrotateString$1(
        NUMBERSYMBOL_ROUND_3$1,
        (ControlNum + 7) / 2
      );
    }
    RoundFlip$1++;
  }
  function RoundReset$1() {
    RoundFlip$1 = 0;
    RoundControl$1 = new Array(32);
    LETTERS_ROUND_1$1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    LETTERS_ROUND_2$1 = "FbPoDRStyJKAUcdahfVXlqwnOGpHZejzvmrBCigQILxkYMuWTEsN";
    LETTERS_ROUND_3$1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    NUMBERSYMBOL_ROUND_1$1 = "1234567890+=_-/?.>,<|`~!@#$%^&*(){}[];:";
    NUMBERSYMBOL_ROUND_2$1 = "~3{8}_-$[6(2^&#5|1*%0,<9:`+@7/?.>4=];!)";
    NUMBERSYMBOL_ROUND_3$1 = "1234567890+=_-/?.>,<|`~!@#$%^&*(){}[];:";
  }
  function RoundControlInit$1(key) {
    let KeyHash = CryptoJS.SHA256(key);
    let HashArray = wordArrayToUint8Array$1(KeyHash);
    RoundControl$1 = HashArray;
  }
  class PreCheckResult {
    constructor(output, isEncrypted = false) {
      this.output = output;
      this.isEncrypted = isEncrypted;
    }
  }
  function preCheck(inp) {
    let input = String(inp);
    let size = input.length;
    let temp;
    let isEncrypted = false;
    let isJPFound = false;
    let isCNFound = false;
    for (let i = 0; i < size; i++) {
      temp = input[i];
      if (i != size - 1) {
        input[i + 1];
      }
      if (SIG_DECRYPT_JP.indexOf(temp) != -1) {
        input = setCharOnIndex(input, i, NULL_STR$1);
        isJPFound = true;
        continue;
      }
      if (SIG_DECRYPT_CN.indexOf(temp) != -1) {
        input = setCharOnIndex(input, i, NULL_STR$1);
        isCNFound = true;
        continue;
      }
    }
    if (isJPFound && isCNFound) {
      isEncrypted = true;
    }
    let Result = new PreCheckResult(stringToUint8Array(input), isEncrypted);
    return Result;
  }
  function enMap$1(input, key, q) {
    RoundReset$1();
    RoundControlInit$1(key);
    let OriginalData = new Uint8Array();
    OriginalData = input.output;
    Uint8ArrayTostring$1(OriginalData);
    let TempArray = new Uint8Array(OriginalData.byteLength + 1);
    TempArray.set(OriginalData, 0);
    TempArray.set([GetLuhnBit$1(OriginalData)], OriginalData.byteLength);
    OriginalData = TempArray;
    if (OriginalData.byteLength <= 1024) {
      let SizeBefore = OriginalData.byteLength;
      OriginalData = UNISHOX_COMPRESS$1(OriginalData);
      if (OriginalData.byteLength == SizeBefore) {
        OriginalData = GZIP_COMPRESS$1(OriginalData);
      }
    } else {
      OriginalData = GZIP_COMPRESS$1(OriginalData);
    }
    let RandomBytes = new Array();
    RandomBytes.push(GetRandomIndex$1(256));
    RandomBytes.push(GetRandomIndex$1(256));
    OriginalData = AES_256_CTR_E$1(OriginalData, key, RandomBytes);
    TempArray = new Uint8Array(OriginalData.byteLength + 2);
    TempArray.set(OriginalData, 0);
    TempArray.set(RandomBytes, OriginalData.byteLength);
    OriginalData = TempArray;
    let OriginStr = RemovePadding$1(gBase64.fromUint8Array(OriginalData));
    let TempStr1 = "", temp = "";
    let size = OriginStr.length;
    RoundKey$1();
    for (let i = 0; i < size; i++) {
      temp = OriginStr[i];
      if (i != size - 1) {
        OriginStr[i + 1];
      }
      TempStr1 = TempStr1 + getCryptText$1(temp);
      RoundKey$1();
    }
    if (q) {
      RoundReset$1();
      return TempStr1;
    }
    let RandIndex, RandIndex2;
    let Avoid = new Array();
    for (let q2 = 0; q2 < 2; q2++) {
      let PosToInset = new Array();
      let size2 = TempStr1.length;
      for (let i = 0; i < size2; i++) {
        PosToInset.push(i);
      }
      if (q2 == 0) {
        RandIndex = PosToInset[GetRandomIndex$1(PosToInset.length)];
        RandIndex2 = GetRandomIndex$1(Map_Obj$1["special"]["DECRYPT"]["JP"].length);
        let stemp = Map_Obj$1["special"]["DECRYPT"]["JP"][RandIndex2];
        TempStr1 = insertStringAtIndex(TempStr1, stemp, RandIndex);
        for (let z = RandIndex + 1; z < RandIndex + stemp.length; z++) {
          Avoid.push(z);
        }
      } else if (q2 == 1) {
        let AvailPos = new Array();
        AvailPos = difference(PosToInset, Avoid);
        RandIndex = AvailPos[GetRandomIndex$1(AvailPos.length)];
        RandIndex2 = GetRandomIndex$1(Map_Obj$1["special"]["DECRYPT"]["CN"].length);
        TempStr1 = insertStringAtIndex(
          TempStr1,
          Map_Obj$1["special"]["DECRYPT"]["CN"][RandIndex2],
          RandIndex
        );
      }
    }
    RoundReset$1();
    return TempStr1;
  }
  function deMap$1(input, key) {
    RoundReset$1();
    RoundControlInit$1(key);
    let OriginStr = Uint8ArrayTostring$1(input.output);
    let TempStr1 = "", TempStrz = "";
    let temp = "", findtemp = "";
    let size = OriginStr.length;
    for (let i = 0; i < size; i++) {
      temp = OriginStr[i];
      if (temp == NULL_STR$1 || temp == " " || temp == "\n" || temp == "	") {
        continue;
      } else {
        TempStrz = TempStrz + temp;
        continue;
      }
    }
    size = TempStrz.length;
    OriginStr = TempStrz;
    RoundKey$1();
    for (let i = 0; i < size; ) {
      temp = OriginStr[i];
      if (i != size - 1) {
        OriginStr[i + 1];
      }
      findtemp = findOriginText$1(temp);
      if (findtemp == NULL_STR$1) {
        throw "Bad Input. Try force encrypt if intended.";
      }
      TempStr1 = TempStr1 + findtemp;
      RoundKey$1();
      i++;
    }
    TempStr1 = AddPadding$1(TempStr1);
    let TempStr2Int = new Uint8Array();
    let RandomBytes = new Array(2);
    if (!gBase64.isValid(TempStr1)) {
      throw "Error Decoding. Bad Input or Incorrect Key.";
    }
    try {
      TempStr2Int = gBase64.toUint8Array(TempStr1);
      RandomBytes[1] = TempStr2Int.at(TempStr2Int.byteLength - 1);
      RandomBytes[0] = TempStr2Int.at(TempStr2Int.byteLength - 2);
      TempStr2Int = TempStr2Int.subarray(0, TempStr2Int.byteLength - 2);
      TempStr2Int = AES_256_CTR_E$1(TempStr2Int, key, RandomBytes);
      TempStr2Int = GZIP_DECOMPRESS$1(TempStr2Int);
      TempStr2Int = UNISHOX_DECOMPRESS$1(TempStr2Int);
    } catch (err2) {
      throw "Error Decoding. Bad Input or Incorrect Key.";
    }
    if (!CheckLuhnBit$1(TempStr2Int)) {
      if (TempStr2Int.at(TempStr2Int.byteLength - 1) == 2 && TempStr2Int.at(TempStr2Int.byteLength - 2) == 2 && TempStr2Int.at(TempStr2Int.byteLength - 3) == 2) {
        TempStr2Int = TempStr2Int.subarray(0, TempStr2Int.byteLength - 3);
      } else {
        throw "Error Decrypting. Checksum Mismatch.";
      }
    } else {
      TempStr2Int = TempStr2Int.subarray(0, TempStr2Int.byteLength - 1);
    }
    let Res = new Object();
    Res.output = Uint8ArrayTostring$1(TempStr2Int);
    Res.output_B = TempStr2Int;
    RoundReset$1();
    return Res;
  }
  function getCryptText$1(text) {
    let letter = String(text);
    let idx, idx2, idx3, idx4;
    idx = LETTERS$1.indexOf(letter);
    idx2 = BIG_LETTERS$1.indexOf(letter);
    idx3 = NUMBERS$1.indexOf(letter);
    idx4 = SYMBOLS$1.indexOf(letter);
    let RandIndex;
    if (idx != -1 || idx2 != -1) {
      for (let key in Map_Obj$1["basic"]["alphabet"]) {
        if (Map_Obj$1["basic"]["alphabet"].hasOwnProperty(key)) {
          if (key == letter) {
            RandIndex = GetRandomIndex$1(
              Map_Obj$1["basic"]["alphabet"][RoundKeyMatch$1(key)].length
            );
            let s2 = Map_Obj$1["basic"]["alphabet"][RoundKeyMatch$1(key)][RandIndex];
            return s2;
          } else if (key.toUpperCase() == letter) {
            RandIndex = GetRandomIndex$1(
              Map_Obj$1["basic"]["alphabet"][RoundKeyMatch$1(key.toUpperCase())].length
            );
            let s2 = String(
              Map_Obj$1["basic"]["alphabet"][RoundKeyMatch$1(key.toUpperCase())][RandIndex]
            );
            return s2;
          }
        }
      }
    } else if (idx3 != -1 || idx4 != -1) {
      for (let key in Map_Obj$1["basic"]["numbersymbol"]) {
        if (Map_Obj$1["basic"]["numbersymbol"].hasOwnProperty(key)) {
          if (key == letter) {
            RandIndex = GetRandomIndex$1(
              Map_Obj$1["basic"]["numbersymbol"][RoundKeyMatch$1(key)].length
            );
            let s2 = Map_Obj$1["basic"]["numbersymbol"][RoundKeyMatch$1(key)][RandIndex];
            return s2;
          }
        }
      }
    }
    return NULL_STR$1;
  }
  function findOriginText$1(text) {
    let letter = String(text);
    let res;
    for (let key in Map_Obj$1["basic"]["alphabet"]) {
      Map_Obj$1["basic"]["alphabet"][key].forEach((item) => {
        if (letter == item) {
          res = DRoundKeyMatch$1(key);
        }
      });
    }
    if (res) {
      return res;
    }
    for (let key in Map_Obj$1["basic"]["numbersymbol"]) {
      Map_Obj$1["basic"]["numbersymbol"][key].forEach((item) => {
        if (letter == item) {
          res = DRoundKeyMatch$1(key);
        }
      });
    }
    if (res) {
      return res;
    } else {
      return NULL_STR$1;
    }
  }
  const Map = '{"Actual":{"N":{"alphabet":{"a":"\u4EBA","b":"\u955C","c":"\u9E4F","d":"\u66F2","e":"\u971E","f":"\u7EF8","g":"\u88F3","h":"\u8DEF","i":"\u5CA9","j":"\u53F6","k":"\u9CA4","l":"\u6708","m":"\u96EA","n":"\u51B0","o":"\u5C40","p":"\u604B","q":"\u8914","r":"\u94C3","s":"\u7434","t":"\u5BB6","u":"\u5929","v":"\u97F5","w":"\u4E66","x":"\u83BA","y":"\u7483","z":"\u96E8","A":"\u6587","B":"\u6DA7","C":"\u6C34","D":"\u82B1","E":"\u98CE","F":"\u68CB","G":"\u697C","H":"\u9E64","I":"\u9E22","J":"\u706F","K":"\u96C1","L":"\u661F","M":"\u58F0","N":"\u6811","O":"\u8336","P":"\u7AF9","Q":"\u5170","R":"\u82D7","S":"\u5FC3","T":"\u8BED","U":"\u793C","V":"\u68A6","W":"\u5EAD","X":"\u6728","Y":"\u9A7F","Z":"\u706B"},"numbersymbol":{"0":"\u68EE","1":"\u590F","2":"\u5149","3":"\u6797","4":"\u7269","5":"\u4E91","6":"\u591C","7":"\u57CE","8":"\u6625","9":"\u7A7A","+":"\u96C0","/":"\u9E42","=":"\u9E33"}},"V":{"alphabet":{"a":"\u5173","b":"\u8D74","c":"\u5448","d":"\u6DFB","e":"\u505C","f":"\u6210","g":"\u8D70","h":"\u8FBE","i":"\u884C","j":"\u79F0","k":"\u89C1","l":"\u5B66","m":"\u542C","n":"\u4E70","o":"\u4F5C","p":"\u5F39","q":"\u5199","r":"\u5B9A","s":"\u8C08","t":"\u52A8","u":"\u65C5","v":"\u8FD4","w":"\u5EA6","x":"\u5F00","y":"\u7B51","z":"\u9009","A":"\u6D41","B":"\u6307","C":"\u6362","D":"\u63A2","E":"\u653E","F":"\u770B","G":"\u62A5","H":"\u4E8B","I":"\u6CCA","J":"\u73B0","K":"\u8FF8","L":"\u5F70","M":"\u9700","N":"\u98DE","O":"\u6E38","P":"\u6C42","Q":"\u5FA1","R":"\u822A","S":"\u6B4C","T":"\u8BFB","U":"\u632F","V":"\u767B","W":"\u4EFB","X":"\u7559","Y":"\u594F","Z":"\u8FDE"},"numbersymbol":{"0":"\u77E5","1":"\u81F3","2":"\u81F4","3":"\u53BB","4":"\u753B","5":"\u8BF4","6":"\u8FDB","7":"\u4FE1","8":"\u53D6","9":"\u95EE","+":"\u7B11","/":"\u89C6","=":"\u8A00"}},"MV":["\u6B32","\u5E94","\u53EF","\u80FD","\u5C06","\u8BF7","\u60F3","\u5FC5","\u5F53"],"A":{"alphabet":{"a":"\u83B9","b":"\u7545","c":"\u65B0","d":"\u9AD8","e":"\u9759","f":"\u7F8E","g":"\u7EFF","h":"\u4F73","i":"\u5584","j":"\u826F","k":"\u701A","l":"\u660E","m":"\u65E9","n":"\u5B8F","o":"\u9752","p":"\u9065","q":"\u901F","r":"\u6167","s":"\u7EDA","t":"\u7EEE","u":"\u5BD2","v":"\u51B7","w":"\u94F6","x":"\u7075","y":"\u7EE3","z":"\u5317","A":"\u4E34","B":"\u5357","C":"\u4FCA","D":"\u6377","E":"\u9A8F","F":"\u76CA","G":"\u96C5","H":"\u8212","I":"\u667A","J":"\u8C1C","K":"\u5F69","L":"\u4F59","M":"\u77ED","N":"\u79CB","O":"\u4E50","P":"\u6021","Q":"\u745E","R":"\u60E0","S":"\u548C","T":"\u7EAF","U":"\u60A6","V":"\u8FF7","W":"\u957F","X":"\u5C11","Y":"\u8FD1","Z":"\u6E05"},"numbersymbol":{"0":"\u8FDC","1":"\u6781","2":"\u5B89","3":"\u806A","4":"\u79C0","5":"\u65E7","6":"\u6D69","7":"\u76C8","8":"\u5FEB","9":"\u60A0","+":"\u540E","/":"\u8F7B","=":"\u575A"}},"AD":{"alphabet":{"a":"\u8BDA","b":"\u7545","c":"\u65B0","d":"\u9AD8","e":"\u9759","f":"\u6052","g":"\u6108","h":"\u8C28","i":"\u5584","j":"\u826F","k":"\u9891","l":"\u7B03","m":"\u65E9","n":"\u6E5B","o":"\u662D","p":"\u9065","q":"\u901F","r":"\u6717","s":"\u7957","t":"\u6538","u":"\u5F90","v":"\u54B8","w":"\u7686","x":"\u7075","y":"\u606D","z":"\u5F25","A":"\u4E34","B":"\u5141","C":"\u516C","D":"\u6377","E":"\u6DF3","F":"\u76CA","G":"\u96C5","H":"\u8212","I":"\u5609","J":"\u52E4","K":"\u534F","L":"\u6C38","M":"\u77ED","N":"\u6B46","O":"\u4E50","P":"\u6021","Q":"\u5DF2","R":"\u5FFB","S":"\u548C","T":"\u8C27","U":"\u60A6","V":"\u7A0D","W":"\u957F","X":"\u5C11","Y":"\u8FD1","Z":"\u5C1A"},"numbersymbol":{"0":"\u8FDC","1":"\u6781","2":"\u5B89","3":"\u7ADF","4":"\u6089","5":"\u6E10","6":"\u9887","7":"\u8F84","8":"\u5FEB","9":"\u60A0","+":"\u540E","/":"\u8F7B","=":"\u66FE"}}},"Virtual":{"zhi":["\u4E4B"],"hu":["\u4E4E"],"zhe":["\u8005"],"ye":["\u4E5F"],"for":["\u4E3A"],"ba":["\u628A"],"le":["\u4E86"],"er":["\u800C"],"this":["\u6B64","\u65AF"],"still":["\u4ECD"],"with":["\u4E0E","\u540C"],"also":["\u4EA6","\u4E5F"],"is":["\u662F","\u4E43"],"not":["\u672A","\u83AB"],"or":["\u6216"],"more":["\u66F4"],"make":["\u4F7F","\u5C06","\u8BA9"],"and":["\u4E0E","\u540C"],"anti":["\u975E","\u4E0D"],"why":["\u4E3A\u4F55","\u5948\u4F55","\u4F55\u54C9"],"but":["\u4F46","\u5374","\u5219","\u800C","\u51B5","\u4E14"],"like":["\u4F3C","\u5982","\u82E5"],"if":["\u82E5","\u5018"],"int":["\u54C9","\u547C","\u566B"],"self":["\u81EA"],"by":["\u4EE5","\u4E8E"]},"Sentences":{"Begin":["1/\u975E/N/ye","1/N/\u66F0","1/\u82E5\u592B/N","1/anti/MV/V/ye/P","2/A/N/\u66F0","2/N/\u4EE5/A","2/N/anti/\u5728/A","2/N/make/N/zhi","2/MV/N/zhe/A","2/\u6709/N/\u5219/A","2/V/zhe/V/zhi","2/but/MV/A/zhe/A","3/\u521D\uFF0C/N/V/by/N","3/\u592B/N/anti/V/by/N","3/AD/V/zhi/\u8C13/A","3/V/\u800C/V/zhi/zhi/\u8C13/A","3/N/\uFF0C/N/zhi/N/ye/P","3/A/\u4E4B/V/\u8005/\u5FC5/\u6709/N/P","4/\u975E/N/\u4E0D/A/\uFF0C/V/\u4E0D/A","4/A/N/AD/V","4/V/N/\u4EE5/V/N","4/N/\u4E0D\u5728/A/\uFF0C/\u6709/N/\u5219/A/P","4/A/N/\u5E38\u6709/\uFF0C/\u800C/A/N/\u4E0D\u5E38\u6709/P","4/N/\u6709/MV/V/\uFF0C/N/\u6709/AD/\u7136/P","4/N/\u65E0/N/\uFF0C/\u65E0\u4EE5/V/N","5/V/N/\u800C/V/A/\uFF0C/V/zhi/\u9053/ye/P","5/N/zhi/V/V/\uFF0C/\u5B9E\u4E3A/A/A/P","5/\u672C/MV/V/A/\uFF0C/anti/V/N/N","5/\u4ECA/V/N/\u4EE5/V/A/N","5/N/\u4E43/V/V/N/zhi/N","5/\u4ECA/N/\u4E43/A/N/A/N","5/A/N/V/A/N","5/\u592B/N/\u3001/N/\u4E0D/MV/AD/V/N","5/\u4E0D/\u6709/A/N/\uFF0C/\u4F55/V/A/N/Q","6/\u4EE5/N/V/\uFF0C/like/V/N/V/N","6/A/N/zhi/N/\uFF0C/V/zhi/\u4EE5/V/\u5176/N","6/A/N/V/\u4E8E/N/\u800C/V/N","6/A/N/\u672A/V/N/\u3001/N/\u4E4B/N","7/N/\u4EE5/A/A/\uFF0C/AD/V/A/N","7/V/N/A/\uFF0C/A/N/V/N","7/N/V/\u4EE5/N/V/\uFF0C/V/\u4E0D/V/N","7/N/N/V/N/\uFF0C/A/\u4E8E/N/N","7/MV/AD/V/A/N/\uFF0C/but/V/V/\u4E0D/A","7/\u6216/V/N/V/N/\uFF0C/V/N/\u4E8E/N","7/\u5219\u6709/N/A/N/A/\uFF0C/N/N/\u5177/V","7/V/A/N/zhe/\uFF0C/\u5E38/V/\u5176/\u6240/A/\uFF0C/\u800C/V/\u5176/\u6240/A/P","7/A/N/\u4E4B/N/\u4E0D\u5728/N/\uFF0C/\u5728\u4E4E/A/N/\u4E4B/N/\u4E5F/P","8/V/A/N/\uFF0C/V/A/N/\uFF0C/by/MV/A/zhi/N/P","8/N/anti/AD/V/zhe/by/AD/V/zhe/V/\uFF0C/anti/MV/AD/V/P","8/N/anti/MV/V/N/\uFF0C/still/\u7EE7/N/V/\uFF0C/why/\uFF0C/and/N/\u800C/anti/V/N/ye/P","8/V/N/A/A/\uFF0C/V/N/A/A","8/N/V/A/N/\uFF0C/N/V/A/N","8/N/\u5728/A/N/\uFF0C/A/N/zhi/A/\uFF0C/V/\u4E8E/N/P","8/A/N/AD/V/\uFF0C/N/N/AD/V","8/A/N/V/N/\uFF0C/N/N/V/N/P","8/\u5C1D/V/A/N/\uFF0C/AD/V/A/N/zhi/N","8/\u4E88/V/\u592B/A/N/A/N/\uFF0C/\u5728/A/N/\u4E4B/N","8/N/V/\u4E8E/A/N/\uFF0C/\u800C/N/V/\u4E8E/A/N","8/\u867D/\u65E0/N/N/zhi/V/\uFF0C/\u4EA6/V/\u4EE5/AD/V/A/N/P","9/A/N/V/zhi/\u800C\u4E0D/V/zhi/\u3001\u4EA6/make/A/N/er/\u590D/V/A/N/ye/P","9/N/MV/V/N/V/V/\uFF0C/but/N/N/AD/V/P","9/\u4EE5/N/\uFF0C/\u5F53/V/A/N/\uFF0C/\u975E/N/V/N/\u6240/MV/AD/V/P","9/\u6B64/N/\u6709/A/N/A/N/\uFF0C/A/N/A/N/P","9/\u662F/N/ye/\uFF0C/N/A/N/A/\uFF0C/N/A/N/A/P"],"Main":["1/\u975E/N/ye","1/anti/MV/V/ye","2/N/make/N/zhi","2/MV/N/zhe/A","2/\u6709/N/\u5219/A","2/V/zhe/V/zhi","2/but/MV/A/zhe/A","3/N/with/N/V","3/N/\u66F0\uFF0C\u4F55/A/zhi/V/Q","4/A/N/AD/V","4/V/N/\u4EE5/V/N","4/N/\u65E0/N/\uFF0C/\u65E0\u4EE5/V/N/P","4/N/\u4E0D\u5728/A/\uFF0C/\u6709/N/\u5219/A/P","4/N/\u6709/MV/V/\uFF0C/N/\u6709/AD/\u7136/P","4/N/\u975E/V/\u800C/V/\u4E4B/\u8005/\uFF0C/\u5B70/MV/\u65E0/N/P","4/A/N/\u5E38\u6709/\uFF0C/\u800C/A/N/\u4E0D\u5E38\u6709/P","4/\u4E0D/\u4EE5/N/V/\uFF0C/\u4E0D/\u4EE5/N/V/P","5/\u4ECA/V/N/\u4EE5/V/A/N","5/N/\u4E43/V/V/N/zhi/N","5/\u672C/MV/V/A/\uFF0C/anti/V/N/N","5/\u4ECA/N/\u4E43/A/N/A/N","5/\u6BCF/\u6709/V/N/\uFF0C/\u4FBF/AD/\u7136/V/N/P","5/N/V/\u800C/A/N/V/\u4E5F","5/\u4E0D/\u6709/A/N/\uFF0C/\u4F55/V/A/N/Q","6/\u4EE5/N/V/\uFF0C/like/V/N/V/N","6/N/V/\uFF0C/V/N/V/N","6/\u867D/V/V/A/A/\uFF0C/A/A/\u4E0D/\u540C/P","6/\u800C/A/N/zhi/N/\uFF0C/V/zhi/\u4EE5/V/\u5176/N/P","6/A/N/V/\u4E8E/N/\u800C/V/N","6/A/N/\u672A/V/N/\u3001/N/\u4E4B/N","6/V/A/N/\uFF0C/V/A/N","6/V/MV/with/\u5176/N/\uFF0C/\u800C/V/MV/V/\u4EE5/N/\u8005/\uFF0C/N/\u4E5F/P","6/A/N/\u5FC5/\u6709/A/N/V/\u4E4B\u8005/\u3001/\u4E88/\u53EF/\u65E0/N/\u4E5F/P","6/\u5C06/\u6709/V/\uFF0C/\u5219/V/A/N/\u4EE5/V/N/P","7/N/V/\u4EE5/N/V/\uFF0C/V/\u4E0D/V/N","7/N/N/V/N/\uFF0C/A/\u4E8E/N/N","7/MV/AD/V/A/N/\uFF0C/but/V/V/\u4E0D/A","7/\u6216/V/N/V/N/\uFF0C/V/N/\u4E8E/N","7/V/A/N/zhe/\uFF0C/\u5E38/V/\u5176/\u6240/A/\uFF0C/\u800C/V/\u5176/\u6240/A/P","7/A/N/\u4E4B/\u4E0D/V/\u4E5F/AD/\u77E3/\uFF0C/\u6B32/N/\u4E4B/\u65E0/N/\u4E5F/AD/\u77E3/P","7/A/N/\u4E4B/N/\u4E0D\u5728/N/\uFF0C/\u5728\u4E4E/A/N/\u4E4B/N/\u4E5F/P","7/A/N/\u4E4B/N/\uFF0C/V/\u4E4B/N/\u800C/V/\u4E4B/N/\u4E5F/P","7/\u662F\u6545/A/N/\u4E0D\u5FC5\u4E0D\u5982/N/\uFF0C/N/\u4E0D\u5FC5/A/\u4E8E/A/N/P","7/\u6709/A/N/\u3001/A/N/\u3001/A/N/\u4E4B/N/P","8/N/anti/MV/V/N/\uFF0C/still/\u7EE7/N/V/\uFF0C/why/\uFF0C/and/N/\u800C/anti/V/N/ye/P","8/\u662F/\u6545/\u65E0/A/\u65E0/A/\uFF0C/\u65E0/A/\u65E0/A/\uFF0C/N/\u4E4B/\u6240/V/\u3001/N/\u4E4B/\u6240/V/ye/P","8/V/N/A/A/\uFF0C/V/N/A/A","8/N/\u5728/A/N/\uFF0C/A/N/zhi/A/\uFF0C/V/\u4E8E/N/P","8/A/N/AD/V/\uFF0C/N/N/AD/V","8/A/N/V/N/\uFF0C/N/N/V/N/P","8/\u867D/\u65E0/N/N/zhi/V/\uFF0C/\u4EA6/V/\u4EE5/AD/V/A/N/P","8/\u4E88/V/\u592B/A/N/A/N/\uFF0C/\u5728/A/N/\u4E4B/N","8/\u6545/V/A/N/\u8005/\uFF0C/\u5F53/V/A/N/\u4E4B/A/N/P","8/N/V/\u4E8E/A/N/\uFF0C/\u800C/N/V/\u4E8E/A/N","8/A/N/MV/A/N/\u4E4B/A/\uFF0C/V/N/\u4E2D/\u4E4B/A","8/N/V/\u4E8E/A/N/\u4E4B\u4E0A/\uFF0C/AD/V/\u4E8E/A/N/\u4E4B\u95F4/P","8/\u4F7F/\u5176/A/N/AD/V/\uFF0C/A/N/AD/V/P","9/N/MV/V/N/V/V/\uFF0C/but/N/N/AD/V","9/A/N/V/zhi/\u800C\u4E0D/V/zhi/\u3001\u4EA6/make/A/N/er/\u590D/V/A/N/ye/P","9/\u4EE5/N/\uFF0C/\u5F53/V/A/N/\uFF0C/\u975E/N/V/N/\u6240/MV/AD/V/P","9/\u6B64/N/\u6709/A/N/A/N/\uFF0C/A/N/A/N/P","9/\u662F/N/ye/\uFF0C/N/A/N/A/\uFF0C/N/A/N/A","9/V/A/N/\uFF0C/N/A/N/A/\uFF0C/\u4E43/AD/V"],"End":["1/\u975E/N/ye","1/anti/MV/V/ye","2/\u552F/N/V/zhi","2/V/by/N","2/\u5176/also/A/hu/\u5176/V/ye/P","2/N/make/N/zhi","2/MV/N/zhe/A","2/\u6709/N/\u5219/A","2/V/zhe/V/zhi","2/but/MV/A/zhe/A","3/V/\u5728/A/N","3/\u4ECA/zhi/V/zhe/\uFF0C/\u4EA6\u5C06\u6709/V/\u4E8E/this/N/P","3/\u67D0\u4E5F/A/\uFF0C/\u67D0\u4E5F/A/\uFF0C/\u53EF/\u4E0D/A/\u54C9","4/V/N/zhi/N/by/N","4/A/N/AD/V","4/V/N/\u4EE5/V/N","4/N/\u65E0/N/\uFF0C/\u65E0\u4EE5/V/N","4/\u566B/\uFF0C/A/N/ye/\uFF0C/N/\u8C01/\u4E0E/V/Q","4/\u4E0D/\u4EE5/N/V/\uFF0C/\u4E0D/\u4EE5/N/V/P","5/\u8BF7/V/N/zhi/N/\u4E2D/\uFF0C/\u662F/N/zhi/N/P","5/\u4ECA/V/N/\u4EE5/V/A/N","5/N/\u4E43/V/V/N/zhi/N","5/\u672C/MV/V/A/\uFF0C/anti/V/N/N","5/\u4ECA/N/\u4E43/A/N/A/N","5/N/V/\u800C/A/N/V/\u4E5F","5/\u4E0D/\u6709/A/N/\uFF0C/\u4F55/V/A/N/Q","6/\u4EE5/N/V/\uFF0C/like/V/N/V/N","6/A/zhi/V/N/\uFF0C/\u4EA6/like/\u4ECA/zhi/V/N/\uFF0C/A/\u592B/P","6/N/V/\uFF0C/V/N/V/N","6/V/N/\u4E4B/N/\uFF0C/\u4E3A/N/V/\u8005/\uFF0C/\u53EF\u4EE5/V/\u77E3/P","6/V/MV/with/\u5176/N/\uFF0C/\u800C/V/MV/V/\u4EE5/N/\u8005/\uFF0C/N/\u4E5F/P","6/A/N/\u5FC5/\u6709/A/N/V/\u4E4B\u8005/\u3001/\u4E88/\u53EF/\u65E0/N/\u4E5F/P","6/\u867D/V/V/A/A/\uFF0C/A/A/\u4E0D/\u540C/P","6/\u5C06/\u6709/V/\uFF0C/\u5219/V/A/N/\u4EE5/V/N/P","7/N/V/\u4EE5/N/V/\uFF0C/V/\u4E0D/V/N","7/N/N/V/N/\uFF0C/A/\u4E8E/N/N","7/MV/AD/V/A/N/\uFF0C/but/V/V/\u4E0D/A","7/\u6216/V/N/V/N/\uFF0C/V/N/\u4E8E/N","7/A/N/\u4E4B/N/\u4E0D\u5728/N/\uFF0C/\u5728\u4E4E/A/N/\u4E4B/N/\u4E5F/P","7/A/N/\u4E4B/N/\uFF0C/V/\u4E4B/N/\u800C/V/\u4E4B/N/\u4E5F/P","7/\u662F\u6545/A/N/\u4E0D\u5FC5\u4E0D\u5982/N/\uFF0C/N/\u4E0D\u5FC5/A/\u4E8E/A/N/P","7/\u6709/A/N/\u3001/A/N/\u3001/A/N/\u4E4B/N/P","8/\u867D/N/A/N/A/\uFF0C/\u6240/\u4EE5/V/N/\uFF0C\u5176/N/A/ye/P","8/\u4F55\u5FC5/V/N/V/N/\uFF0C/V/N/zhi/N/N/\u54C9/P","8/N/anti/MV/V/N/\uFF0C/still/\u7EE7/N/V/\uFF0C/why/\uFF0C/and/N/\u800C/anti/V/N/ye/P","8/V/N/A/A/\uFF0C/V/N/A/A","8/N/\u5728/A/N/\uFF0C/A/N/zhi/A/\uFF0C/V/\u4E8E/N/P","8/A/N/AD/V/\uFF0C/N/N/AD/V","8/\u867D/\u65E0/N/N/zhi/V/\uFF0C/\u4EA6/V/\u4EE5/AD/V/A/N/P","8/\u6545/V/A/N/\u8005/\uFF0C/\u5F53/V/A/N/\u4E4B/A/N/P","8/N/V/\u4E8E/A/N/\u4E4B\u4E0A/\uFF0C/AD/V/\u4E8E/A/N/\u4E4B\u95F4/P","8/\u4F7F/\u5176/A/N/AD/V/\uFF0C/A/N/AD/V/P","9/A/N/V/zhi/\u800C\u4E0D/V/zhi/\u3001\u4EA6/make/A/N/er/\u590D/V/A/N/ye/P","9/N/MV/V/N/V/V/\uFF0C/but/N/N/AD/V","9/\u4EE5/N/\uFF0C/\u5F53/V/A/N/\uFF0C/\u975E/N/V/N/\u6240/MV/AD/V/P","9/\u6B64/N/\u6709/A/N/A/N/\uFF0C/A/N/A/N/P","9/\u662F/N/ye/\uFF0C/N/A/N/A/\uFF0C/N/A/N/A/P"]}}';
  var RoundFlip = 0;
  var RoundControl = new Uint8Array(32);
  const LETTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var LETTERS_ROUND_1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  var LETTERS_ROUND_2 = "FbPoDRStyJKAUcdahfVXlqwnOGpHZejzvmrBCigQILxkYMuWTEsN";
  var LETTERS_ROUND_3 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  const BIG_LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  const NUMBERS = "1234567890";
  const SYMBOLS = "+/=";
  const NUMBERSYMBOL = "0123456789+/=";
  var NUMBERSYMBOL_ROUND_1 = "0123456789+/=";
  var NUMBERSYMBOL_ROUND_2 = "5=0764+389/12";
  var NUMBERSYMBOL_ROUND_3 = "0123456789+/=";
  const NULL_STR = "\u5B4E";
  const CHINESE_WEBPAN_LIB = [
    "https://",
    "lanzou",
    "pan.quark.cn",
    "pan.baidu.com",
    "aliyundrive.com",
    "123pan.com"
  ];
  const INTER_WEBPAN_LIB = [
    "https://",
    "mypikpak.com",
    "mega.nz",
    "drive.google.com",
    "sharepoint.com",
    "1drv.ms"
  ];
  const CHINESE_WEBSITE_LIB = [
    "https://",
    "baidu.com",
    "b23.tv",
    "bilibili.com",
    "weibo.com",
    "weixin.qq.com"
  ];
  const INTER_WEBSITE_LIB = [
    "https://",
    "google.com",
    "youtube.com",
    "x.com",
    "twitter.com",
    "telegra.ph"
  ];
  const INTER_WEBSITE_LIB_2 = [
    "https://",
    "wikipedia.org",
    "github.com",
    "pages.dev",
    "github.io",
    "netlify.app"
  ];
  const JAPAN_WEBSITE_LIB = [
    "https://",
    "pixiv.net",
    "nicovideo.jp",
    "dlsite.com",
    "line.me",
    "dmm.com"
  ];
  const PIRACY_WEBSITE_LIB = [
    "https://",
    "nyaa.si",
    "bangumi.moe",
    "thepiratebay.org",
    "e-hentai.org",
    "exhentai.org"
  ];
  const GENERIC_TLINK_LIB = [
    "https://",
    "magnet:?xt=urn:btih:",
    "magnet:?xt=urn:sha1:",
    "ed2k://",
    "thunder://",
    "torrent"
  ];
  const GENERIC_LINK_LIB_1 = ["https://", ".cn", ".com", ".net", ".org", ".xyz"];
  const GENERIC_LINK_LIB_2 = ["https://", ".info", ".moe", ".cc", ".co", ".dev"];
  const GENERIC_LINK_LIB_3 = ["https://", ".io", ".us", ".eu", ".jp", ".de"];
  const Map_Obj = JSON.parse(Map);
  let DecodeTable = {};
  let PayloadLetter = "";
  function InitDecodeTable() {
    DecodeTable = {};
    PayloadLetter = "";
    for (let i = 0; i < 52; i++) {
      DecodeTable[LETTERS[i]] = [];
      DecodeTable[LETTERS[i]].push(
        Map_Obj["Actual"]["N"]["alphabet"][LETTERS[i]]
      );
      DecodeTable[LETTERS[i]].push(
        Map_Obj["Actual"]["A"]["alphabet"][LETTERS[i]]
      );
      DecodeTable[LETTERS[i]].push(
        Map_Obj["Actual"]["V"]["alphabet"][LETTERS[i]]
      );
      PayloadLetter = PayloadLetter + Map_Obj["Actual"]["N"]["alphabet"][LETTERS[i]];
      PayloadLetter = PayloadLetter + Map_Obj["Actual"]["A"]["alphabet"][LETTERS[i]];
      PayloadLetter = PayloadLetter + Map_Obj["Actual"]["V"]["alphabet"][LETTERS[i]];
      if (Map_Obj["Actual"]["A"]["alphabet"][LETTERS[i]] != Map_Obj["Actual"]["AD"]["alphabet"][LETTERS[i]]) {
        DecodeTable[LETTERS[i]].push(
          Map_Obj["Actual"]["AD"]["alphabet"][LETTERS[i]]
        );
        PayloadLetter = PayloadLetter + Map_Obj["Actual"]["AD"]["alphabet"][LETTERS[i]];
      }
    }
    for (let i = 0; i < 13; i++) {
      DecodeTable[NUMBERSYMBOL[i]] = [];
      DecodeTable[NUMBERSYMBOL[i]].push(
        Map_Obj["Actual"]["N"]["numbersymbol"][NUMBERSYMBOL[i]]
      );
      DecodeTable[NUMBERSYMBOL[i]].push(
        Map_Obj["Actual"]["A"]["numbersymbol"][NUMBERSYMBOL[i]]
      );
      DecodeTable[NUMBERSYMBOL[i]].push(
        Map_Obj["Actual"]["V"]["numbersymbol"][NUMBERSYMBOL[i]]
      );
      PayloadLetter = PayloadLetter + Map_Obj["Actual"]["N"]["numbersymbol"][NUMBERSYMBOL[i]];
      PayloadLetter = PayloadLetter + Map_Obj["Actual"]["A"]["numbersymbol"][NUMBERSYMBOL[i]];
      PayloadLetter = PayloadLetter + Map_Obj["Actual"]["V"]["numbersymbol"][NUMBERSYMBOL[i]];
      if (Map_Obj["Actual"]["A"]["numbersymbol"][NUMBERSYMBOL[i]] != Map_Obj["Actual"]["AD"]["numbersymbol"][NUMBERSYMBOL[i]]) {
        DecodeTable[NUMBERSYMBOL[i]].push(
          Map_Obj["Actual"]["AD"]["numbersymbol"][NUMBERSYMBOL[i]]
        );
        PayloadLetter = PayloadLetter + Map_Obj["Actual"]["AD"]["numbersymbol"][NUMBERSYMBOL[i]];
      }
    }
  }
  function AES_256_CTR_E(Uint8attr, key, RandomBytes) {
    let KeyHash = CryptoJS.SHA256(key);
    let HashArray = wordArrayToUint8Array(KeyHash);
    let TempArray = new Uint8Array(HashArray.byteLength + 2);
    TempArray.set(HashArray, 0);
    TempArray.set([RandomBytes[0], RandomBytes[1]], HashArray.byteLength);
    HashArray = TempArray;
    let HashWithRandom = CryptoJS.lib.WordArray.create(HashArray);
    let KeyHashHash = CryptoJS.SHA256(HashWithRandom);
    let HashHashArray = wordArrayToUint8Array(KeyHashHash);
    let ivArray = new Uint8Array(16);
    for (var i = 0; i < 16; i++) {
      ivArray[i] = HashHashArray[i];
    }
    let iv = CryptoJS.lib.WordArray.create(ivArray);
    let msg = CryptoJS.lib.WordArray.create(Uint8attr);
    let Enc = CryptoJS.AES.encrypt(msg, KeyHash, {
      mode: CryptoJS.mode.CTR,
      padding: CryptoJS.pad.NoPadding,
      iv
    });
    return wordArrayToUint8Array(Enc.ciphertext);
  }
  function GZIP_COMPRESS(Data) {
    let DataOutput = pako.gzip(Data);
    if (DataOutput.byteLength >= Data.byteLength) {
      return Data;
    }
    return DataOutput;
  }
  function GZIP_DECOMPRESS(Data) {
    const firstTwoBytes = new Uint8Array(Data.buffer, 0, 2);
    if (firstTwoBytes[0] === 31 && firstTwoBytes[1] === 139) {
      let DataOutput = pako.ungzip(Data);
      return DataOutput;
    } else {
      return Data;
    }
  }
  function UNISHOX_COMPRESS(Data) {
    let CompressedStrCharArray = new Uint8Array(2048);
    let Datastr = Uint8ArrayTostring(Data);
    let libmark = 255;
    for (let i = 1; i < 6; i++) {
      if (Datastr.indexOf(CHINESE_WEBPAN_LIB[i]) != -1) {
        libmark = 254;
        break;
      }
      if (Datastr.indexOf(INTER_WEBPAN_LIB[i]) != -1) {
        libmark = 245;
        break;
      }
    }
    if (libmark == 255) {
      for (let i = 1; i < 6; i++) {
        if (Datastr.indexOf(CHINESE_WEBSITE_LIB[i]) != -1) {
          libmark = 253;
          break;
        }
        if (Datastr.indexOf(INTER_WEBSITE_LIB[i]) != -1) {
          libmark = 252;
          break;
        }
        if (Datastr.indexOf(INTER_WEBSITE_LIB_2[i]) != -1) {
          libmark = 244;
          break;
        }
        if (Datastr.indexOf(JAPAN_WEBSITE_LIB[i]) != -1) {
          libmark = 251;
          break;
        }
        if (Datastr.indexOf(PIRACY_WEBSITE_LIB[i]) != -1) {
          libmark = 250;
          break;
        }
      }
    }
    if (libmark == 255) {
      for (let i = 1; i < 6; i++) {
        if (Datastr.indexOf(GENERIC_TLINK_LIB[i]) != -1) {
          libmark = 249;
          break;
        }
        if (Datastr.indexOf(GENERIC_LINK_LIB_1[i]) != -1) {
          libmark = 248;
          break;
        }
        if (Datastr.indexOf(GENERIC_LINK_LIB_2[i]) != -1) {
          libmark = 247;
          break;
        }
        if (Datastr.indexOf(GENERIC_LINK_LIB_3[i]) != -1) {
          libmark = 246;
          break;
        }
      }
    }
    let Outlen;
    switch (libmark) {
      case 255:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray
        );
        break;
      case 254:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          CHINESE_WEBPAN_LIB
        );
        break;
      case 245:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          INTER_WEBPAN_LIB
        );
        break;
      case 253:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          CHINESE_WEBSITE_LIB
        );
        break;
      case 252:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          INTER_WEBSITE_LIB
        );
        break;
      case 244:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          INTER_WEBSITE_LIB_2
        );
        break;
      case 251:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          JAPAN_WEBSITE_LIB
        );
        break;
      case 250:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          PIRACY_WEBSITE_LIB
        );
        break;
      case 249:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_TLINK_LIB
        );
        break;
      case 248:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_LINK_LIB_1
        );
        break;
      case 247:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_LINK_LIB_2
        );
        break;
      case 246:
        Outlen = unishox2_compress_simple(
          Data,
          Data.byteLength,
          CompressedStrCharArray,
          GENERIC_LINK_LIB_3
        );
        break;
    }
    let ResStrCharArray = CompressedStrCharArray.subarray(0, Outlen);
    if (ResStrCharArray.byteLength >= Data.byteLength) {
      return Data;
    }
    let TempArray = new Uint8Array(ResStrCharArray.byteLength + 2);
    TempArray.set(ResStrCharArray, 0);
    TempArray.set([libmark, 255], ResStrCharArray.byteLength);
    ResStrCharArray = TempArray;
    return ResStrCharArray;
  }
  function UNISHOX_DECOMPRESS(Data) {
    const lastElement = Data[Data.byteLength - 1];
    const secondLastElement = Data[Data.byteLength - 2];
    if (lastElement != 255 || secondLastElement < 244 || secondLastElement > 255) {
      return Data;
    }
    let libmark = secondLastElement;
    let NewData = Data.subarray(0, Data.byteLength - 2);
    let DecompressedStrCharArray = new Uint8Array(2048);
    let Outlen;
    switch (libmark) {
      case 255:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          USX_FREQ_SEQ_DFLT,
          USX_TEMPLATES
        );
        break;
      case 254:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          CHINESE_WEBPAN_LIB,
          USX_TEMPLATES
        );
        break;
      case 245:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          INTER_WEBPAN_LIB,
          USX_TEMPLATES
        );
        break;
      case 253:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          CHINESE_WEBSITE_LIB,
          USX_TEMPLATES
        );
        break;
      case 252:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          INTER_WEBSITE_LIB,
          USX_TEMPLATES
        );
        break;
      case 244:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          INTER_WEBSITE_LIB_2,
          USX_TEMPLATES
        );
        break;
      case 251:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          JAPAN_WEBSITE_LIB,
          USX_TEMPLATES
        );
        break;
      case 250:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          PIRACY_WEBSITE_LIB,
          USX_TEMPLATES
        );
        break;
      case 249:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_TLINK_LIB,
          USX_TEMPLATES
        );
        break;
      case 248:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_LINK_LIB_1,
          USX_TEMPLATES
        );
        break;
      case 247:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_LINK_LIB_2,
          USX_TEMPLATES
        );
        break;
      case 246:
        Outlen = unishox2_decompress(
          NewData,
          NewData.byteLength,
          DecompressedStrCharArray,
          USX_HCODES_DFLT,
          USX_HCODE_LENS_DFLT,
          GENERIC_LINK_LIB_3,
          USX_TEMPLATES
        );
        break;
    }
    let ResStrCharArray = DecompressedStrCharArray.subarray(0, Outlen);
    return ResStrCharArray;
  }
  function GetLuhnBit(Data) {
    let Digit = new Array();
    let num, digit;
    for (let i = 0; i < Data.byteLength; i++) {
      num = Data[i];
      while (num > 0) {
        digit = num % 10;
        Digit.push(digit);
        num = Math.floor(num / 10);
      }
    }
    let sum = 0;
    let Check = 0;
    for (let i = 0; i < Digit.length; i++) {
      if (i % 2 != 0) {
        Digit[i] = Digit[i] * 2;
        if (Digit[i] >= 10) {
          Digit[i] = Digit[i] % 10 + Math.floor(Digit[i] / 10);
        }
      }
      sum = sum + Digit[i];
    }
    Check = 10 - sum % 10;
    return Check;
  }
  function CheckLuhnBit(Data) {
    let DCheck = Data[Data.byteLength - 1];
    let Check = GetLuhnBit(Data.subarray(0, Data.byteLength - 1));
    if (Check == DCheck) {
      return true;
    } else {
      return false;
    }
  }
  function RemovePadding(Base64String) {
    let PaddingCount = 0;
    for (let i = Base64String.length - 1; i >= Base64String.length - 4; i--) {
      if (Base64String[i] == "=") {
        PaddingCount++;
      }
    }
    return Base64String.slice(0, Base64String.length - PaddingCount);
  }
  function AddPadding(Base64String) {
    if (Base64String.length % 4 == 3) {
      return Base64String + "=";
    } else if (Base64String.length % 4 == 2) {
      return Base64String + "==";
    } else {
      return Base64String;
    }
  }
  function wordArrayToUint8Array(data) {
    const dataArray = new Uint8Array(data.sigBytes);
    for (let i = 0; i < data.sigBytes; i++) {
      dataArray[i] = data.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
    }
    return dataArray;
  }
  function Uint8ArrayTostring(fileData) {
    let tempBase64 = gBase64.fromUint8Array(fileData);
    return gBase64.decode(tempBase64);
  }
  function GetRandomIndex(length) {
    let MT = new MersenneTwister$1(Math.floor(Math.random() * 1e9));
    let Rand = Math.floor(MT.random() * length);
    return Rand;
  }
  function rotateString(str, n) {
    return str.slice(n) + str.slice(0, n);
  }
  function LrotateString(str, n) {
    return str.slice(str.length - n) + str.slice(0, str.length - n);
  }
  function RoundKeyMatch(keyIn) {
    let idx1, idx2;
    let idx1_1, idx2_1;
    let idx1_2, idx2_2;
    idx1 = LETTERS.indexOf(keyIn);
    idx2 = NUMBERSYMBOL.indexOf(keyIn);
    idx1_1 = LETTERS.indexOf(LETTERS_ROUND_1[idx1]);
    idx2_1 = NUMBERSYMBOL.indexOf(NUMBERSYMBOL_ROUND_1[idx2]);
    idx1_2 = LETTERS.indexOf(LETTERS_ROUND_2[idx1_1]);
    idx2_2 = NUMBERSYMBOL.indexOf(NUMBERSYMBOL_ROUND_2[idx2_1]);
    if (idx1 != -1) {
      return LETTERS_ROUND_3[idx1_2];
    } else if (idx2 != -1) {
      return NUMBERSYMBOL_ROUND_3[idx2_2];
    }
    return NULL_STR;
  }
  function DRoundKeyMatch(keyIn) {
    let idx1, idx2;
    let idx1_1, idx2_1;
    let idx1_2, idx2_2;
    idx1 = LETTERS_ROUND_3.indexOf(keyIn);
    idx2 = NUMBERSYMBOL_ROUND_3.indexOf(keyIn);
    idx1_1 = LETTERS_ROUND_2.indexOf(LETTERS[idx1]);
    idx2_1 = NUMBERSYMBOL_ROUND_2.indexOf(NUMBERSYMBOL[idx2]);
    idx1_2 = LETTERS_ROUND_1.indexOf(LETTERS[idx1_1]);
    idx2_2 = NUMBERSYMBOL_ROUND_1.indexOf(NUMBERSYMBOL[idx2_1]);
    if (idx1 != -1) {
      return LETTERS[idx1_2];
    } else if (idx2 != -1) {
      return NUMBERSYMBOL[idx2_2];
    }
    return NULL_STR;
  }
  function RoundKey() {
    let ControlNum = 0;
    if (RoundFlip == 32) {
      RoundFlip = 0;
    }
    ControlNum = RoundControl[RoundFlip] % 10;
    if (ControlNum == 0) {
      ControlNum = 10;
    }
    if (ControlNum % 2 == 0) {
      LETTERS_ROUND_1 = rotateString(LETTERS_ROUND_1, 6);
      NUMBERSYMBOL_ROUND_1 = rotateString(NUMBERSYMBOL_ROUND_1, 6);
      LETTERS_ROUND_2 = LrotateString(LETTERS_ROUND_2, ControlNum);
      NUMBERSYMBOL_ROUND_2 = LrotateString(NUMBERSYMBOL_ROUND_2, ControlNum);
      LETTERS_ROUND_3 = rotateString(LETTERS_ROUND_3, ControlNum / 2 + 1);
      NUMBERSYMBOL_ROUND_3 = rotateString(
        NUMBERSYMBOL_ROUND_3,
        ControlNum / 2 + 1
      );
    } else {
      LETTERS_ROUND_1 = LrotateString(LETTERS_ROUND_1, 3);
      NUMBERSYMBOL_ROUND_1 = LrotateString(NUMBERSYMBOL_ROUND_1, 3);
      LETTERS_ROUND_2 = rotateString(LETTERS_ROUND_2, ControlNum);
      NUMBERSYMBOL_ROUND_2 = rotateString(NUMBERSYMBOL_ROUND_2, ControlNum);
      LETTERS_ROUND_3 = LrotateString(LETTERS_ROUND_3, (ControlNum + 7) / 2);
      NUMBERSYMBOL_ROUND_3 = LrotateString(
        NUMBERSYMBOL_ROUND_3,
        (ControlNum + 7) / 2
      );
    }
    RoundFlip++;
  }
  function RoundReset() {
    RoundFlip = 0;
    RoundControl = new Array(32);
    LETTERS_ROUND_1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    LETTERS_ROUND_2 = "FbPoDRStyJKAUcdahfVXlqwnOGpHZejzvmrBCigQILxkYMuWTEsN";
    LETTERS_ROUND_3 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    NUMBERSYMBOL_ROUND_1 = "1234567890+/=";
    NUMBERSYMBOL_ROUND_2 = "5=0764+389/12";
    NUMBERSYMBOL_ROUND_3 = "1234567890+/=";
  }
  function RoundControlInit(key) {
    let KeyHash = CryptoJS.SHA256(key);
    let HashArray = wordArrayToUint8Array(KeyHash);
    RoundControl = HashArray;
  }
  function distributeInteger(num) {
    if (num <= 3) {
      return [];
    }
    let maxPart = Math.floor(num * 0.2);
    let remaining = num - 2 * maxPart;
    if (remaining <= 0) {
      maxPart = Math.floor((num - 2) / 3);
      remaining = num - 2 * maxPart;
      if (remaining <= 0) {
        return [];
      }
    }
    const result = [maxPart, remaining, maxPart];
    return result;
  }
  function selectSentence(PayloadLength, RandomIndex = 0) {
    let selectRand;
    let DividedPayload = distributeInteger(PayloadLength);
    let ElementResult = [];
    for (let i = 0; i < 3; i++) {
      let Payload = DividedPayload[i];
      if (i == 0) {
        for (let a = 0; a < Payload; ) {
          selectRand = GetRandomIndex(101) + RandomIndex;
          let PossiblePayload = [];
          for (let b = 1; b <= Payload - a; b++) {
            if (b == 9) {
              PossiblePayload.push(b);
              break;
            }
            PossiblePayload.push(b);
          }
          let TargetPayload;
          if (selectRand <= 100) {
            if (PossiblePayload[PossiblePayload.length - 1] > 6) {
              let GreedyRand = GetRandomIndex(91);
              if (GreedyRand < 30) {
                TargetPayload = PossiblePayload[PossiblePayload.length - 3];
              } else if (GreedyRand >= 30 && GreedyRand < 60) {
                TargetPayload = PossiblePayload[PossiblePayload.length - 2];
              } else {
                TargetPayload = PossiblePayload[PossiblePayload.length - 1];
              }
            } else {
              TargetPayload = PossiblePayload.pop();
            }
          } else if (selectRand > 100 && selectRand <= 200) {
            TargetPayload = PossiblePayload[GetRandomIndex(PossiblePayload.length)];
            PossiblePayload = PossiblePayload.filter(
              (item) => item > TargetPayload
            );
          }
          let PossibleSentences = [];
          for (let c = 0; c < Map_Obj["Sentences"]["Begin"].length; c++) {
            let Sentence = Map_Obj["Sentences"]["Begin"][c].split("/");
            if (parseInt(Sentence[0]) == TargetPayload) {
              PossibleSentences.push(Sentence.slice(1));
            }
          }
          let TargetSentence = PossibleSentences[GetRandomIndex(PossibleSentences.length)];
          ElementResult.push(TargetSentence);
          a = a + TargetPayload;
        }
      } else if (i == 1) {
        for (let a = 0; a < Payload; ) {
          selectRand = GetRandomIndex(101) + RandomIndex;
          let PossiblePayload = [];
          for (let b = 1; b <= Payload - a; b++) {
            if (b == 9) {
              PossiblePayload.push(b);
              break;
            }
            PossiblePayload.push(b);
          }
          let TargetPayload;
          if (selectRand <= 100) {
            if (PossiblePayload[PossiblePayload.length - 1] > 6) {
              let GreedyRand = GetRandomIndex(91);
              if (GreedyRand < 30) {
                TargetPayload = PossiblePayload[PossiblePayload.length - 3];
              } else if (GreedyRand >= 30 && GreedyRand < 60) {
                TargetPayload = PossiblePayload[PossiblePayload.length - 2];
              } else {
                TargetPayload = PossiblePayload[PossiblePayload.length - 1];
              }
            } else {
              TargetPayload = PossiblePayload.pop();
            }
          } else if (selectRand > 100 && selectRand <= 200) {
            TargetPayload = PossiblePayload[GetRandomIndex(PossiblePayload.length)];
            PossiblePayload = PossiblePayload.filter(
              (item) => item > TargetPayload
            );
          }
          let PossibleSentences = [];
          for (let c = 0; c < Map_Obj["Sentences"]["Main"].length; c++) {
            let Sentence = Map_Obj["Sentences"]["Main"][c].split("/");
            if (parseInt(Sentence[0]) == TargetPayload) {
              PossibleSentences.push(Sentence.slice(1));
            }
          }
          let TargetSentence = PossibleSentences[GetRandomIndex(PossibleSentences.length)];
          ElementResult.push(TargetSentence);
          a = a + TargetPayload;
        }
      } else if (i == 2) {
        for (let a = 0; a < Payload; ) {
          selectRand = GetRandomIndex(101) + RandomIndex;
          let PossiblePayload = [];
          for (let b = 1; b <= Payload - a; b++) {
            if (b == 9) {
              PossiblePayload.push(b);
              break;
            }
            PossiblePayload.push(b);
          }
          let TargetPayload;
          if (selectRand <= 100) {
            if (PossiblePayload[PossiblePayload.length - 1] > 6) {
              let GreedyRand = GetRandomIndex(91);
              if (GreedyRand < 30) {
                TargetPayload = PossiblePayload[PossiblePayload.length - 3];
              } else if (GreedyRand >= 30 && GreedyRand < 60) {
                TargetPayload = PossiblePayload[PossiblePayload.length - 2];
              } else {
                TargetPayload = PossiblePayload[PossiblePayload.length - 1];
              }
            } else {
              TargetPayload = PossiblePayload.pop();
            }
          } else if (selectRand > 100 && selectRand <= 200) {
            TargetPayload = PossiblePayload[GetRandomIndex(PossiblePayload.length)];
            PossiblePayload = PossiblePayload.filter(
              (item) => item > TargetPayload
            );
          }
          let PossibleSentences = [];
          for (let c = 0; c < Map_Obj["Sentences"]["End"].length; c++) {
            let Sentence = Map_Obj["Sentences"]["End"][c].split("/");
            if (parseInt(Sentence[0]) == TargetPayload) {
              PossibleSentences.push(Sentence.slice(1));
            }
          }
          let TargetSentence = PossibleSentences[GetRandomIndex(PossibleSentences.length)];
          ElementResult.push(TargetSentence);
          a = a + TargetPayload;
        }
      }
    }
    return ElementResult;
  }
  function enMap(input, key, q, r) {
    RoundReset();
    RoundControlInit(key);
    let OriginalData = new Uint8Array();
    OriginalData = input.output;
    Uint8ArrayTostring(OriginalData);
    let TempArray = new Uint8Array(OriginalData.byteLength + 1);
    TempArray.set(OriginalData, 0);
    TempArray.set([GetLuhnBit(OriginalData)], OriginalData.byteLength);
    OriginalData = TempArray;
    if (OriginalData.byteLength <= 1024) {
      let SizeBefore = OriginalData.byteLength;
      OriginalData = UNISHOX_COMPRESS(OriginalData);
      if (OriginalData.byteLength == SizeBefore) {
        OriginalData = GZIP_COMPRESS(OriginalData);
      }
    } else {
      OriginalData = GZIP_COMPRESS(OriginalData);
    }
    let RandomBytes = new Array();
    RandomBytes.push(GetRandomIndex(256));
    RandomBytes.push(GetRandomIndex(256));
    OriginalData = AES_256_CTR_E(OriginalData, key, RandomBytes);
    TempArray = new Uint8Array(OriginalData.byteLength + 2);
    TempArray.set(OriginalData, 0);
    TempArray.set(RandomBytes, OriginalData.byteLength);
    OriginalData = TempArray;
    let OriginStr = RemovePadding(gBase64.fromUint8Array(OriginalData));
    let TempStr1 = "", temp = "";
    let size = OriginStr.length;
    let Sentence = selectSentence(OriginStr.length, r);
    let i = 0;
    let Finished = false;
    let hasSpecialEndSymbol = false;
    let CommaCounter = 0;
    let CommaNumInSentence = 0;
    RoundKey();
    for (let j = 0; j < Sentence.length; j++) {
      hasSpecialEndSymbol = false;
      CommaNumInSentence = 0;
      for (let k = 0; k < Sentence[j].length; k++) {
        if (Sentence[j][k] == "\uFF0C" || Sentence[j][k] == "\u3001") {
          CommaNumInSentence++;
        }
      }
      for (let k = 0; k < Sentence[j].length; k++) {
        if (Sentence[j][k] == "V" || Sentence[j][k] == "N" || Sentence[j][k] == "A" || Sentence[j][k] == "AD") {
          temp = OriginStr[i];
          TempStr1 = TempStr1 + getCryptText(temp, Sentence[j][k]);
          RoundKey();
          i++;
        } else if (Sentence[j][k] == "MV") {
          TempStr1 = TempStr1 + Map_Obj["Actual"]["MV"][GetRandomIndex(Map_Obj["Actual"]["MV"].length)];
        } else if (Map_Obj["Virtual"].hasOwnProperty(Sentence[j][k])) {
          TempStr1 = TempStr1 + Map_Obj["Virtual"][Sentence[j][k]][GetRandomIndex(Map_Obj["Virtual"][Sentence[j][k]].length)];
        } else if (Sentence[j][k] == "P") {
          if (j == Sentence.length - 2) {
            continue;
          }
          hasSpecialEndSymbol = true;
          TempStr1 = TempStr1 + "\u3002";
        } else if (Sentence[j][k] == "Q") {
          if (j == Sentence.length - 2) {
            continue;
          }
          hasSpecialEndSymbol = true;
          TempStr1 = TempStr1 + "\uFF1F";
        } else {
          TempStr1 = TempStr1 + Sentence[j][k];
        }
        if (i == size) {
          Finished = true;
        }
      }
      if (Finished) {
        if (q && !hasSpecialEndSymbol) {
          TempStr1 = TempStr1 + "\u3002";
          break;
        }
      } else {
        if (q && !hasSpecialEndSymbol) {
          let TestCommaCount = CommaCounter + (CommaNumInSentence + 1);
          if (CommaCounter < 3 || j == Sentence.length - 2) {
            if (TestCommaCount >= 3 && j != Sentence.length - 2) {
              TempStr1 = TempStr1 + "\u3002";
              CommaCounter = 0;
            } else {
              TempStr1 = TempStr1 + "\uFF0C";
              CommaCounter += CommaNumInSentence + 1;
            }
          } else {
            TempStr1 = TempStr1 + "\u3002";
            CommaCounter = 0;
          }
        }
        if (hasSpecialEndSymbol) {
          CommaCounter = 0;
        }
      }
    }
    if (!q) {
      let TempStrQ = "";
      for (let i2 = 0; i2 < TempStr1.length; i2++) {
        if (TempStr1[i2] != "\uFF0C" && TempStr1[i2] != "\u3002" && TempStr1[i2] != "\u3001" && TempStr1[i2] != "\uFF1F") {
          TempStrQ = TempStrQ + TempStr1[i2];
        }
      }
      TempStr1 = TempStrQ;
    }
    RoundReset();
    return TempStr1;
  }
  function deMap(input, key) {
    RoundReset();
    InitDecodeTable();
    RoundControlInit(key);
    let OriginStr = Uint8ArrayTostring(input.output);
    let TempStr1 = "", TempStrz = "";
    let temp = "", findtemp = "";
    let size = OriginStr.length;
    for (let i = 0; i < size; i++) {
      temp = OriginStr[i];
      if (temp == NULL_STR || temp == " " || temp == "\n" || temp == "	") {
        continue;
      } else if (PayloadLetter.indexOf(temp) == -1) {
        continue;
      } else {
        TempStrz = TempStrz + temp;
        continue;
      }
    }
    size = TempStrz.length;
    OriginStr = TempStrz;
    RoundKey();
    for (let i = 0; i < size; ) {
      temp = OriginStr[i];
      if (i != size - 1) {
        OriginStr[i + 1];
      }
      findtemp = findOriginText(temp);
      if (findtemp == NULL_STR) {
        throw "Bad Input. Try force encrypt if intended.";
      }
      TempStr1 = TempStr1 + findtemp;
      RoundKey();
      i++;
    }
    TempStr1 = AddPadding(TempStr1);
    let TempStr2Int = new Uint8Array();
    let RandomBytes = new Array(2);
    if (!gBase64.isValid(TempStr1)) {
      throw "Error Decoding. Bad Input or Incorrect Key.";
    }
    try {
      TempStr2Int = gBase64.toUint8Array(TempStr1);
      RandomBytes[1] = TempStr2Int.at(TempStr2Int.byteLength - 1);
      RandomBytes[0] = TempStr2Int.at(TempStr2Int.byteLength - 2);
      TempStr2Int = TempStr2Int.subarray(0, TempStr2Int.byteLength - 2);
      TempStr2Int = AES_256_CTR_E(TempStr2Int, key, RandomBytes);
      TempStr2Int = GZIP_DECOMPRESS(TempStr2Int);
      TempStr2Int = UNISHOX_DECOMPRESS(TempStr2Int);
    } catch (err2) {
      throw "Error Decoding. Bad Input or Incorrect Key.";
    }
    if (!CheckLuhnBit(TempStr2Int)) {
      if (TempStr2Int.at(TempStr2Int.byteLength - 1) == 2 && TempStr2Int.at(TempStr2Int.byteLength - 2) == 2 && TempStr2Int.at(TempStr2Int.byteLength - 3) == 2) {
        TempStr2Int = TempStr2Int.subarray(0, TempStr2Int.byteLength - 3);
      } else {
        throw "Error Decrypting. Checksum Mismatch.";
      }
    } else {
      TempStr2Int = TempStr2Int.subarray(0, TempStr2Int.byteLength - 1);
    }
    let Res = new Object();
    Res.output = Uint8ArrayTostring(TempStr2Int);
    Res.output_B = TempStr2Int;
    RoundReset();
    return Res;
  }
  function getCryptText(text, type) {
    let letter = String(text);
    let idx, idx2, idx3, idx4;
    idx = LETTERS.indexOf(letter);
    idx2 = BIG_LETTERS.indexOf(letter);
    idx3 = NUMBERS.indexOf(letter);
    idx4 = SYMBOLS.indexOf(letter);
    if (idx != -1 || idx2 != -1) {
      if (type == "N") {
        for (let key in Map_Obj["Actual"]["N"]["alphabet"]) {
          if (Map_Obj["Actual"]["N"]["alphabet"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["N"]["alphabet"][RoundKeyMatch(key)];
              return s2;
            } else if (key.toUpperCase() == letter) {
              let s2 = String(
                Map_Obj["Actual"]["N"]["alphabet"][RoundKeyMatch(key.toUpperCase())]
              );
              return s2;
            }
          }
        }
      } else if (type == "V") {
        for (let key in Map_Obj["Actual"]["V"]["alphabet"]) {
          if (Map_Obj["Actual"]["V"]["alphabet"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["V"]["alphabet"][RoundKeyMatch(key)];
              return s2;
            } else if (key.toUpperCase() == letter) {
              let s2 = String(
                Map_Obj["Actual"]["V"]["alphabet"][RoundKeyMatch(key.toUpperCase())]
              );
              return s2;
            }
          }
        }
      } else if (type == "A") {
        for (let key in Map_Obj["Actual"]["A"]["alphabet"]) {
          if (Map_Obj["Actual"]["A"]["alphabet"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["A"]["alphabet"][RoundKeyMatch(key)];
              return s2;
            } else if (key.toUpperCase() == letter) {
              let s2 = String(
                Map_Obj["Actual"]["A"]["alphabet"][RoundKeyMatch(key.toUpperCase())]
              );
              return s2;
            }
          }
        }
      } else if (type == "AD") {
        for (let key in Map_Obj["Actual"]["AD"]["alphabet"]) {
          if (Map_Obj["Actual"]["AD"]["alphabet"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["AD"]["alphabet"][RoundKeyMatch(key)];
              return s2;
            } else if (key.toUpperCase() == letter) {
              let s2 = String(
                Map_Obj["Actual"]["AD"]["alphabet"][RoundKeyMatch(key.toUpperCase())]
              );
              return s2;
            }
          }
        }
      }
    } else if (idx3 != -1 || idx4 != -1) {
      if (type == "N") {
        for (let key in Map_Obj["Actual"]["N"]["numbersymbol"]) {
          if (Map_Obj["Actual"]["N"]["numbersymbol"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["N"]["numbersymbol"][RoundKeyMatch(key)];
              return s2;
            }
          }
        }
      } else if (type == "V") {
        for (let key in Map_Obj["Actual"]["V"]["numbersymbol"]) {
          if (Map_Obj["Actual"]["V"]["numbersymbol"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["V"]["numbersymbol"][RoundKeyMatch(key)];
              return s2;
            }
          }
        }
      } else if (type == "A") {
        for (let key in Map_Obj["Actual"]["A"]["numbersymbol"]) {
          if (Map_Obj["Actual"]["A"]["numbersymbol"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["A"]["numbersymbol"][RoundKeyMatch(key)];
              return s2;
            }
          }
        }
      } else if (type == "AD") {
        for (let key in Map_Obj["Actual"]["AD"]["numbersymbol"]) {
          if (Map_Obj["Actual"]["AD"]["numbersymbol"].hasOwnProperty(key)) {
            if (key == letter) {
              let s2 = Map_Obj["Actual"]["AD"]["numbersymbol"][RoundKeyMatch(key)];
              return s2;
            }
          }
        }
      }
    }
    return NULL_STR;
  }
  function findOriginText(text) {
    let letter = String(text);
    let res;
    for (let key in DecodeTable) {
      DecodeTable[key].forEach((item) => {
        if (letter == item) {
          res = DRoundKeyMatch(key);
        }
      });
    }
    if (res) {
      return res;
    }
    for (let key in DecodeTable) {
      DecodeTable[key].forEach((item) => {
        if (letter == item) {
          res = DRoundKeyMatch(key);
        }
      });
    }
    if (res) {
      return res;
    } else {
      return NULL_STR;
    }
  }
  const _Abracadabra = class _Abracadabra2 {
    // 输出的结果
    /**
     * 创建一个 Abracadabra 实例
     * @param{string}inputType 可以是 TEXT 或者 UINT8,默认TEXT
     * @param{string}outputType 可以是 TEXT 或者 UINT8,默认TEXT
     */
    constructor(inputType = _Abracadabra2.TEXT, outputType = _Abracadabra2.TEXT) {
      __privateAdd(this, _input, "");
      __privateAdd(this, _output, "");
      __privateAdd(this, _res, null);
      if (inputType != _Abracadabra2.TEXT && inputType != _Abracadabra2.UINT8) {
        throw "Unexpected Argument";
      }
      if (outputType != _Abracadabra2.TEXT && outputType != _Abracadabra2.UINT8) {
        throw "Unexpected Argument";
      }
      __privateSet(this, _input, inputType);
      __privateSet(this, _output, outputType);
    }
    /**
     * 输入数据以处理,请注意指定的类型
     *
     * **模式定义**
     *
     * **ENCRYPT** 强制加密。
     *
     * **DECRYPT** 强制解密。
     *
     * **AUTO** 自动判断输入是否是密文,然后自动执行对应操作。
     *
     * @param{string | Uint8Array}input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
     * @param{string}mode 指定模式,可以是 ENCRYPT DECRYPT AUTO 中的一种;
     * @param{string}key 指定密钥,默认是 ABRACADABRA;
     * @param{bool}q 指定是否在加密后省略标志位,默认 false/不省略;
     */
    Input(input, mode, key = "ABRACADABRA", q = false) {
      if (__privateGet(this, _input) == _Abracadabra2.UINT8) {
        if (Object.prototype.toString.call(input) != "[object Uint8Array]") {
          throw "Unexpected Input Type";
        }
        let Decoder = new TextDecoder("utf-8", { fatal: true });
        let NoNeedtoPreCheck = false;
        let inputString = String();
        try {
          inputString = Decoder.decode(input);
        } catch (err2) {
          NoNeedtoPreCheck = true;
        }
        let preCheckRes;
        if (!NoNeedtoPreCheck) {
          preCheckRes = preCheck(inputString);
          if (preCheckRes.isEncrypted && mode != _Abracadabra2.ENCRYPT || mode == _Abracadabra2.DECRYPT) {
            __privateSet(this, _res, deMap$1(preCheckRes, key));
          } else {
            __privateSet(this, _res, enMap$1(preCheckRes, key, q));
          }
        } else {
          preCheckRes = new PreCheckResult(input, true, false);
          __privateSet(this, _res, enMap$1(preCheckRes, key, q));
        }
      } else if (__privateGet(this, _input) == _Abracadabra2.TEXT) {
        if (Object.prototype.toString.call(input) != "[object String]") {
          throw "Unexpected Input Type";
        }
        let preCheckRes = preCheck(input);
        if (preCheckRes.isEncrypted && mode != _Abracadabra2.ENCRYPT || mode == _Abracadabra2.DECRYPT) {
          __privateSet(this, _res, deMap$1(preCheckRes, key));
        } else {
          __privateSet(this, _res, enMap$1(preCheckRes, key, q));
        }
      }
      return 0;
    }
    Output() {
      if (__privateGet(this, _res) == null) {
        throw "Null Output, please input some data at first.";
      }
      if (typeof __privateGet(this, _res) == "object") {
        if (__privateGet(this, _output) == _Abracadabra2.TEXT) {
          return __privateGet(this, _res).output;
        } else {
          if (__privateGet(this, _res).output_B != null) {
            return __privateGet(this, _res).output_B;
          } else {
            const encoder = new TextEncoder();
            const encodedData = encoder.encode(__privateGet(this, _res).output);
            return encodedData;
          }
        }
      } else if (typeof __privateGet(this, _res) == "string") {
        if (__privateGet(this, _output) == _Abracadabra2.TEXT) {
          return __privateGet(this, _res);
        } else {
          const encoder = new TextEncoder();
          const encodedData = encoder.encode(__privateGet(this, _res));
          return encodedData;
        }
      }
    }
    /**
     * 输入数据以处理,请注意指定的类型
     *
     * **模式定义**
     *
     * **ENCRYPT** 强制加密。
     *
     * **DECRYPT** 强制解密。
     *
     *
     * @param{string | Uint8Array}input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
     * @param{string}mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
     * @param{string}key 指定密钥,默认是 ABRACADABRA;
     * @param{bool}q 指定是否为密文添加标点符号,默认 true/添加;
     * @param{int}r 密文算法的随机程度,越大随机性越强,默认 50,最大100,超过100将会出错;
     */
    Input_Next(input, mode, key = "ABRACADABRA", q = true, r = 50) {
      if (__privateGet(this, _input) == _Abracadabra2.UINT8) {
        if (Object.prototype.toString.call(input) != "[object Uint8Array]") {
          throw "Unexpected Input Type";
        }
        if (mode == _Abracadabra2.ENCRYPT) {
          let Nextinput = new Object();
          Nextinput.output = input;
          __privateSet(this, _res, enMap(Nextinput, key, q, r));
        } else if (mode == _Abracadabra2.DECRYPT) {
          let Nextinput = new Object();
          Nextinput.output = input;
          __privateSet(this, _res, deMap(Nextinput, key));
        }
        return 0;
      } else if (__privateGet(this, _input) == _Abracadabra2.TEXT) {
        if (Object.prototype.toString.call(input) != "[object String]") {
          throw "Unexpected Input Type";
        }
        let Nextinput = new Object();
        Nextinput.output = stringToUint8Array(input);
        if (mode == _Abracadabra2.ENCRYPT) {
          __privateSet(this, _res, enMap(Nextinput, key, q, r));
        } else if (mode == _Abracadabra2.DECRYPT) {
          __privateSet(this, _res, deMap(Nextinput, key));
        }
        return 0;
      }
      return 0;
    }
  };
  _input = /* @__PURE__ */ new WeakMap();
  _output = /* @__PURE__ */ new WeakMap();
  _res = /* @__PURE__ */ new WeakMap();
  __publicField(_Abracadabra, "TEXT", "TEXT");
  __publicField(_Abracadabra, "UINT8", "UINT8");
  __publicField(_Abracadabra, "ENCRYPT", "ENCRYPT");
  __publicField(_Abracadabra, "DECRYPT", "DECRYPT");
  __publicField(_Abracadabra, "AUTO", "AUTO");
  let Abracadabra = _Abracadabra;
  var Abra = new Abracadabra();
  function randomString(length) {
    var str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var result = "";
    for (var i = length; i > 0; --i)
      result += str[Math.floor(Math.random() * str.length)];
    return result;
  }
  var RootNode = document.createElement("div");
  var RootID = randomString(6);
  RootNode.id = RootID;
  var ShadowRoot = RootNode.attachShadow({ mode: "open" });
  ShadowRoot.innerHTML = `<style>
		#Abracadabra_Card{
			height: 130px;
			width: 200px;
			border-radius: 8px;
			background: background-color: #8EC5FC;
            background-image: linear-gradient(62deg, #8EC5FC 0%, #E0C3FC 100%);
			box-shadow: 0px 5px 10px 3px #8c8c8c;
			display:grid;
			grid-template-rows: 33% 33% 33%;
		};
		.button{
			opacity: 0.7;
		}
		.button:active{
			opacity: 0.5;
		}
		</style>
	<div id="Abracadabra_Card">
		<div id="InputAContainer" style="display:grid;">
			<input id="originalText" style="			
		    width: 180px;
			top: 7px;
			height: 28px;
			justify-self: center;
			border-radius: 8px;
			border: solid 1px #00000080;
			opacity: 0.7;
			position: relative;" type="text" placeholder="\u5F85\u5904\u7406\u6587\u672C">
		<div id="KeyAndButtonContainer" style="display:grid;grid-template-columns: 50% 25% 25%;margin-top: 10px;">
			<input id="KeyText" style="			
			width: 100px;
			top: 0px;
			left: 7px;
			height: 18px;
			justify-self: left;
			border-radius: 8px;
			border: solid 1px #00000080;
			opacity: 0.7;
			position: relative;" type="text" placeholder="\u5BC6\u94A5(\u53EF\u7701\u7565)">
		    <button id="Enc" class="button" style="			
			width: 38px;
			top: 0px;
			left: 9px;
			height: 22px;
			justify-self: center;
			border-radius: 8px;
			border: solid 1px #00000080;
			position: relative;
			background: #5D73F8;
		    color:white;
		    white-space: nowrap;">\u52A0\u5BC6</button>
	   <button id="Dec" class="button" style="			
			width: 38px;
			top: 0px;
			left: -1px;
			height: 22px;
			justify-self: center;
			border-radius: 8px;
			border: solid 1px #00000080;
			position: relative;
			background: #ff5c82;
		    color:white;
		    white-space: nowrap;">\u89E3\u5BC6
		</button>
		</div>
		<div id="OutputContainer" style="display:grid;margin-top: 10px;">
			<input id="OutputText" style="			
			width: 180px;
			top: -3px;
			height: 36px;
			justify-self: center;
			border-radius: 8px;
			border: solid 1px #00000080;
			opacity: 0.7;
			position: relative;" type="text" placeholder="\u8F93\u51FA">
			<span style="
			position: relative;
			width: fit-content;
			height: fit-content;
			top: -7px;
			left: 7px;
			font-size: 1rem;
			font-variant: petite-caps;
			text-align: left;
			padding: 6px;
			border-radius: inherit;
			margin: 0px;
			zoom: 70%;">Powered by <a href="https://github.com/SheepChef/Abracadabra">ABRACADABRA</a></span>
		</div>
	    </div>
	</div>`;
  ShadowRoot.getElementById("Enc").addEventListener("click", (event) => {
    var Text = ShadowRoot.getElementById("originalText").value;
    var Key = ShadowRoot.getElementById("KeyText").value == "" ? "ABRACADABRA" : ShadowRoot.getElementById("KeyText").value;
    Abra.Input_Next(Text, "ENCRYPT", Key, true, 50);
    var Res = Abra.Output();
    ShadowRoot.getElementById("OutputText").value = Res;
    ShadowRoot.getElementById("OutputText").select();
    navigator.clipboard.writeText(window.getSelection().toString());
  });
  ShadowRoot.getElementById("Dec").addEventListener("click", (event) => {
    var Text = ShadowRoot.getElementById("originalText").value;
    var Key = ShadowRoot.getElementById("KeyText").value == "" ? "ABRACADABRA" : ShadowRoot.getElementById("KeyText").value;
    Abra.Input_Next(Text, "DECRYPT", Key);
    var Res = Abra.Output();
    ShadowRoot.getElementById("OutputText").value = Res;
    ShadowRoot.getElementById("OutputText").select();
    navigator.clipboard.writeText(window.getSelection().toString());
  });
  RootNode.addEventListener("mouseenter", (event) => {
    RootNode.style.opacity = "1";
  });
  RootNode.addEventListener("mouseout", (event) => {
    if (document.activeElement.id != RootID) {
      RootNode.style.opacity = "0.3";
    }
  });
  RootNode.addEventListener("focus", (event) => {
    RootNode.style.opacity = "1";
  });
  RootNode.addEventListener("focusout", (event) => {
    RootNode.style.opacity = "0.3";
  });
  if (document.location.host == "tieba.baidu.com") {
    RootNode.style = `transition: 1s;
    opacity: 0.3;
    position: fixed;
    left: 50%;
    bottom: 100px;
    margin-left: 275px;`;
    document.querySelector("#tb_rich_poster > div.poster_body.editor_wrapper > div.poster_component.editor_content_wrapper.ueditor_container > div.old_style_wrapper").appendChild(RootNode);
  } else if (document.location.host == "www.bilibili.com") {
    RootNode.style = `transition: 1s;
    opacity: 0.3;
    position: fixed;
    right: 50%;
    margin-right: 737px;
    z-index: 100000;
    bottom: 10px;
    zoom: 70%;`;
    document.querySelector("#commentapp").appendChild(RootNode);
  }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址