[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-includes/build/routes/font-list/ -> content.js (source)

   1  var __create = Object.create;
   2  var __defProp = Object.defineProperty;
   3  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
   4  var __getOwnPropNames = Object.getOwnPropertyNames;
   5  var __getProtoOf = Object.getPrototypeOf;
   6  var __hasOwnProp = Object.prototype.hasOwnProperty;
   7  var __require = /* @__PURE__ */ ((x2) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x2, {
   8    get: (a2, b2) => (typeof require !== "undefined" ? require : a2)[b2]
   9  }) : x2)(function(x2) {
  10    if (typeof require !== "undefined") return require.apply(this, arguments);
  11    throw Error('Dynamic require of "' + x2 + '" is not supported');
  12  });
  13  var __commonJS = (cb, mod) => function __require4() {
  14    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  15  };
  16  var __copyProps = (to, from, except, desc) => {
  17    if (from && typeof from === "object" || typeof from === "function") {
  18      for (let key of __getOwnPropNames(from))
  19        if (!__hasOwnProp.call(to, key) && key !== except)
  20          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  21    }
  22    return to;
  23  };
  24  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  25    // If the importer is in node compatibility mode or this is not an ESM
  26    // file that has been converted to a CommonJS file using a Babel-
  27    // compatible transform (i.e. "__esModule" has not been set), then set
  28    // "default" to the CommonJS "module.exports" for node compatibility.
  29    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  30    mod
  31  ));
  32  
  33  // package-external:@wordpress/i18n
  34  var require_i18n = __commonJS({
  35    "package-external:@wordpress/i18n"(exports, module) {
  36      module.exports = window.wp.i18n;
  37    }
  38  });
  39  
  40  // package-external:@wordpress/components
  41  var require_components = __commonJS({
  42    "package-external:@wordpress/components"(exports, module) {
  43      module.exports = window.wp.components;
  44    }
  45  });
  46  
  47  // vendor-external:react/jsx-runtime
  48  var require_jsx_runtime = __commonJS({
  49    "vendor-external:react/jsx-runtime"(exports, module) {
  50      module.exports = window.ReactJSXRuntime;
  51    }
  52  });
  53  
  54  // package-external:@wordpress/element
  55  var require_element = __commonJS({
  56    "package-external:@wordpress/element"(exports, module) {
  57      module.exports = window.wp.element;
  58    }
  59  });
  60  
  61  // vendor-external:react
  62  var require_react = __commonJS({
  63    "vendor-external:react"(exports, module) {
  64      module.exports = window.React;
  65    }
  66  });
  67  
  68  // package-external:@wordpress/primitives
  69  var require_primitives = __commonJS({
  70    "package-external:@wordpress/primitives"(exports, module) {
  71      module.exports = window.wp.primitives;
  72    }
  73  });
  74  
  75  // package-external:@wordpress/private-apis
  76  var require_private_apis = __commonJS({
  77    "package-external:@wordpress/private-apis"(exports, module) {
  78      module.exports = window.wp.privateApis;
  79    }
  80  });
  81  
  82  // package-external:@wordpress/compose
  83  var require_compose = __commonJS({
  84    "package-external:@wordpress/compose"(exports, module) {
  85      module.exports = window.wp.compose;
  86    }
  87  });
  88  
  89  // package-external:@wordpress/editor
  90  var require_editor = __commonJS({
  91    "package-external:@wordpress/editor"(exports, module) {
  92      module.exports = window.wp.editor;
  93    }
  94  });
  95  
  96  // package-external:@wordpress/core-data
  97  var require_core_data = __commonJS({
  98    "package-external:@wordpress/core-data"(exports, module) {
  99      module.exports = window.wp.coreData;
 100    }
 101  });
 102  
 103  // package-external:@wordpress/data
 104  var require_data = __commonJS({
 105    "package-external:@wordpress/data"(exports, module) {
 106      module.exports = window.wp.data;
 107    }
 108  });
 109  
 110  // package-external:@wordpress/blocks
 111  var require_blocks = __commonJS({
 112    "package-external:@wordpress/blocks"(exports, module) {
 113      module.exports = window.wp.blocks;
 114    }
 115  });
 116  
 117  // package-external:@wordpress/block-editor
 118  var require_block_editor = __commonJS({
 119    "package-external:@wordpress/block-editor"(exports, module) {
 120      module.exports = window.wp.blockEditor;
 121    }
 122  });
 123  
 124  // package-external:@wordpress/style-engine
 125  var require_style_engine = __commonJS({
 126    "package-external:@wordpress/style-engine"(exports, module) {
 127      module.exports = window.wp.styleEngine;
 128    }
 129  });
 130  
 131  // node_modules/fast-deep-equal/es6/index.js
 132  var require_es6 = __commonJS({
 133    "node_modules/fast-deep-equal/es6/index.js"(exports, module) {
 134      "use strict";
 135      module.exports = function equal(a2, b2) {
 136        if (a2 === b2) return true;
 137        if (a2 && b2 && typeof a2 == "object" && typeof b2 == "object") {
 138          if (a2.constructor !== b2.constructor) return false;
 139          var length, i2, keys;
 140          if (Array.isArray(a2)) {
 141            length = a2.length;
 142            if (length != b2.length) return false;
 143            for (i2 = length; i2-- !== 0; )
 144              if (!equal(a2[i2], b2[i2])) return false;
 145            return true;
 146          }
 147          if (a2 instanceof Map && b2 instanceof Map) {
 148            if (a2.size !== b2.size) return false;
 149            for (i2 of a2.entries())
 150              if (!b2.has(i2[0])) return false;
 151            for (i2 of a2.entries())
 152              if (!equal(i2[1], b2.get(i2[0]))) return false;
 153            return true;
 154          }
 155          if (a2 instanceof Set && b2 instanceof Set) {
 156            if (a2.size !== b2.size) return false;
 157            for (i2 of a2.entries())
 158              if (!b2.has(i2[0])) return false;
 159            return true;
 160          }
 161          if (ArrayBuffer.isView(a2) && ArrayBuffer.isView(b2)) {
 162            length = a2.length;
 163            if (length != b2.length) return false;
 164            for (i2 = length; i2-- !== 0; )
 165              if (a2[i2] !== b2[i2]) return false;
 166            return true;
 167          }
 168          if (a2.constructor === RegExp) return a2.source === b2.source && a2.flags === b2.flags;
 169          if (a2.valueOf !== Object.prototype.valueOf) return a2.valueOf() === b2.valueOf();
 170          if (a2.toString !== Object.prototype.toString) return a2.toString() === b2.toString();
 171          keys = Object.keys(a2);
 172          length = keys.length;
 173          if (length !== Object.keys(b2).length) return false;
 174          for (i2 = length; i2-- !== 0; )
 175            if (!Object.prototype.hasOwnProperty.call(b2, keys[i2])) return false;
 176          for (i2 = length; i2-- !== 0; ) {
 177            var key = keys[i2];
 178            if (!equal(a2[key], b2[key])) return false;
 179          }
 180          return true;
 181        }
 182        return a2 !== a2 && b2 !== b2;
 183      };
 184    }
 185  });
 186  
 187  // node_modules/deepmerge/dist/cjs.js
 188  var require_cjs = __commonJS({
 189    "node_modules/deepmerge/dist/cjs.js"(exports, module) {
 190      "use strict";
 191      var isMergeableObject = function isMergeableObject2(value) {
 192        return isNonNullObject(value) && !isSpecial(value);
 193      };
 194      function isNonNullObject(value) {
 195        return !!value && typeof value === "object";
 196      }
 197      function isSpecial(value) {
 198        var stringValue = Object.prototype.toString.call(value);
 199        return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
 200      }
 201      var canUseSymbol = typeof Symbol === "function" && Symbol.for;
 202      var REACT_ELEMENT_TYPE = canUseSymbol ? /* @__PURE__ */ Symbol.for("react.element") : 60103;
 203      function isReactElement(value) {
 204        return value.$$typeof === REACT_ELEMENT_TYPE;
 205      }
 206      function emptyTarget(val) {
 207        return Array.isArray(val) ? [] : {};
 208      }
 209      function cloneUnlessOtherwiseSpecified(value, options) {
 210        return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value;
 211      }
 212      function defaultArrayMerge(target, source, options) {
 213        return target.concat(source).map(function(element) {
 214          return cloneUnlessOtherwiseSpecified(element, options);
 215        });
 216      }
 217      function getMergeFunction(key, options) {
 218        if (!options.customMerge) {
 219          return deepmerge2;
 220        }
 221        var customMerge = options.customMerge(key);
 222        return typeof customMerge === "function" ? customMerge : deepmerge2;
 223      }
 224      function getEnumerableOwnPropertySymbols(target) {
 225        return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
 226          return Object.propertyIsEnumerable.call(target, symbol);
 227        }) : [];
 228      }
 229      function getKeys(target) {
 230        return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
 231      }
 232      function propertyIsOnObject(object, property) {
 233        try {
 234          return property in object;
 235        } catch (_) {
 236          return false;
 237        }
 238      }
 239      function propertyIsUnsafe(target, key) {
 240        return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key));
 241      }
 242      function mergeObject(target, source, options) {
 243        var destination = {};
 244        if (options.isMergeableObject(target)) {
 245          getKeys(target).forEach(function(key) {
 246            destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
 247          });
 248        }
 249        getKeys(source).forEach(function(key) {
 250          if (propertyIsUnsafe(target, key)) {
 251            return;
 252          }
 253          if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
 254            destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
 255          } else {
 256            destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
 257          }
 258        });
 259        return destination;
 260      }
 261      function deepmerge2(target, source, options) {
 262        options = options || {};
 263        options.arrayMerge = options.arrayMerge || defaultArrayMerge;
 264        options.isMergeableObject = options.isMergeableObject || isMergeableObject;
 265        options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
 266        var sourceIsArray = Array.isArray(source);
 267        var targetIsArray = Array.isArray(target);
 268        var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
 269        if (!sourceAndTargetTypesMatch) {
 270          return cloneUnlessOtherwiseSpecified(source, options);
 271        } else if (sourceIsArray) {
 272          return options.arrayMerge(target, source, options);
 273        } else {
 274          return mergeObject(target, source, options);
 275        }
 276      }
 277      deepmerge2.all = function deepmergeAll(array, options) {
 278        if (!Array.isArray(array)) {
 279          throw new Error("first argument should be an array");
 280        }
 281        return array.reduce(function(prev, next) {
 282          return deepmerge2(prev, next, options);
 283        }, {});
 284      };
 285      var deepmerge_1 = deepmerge2;
 286      module.exports = deepmerge_1;
 287    }
 288  });
 289  
 290  // package-external:@wordpress/keycodes
 291  var require_keycodes = __commonJS({
 292    "package-external:@wordpress/keycodes"(exports, module) {
 293      module.exports = window.wp.keycodes;
 294    }
 295  });
 296  
 297  // package-external:@wordpress/api-fetch
 298  var require_api_fetch = __commonJS({
 299    "package-external:@wordpress/api-fetch"(exports, module) {
 300      module.exports = window.wp.apiFetch;
 301    }
 302  });
 303  
 304  // package-external:@wordpress/date
 305  var require_date = __commonJS({
 306    "package-external:@wordpress/date"(exports, module) {
 307      module.exports = window.wp.date;
 308    }
 309  });
 310  
 311  // node_modules/clsx/dist/clsx.mjs
 312  function r(e2) {
 313    var t3, f2, n2 = "";
 314    if ("string" == typeof e2 || "number" == typeof e2) n2 += e2;
 315    else if ("object" == typeof e2) if (Array.isArray(e2)) {
 316      var o3 = e2.length;
 317      for (t3 = 0; t3 < o3; t3++) e2[t3] && (f2 = r(e2[t3])) && (n2 && (n2 += " "), n2 += f2);
 318    } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2);
 319    return n2;
 320  }
 321  function clsx() {
 322    for (var e2, t3, f2 = 0, n2 = "", o3 = arguments.length; f2 < o3; f2++) (e2 = arguments[f2]) && (t3 = r(e2)) && (n2 && (n2 += " "), n2 += t3);
 323    return n2;
 324  }
 325  var clsx_default = clsx;
 326  
 327  // packages/admin-ui/build-module/navigable-region/index.mjs
 328  var import_element = __toESM(require_element(), 1);
 329  var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
 330  var NavigableRegion = (0, import_element.forwardRef)(
 331    ({ children, className, ariaLabel, as: Tag = "div", ...props }, ref) => {
 332      return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
 333        Tag,
 334        {
 335          ref,
 336          className: clsx_default("admin-ui-navigable-region", className),
 337          "aria-label": ariaLabel,
 338          role: "region",
 339          tabIndex: "-1",
 340          ...props,
 341          children
 342        }
 343      );
 344    }
 345  );
 346  NavigableRegion.displayName = "NavigableRegion";
 347  var navigable_region_default = NavigableRegion;
 348  
 349  // node_modules/@base-ui/utils/esm/useRefWithInit.js
 350  var React2 = __toESM(require_react(), 1);
 351  var UNINITIALIZED = {};
 352  function useRefWithInit(init, initArg) {
 353    const ref = React2.useRef(UNINITIALIZED);
 354    if (ref.current === UNINITIALIZED) {
 355      ref.current = init(initArg);
 356    }
 357    return ref;
 358  }
 359  
 360  // node_modules/@base-ui/react/esm/utils/useRenderElement.js
 361  var React5 = __toESM(require_react(), 1);
 362  
 363  // node_modules/@base-ui/utils/esm/useMergedRefs.js
 364  function useMergedRefs(a2, b2, c2, d2) {
 365    const forkRef = useRefWithInit(createForkRef).current;
 366    if (didChange(forkRef, a2, b2, c2, d2)) {
 367      update(forkRef, [a2, b2, c2, d2]);
 368    }
 369    return forkRef.callback;
 370  }
 371  function useMergedRefsN(refs) {
 372    const forkRef = useRefWithInit(createForkRef).current;
 373    if (didChangeN(forkRef, refs)) {
 374      update(forkRef, refs);
 375    }
 376    return forkRef.callback;
 377  }
 378  function createForkRef() {
 379    return {
 380      callback: null,
 381      cleanup: null,
 382      refs: []
 383    };
 384  }
 385  function didChange(forkRef, a2, b2, c2, d2) {
 386    return forkRef.refs[0] !== a2 || forkRef.refs[1] !== b2 || forkRef.refs[2] !== c2 || forkRef.refs[3] !== d2;
 387  }
 388  function didChangeN(forkRef, newRefs) {
 389    return forkRef.refs.length !== newRefs.length || forkRef.refs.some((ref, index) => ref !== newRefs[index]);
 390  }
 391  function update(forkRef, refs) {
 392    forkRef.refs = refs;
 393    if (refs.every((ref) => ref == null)) {
 394      forkRef.callback = null;
 395      return;
 396    }
 397    forkRef.callback = (instance) => {
 398      if (forkRef.cleanup) {
 399        forkRef.cleanup();
 400        forkRef.cleanup = null;
 401      }
 402      if (instance != null) {
 403        const cleanupCallbacks = Array(refs.length).fill(null);
 404        for (let i2 = 0; i2 < refs.length; i2 += 1) {
 405          const ref = refs[i2];
 406          if (ref == null) {
 407            continue;
 408          }
 409          switch (typeof ref) {
 410            case "function": {
 411              const refCleanup = ref(instance);
 412              if (typeof refCleanup === "function") {
 413                cleanupCallbacks[i2] = refCleanup;
 414              }
 415              break;
 416            }
 417            case "object": {
 418              ref.current = instance;
 419              break;
 420            }
 421            default:
 422          }
 423        }
 424        forkRef.cleanup = () => {
 425          for (let i2 = 0; i2 < refs.length; i2 += 1) {
 426            const ref = refs[i2];
 427            if (ref == null) {
 428              continue;
 429            }
 430            switch (typeof ref) {
 431              case "function": {
 432                const cleanupCallback = cleanupCallbacks[i2];
 433                if (typeof cleanupCallback === "function") {
 434                  cleanupCallback();
 435                } else {
 436                  ref(null);
 437                }
 438                break;
 439              }
 440              case "object": {
 441                ref.current = null;
 442                break;
 443              }
 444              default:
 445            }
 446          }
 447        };
 448      }
 449    };
 450  }
 451  
 452  // node_modules/@base-ui/utils/esm/getReactElementRef.js
 453  var React4 = __toESM(require_react(), 1);
 454  
 455  // node_modules/@base-ui/utils/esm/reactVersion.js
 456  var React3 = __toESM(require_react(), 1);
 457  var majorVersion = parseInt(React3.version, 10);
 458  function isReactVersionAtLeast(reactVersionToCheck) {
 459    return majorVersion >= reactVersionToCheck;
 460  }
 461  
 462  // node_modules/@base-ui/utils/esm/getReactElementRef.js
 463  function getReactElementRef(element) {
 464    if (!/* @__PURE__ */ React4.isValidElement(element)) {
 465      return null;
 466    }
 467    const reactElement = element;
 468    const propsWithRef = reactElement.props;
 469    return (isReactVersionAtLeast(19) ? propsWithRef?.ref : reactElement.ref) ?? null;
 470  }
 471  
 472  // node_modules/@base-ui/utils/esm/mergeObjects.js
 473  function mergeObjects(a2, b2) {
 474    if (a2 && !b2) {
 475      return a2;
 476    }
 477    if (!a2 && b2) {
 478      return b2;
 479    }
 480    if (a2 || b2) {
 481      return {
 482        ...a2,
 483        ...b2
 484      };
 485    }
 486    return void 0;
 487  }
 488  
 489  // node_modules/@base-ui/react/esm/utils/getStateAttributesProps.js
 490  function getStateAttributesProps(state, customMapping) {
 491    const props = {};
 492    for (const key in state) {
 493      const value = state[key];
 494      if (customMapping?.hasOwnProperty(key)) {
 495        const customProps = customMapping[key](value);
 496        if (customProps != null) {
 497          Object.assign(props, customProps);
 498        }
 499        continue;
 500      }
 501      if (value === true) {
 502        props[`data-$key.toLowerCase()}`] = "";
 503      } else if (value) {
 504        props[`data-$key.toLowerCase()}`] = value.toString();
 505      }
 506    }
 507    return props;
 508  }
 509  
 510  // node_modules/@base-ui/react/esm/utils/resolveClassName.js
 511  function resolveClassName(className, state) {
 512    return typeof className === "function" ? className(state) : className;
 513  }
 514  
 515  // node_modules/@base-ui/react/esm/utils/resolveStyle.js
 516  function resolveStyle(style, state) {
 517    return typeof style === "function" ? style(state) : style;
 518  }
 519  
 520  // node_modules/@base-ui/react/esm/merge-props/mergeProps.js
 521  var EMPTY_PROPS = {};
 522  function mergeProps(a2, b2, c2, d2, e2) {
 523    let merged = {
 524      ...resolvePropsGetter(a2, EMPTY_PROPS)
 525    };
 526    if (b2) {
 527      merged = mergeOne(merged, b2);
 528    }
 529    if (c2) {
 530      merged = mergeOne(merged, c2);
 531    }
 532    if (d2) {
 533      merged = mergeOne(merged, d2);
 534    }
 535    if (e2) {
 536      merged = mergeOne(merged, e2);
 537    }
 538    return merged;
 539  }
 540  function mergePropsN(props) {
 541    if (props.length === 0) {
 542      return EMPTY_PROPS;
 543    }
 544    if (props.length === 1) {
 545      return resolvePropsGetter(props[0], EMPTY_PROPS);
 546    }
 547    let merged = {
 548      ...resolvePropsGetter(props[0], EMPTY_PROPS)
 549    };
 550    for (let i2 = 1; i2 < props.length; i2 += 1) {
 551      merged = mergeOne(merged, props[i2]);
 552    }
 553    return merged;
 554  }
 555  function mergeOne(merged, inputProps) {
 556    if (isPropsGetter(inputProps)) {
 557      return inputProps(merged);
 558    }
 559    return mutablyMergeInto(merged, inputProps);
 560  }
 561  function mutablyMergeInto(mergedProps, externalProps) {
 562    if (!externalProps) {
 563      return mergedProps;
 564    }
 565    for (const propName in externalProps) {
 566      const externalPropValue = externalProps[propName];
 567      switch (propName) {
 568        case "style": {
 569          mergedProps[propName] = mergeObjects(mergedProps.style, externalPropValue);
 570          break;
 571        }
 572        case "className": {
 573          mergedProps[propName] = mergeClassNames(mergedProps.className, externalPropValue);
 574          break;
 575        }
 576        default: {
 577          if (isEventHandler(propName, externalPropValue)) {
 578            mergedProps[propName] = mergeEventHandlers(mergedProps[propName], externalPropValue);
 579          } else {
 580            mergedProps[propName] = externalPropValue;
 581          }
 582        }
 583      }
 584    }
 585    return mergedProps;
 586  }
 587  function isEventHandler(key, value) {
 588    const code0 = key.charCodeAt(0);
 589    const code1 = key.charCodeAt(1);
 590    const code2 = key.charCodeAt(2);
 591    return code0 === 111 && code1 === 110 && code2 >= 65 && code2 <= 90 && (typeof value === "function" || typeof value === "undefined");
 592  }
 593  function isPropsGetter(inputProps) {
 594    return typeof inputProps === "function";
 595  }
 596  function resolvePropsGetter(inputProps, previousProps) {
 597    if (isPropsGetter(inputProps)) {
 598      return inputProps(previousProps);
 599    }
 600    return inputProps ?? EMPTY_PROPS;
 601  }
 602  function mergeEventHandlers(ourHandler, theirHandler) {
 603    if (!theirHandler) {
 604      return ourHandler;
 605    }
 606    if (!ourHandler) {
 607      return theirHandler;
 608    }
 609    return (event) => {
 610      if (isSyntheticEvent(event)) {
 611        const baseUIEvent = event;
 612        makeEventPreventable(baseUIEvent);
 613        const result2 = theirHandler(baseUIEvent);
 614        if (!baseUIEvent.baseUIHandlerPrevented) {
 615          ourHandler?.(baseUIEvent);
 616        }
 617        return result2;
 618      }
 619      const result = theirHandler(event);
 620      ourHandler?.(event);
 621      return result;
 622    };
 623  }
 624  function makeEventPreventable(event) {
 625    event.preventBaseUIHandler = () => {
 626      event.baseUIHandlerPrevented = true;
 627    };
 628    return event;
 629  }
 630  function mergeClassNames(ourClassName, theirClassName) {
 631    if (theirClassName) {
 632      if (ourClassName) {
 633        return theirClassName + " " + ourClassName;
 634      }
 635      return theirClassName;
 636    }
 637    return ourClassName;
 638  }
 639  function isSyntheticEvent(event) {
 640    return event != null && typeof event === "object" && "nativeEvent" in event;
 641  }
 642  
 643  // node_modules/@base-ui/utils/esm/empty.js
 644  var EMPTY_ARRAY = Object.freeze([]);
 645  var EMPTY_OBJECT = Object.freeze({});
 646  
 647  // node_modules/@base-ui/react/esm/utils/useRenderElement.js
 648  var import_react = __toESM(require_react(), 1);
 649  function useRenderElement(element, componentProps, params = {}) {
 650    const renderProp = componentProps.render;
 651    const outProps = useRenderElementProps(componentProps, params);
 652    if (params.enabled === false) {
 653      return null;
 654    }
 655    const state = params.state ?? EMPTY_OBJECT;
 656    return evaluateRenderProp(element, renderProp, outProps, state);
 657  }
 658  function useRenderElementProps(componentProps, params = {}) {
 659    const {
 660      className: classNameProp,
 661      style: styleProp,
 662      render: renderProp
 663    } = componentProps;
 664    const {
 665      state = EMPTY_OBJECT,
 666      ref,
 667      props,
 668      stateAttributesMapping,
 669      enabled = true
 670    } = params;
 671    const className = enabled ? resolveClassName(classNameProp, state) : void 0;
 672    const style = enabled ? resolveStyle(styleProp, state) : void 0;
 673    const stateProps = enabled ? getStateAttributesProps(state, stateAttributesMapping) : EMPTY_OBJECT;
 674    const outProps = enabled ? mergeObjects(stateProps, Array.isArray(props) ? mergePropsN(props) : props) ?? EMPTY_OBJECT : EMPTY_OBJECT;
 675    if (typeof document !== "undefined") {
 676      if (!enabled) {
 677        useMergedRefs(null, null);
 678      } else if (Array.isArray(ref)) {
 679        outProps.ref = useMergedRefsN([outProps.ref, getReactElementRef(renderProp), ...ref]);
 680      } else {
 681        outProps.ref = useMergedRefs(outProps.ref, getReactElementRef(renderProp), ref);
 682      }
 683    }
 684    if (!enabled) {
 685      return EMPTY_OBJECT;
 686    }
 687    if (className !== void 0) {
 688      outProps.className = mergeClassNames(outProps.className, className);
 689    }
 690    if (style !== void 0) {
 691      outProps.style = mergeObjects(outProps.style, style);
 692    }
 693    return outProps;
 694  }
 695  function evaluateRenderProp(element, render, props, state) {
 696    if (render) {
 697      if (typeof render === "function") {
 698        return render(props, state);
 699      }
 700      const mergedProps = mergeProps(props, render.props);
 701      mergedProps.ref = props.ref;
 702      return /* @__PURE__ */ React5.cloneElement(render, mergedProps);
 703    }
 704    if (element) {
 705      if (typeof element === "string") {
 706        return renderTag(element, props);
 707      }
 708    }
 709    throw new Error(true ? "Base UI: Render element or function are not defined." : formatErrorMessage(8));
 710  }
 711  function renderTag(Tag, props) {
 712    if (Tag === "button") {
 713      return /* @__PURE__ */ (0, import_react.createElement)("button", {
 714        type: "button",
 715        ...props,
 716        key: props.key
 717      });
 718    }
 719    if (Tag === "img") {
 720      return /* @__PURE__ */ (0, import_react.createElement)("img", {
 721        alt: "",
 722        ...props,
 723        key: props.key
 724      });
 725    }
 726    return /* @__PURE__ */ React5.createElement(Tag, props);
 727  }
 728  
 729  // node_modules/@base-ui/react/esm/use-render/useRender.js
 730  function useRender(params) {
 731    return useRenderElement(params.defaultTagName ?? "div", params, params);
 732  }
 733  
 734  // packages/icons/build-module/icon/index.mjs
 735  var import_element2 = __toESM(require_element(), 1);
 736  var icon_default = (0, import_element2.forwardRef)(
 737    ({ icon, size = 24, ...props }, ref) => {
 738      return (0, import_element2.cloneElement)(icon, {
 739        width: size,
 740        height: size,
 741        ...props,
 742        ref
 743      });
 744    }
 745  );
 746  
 747  // packages/icons/build-module/library/chevron-left.mjs
 748  var import_primitives = __toESM(require_primitives(), 1);
 749  var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
 750  var chevron_left_default = /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_primitives.Path, { d: "M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z" }) });
 751  
 752  // packages/icons/build-module/library/chevron-right.mjs
 753  var import_primitives2 = __toESM(require_primitives(), 1);
 754  var import_jsx_runtime3 = __toESM(require_jsx_runtime(), 1);
 755  var chevron_right_default = /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_primitives2.Path, { d: "M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z" }) });
 756  
 757  // packages/icons/build-module/library/more-vertical.mjs
 758  var import_primitives3 = __toESM(require_primitives(), 1);
 759  var import_jsx_runtime4 = __toESM(require_jsx_runtime(), 1);
 760  var more_vertical_default = /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_primitives3.Path, { d: "M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z" }) });
 761  
 762  // packages/icons/build-module/library/next.mjs
 763  var import_primitives4 = __toESM(require_primitives(), 1);
 764  var import_jsx_runtime5 = __toESM(require_jsx_runtime(), 1);
 765  var next_default = /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_primitives4.Path, { d: "M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z" }) });
 766  
 767  // packages/icons/build-module/library/previous.mjs
 768  var import_primitives5 = __toESM(require_primitives(), 1);
 769  var import_jsx_runtime6 = __toESM(require_jsx_runtime(), 1);
 770  var previous_default = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.SVG, { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_primitives5.Path, { d: "M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z" }) });
 771  
 772  // packages/ui/build-module/stack/stack.mjs
 773  var import_element3 = __toESM(require_element(), 1);
 774  if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='71d20935c2']")) {
 775    const style = document.createElement("style");
 776    style.setAttribute("data-wp-hash", "71d20935c2");
 777    style.appendChild(document.createTextNode("@layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;@layer wp-ui-components{._19ce0419607e1896__stack{display:flex}}"));
 778    document.head.appendChild(style);
 779  }
 780  var style_default = { "stack": "_19ce0419607e1896__stack" };
 781  var gapTokens = {
 782    xs: "var(--wpds-dimension-gap-xs, 4px)",
 783    sm: "var(--wpds-dimension-gap-sm, 8px)",
 784    md: "var(--wpds-dimension-gap-md, 12px)",
 785    lg: "var(--wpds-dimension-gap-lg, 16px)",
 786    xl: "var(--wpds-dimension-gap-xl, 24px)",
 787    "2xl": "var(--wpds-dimension-gap-2xl, 32px)",
 788    "3xl": "var(--wpds-dimension-gap-3xl, 40px)"
 789  };
 790  var Stack = (0, import_element3.forwardRef)(function Stack2({ direction, gap, align, justify, wrap, render, ...props }, ref) {
 791    const style = {
 792      gap: gap && gapTokens[gap],
 793      alignItems: align,
 794      justifyContent: justify,
 795      flexDirection: direction,
 796      flexWrap: wrap
 797    };
 798    const element = useRender({
 799      render,
 800      ref,
 801      props: mergeProps(props, { style, className: style_default.stack })
 802    });
 803    return element;
 804  });
 805  
 806  // packages/admin-ui/build-module/page/sidebar-toggle-slot.mjs
 807  var import_components = __toESM(require_components(), 1);
 808  var { Fill: SidebarToggleFill, Slot: SidebarToggleSlot } = (0, import_components.createSlotFill)("SidebarToggle");
 809  
 810  // packages/admin-ui/build-module/page/header.mjs
 811  var import_jsx_runtime7 = __toESM(require_jsx_runtime(), 1);
 812  function Header({
 813    headingLevel = 1,
 814    breadcrumbs,
 815    badges,
 816    title,
 817    subTitle,
 818    actions,
 819    showSidebarToggle = true
 820  }) {
 821    const HeadingTag = `h$headingLevel}`;
 822    return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "column", className: "admin-ui-page__header", children: [
 823      /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", justify: "space-between", gap: "sm", children: [
 824        /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(Stack, { direction: "row", gap: "sm", align: "center", justify: "start", children: [
 825          showSidebarToggle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
 826            SidebarToggleSlot,
 827            {
 828              bubblesVirtually: true,
 829              className: "admin-ui-page__sidebar-toggle-slot"
 830            }
 831          ),
 832          title && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HeadingTag, { className: "admin-ui-page__header-title", children: title }),
 833          breadcrumbs,
 834          badges
 835        ] }),
 836        /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
 837          Stack,
 838          {
 839            direction: "row",
 840            gap: "sm",
 841            style: { width: "auto", flexShrink: 0 },
 842            className: "admin-ui-page__header-actions",
 843            align: "center",
 844            children: actions
 845          }
 846        )
 847      ] }),
 848      subTitle && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "admin-ui-page__header-subtitle", children: subTitle })
 849    ] });
 850  }
 851  
 852  // packages/admin-ui/build-module/page/index.mjs
 853  var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
 854  function Page({
 855    headingLevel,
 856    breadcrumbs,
 857    badges,
 858    title,
 859    subTitle,
 860    children,
 861    className,
 862    actions,
 863    hasPadding = false,
 864    showSidebarToggle = true
 865  }) {
 866    const classes = clsx_default("admin-ui-page", className);
 867    return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(navigable_region_default, { className: classes, ariaLabel: title, children: [
 868      (title || breadcrumbs || badges) && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
 869        Header,
 870        {
 871          headingLevel,
 872          breadcrumbs,
 873          badges,
 874          title,
 875          subTitle,
 876          actions,
 877          showSidebarToggle
 878        }
 879      ),
 880      hasPadding ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "admin-ui-page__content has-padding", children }) : children
 881    ] });
 882  }
 883  Page.SidebarToggleFill = SidebarToggleFill;
 884  var page_default = Page;
 885  
 886  // routes/font-list/stage.tsx
 887  var import_i18n46 = __toESM(require_i18n());
 888  var import_components62 = __toESM(require_components());
 889  var import_editor = __toESM(require_editor());
 890  var import_core_data12 = __toESM(require_core_data());
 891  var import_data13 = __toESM(require_data());
 892  var import_element35 = __toESM(require_element());
 893  
 894  // packages/global-styles-ui/build-module/global-styles-ui.mjs
 895  var import_components61 = __toESM(require_components(), 1);
 896  var import_blocks5 = __toESM(require_blocks(), 1);
 897  var import_data12 = __toESM(require_data(), 1);
 898  var import_block_editor13 = __toESM(require_block_editor(), 1);
 899  var import_element34 = __toESM(require_element(), 1);
 900  var import_compose6 = __toESM(require_compose(), 1);
 901  
 902  // packages/global-styles-engine/build-module/utils/object.mjs
 903  function setImmutably(object, path, value) {
 904    path = Array.isArray(path) ? [...path] : [path];
 905    object = Array.isArray(object) ? [...object] : { ...object };
 906    const leaf = path.pop();
 907    let prev = object;
 908    for (const key of path) {
 909      const lvl = prev[key];
 910      prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };
 911    }
 912    prev[leaf] = value;
 913    return object;
 914  }
 915  var getValueFromObjectPath = (object, path, defaultValue) => {
 916    const arrayPath = Array.isArray(path) ? path : path.split(".");
 917    let value = object;
 918    arrayPath.forEach((fieldName) => {
 919      value = value?.[fieldName];
 920    });
 921    return value ?? defaultValue;
 922  };
 923  
 924  // packages/global-styles-engine/build-module/settings/get-setting.mjs
 925  var VALID_SETTINGS = [
 926    "appearanceTools",
 927    "useRootPaddingAwareAlignments",
 928    "background.backgroundImage",
 929    "background.backgroundRepeat",
 930    "background.backgroundSize",
 931    "background.backgroundPosition",
 932    "border.color",
 933    "border.radius",
 934    "border.radiusSizes",
 935    "border.style",
 936    "border.width",
 937    "shadow.presets",
 938    "shadow.defaultPresets",
 939    "color.background",
 940    "color.button",
 941    "color.caption",
 942    "color.custom",
 943    "color.customDuotone",
 944    "color.customGradient",
 945    "color.defaultDuotone",
 946    "color.defaultGradients",
 947    "color.defaultPalette",
 948    "color.duotone",
 949    "color.gradients",
 950    "color.heading",
 951    "color.link",
 952    "color.palette",
 953    "color.text",
 954    "custom",
 955    "dimensions.aspectRatio",
 956    "dimensions.height",
 957    "dimensions.minHeight",
 958    "dimensions.width",
 959    "dimensions.dimensionSizes",
 960    "layout.contentSize",
 961    "layout.definitions",
 962    "layout.wideSize",
 963    "lightbox.enabled",
 964    "lightbox.allowEditing",
 965    "position.fixed",
 966    "position.sticky",
 967    "spacing.customSpacingSize",
 968    "spacing.defaultSpacingSizes",
 969    "spacing.spacingSizes",
 970    "spacing.spacingScale",
 971    "spacing.blockGap",
 972    "spacing.margin",
 973    "spacing.padding",
 974    "spacing.units",
 975    "typography.fluid",
 976    "typography.customFontSize",
 977    "typography.defaultFontSizes",
 978    "typography.dropCap",
 979    "typography.fontFamilies",
 980    "typography.fontSizes",
 981    "typography.fontStyle",
 982    "typography.fontWeight",
 983    "typography.letterSpacing",
 984    "typography.lineHeight",
 985    "typography.textAlign",
 986    "typography.textColumns",
 987    "typography.textDecoration",
 988    "typography.textIndent",
 989    "typography.textTransform",
 990    "typography.writingMode"
 991  ];
 992  function getSetting(globalStyles, path, blockName) {
 993    const appendedBlockPath = blockName ? ".blocks." + blockName : "";
 994    const appendedPropertyPath = path ? "." + path : "";
 995    const contextualPath = `settings$appendedBlockPath}$appendedPropertyPath}`;
 996    const globalPath = `settings$appendedPropertyPath}`;
 997    if (path) {
 998      return getValueFromObjectPath(globalStyles, contextualPath) ?? getValueFromObjectPath(globalStyles, globalPath);
 999    }
1000    let result = {};
1001    VALID_SETTINGS.forEach((setting) => {
1002      const value = getValueFromObjectPath(
1003        globalStyles,
1004        `settings$appendedBlockPath}.$setting}`
1005      ) ?? getValueFromObjectPath(globalStyles, `settings.$setting}`);
1006      if (value !== void 0) {
1007        result = setImmutably(result, setting.split("."), value);
1008      }
1009    });
1010    return result;
1011  }
1012  
1013  // packages/global-styles-engine/build-module/settings/set-setting.mjs
1014  function setSetting(globalStyles, path, newValue, blockName) {
1015    const appendedBlockPath = blockName ? ".blocks." + blockName : "";
1016    const appendedPropertyPath = path ? "." + path : "";
1017    const finalPath = `settings$appendedBlockPath}$appendedPropertyPath}`;
1018    return setImmutably(
1019      globalStyles,
1020      finalPath.split("."),
1021      newValue
1022    );
1023  }
1024  
1025  // packages/global-styles-engine/build-module/utils/common.mjs
1026  var import_style_engine = __toESM(require_style_engine(), 1);
1027  
1028  // packages/global-styles-engine/build-module/utils/fluid.mjs
1029  var DEFAULT_MAXIMUM_VIEWPORT_WIDTH = "1600px";
1030  var DEFAULT_MINIMUM_VIEWPORT_WIDTH = "320px";
1031  var DEFAULT_SCALE_FACTOR = 1;
1032  var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN = 0.25;
1033  var DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX = 0.75;
1034  var DEFAULT_MINIMUM_FONT_SIZE_LIMIT = "14px";
1035  function getComputedFluidTypographyValue({
1036    minimumFontSize,
1037    maximumFontSize,
1038    fontSize,
1039    minimumViewportWidth = DEFAULT_MINIMUM_VIEWPORT_WIDTH,
1040    maximumViewportWidth = DEFAULT_MAXIMUM_VIEWPORT_WIDTH,
1041    scaleFactor = DEFAULT_SCALE_FACTOR,
1042    minimumFontSizeLimit
1043  }) {
1044    minimumFontSizeLimit = !!getTypographyValueAndUnit(minimumFontSizeLimit) ? minimumFontSizeLimit : DEFAULT_MINIMUM_FONT_SIZE_LIMIT;
1045    if (fontSize) {
1046      const fontSizeParsed = getTypographyValueAndUnit(fontSize);
1047      if (!fontSizeParsed?.unit || !fontSizeParsed?.value) {
1048        return null;
1049      }
1050      const minimumFontSizeLimitParsed = getTypographyValueAndUnit(
1051        minimumFontSizeLimit,
1052        {
1053          coerceTo: fontSizeParsed.unit
1054        }
1055      );
1056      if (!!minimumFontSizeLimitParsed?.value && !minimumFontSize && !maximumFontSize) {
1057        if (fontSizeParsed?.value <= minimumFontSizeLimitParsed?.value) {
1058          return null;
1059        }
1060      }
1061      if (!maximumFontSize) {
1062        maximumFontSize = `$fontSizeParsed.value}$fontSizeParsed.unit}`;
1063      }
1064      if (!minimumFontSize) {
1065        const fontSizeValueInPx = fontSizeParsed.unit === "px" ? fontSizeParsed.value : fontSizeParsed.value * 16;
1066        const minimumFontSizeFactor = Math.min(
1067          Math.max(
1068            1 - 0.075 * Math.log2(fontSizeValueInPx),
1069            DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MIN
1070          ),
1071          DEFAULT_MINIMUM_FONT_SIZE_FACTOR_MAX
1072        );
1073        const calculatedMinimumFontSize = roundToPrecision(
1074          fontSizeParsed.value * minimumFontSizeFactor,
1075          3
1076        );
1077        if (!!minimumFontSizeLimitParsed?.value && calculatedMinimumFontSize < minimumFontSizeLimitParsed?.value) {
1078          minimumFontSize = `$minimumFontSizeLimitParsed.value}$minimumFontSizeLimitParsed.unit}`;
1079        } else {
1080          minimumFontSize = `$calculatedMinimumFontSize}$fontSizeParsed.unit}`;
1081        }
1082      }
1083    }
1084    const minimumFontSizeParsed = getTypographyValueAndUnit(minimumFontSize);
1085    const fontSizeUnit = minimumFontSizeParsed?.unit || "rem";
1086    const maximumFontSizeParsed = getTypographyValueAndUnit(maximumFontSize, {
1087      coerceTo: fontSizeUnit
1088    });
1089    if (!minimumFontSizeParsed || !maximumFontSizeParsed) {
1090      return null;
1091    }
1092    const minimumFontSizeRem = getTypographyValueAndUnit(minimumFontSize, {
1093      coerceTo: "rem"
1094    });
1095    const maximumViewportWidthParsed = getTypographyValueAndUnit(
1096      maximumViewportWidth,
1097      { coerceTo: fontSizeUnit }
1098    );
1099    const minimumViewportWidthParsed = getTypographyValueAndUnit(
1100      minimumViewportWidth,
1101      { coerceTo: fontSizeUnit }
1102    );
1103    if (!maximumViewportWidthParsed || !minimumViewportWidthParsed || !minimumFontSizeRem) {
1104      return null;
1105    }
1106    const linearDenominator = maximumViewportWidthParsed.value - minimumViewportWidthParsed.value;
1107    if (!linearDenominator) {
1108      return null;
1109    }
1110    const minViewportWidthOffsetValue = roundToPrecision(
1111      minimumViewportWidthParsed.value / 100,
1112      3
1113    );
1114    const viewportWidthOffset = roundToPrecision(minViewportWidthOffsetValue, 3) + fontSizeUnit;
1115    const linearFactor = 100 * ((maximumFontSizeParsed.value - minimumFontSizeParsed.value) / linearDenominator);
1116    const linearFactorScaled = roundToPrecision(
1117      (linearFactor || 1) * scaleFactor,
1118      3
1119    );
1120    const fluidTargetFontSize = `$minimumFontSizeRem.value}$minimumFontSizeRem.unit} + ((1vw - $viewportWidthOffset}) * $linearFactorScaled})`;
1121    return `clamp($minimumFontSize}, $fluidTargetFontSize}, $maximumFontSize})`;
1122  }
1123  function getTypographyValueAndUnit(rawValue, options = {}) {
1124    if (typeof rawValue !== "string" && typeof rawValue !== "number") {
1125      return null;
1126    }
1127    if (isFinite(rawValue)) {
1128      rawValue = `$rawValue}px`;
1129    }
1130    const { coerceTo, rootSizeValue, acceptableUnits } = {
1131      coerceTo: "",
1132      // Default browser font size. Later we could inject some JS to compute this `getComputedStyle( document.querySelector( "html" ) ).fontSize`.
1133      rootSizeValue: 16,
1134      acceptableUnits: ["rem", "px", "em"],
1135      ...options
1136    };
1137    const acceptableUnitsGroup = acceptableUnits?.join("|");
1138    const regexUnits = new RegExp(
1139      `^(\\d*\\.?\\d+)($acceptableUnitsGroup}){1,1}$`
1140    );
1141    const matches = rawValue.toString().match(regexUnits);
1142    if (!matches || matches.length < 3) {
1143      return null;
1144    }
1145    let [, value, unit] = matches;
1146    let returnValue = parseFloat(value);
1147    if ("px" === coerceTo && ("em" === unit || "rem" === unit)) {
1148      returnValue = returnValue * rootSizeValue;
1149      unit = coerceTo;
1150    }
1151    if ("px" === unit && ("em" === coerceTo || "rem" === coerceTo)) {
1152      returnValue = returnValue / rootSizeValue;
1153      unit = coerceTo;
1154    }
1155    if (("em" === coerceTo || "rem" === coerceTo) && ("em" === unit || "rem" === unit)) {
1156      unit = coerceTo;
1157    }
1158    if (!unit) {
1159      return null;
1160    }
1161    return {
1162      value: roundToPrecision(returnValue, 3),
1163      unit
1164    };
1165  }
1166  function roundToPrecision(value, digits = 3) {
1167    const base = Math.pow(10, digits);
1168    return Math.round(value * base) / base;
1169  }
1170  
1171  // packages/global-styles-engine/build-module/utils/typography.mjs
1172  function isFluidTypographyEnabled(typographySettings) {
1173    const fluidSettings = typographySettings?.fluid;
1174    return true === fluidSettings || fluidSettings && typeof fluidSettings === "object" && Object.keys(fluidSettings).length > 0;
1175  }
1176  function getFluidTypographyOptionsFromSettings(settings) {
1177    const typographySettings = settings?.typography ?? {};
1178    const layoutSettings = settings?.layout;
1179    const defaultMaxViewportWidth = getTypographyValueAndUnit(
1180      layoutSettings?.wideSize
1181    ) ? layoutSettings?.wideSize : null;
1182    return isFluidTypographyEnabled(typographySettings) && defaultMaxViewportWidth ? {
1183      fluid: {
1184        maxViewportWidth: defaultMaxViewportWidth,
1185        ...typeof typographySettings.fluid === "object" ? typographySettings.fluid : {}
1186      }
1187    } : {
1188      fluid: typographySettings?.fluid
1189    };
1190  }
1191  function getTypographyFontSizeValue(preset, settings) {
1192    const { size: defaultSize } = preset;
1193    if (!defaultSize || "0" === defaultSize || false === preset?.fluid) {
1194      return defaultSize;
1195    }
1196    if (!isFluidTypographyEnabled(settings?.typography) && !isFluidTypographyEnabled(preset)) {
1197      return defaultSize;
1198    }
1199    const fluidTypographySettings = getFluidTypographyOptionsFromSettings(settings)?.fluid ?? {};
1200    const fluidFontSizeValue = getComputedFluidTypographyValue({
1201      minimumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.min,
1202      maximumFontSize: typeof preset?.fluid === "boolean" ? void 0 : preset?.fluid?.max,
1203      fontSize: defaultSize,
1204      minimumFontSizeLimit: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minFontSize : void 0,
1205      maximumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.maxViewportWidth : void 0,
1206      minimumViewportWidth: typeof fluidTypographySettings === "object" ? fluidTypographySettings?.minViewportWidth : void 0
1207    });
1208    if (!!fluidFontSizeValue) {
1209      return fluidFontSizeValue;
1210    }
1211    return defaultSize;
1212  }
1213  
1214  // packages/global-styles-engine/build-module/utils/common.mjs
1215  var PRESET_METADATA = [
1216    {
1217      path: ["color", "palette"],
1218      valueKey: "color",
1219      cssVarInfix: "color",
1220      classes: [
1221        { classSuffix: "color", propertyName: "color" },
1222        {
1223          classSuffix: "background-color",
1224          propertyName: "background-color"
1225        },
1226        {
1227          classSuffix: "border-color",
1228          propertyName: "border-color"
1229        }
1230      ]
1231    },
1232    {
1233      path: ["color", "gradients"],
1234      valueKey: "gradient",
1235      cssVarInfix: "gradient",
1236      classes: [
1237        {
1238          classSuffix: "gradient-background",
1239          propertyName: "background"
1240        }
1241      ]
1242    },
1243    {
1244      path: ["color", "duotone"],
1245      valueKey: "colors",
1246      cssVarInfix: "duotone",
1247      valueFunc: ({ slug }) => `url( '#wp-duotone-$slug}' )`,
1248      classes: []
1249    },
1250    {
1251      path: ["shadow", "presets"],
1252      valueKey: "shadow",
1253      cssVarInfix: "shadow",
1254      classes: []
1255    },
1256    {
1257      path: ["typography", "fontSizes"],
1258      valueFunc: (preset, settings) => getTypographyFontSizeValue(preset, settings),
1259      valueKey: "size",
1260      cssVarInfix: "font-size",
1261      classes: [{ classSuffix: "font-size", propertyName: "font-size" }]
1262    },
1263    {
1264      path: ["typography", "fontFamilies"],
1265      valueKey: "fontFamily",
1266      cssVarInfix: "font-family",
1267      classes: [
1268        { classSuffix: "font-family", propertyName: "font-family" }
1269      ]
1270    },
1271    {
1272      path: ["spacing", "spacingSizes"],
1273      valueKey: "size",
1274      cssVarInfix: "spacing",
1275      valueFunc: ({ size }) => size,
1276      classes: []
1277    },
1278    {
1279      path: ["border", "radiusSizes"],
1280      valueKey: "size",
1281      cssVarInfix: "border-radius",
1282      classes: []
1283    },
1284    {
1285      path: ["dimensions", "dimensionSizes"],
1286      valueKey: "size",
1287      cssVarInfix: "dimension",
1288      classes: []
1289    }
1290  ];
1291  function findInPresetsBy(settings, blockName, presetPath = [], presetProperty = "slug", presetValueValue) {
1292    const orderedPresetsByOrigin = [
1293      blockName ? getValueFromObjectPath(settings, [
1294        "blocks",
1295        blockName,
1296        ...presetPath
1297      ]) : void 0,
1298      getValueFromObjectPath(settings, presetPath)
1299    ].filter(Boolean);
1300    for (const presetByOrigin of orderedPresetsByOrigin) {
1301      if (presetByOrigin) {
1302        const origins = ["custom", "theme", "default"];
1303        for (const origin of origins) {
1304          const presets = presetByOrigin[origin];
1305          if (presets) {
1306            const presetObject = presets.find(
1307              (preset) => preset[presetProperty] === presetValueValue
1308            );
1309            if (presetObject) {
1310              if (presetProperty === "slug") {
1311                return presetObject;
1312              }
1313              const highestPresetObjectWithSameSlug = findInPresetsBy(
1314                settings,
1315                blockName,
1316                presetPath,
1317                "slug",
1318                presetObject.slug
1319              );
1320              if (highestPresetObjectWithSameSlug[presetProperty] === presetObject[presetProperty]) {
1321                return presetObject;
1322              }
1323              return void 0;
1324            }
1325          }
1326        }
1327      }
1328    }
1329  }
1330  function getValueFromPresetVariable(features, blockName, variable, [presetType, slug] = []) {
1331    const metadata = PRESET_METADATA.find(
1332      (data) => data.cssVarInfix === presetType
1333    );
1334    if (!metadata || !features.settings) {
1335      return variable;
1336    }
1337    const presetObject = findInPresetsBy(
1338      features.settings,
1339      blockName,
1340      metadata.path,
1341      "slug",
1342      slug
1343    );
1344    if (presetObject) {
1345      const { valueKey } = metadata;
1346      const result = presetObject[valueKey];
1347      return getValueFromVariable(features, blockName, result);
1348    }
1349    return variable;
1350  }
1351  function getValueFromCustomVariable(features, blockName, variable, path = []) {
1352    const result = (blockName ? getValueFromObjectPath(features?.settings ?? {}, [
1353      "blocks",
1354      blockName,
1355      "custom",
1356      ...path
1357    ]) : void 0) ?? getValueFromObjectPath(features?.settings ?? {}, [
1358      "custom",
1359      ...path
1360    ]);
1361    if (!result) {
1362      return variable;
1363    }
1364    return getValueFromVariable(features, blockName, result);
1365  }
1366  function getValueFromVariable(features, blockName, variable) {
1367    if (!variable || typeof variable !== "string") {
1368      if (typeof variable === "object" && variable !== null && "ref" in variable && typeof variable.ref === "string") {
1369        const resolvedVariable = getValueFromObjectPath(
1370          features,
1371          variable.ref
1372        );
1373        if (!resolvedVariable || typeof resolvedVariable === "object" && "ref" in resolvedVariable) {
1374          return resolvedVariable;
1375        }
1376        variable = resolvedVariable;
1377      } else {
1378        return variable;
1379      }
1380    }
1381    const USER_VALUE_PREFIX = "var:";
1382    const THEME_VALUE_PREFIX = "var(--wp--";
1383    const THEME_VALUE_SUFFIX = ")";
1384    let parsedVar;
1385    if (variable.startsWith(USER_VALUE_PREFIX)) {
1386      parsedVar = variable.slice(USER_VALUE_PREFIX.length).split("|");
1387    } else if (variable.startsWith(THEME_VALUE_PREFIX) && variable.endsWith(THEME_VALUE_SUFFIX)) {
1388      parsedVar = variable.slice(THEME_VALUE_PREFIX.length, -THEME_VALUE_SUFFIX.length).split("--");
1389    } else {
1390      return variable;
1391    }
1392    const [type, ...path] = parsedVar;
1393    if (type === "preset") {
1394      return getValueFromPresetVariable(
1395        features,
1396        blockName,
1397        variable,
1398        path
1399      );
1400    }
1401    if (type === "custom") {
1402      return getValueFromCustomVariable(
1403        features,
1404        blockName,
1405        variable,
1406        path
1407      );
1408    }
1409    return variable;
1410  }
1411  
1412  // packages/global-styles-engine/build-module/settings/get-style.mjs
1413  function getStyle(globalStyles, path, blockName, shouldDecodeEncode = true) {
1414    const appendedPath = path ? "." + path : "";
1415    const finalPath = !blockName ? `styles$appendedPath}` : `styles.blocks.$blockName}$appendedPath}`;
1416    if (!globalStyles) {
1417      return void 0;
1418    }
1419    const rawResult = getValueFromObjectPath(globalStyles, finalPath);
1420    const result = shouldDecodeEncode ? getValueFromVariable(globalStyles, blockName, rawResult) : rawResult;
1421    return result;
1422  }
1423  
1424  // packages/global-styles-engine/build-module/settings/set-style.mjs
1425  function setStyle(globalStyles, path, newValue, blockName) {
1426    const appendedPath = path ? "." + path : "";
1427    const finalPath = !blockName ? `styles$appendedPath}` : `styles.blocks.$blockName}$appendedPath}`;
1428    return setImmutably(
1429      globalStyles,
1430      finalPath.split("."),
1431      newValue
1432    );
1433  }
1434  
1435  // packages/global-styles-engine/build-module/core/equal.mjs
1436  var import_es6 = __toESM(require_es6(), 1);
1437  function areGlobalStylesEqual(original, variation) {
1438    if (typeof original !== "object" || typeof variation !== "object") {
1439      return original === variation;
1440    }
1441    return (0, import_es6.default)(original?.styles, variation?.styles) && (0, import_es6.default)(original?.settings, variation?.settings);
1442  }
1443  
1444  // packages/global-styles-engine/build-module/core/merge.mjs
1445  var import_deepmerge = __toESM(require_cjs(), 1);
1446  
1447  // node_modules/is-plain-object/dist/is-plain-object.mjs
1448  function isObject(o3) {
1449    return Object.prototype.toString.call(o3) === "[object Object]";
1450  }
1451  function isPlainObject(o3) {
1452    var ctor, prot;
1453    if (isObject(o3) === false) return false;
1454    ctor = o3.constructor;
1455    if (ctor === void 0) return true;
1456    prot = ctor.prototype;
1457    if (isObject(prot) === false) return false;
1458    if (prot.hasOwnProperty("isPrototypeOf") === false) {
1459      return false;
1460    }
1461    return true;
1462  }
1463  
1464  // packages/global-styles-engine/build-module/core/merge.mjs
1465  function mergeGlobalStyles(base, user) {
1466    return (0, import_deepmerge.default)(base, user, {
1467      /*
1468       * We only pass as arrays the presets,
1469       * in which case we want the new array of values
1470       * to override the old array (no merging).
1471       */
1472      isMergeableObject: isPlainObject,
1473      /*
1474       * Exceptions to the above rule.
1475       * Background images should be replaced, not merged,
1476       * as they themselves are specific object definitions for the style.
1477       */
1478      customMerge: (key) => {
1479        if (key === "backgroundImage") {
1480          return (baseConfig, userConfig) => userConfig ?? baseConfig;
1481        }
1482        return void 0;
1483      }
1484    });
1485  }
1486  
1487  // node_modules/colord/index.mjs
1488  var r2 = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) };
1489  var t = function(r3) {
1490    return "string" == typeof r3 ? r3.length > 0 : "number" == typeof r3;
1491  };
1492  var n = function(r3, t3, n2) {
1493    return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = Math.pow(10, t3)), Math.round(n2 * r3) / n2 + 0;
1494  };
1495  var e = function(r3, t3, n2) {
1496    return void 0 === t3 && (t3 = 0), void 0 === n2 && (n2 = 1), r3 > n2 ? n2 : r3 > t3 ? r3 : t3;
1497  };
1498  var u = function(r3) {
1499    return (r3 = isFinite(r3) ? r3 % 360 : 0) > 0 ? r3 : r3 + 360;
1500  };
1501  var a = function(r3) {
1502    return { r: e(r3.r, 0, 255), g: e(r3.g, 0, 255), b: e(r3.b, 0, 255), a: e(r3.a) };
1503  };
1504  var o = function(r3) {
1505    return { r: n(r3.r), g: n(r3.g), b: n(r3.b), a: n(r3.a, 3) };
1506  };
1507  var i = /^#([0-9a-f]{3,8})$/i;
1508  var s = function(r3) {
1509    var t3 = r3.toString(16);
1510    return t3.length < 2 ? "0" + t3 : t3;
1511  };
1512  var h = function(r3) {
1513    var t3 = r3.r, n2 = r3.g, e2 = r3.b, u2 = r3.a, a2 = Math.max(t3, n2, e2), o3 = a2 - Math.min(t3, n2, e2), i2 = o3 ? a2 === t3 ? (n2 - e2) / o3 : a2 === n2 ? 2 + (e2 - t3) / o3 : 4 + (t3 - n2) / o3 : 0;
1514    return { h: 60 * (i2 < 0 ? i2 + 6 : i2), s: a2 ? o3 / a2 * 100 : 0, v: a2 / 255 * 100, a: u2 };
1515  };
1516  var b = function(r3) {
1517    var t3 = r3.h, n2 = r3.s, e2 = r3.v, u2 = r3.a;
1518    t3 = t3 / 360 * 6, n2 /= 100, e2 /= 100;
1519    var a2 = Math.floor(t3), o3 = e2 * (1 - n2), i2 = e2 * (1 - (t3 - a2) * n2), s2 = e2 * (1 - (1 - t3 + a2) * n2), h2 = a2 % 6;
1520    return { r: 255 * [e2, i2, o3, o3, s2, e2][h2], g: 255 * [s2, e2, e2, i2, o3, o3][h2], b: 255 * [o3, o3, s2, e2, e2, i2][h2], a: u2 };
1521  };
1522  var g = function(r3) {
1523    return { h: u(r3.h), s: e(r3.s, 0, 100), l: e(r3.l, 0, 100), a: e(r3.a) };
1524  };
1525  var d = function(r3) {
1526    return { h: n(r3.h), s: n(r3.s), l: n(r3.l), a: n(r3.a, 3) };
1527  };
1528  var f = function(r3) {
1529    return b((n2 = (t3 = r3).s, { h: t3.h, s: (n2 *= ((e2 = t3.l) < 50 ? e2 : 100 - e2) / 100) > 0 ? 2 * n2 / (e2 + n2) * 100 : 0, v: e2 + n2, a: t3.a }));
1530    var t3, n2, e2;
1531  };
1532  var c = function(r3) {
1533    return { h: (t3 = h(r3)).h, s: (u2 = (200 - (n2 = t3.s)) * (e2 = t3.v) / 100) > 0 && u2 < 200 ? n2 * e2 / 100 / (u2 <= 100 ? u2 : 200 - u2) * 100 : 0, l: u2 / 2, a: t3.a };
1534    var t3, n2, e2, u2;
1535  };
1536  var l = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1537  var p2 = /^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1538  var v = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1539  var m = /^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i;
1540  var y = { string: [[function(r3) {
1541    var t3 = i.exec(r3);
1542    return t3 ? (r3 = t3[1]).length <= 4 ? { r: parseInt(r3[0] + r3[0], 16), g: parseInt(r3[1] + r3[1], 16), b: parseInt(r3[2] + r3[2], 16), a: 4 === r3.length ? n(parseInt(r3[3] + r3[3], 16) / 255, 2) : 1 } : 6 === r3.length || 8 === r3.length ? { r: parseInt(r3.substr(0, 2), 16), g: parseInt(r3.substr(2, 2), 16), b: parseInt(r3.substr(4, 2), 16), a: 8 === r3.length ? n(parseInt(r3.substr(6, 2), 16) / 255, 2) : 1 } : null : null;
1543  }, "hex"], [function(r3) {
1544    var t3 = v.exec(r3) || m.exec(r3);
1545    return t3 ? t3[2] !== t3[4] || t3[4] !== t3[6] ? null : a({ r: Number(t3[1]) / (t3[2] ? 100 / 255 : 1), g: Number(t3[3]) / (t3[4] ? 100 / 255 : 1), b: Number(t3[5]) / (t3[6] ? 100 / 255 : 1), a: void 0 === t3[7] ? 1 : Number(t3[7]) / (t3[8] ? 100 : 1) }) : null;
1546  }, "rgb"], [function(t3) {
1547    var n2 = l.exec(t3) || p2.exec(t3);
1548    if (!n2) return null;
1549    var e2, u2, a2 = g({ h: (e2 = n2[1], u2 = n2[2], void 0 === u2 && (u2 = "deg"), Number(e2) * (r2[u2] || 1)), s: Number(n2[3]), l: Number(n2[4]), a: void 0 === n2[5] ? 1 : Number(n2[5]) / (n2[6] ? 100 : 1) });
1550    return f(a2);
1551  }, "hsl"]], object: [[function(r3) {
1552    var n2 = r3.r, e2 = r3.g, u2 = r3.b, o3 = r3.a, i2 = void 0 === o3 ? 1 : o3;
1553    return t(n2) && t(e2) && t(u2) ? a({ r: Number(n2), g: Number(e2), b: Number(u2), a: Number(i2) }) : null;
1554  }, "rgb"], [function(r3) {
1555    var n2 = r3.h, e2 = r3.s, u2 = r3.l, a2 = r3.a, o3 = void 0 === a2 ? 1 : a2;
1556    if (!t(n2) || !t(e2) || !t(u2)) return null;
1557    var i2 = g({ h: Number(n2), s: Number(e2), l: Number(u2), a: Number(o3) });
1558    return f(i2);
1559  }, "hsl"], [function(r3) {
1560    var n2 = r3.h, a2 = r3.s, o3 = r3.v, i2 = r3.a, s2 = void 0 === i2 ? 1 : i2;
1561    if (!t(n2) || !t(a2) || !t(o3)) return null;
1562    var h2 = (function(r4) {
1563      return { h: u(r4.h), s: e(r4.s, 0, 100), v: e(r4.v, 0, 100), a: e(r4.a) };
1564    })({ h: Number(n2), s: Number(a2), v: Number(o3), a: Number(s2) });
1565    return b(h2);
1566  }, "hsv"]] };
1567  var N = function(r3, t3) {
1568    for (var n2 = 0; n2 < t3.length; n2++) {
1569      var e2 = t3[n2][0](r3);
1570      if (e2) return [e2, t3[n2][1]];
1571    }
1572    return [null, void 0];
1573  };
1574  var x = function(r3) {
1575    return "string" == typeof r3 ? N(r3.trim(), y.string) : "object" == typeof r3 && null !== r3 ? N(r3, y.object) : [null, void 0];
1576  };
1577  var M = function(r3, t3) {
1578    var n2 = c(r3);
1579    return { h: n2.h, s: e(n2.s + 100 * t3, 0, 100), l: n2.l, a: n2.a };
1580  };
1581  var H = function(r3) {
1582    return (299 * r3.r + 587 * r3.g + 114 * r3.b) / 1e3 / 255;
1583  };
1584  var $ = function(r3, t3) {
1585    var n2 = c(r3);
1586    return { h: n2.h, s: n2.s, l: e(n2.l + 100 * t3, 0, 100), a: n2.a };
1587  };
1588  var j = (function() {
1589    function r3(r4) {
1590      this.parsed = x(r4)[0], this.rgba = this.parsed || { r: 0, g: 0, b: 0, a: 1 };
1591    }
1592    return r3.prototype.isValid = function() {
1593      return null !== this.parsed;
1594    }, r3.prototype.brightness = function() {
1595      return n(H(this.rgba), 2);
1596    }, r3.prototype.isDark = function() {
1597      return H(this.rgba) < 0.5;
1598    }, r3.prototype.isLight = function() {
1599      return H(this.rgba) >= 0.5;
1600    }, r3.prototype.toHex = function() {
1601      return r4 = o(this.rgba), t3 = r4.r, e2 = r4.g, u2 = r4.b, i2 = (a2 = r4.a) < 1 ? s(n(255 * a2)) : "", "#" + s(t3) + s(e2) + s(u2) + i2;
1602      var r4, t3, e2, u2, a2, i2;
1603    }, r3.prototype.toRgb = function() {
1604      return o(this.rgba);
1605    }, r3.prototype.toRgbString = function() {
1606      return r4 = o(this.rgba), t3 = r4.r, n2 = r4.g, e2 = r4.b, (u2 = r4.a) < 1 ? "rgba(" + t3 + ", " + n2 + ", " + e2 + ", " + u2 + ")" : "rgb(" + t3 + ", " + n2 + ", " + e2 + ")";
1607      var r4, t3, n2, e2, u2;
1608    }, r3.prototype.toHsl = function() {
1609      return d(c(this.rgba));
1610    }, r3.prototype.toHslString = function() {
1611      return r4 = d(c(this.rgba)), t3 = r4.h, n2 = r4.s, e2 = r4.l, (u2 = r4.a) < 1 ? "hsla(" + t3 + ", " + n2 + "%, " + e2 + "%, " + u2 + ")" : "hsl(" + t3 + ", " + n2 + "%, " + e2 + "%)";
1612      var r4, t3, n2, e2, u2;
1613    }, r3.prototype.toHsv = function() {
1614      return r4 = h(this.rgba), { h: n(r4.h), s: n(r4.s), v: n(r4.v), a: n(r4.a, 3) };
1615      var r4;
1616    }, r3.prototype.invert = function() {
1617      return w({ r: 255 - (r4 = this.rgba).r, g: 255 - r4.g, b: 255 - r4.b, a: r4.a });
1618      var r4;
1619    }, r3.prototype.saturate = function(r4) {
1620      return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, r4));
1621    }, r3.prototype.desaturate = function(r4) {
1622      return void 0 === r4 && (r4 = 0.1), w(M(this.rgba, -r4));
1623    }, r3.prototype.grayscale = function() {
1624      return w(M(this.rgba, -1));
1625    }, r3.prototype.lighten = function(r4) {
1626      return void 0 === r4 && (r4 = 0.1), w($(this.rgba, r4));
1627    }, r3.prototype.darken = function(r4) {
1628      return void 0 === r4 && (r4 = 0.1), w($(this.rgba, -r4));
1629    }, r3.prototype.rotate = function(r4) {
1630      return void 0 === r4 && (r4 = 15), this.hue(this.hue() + r4);
1631    }, r3.prototype.alpha = function(r4) {
1632      return "number" == typeof r4 ? w({ r: (t3 = this.rgba).r, g: t3.g, b: t3.b, a: r4 }) : n(this.rgba.a, 3);
1633      var t3;
1634    }, r3.prototype.hue = function(r4) {
1635      var t3 = c(this.rgba);
1636      return "number" == typeof r4 ? w({ h: r4, s: t3.s, l: t3.l, a: t3.a }) : n(t3.h);
1637    }, r3.prototype.isEqual = function(r4) {
1638      return this.toHex() === w(r4).toHex();
1639    }, r3;
1640  })();
1641  var w = function(r3) {
1642    return r3 instanceof j ? r3 : new j(r3);
1643  };
1644  var S = [];
1645  var k = function(r3) {
1646    r3.forEach(function(r4) {
1647      S.indexOf(r4) < 0 && (r4(j, y), S.push(r4));
1648    });
1649  };
1650  
1651  // packages/global-styles-ui/build-module/provider.mjs
1652  var import_element5 = __toESM(require_element(), 1);
1653  
1654  // packages/global-styles-ui/build-module/context.mjs
1655  var import_element4 = __toESM(require_element(), 1);
1656  var GlobalStylesContext = (0, import_element4.createContext)({
1657    user: { styles: {}, settings: {} },
1658    base: { styles: {}, settings: {} },
1659    merged: { styles: {}, settings: {} },
1660    onChange: () => {
1661    },
1662    fontLibraryEnabled: false
1663  });
1664  
1665  // packages/global-styles-ui/build-module/provider.mjs
1666  var import_jsx_runtime9 = __toESM(require_jsx_runtime(), 1);
1667  function GlobalStylesProvider({
1668    children,
1669    value,
1670    baseValue,
1671    onChange,
1672    fontLibraryEnabled
1673  }) {
1674    const merged = (0, import_element5.useMemo)(() => {
1675      return mergeGlobalStyles(baseValue, value);
1676    }, [baseValue, value]);
1677    const contextValue = (0, import_element5.useMemo)(
1678      () => ({
1679        user: value,
1680        base: baseValue,
1681        merged,
1682        onChange,
1683        fontLibraryEnabled
1684      }),
1685      [value, baseValue, merged, onChange, fontLibraryEnabled]
1686    );
1687    return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(GlobalStylesContext.Provider, { value: contextValue, children });
1688  }
1689  
1690  // packages/global-styles-ui/build-module/screen-root.mjs
1691  var import_components8 = __toESM(require_components(), 1);
1692  var import_i18n4 = __toESM(require_i18n(), 1);
1693  var import_data2 = __toESM(require_data(), 1);
1694  var import_core_data2 = __toESM(require_core_data(), 1);
1695  
1696  // packages/global-styles-ui/build-module/icon-with-current-color.mjs
1697  var import_jsx_runtime10 = __toESM(require_jsx_runtime(), 1);
1698  function IconWithCurrentColor({
1699    className,
1700    ...props
1701  }) {
1702    return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1703      icon_default,
1704      {
1705        className: clsx_default(
1706          className,
1707          "global-styles-ui-icon-with-current-color"
1708        ),
1709        ...props
1710      }
1711    );
1712  }
1713  
1714  // packages/global-styles-ui/build-module/navigation-button.mjs
1715  var import_components2 = __toESM(require_components(), 1);
1716  var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
1717  function GenericNavigationButton({
1718    icon,
1719    children,
1720    ...props
1721  }) {
1722    return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components2.__experimentalItem, { ...props, children: [
1723      icon && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_components2.__experimentalHStack, { justify: "flex-start", children: [
1724        /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(IconWithCurrentColor, { icon, size: 24 }),
1725        /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components2.FlexItem, { children })
1726      ] }),
1727      !icon && children
1728    ] });
1729  }
1730  function NavigationButtonAsItem(props) {
1731    return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_components2.Navigator.Button, { as: GenericNavigationButton, ...props });
1732  }
1733  
1734  // packages/global-styles-ui/build-module/root-menu.mjs
1735  var import_components3 = __toESM(require_components(), 1);
1736  var import_i18n2 = __toESM(require_i18n(), 1);
1737  var import_block_editor = __toESM(require_block_editor(), 1);
1738  
1739  // node_modules/colord/plugins/a11y.mjs
1740  var o2 = function(o3) {
1741    var t3 = o3 / 255;
1742    return t3 < 0.04045 ? t3 / 12.92 : Math.pow((t3 + 0.055) / 1.055, 2.4);
1743  };
1744  var t2 = function(t3) {
1745    return 0.2126 * o2(t3.r) + 0.7152 * o2(t3.g) + 0.0722 * o2(t3.b);
1746  };
1747  function a11y_default(o3) {
1748    o3.prototype.luminance = function() {
1749      return o4 = t2(this.rgba), void 0 === (r3 = 2) && (r3 = 0), void 0 === n2 && (n2 = Math.pow(10, r3)), Math.round(n2 * o4) / n2 + 0;
1750      var o4, r3, n2;
1751    }, o3.prototype.contrast = function(r3) {
1752      void 0 === r3 && (r3 = "#FFF");
1753      var n2, a2, i2, e2, v2, u2, d2, c2 = r3 instanceof o3 ? r3 : new o3(r3);
1754      return e2 = this.rgba, v2 = c2.toRgb(), u2 = t2(e2), d2 = t2(v2), n2 = u2 > d2 ? (u2 + 0.05) / (d2 + 0.05) : (d2 + 0.05) / (u2 + 0.05), void 0 === (a2 = 2) && (a2 = 0), void 0 === i2 && (i2 = Math.pow(10, a2)), Math.floor(i2 * n2) / i2 + 0;
1755    }, o3.prototype.isReadable = function(o4, t3) {
1756      return void 0 === o4 && (o4 = "#FFF"), void 0 === t3 && (t3 = {}), this.contrast(o4) >= (e2 = void 0 === (i2 = (r3 = t3).size) ? "normal" : i2, "AAA" === (a2 = void 0 === (n2 = r3.level) ? "AA" : n2) && "normal" === e2 ? 7 : "AA" === a2 && "large" === e2 ? 3 : 4.5);
1757      var r3, n2, a2, i2, e2;
1758    };
1759  }
1760  
1761  // packages/global-styles-ui/build-module/hooks.mjs
1762  var import_element6 = __toESM(require_element(), 1);
1763  var import_data = __toESM(require_data(), 1);
1764  var import_core_data = __toESM(require_core_data(), 1);
1765  var import_i18n = __toESM(require_i18n(), 1);
1766  
1767  // packages/global-styles-ui/build-module/utils.mjs
1768  function removePropertiesFromObject(object, properties) {
1769    if (!properties?.length) {
1770      return object;
1771    }
1772    if (typeof object !== "object" || !object || !Object.keys(object).length) {
1773      return object;
1774    }
1775    for (const key in object) {
1776      if (properties.includes(key)) {
1777        delete object[key];
1778      } else if (typeof object[key] === "object") {
1779        removePropertiesFromObject(object[key], properties);
1780      }
1781    }
1782    return object;
1783  }
1784  var filterObjectByProperties = (object, properties) => {
1785    if (!object || !properties?.length) {
1786      return {};
1787    }
1788    const newObject = {};
1789    Object.keys(object).forEach((key) => {
1790      if (properties.includes(key)) {
1791        newObject[key] = object[key];
1792      } else if (typeof object[key] === "object") {
1793        const newFilter = filterObjectByProperties(
1794          object[key],
1795          properties
1796        );
1797        if (Object.keys(newFilter).length) {
1798          newObject[key] = newFilter;
1799        }
1800      }
1801    });
1802    return newObject;
1803  };
1804  function isVariationWithProperties(variation, properties) {
1805    const variationWithProperties = filterObjectByProperties(
1806      structuredClone(variation),
1807      properties
1808    );
1809    return areGlobalStylesEqual(variationWithProperties, variation);
1810  }
1811  function getFontFamilyFromSetting(fontFamilies, setting) {
1812    if (!Array.isArray(fontFamilies) || !setting) {
1813      return null;
1814    }
1815    const fontFamilyVariable = setting.replace("var(", "").replace(")", "");
1816    const fontFamilySlug = fontFamilyVariable?.split("--").slice(-1)[0];
1817    return fontFamilies.find(
1818      (fontFamily) => fontFamily.slug === fontFamilySlug
1819    );
1820  }
1821  function getFontFamilies(themeJson) {
1822    const themeFontFamilies = themeJson?.settings?.typography?.fontFamilies?.theme;
1823    const customFontFamilies = themeJson?.settings?.typography?.fontFamilies?.custom;
1824    let fontFamilies = [];
1825    if (themeFontFamilies && customFontFamilies) {
1826      fontFamilies = [...themeFontFamilies, ...customFontFamilies];
1827    } else if (themeFontFamilies) {
1828      fontFamilies = themeFontFamilies;
1829    } else if (customFontFamilies) {
1830      fontFamilies = customFontFamilies;
1831    }
1832    const bodyFontFamilySetting = themeJson?.styles?.typography?.fontFamily;
1833    const bodyFontFamily = getFontFamilyFromSetting(
1834      fontFamilies,
1835      bodyFontFamilySetting
1836    );
1837    const headingFontFamilySetting = themeJson?.styles?.elements?.heading?.typography?.fontFamily;
1838    let headingFontFamily;
1839    if (!headingFontFamilySetting) {
1840      headingFontFamily = bodyFontFamily;
1841    } else {
1842      headingFontFamily = getFontFamilyFromSetting(
1843        fontFamilies,
1844        themeJson?.styles?.elements?.heading?.typography?.fontFamily
1845      );
1846    }
1847    return [bodyFontFamily, headingFontFamily];
1848  }
1849  
1850  // packages/global-styles-ui/build-module/hooks.mjs
1851  k([a11y_default]);
1852  function useStyle(path, blockName, readFrom = "merged", shouldDecodeEncode = true) {
1853    const { user, base, merged, onChange } = (0, import_element6.useContext)(GlobalStylesContext);
1854    let sourceValue = merged;
1855    if (readFrom === "base") {
1856      sourceValue = base;
1857    } else if (readFrom === "user") {
1858      sourceValue = user;
1859    }
1860    const styleValue = (0, import_element6.useMemo)(
1861      () => getStyle(sourceValue, path, blockName, shouldDecodeEncode),
1862      [sourceValue, path, blockName, shouldDecodeEncode]
1863    );
1864    const setStyleValue = (0, import_element6.useCallback)(
1865      (newValue) => {
1866        const newGlobalStyles = setStyle(
1867          user,
1868          path,
1869          newValue,
1870          blockName
1871        );
1872        onChange(newGlobalStyles);
1873      },
1874      [user, onChange, path, blockName]
1875    );
1876    return [styleValue, setStyleValue];
1877  }
1878  function useSetting(path, blockName, readFrom = "merged") {
1879    const { user, base, merged, onChange } = (0, import_element6.useContext)(GlobalStylesContext);
1880    let sourceValue = merged;
1881    if (readFrom === "base") {
1882      sourceValue = base;
1883    } else if (readFrom === "user") {
1884      sourceValue = user;
1885    }
1886    const settingValue = (0, import_element6.useMemo)(
1887      () => getSetting(sourceValue, path, blockName),
1888      [sourceValue, path, blockName]
1889    );
1890    const setSettingValue = (0, import_element6.useCallback)(
1891      (newValue) => {
1892        const newGlobalStyles = setSetting(
1893          user,
1894          path,
1895          newValue,
1896          blockName
1897        );
1898        onChange(newGlobalStyles);
1899      },
1900      [user, onChange, path, blockName]
1901    );
1902    return [settingValue, setSettingValue];
1903  }
1904  var EMPTY_ARRAY2 = [];
1905  function hasThemeVariation({
1906    title,
1907    settings,
1908    styles
1909  }) {
1910    return title === (0, import_i18n.__)("Default") || Object.keys(settings || {}).length > 0 || Object.keys(styles || {}).length > 0;
1911  }
1912  function useCurrentMergeThemeStyleVariationsWithUserConfig(properties = []) {
1913    const { variationsFromTheme } = (0, import_data.useSelect)((select) => {
1914      const _variationsFromTheme = select(
1915        import_core_data.store
1916      ).__experimentalGetCurrentThemeGlobalStylesVariations?.();
1917      return {
1918        variationsFromTheme: _variationsFromTheme || EMPTY_ARRAY2
1919      };
1920    }, []);
1921    const { user: userVariation } = (0, import_element6.useContext)(GlobalStylesContext);
1922    return (0, import_element6.useMemo)(() => {
1923      const clonedUserVariation = structuredClone(userVariation);
1924      const userVariationWithoutProperties = removePropertiesFromObject(
1925        clonedUserVariation,
1926        properties
1927      );
1928      userVariationWithoutProperties.title = (0, import_i18n.__)("Default");
1929      const variationsWithPropertiesAndBase = variationsFromTheme.filter((variation) => {
1930        return isVariationWithProperties(variation, properties);
1931      }).map((variation) => {
1932        return mergeGlobalStyles(
1933          userVariationWithoutProperties,
1934          variation
1935        );
1936      });
1937      const variationsByProperties = [
1938        userVariationWithoutProperties,
1939        ...variationsWithPropertiesAndBase
1940      ];
1941      return variationsByProperties?.length ? variationsByProperties.filter(hasThemeVariation) : [];
1942    }, [properties, userVariation, variationsFromTheme]);
1943  }
1944  
1945  // packages/global-styles-ui/build-module/lock-unlock.mjs
1946  var import_private_apis = __toESM(require_private_apis(), 1);
1947  var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
1948    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
1949    "@wordpress/global-styles-ui"
1950  );
1951  
1952  // packages/global-styles-ui/build-module/root-menu.mjs
1953  var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
1954  var {
1955    useHasDimensionsPanel,
1956    useHasTypographyPanel,
1957    useHasColorPanel,
1958    useSettingsForBlockElement,
1959    useHasBackgroundPanel
1960  } = unlock(import_block_editor.privateApis);
1961  
1962  // packages/global-styles-ui/build-module/preview-styles.mjs
1963  var import_components7 = __toESM(require_components(), 1);
1964  
1965  // packages/global-styles-ui/build-module/preview-hooks.mjs
1966  function useStylesPreviewColors() {
1967    const [textColor = "black"] = useStyle("color.text");
1968    const [backgroundColor = "white"] = useStyle("color.background");
1969    const [headingColor = textColor] = useStyle(
1970      "elements.h1.color.text"
1971    );
1972    const [linkColor = headingColor] = useStyle(
1973      "elements.link.color.text"
1974    );
1975    const [buttonBackgroundColor = linkColor] = useStyle(
1976      "elements.button.color.background"
1977    );
1978    const [coreColors] = useSetting("color.palette.core") || [];
1979    const [themeColors] = useSetting("color.palette.theme") || [];
1980    const [customColors] = useSetting("color.palette.custom") || [];
1981    const paletteColors = (themeColors ?? []).concat(customColors ?? []).concat(coreColors ?? []);
1982    const textColorObject = paletteColors.filter(
1983      ({ color }) => color === textColor
1984    );
1985    const buttonBackgroundColorObject = paletteColors.filter(
1986      ({ color }) => color === buttonBackgroundColor
1987    );
1988    const highlightedColors = textColorObject.concat(buttonBackgroundColorObject).concat(paletteColors).filter(
1989      // we exclude these background color because it is already visible in the preview.
1990      ({ color }) => color !== backgroundColor
1991    ).slice(0, 2);
1992    return {
1993      paletteColors,
1994      highlightedColors
1995    };
1996  }
1997  
1998  // packages/global-styles-ui/build-module/typography-example.mjs
1999  var import_element7 = __toESM(require_element(), 1);
2000  var import_components4 = __toESM(require_components(), 1);
2001  var import_i18n3 = __toESM(require_i18n(), 1);
2002  
2003  // packages/global-styles-ui/build-module/font-library/utils/preview-styles.mjs
2004  function findNearest(input, numbers) {
2005    if (numbers.length === 0) {
2006      return null;
2007    }
2008    numbers.sort((a2, b2) => Math.abs(input - a2) - Math.abs(input - b2));
2009    return numbers[0];
2010  }
2011  function extractFontWeights(fontFaces) {
2012    const result = [];
2013    fontFaces.forEach((face) => {
2014      const weights = String(face.fontWeight).split(" ");
2015      if (weights.length === 2) {
2016        const start = parseInt(weights[0]);
2017        const end = parseInt(weights[1]);
2018        for (let i2 = start; i2 <= end; i2 += 100) {
2019          result.push(i2);
2020        }
2021      } else if (weights.length === 1) {
2022        result.push(parseInt(weights[0]));
2023      }
2024    });
2025    return result;
2026  }
2027  function formatFontFamily(input) {
2028    const regex = /^(?!generic\([ a-zA-Z\-]+\)$)(?!^[a-zA-Z\-]+$).+/;
2029    const output = input.trim();
2030    const formatItem = (item) => {
2031      item = item.trim();
2032      if (item.match(regex)) {
2033        item = item.replace(/^["']|["']$/g, "");
2034        return `"$item}"`;
2035      }
2036      return item;
2037    };
2038    if (output.includes(",")) {
2039      return output.split(",").map(formatItem).filter((item) => item !== "").join(", ");
2040    }
2041    return formatItem(output);
2042  }
2043  function formatFontFaceName(input) {
2044    if (!input) {
2045      return "";
2046    }
2047    let output = input.trim();
2048    if (output.includes(",")) {
2049      output = (output.split(",").find((item) => item.trim() !== "") ?? "").trim();
2050    }
2051    output = output.replace(/^["']|["']$/g, "");
2052    if (window.navigator.userAgent.toLowerCase().includes("firefox")) {
2053      output = `"$output}"`;
2054    }
2055    return output;
2056  }
2057  function getFamilyPreviewStyle(family) {
2058    const style = {
2059      fontFamily: formatFontFamily(family.fontFamily)
2060    };
2061    if (!("fontFace" in family) || !Array.isArray(family.fontFace)) {
2062      style.fontWeight = "400";
2063      style.fontStyle = "normal";
2064      return style;
2065    }
2066    if (family.fontFace) {
2067      const normalFaces = family.fontFace.filter(
2068        (face) => face?.fontStyle && face.fontStyle.toLowerCase() === "normal"
2069      );
2070      if (normalFaces.length > 0) {
2071        style.fontStyle = "normal";
2072        const normalWeights = extractFontWeights(normalFaces);
2073        const nearestWeight = findNearest(400, normalWeights);
2074        style.fontWeight = String(nearestWeight) || "400";
2075      } else {
2076        style.fontStyle = family.fontFace.length && family.fontFace[0].fontStyle || "normal";
2077        style.fontWeight = family.fontFace.length && String(family.fontFace[0].fontWeight) || "400";
2078      }
2079    }
2080    return style;
2081  }
2082  function getFacePreviewStyle(face) {
2083    return {
2084      fontFamily: formatFontFamily(face.fontFamily),
2085      fontStyle: face.fontStyle || "normal",
2086      fontWeight: face.fontWeight || "400"
2087    };
2088  }
2089  
2090  // packages/global-styles-ui/build-module/typography-example.mjs
2091  var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
2092  function PreviewTypography({
2093    fontSize,
2094    variation
2095  }) {
2096    const { base } = (0, import_element7.useContext)(GlobalStylesContext);
2097    let config = base;
2098    if (variation) {
2099      config = { ...base, ...variation };
2100    }
2101    const [textColor] = useStyle("color.text");
2102    const [bodyFontFamilies, headingFontFamilies] = getFontFamilies(config);
2103    const bodyPreviewStyle = bodyFontFamilies ? getFamilyPreviewStyle(bodyFontFamilies) : {};
2104    const headingPreviewStyle = headingFontFamilies ? getFamilyPreviewStyle(headingFontFamilies) : {};
2105    if (textColor) {
2106      bodyPreviewStyle.color = textColor;
2107      headingPreviewStyle.color = textColor;
2108    }
2109    if (fontSize) {
2110      bodyPreviewStyle.fontSize = fontSize;
2111      headingPreviewStyle.fontSize = fontSize;
2112    }
2113    return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2114      import_components4.__unstableMotion.div,
2115      {
2116        animate: {
2117          scale: 1,
2118          opacity: 1
2119        },
2120        initial: {
2121          scale: 0.1,
2122          opacity: 0
2123        },
2124        transition: {
2125          delay: 0.3,
2126          type: "tween"
2127        },
2128        style: {
2129          textAlign: "center",
2130          lineHeight: 1
2131        },
2132        children: [
2133          /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: headingPreviewStyle, children: (0, import_i18n3._x)("A", "Uppercase letter A") }),
2134          /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: bodyPreviewStyle, children: (0, import_i18n3._x)("a", "Lowercase letter A") })
2135        ]
2136      }
2137    );
2138  }
2139  
2140  // packages/global-styles-ui/build-module/highlighted-colors.mjs
2141  var import_components5 = __toESM(require_components(), 1);
2142  var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
2143  function HighlightedColors({
2144    normalizedColorSwatchSize,
2145    ratio
2146  }) {
2147    const { highlightedColors } = useStylesPreviewColors();
2148    const scaledSwatchSize = normalizedColorSwatchSize * ratio;
2149    return highlightedColors.map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
2150      import_components5.__unstableMotion.div,
2151      {
2152        style: {
2153          height: scaledSwatchSize,
2154          width: scaledSwatchSize,
2155          background: color,
2156          borderRadius: scaledSwatchSize / 2
2157        },
2158        animate: {
2159          scale: 1,
2160          opacity: 1
2161        },
2162        initial: {
2163          scale: 0.1,
2164          opacity: 0
2165        },
2166        transition: {
2167          delay: index === 1 ? 0.2 : 0.1
2168        }
2169      },
2170      `$slug}-$index}`
2171    ));
2172  }
2173  
2174  // packages/global-styles-ui/build-module/preview-wrapper.mjs
2175  var import_components6 = __toESM(require_components(), 1);
2176  var import_compose = __toESM(require_compose(), 1);
2177  var import_element8 = __toESM(require_element(), 1);
2178  var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
2179  var normalizedWidth = 248;
2180  var normalizedHeight = 152;
2181  var THROTTLE_OPTIONS = {
2182    leading: true,
2183    trailing: true
2184  };
2185  function PreviewWrapper({
2186    children,
2187    label,
2188    isFocused,
2189    withHoverView
2190  }) {
2191    const [backgroundColor = "white"] = useStyle("color.background");
2192    const [gradientValue] = useStyle("color.gradient");
2193    const disableMotion = (0, import_compose.useReducedMotion)();
2194    const [isHovered, setIsHovered] = (0, import_element8.useState)(false);
2195    const [containerResizeListener, { width }] = (0, import_compose.useResizeObserver)();
2196    const [throttledWidth, setThrottledWidthState] = (0, import_element8.useState)(width);
2197    const [ratioState, setRatioState] = (0, import_element8.useState)();
2198    const setThrottledWidth = (0, import_compose.useThrottle)(
2199      setThrottledWidthState,
2200      250,
2201      THROTTLE_OPTIONS
2202    );
2203    (0, import_element8.useLayoutEffect)(() => {
2204      if (width) {
2205        setThrottledWidth(width);
2206      }
2207    }, [width, setThrottledWidth]);
2208    (0, import_element8.useLayoutEffect)(() => {
2209      const newRatio = throttledWidth ? throttledWidth / normalizedWidth : 1;
2210      const ratioDiff = newRatio - (ratioState || 0);
2211      const isRatioDiffBigEnough = Math.abs(ratioDiff) > 0.1;
2212      if (isRatioDiffBigEnough || !ratioState) {
2213        setRatioState(newRatio);
2214      }
2215    }, [throttledWidth, ratioState]);
2216    const fallbackRatio = width ? width / normalizedWidth : 1;
2217    const ratio = ratioState ? ratioState : fallbackRatio;
2218    const isReady = !!width;
2219    return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
2220      /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { style: { position: "relative" }, children: containerResizeListener }),
2221      isReady && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2222        "div",
2223        {
2224          className: "global-styles-ui-preview__wrapper",
2225          style: {
2226            height: normalizedHeight * ratio
2227          },
2228          onMouseEnter: () => setIsHovered(true),
2229          onMouseLeave: () => setIsHovered(false),
2230          tabIndex: -1,
2231          children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
2232            import_components6.__unstableMotion.div,
2233            {
2234              style: {
2235                height: normalizedHeight * ratio,
2236                width: "100%",
2237                background: gradientValue ?? backgroundColor,
2238                cursor: withHoverView ? "pointer" : void 0
2239              },
2240              initial: "start",
2241              animate: (isHovered || isFocused) && !disableMotion && label ? "hover" : "start",
2242              children: [].concat(children).map(
2243                (child, key) => child({ ratio, key })
2244              )
2245            }
2246          )
2247        }
2248      )
2249    ] });
2250  }
2251  var preview_wrapper_default = PreviewWrapper;
2252  
2253  // packages/global-styles-ui/build-module/preview-styles.mjs
2254  var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
2255  var firstFrameVariants = {
2256    start: {
2257      scale: 1,
2258      opacity: 1
2259    },
2260    hover: {
2261      scale: 0,
2262      opacity: 0
2263    }
2264  };
2265  var midFrameVariants = {
2266    hover: {
2267      opacity: 1
2268    },
2269    start: {
2270      opacity: 0.5
2271    }
2272  };
2273  var secondFrameVariants = {
2274    hover: {
2275      scale: 1,
2276      opacity: 1
2277    },
2278    start: {
2279      scale: 0,
2280      opacity: 0
2281    }
2282  };
2283  function PreviewStyles({
2284    label,
2285    isFocused,
2286    withHoverView,
2287    variation
2288  }) {
2289    const [fontWeight] = useStyle("typography.fontWeight");
2290    const [fontFamily = "serif"] = useStyle(
2291      "typography.fontFamily"
2292    );
2293    const [headingFontFamily = fontFamily] = useStyle(
2294      "elements.h1.typography.fontFamily"
2295    );
2296    const [headingFontWeight = fontWeight] = useStyle(
2297      "elements.h1.typography.fontWeight"
2298    );
2299    const [textColor = "black"] = useStyle("color.text");
2300    const [headingColor = textColor] = useStyle(
2301      "elements.h1.color.text"
2302    );
2303    const { paletteColors } = useStylesPreviewColors();
2304    return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2305      preview_wrapper_default,
2306      {
2307        label,
2308        isFocused,
2309        withHoverView,
2310        children: [
2311          ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2312            import_components7.__unstableMotion.div,
2313            {
2314              variants: firstFrameVariants,
2315              style: {
2316                height: "100%",
2317                overflow: "hidden"
2318              },
2319              children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2320                import_components7.__experimentalHStack,
2321                {
2322                  spacing: 10 * ratio,
2323                  justify: "center",
2324                  style: {
2325                    height: "100%",
2326                    overflow: "hidden"
2327                  },
2328                  children: [
2329                    /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2330                      PreviewTypography,
2331                      {
2332                        fontSize: 65 * ratio,
2333                        variation
2334                      }
2335                    ),
2336                    /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_components7.__experimentalVStack, { spacing: 4 * ratio, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2337                      HighlightedColors,
2338                      {
2339                        normalizedColorSwatchSize: 32,
2340                        ratio
2341                      }
2342                    ) })
2343                  ]
2344                }
2345              )
2346            },
2347            key
2348          ),
2349          ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2350            import_components7.__unstableMotion.div,
2351            {
2352              variants: withHoverView ? midFrameVariants : void 0,
2353              style: {
2354                height: "100%",
2355                width: "100%",
2356                position: "absolute",
2357                top: 0,
2358                overflow: "hidden",
2359                filter: "blur(60px)",
2360                opacity: 0.1
2361              },
2362              children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2363                import_components7.__experimentalHStack,
2364                {
2365                  spacing: 0,
2366                  justify: "flex-start",
2367                  style: {
2368                    height: "100%",
2369                    overflow: "hidden"
2370                  },
2371                  children: paletteColors.slice(0, 4).map(({ color }, index) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2372                    "div",
2373                    {
2374                      style: {
2375                        height: "100%",
2376                        background: color,
2377                        flexGrow: 1
2378                      }
2379                    },
2380                    index
2381                  ))
2382                }
2383              )
2384            },
2385            key
2386          ),
2387          ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2388            import_components7.__unstableMotion.div,
2389            {
2390              variants: secondFrameVariants,
2391              style: {
2392                height: "100%",
2393                width: "100%",
2394                overflow: "hidden",
2395                position: "absolute",
2396                top: 0
2397              },
2398              children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2399                import_components7.__experimentalVStack,
2400                {
2401                  spacing: 3 * ratio,
2402                  justify: "center",
2403                  style: {
2404                    height: "100%",
2405                    overflow: "hidden",
2406                    padding: 10 * ratio,
2407                    boxSizing: "border-box"
2408                  },
2409                  children: label && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2410                    "div",
2411                    {
2412                      style: {
2413                        fontSize: 40 * ratio,
2414                        fontFamily: headingFontFamily,
2415                        color: headingColor,
2416                        fontWeight: headingFontWeight,
2417                        lineHeight: "1em",
2418                        textAlign: "center"
2419                      },
2420                      children: label
2421                    }
2422                  )
2423                }
2424              )
2425            },
2426            key
2427          )
2428        ]
2429      }
2430    );
2431  }
2432  var preview_styles_default = PreviewStyles;
2433  
2434  // packages/global-styles-ui/build-module/screen-root.mjs
2435  var import_jsx_runtime17 = __toESM(require_jsx_runtime(), 1);
2436  
2437  // packages/global-styles-ui/build-module/screen-block-list.mjs
2438  var import_blocks2 = __toESM(require_blocks(), 1);
2439  var import_i18n6 = __toESM(require_i18n(), 1);
2440  var import_components11 = __toESM(require_components(), 1);
2441  var import_data4 = __toESM(require_data(), 1);
2442  var import_element9 = __toESM(require_element(), 1);
2443  var import_block_editor2 = __toESM(require_block_editor(), 1);
2444  var import_compose2 = __toESM(require_compose(), 1);
2445  import { speak } from "@wordpress/a11y";
2446  
2447  // packages/global-styles-ui/build-module/variations/variations-panel.mjs
2448  var import_blocks = __toESM(require_blocks(), 1);
2449  var import_data3 = __toESM(require_data(), 1);
2450  var import_components9 = __toESM(require_components(), 1);
2451  var import_jsx_runtime18 = __toESM(require_jsx_runtime(), 1);
2452  function getFilteredBlockStyles(blockStyles, variations) {
2453    return blockStyles?.filter(
2454      (style) => style.source === "block" || variations.includes(style.name)
2455    ) || [];
2456  }
2457  function useBlockVariations(name2) {
2458    const blockStyles = (0, import_data3.useSelect)(
2459      (select) => {
2460        const { getBlockStyles } = select(import_blocks.store);
2461        return getBlockStyles(name2);
2462      },
2463      [name2]
2464    );
2465    const [variations] = useStyle("variations", name2);
2466    const variationNames = Object.keys(variations ?? {});
2467    return getFilteredBlockStyles(blockStyles, variationNames);
2468  }
2469  
2470  // packages/global-styles-ui/build-module/screen-header.mjs
2471  var import_components10 = __toESM(require_components(), 1);
2472  var import_i18n5 = __toESM(require_i18n(), 1);
2473  var import_jsx_runtime19 = __toESM(require_jsx_runtime(), 1);
2474  
2475  // packages/global-styles-ui/build-module/screen-block-list.mjs
2476  var import_jsx_runtime20 = __toESM(require_jsx_runtime(), 1);
2477  var {
2478    useHasDimensionsPanel: useHasDimensionsPanel2,
2479    useHasTypographyPanel: useHasTypographyPanel2,
2480    useHasBorderPanel,
2481    useSettingsForBlockElement: useSettingsForBlockElement2,
2482    useHasColorPanel: useHasColorPanel2
2483  } = unlock(import_block_editor2.privateApis);
2484  function useSortedBlockTypes() {
2485    const blockItems = (0, import_data4.useSelect)(
2486      (select) => select(import_blocks2.store).getBlockTypes(),
2487      []
2488    );
2489    const groupByType = (blocks, block) => {
2490      const { core, noncore } = blocks;
2491      const type = block.name.startsWith("core/") ? core : noncore;
2492      type.push(block);
2493      return blocks;
2494    };
2495    const { core: coreItems, noncore: nonCoreItems } = blockItems.reduce(
2496      groupByType,
2497      { core: [], noncore: [] }
2498    );
2499    return [...coreItems, ...nonCoreItems];
2500  }
2501  function useBlockHasGlobalStyles(blockName) {
2502    const [rawSettings] = useSetting("", blockName);
2503    const settings = useSettingsForBlockElement2(rawSettings, blockName);
2504    const hasTypographyPanel = useHasTypographyPanel2(settings);
2505    const hasColorPanel = useHasColorPanel2(settings);
2506    const hasBorderPanel = useHasBorderPanel(settings);
2507    const hasDimensionsPanel = useHasDimensionsPanel2(settings);
2508    const hasLayoutPanel = hasBorderPanel || hasDimensionsPanel;
2509    const hasVariationsPanel = !!useBlockVariations(blockName)?.length;
2510    const hasGlobalStyles = hasTypographyPanel || hasColorPanel || hasLayoutPanel || hasVariationsPanel;
2511    return hasGlobalStyles;
2512  }
2513  function BlockMenuItem({ block }) {
2514    const hasBlockMenuItem = useBlockHasGlobalStyles(block.name);
2515    if (!hasBlockMenuItem) {
2516      return null;
2517    }
2518    return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2519      NavigationButtonAsItem,
2520      {
2521        path: "/blocks/" + encodeURIComponent(block.name),
2522        children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_components11.__experimentalHStack, { justify: "flex-start", children: [
2523          /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_block_editor2.BlockIcon, { icon: block.icon }),
2524          /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components11.FlexItem, { children: block.title })
2525        ] })
2526      }
2527    );
2528  }
2529  function BlockList({ filterValue }) {
2530    const sortedBlockTypes = useSortedBlockTypes();
2531    const debouncedSpeak = (0, import_compose2.useDebounce)(speak, 500);
2532    const { isMatchingSearchTerm } = (0, import_data4.useSelect)(import_blocks2.store);
2533    const filteredBlockTypes = !filterValue ? sortedBlockTypes : sortedBlockTypes.filter(
2534      (blockType) => isMatchingSearchTerm(blockType, filterValue)
2535    );
2536    const blockTypesListRef = (0, import_element9.useRef)(null);
2537    (0, import_element9.useEffect)(() => {
2538      if (!filterValue) {
2539        return;
2540      }
2541      const count = blockTypesListRef.current?.childElementCount || 0;
2542      const resultsFoundMessage = (0, import_i18n6.sprintf)(
2543        /* translators: %d: number of results. */
2544        (0, import_i18n6._n)("%d result found.", "%d results found.", count),
2545        count
2546      );
2547      debouncedSpeak(resultsFoundMessage, "polite");
2548    }, [filterValue, debouncedSpeak]);
2549    return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2550      "div",
2551      {
2552        ref: blockTypesListRef,
2553        className: "global-styles-ui-block-types-item-list",
2554        role: "list",
2555        children: filteredBlockTypes.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_components11.__experimentalText, { align: "center", as: "p", children: (0, import_i18n6.__)("No blocks found.") }) : filteredBlockTypes.map((block) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2556          BlockMenuItem,
2557          {
2558            block
2559          },
2560          "menu-itemblock-" + block.name
2561        ))
2562      }
2563    );
2564  }
2565  var MemoizedBlockList = (0, import_element9.memo)(BlockList);
2566  
2567  // packages/global-styles-ui/build-module/screen-block.mjs
2568  var import_blocks4 = __toESM(require_blocks(), 1);
2569  var import_block_editor4 = __toESM(require_block_editor(), 1);
2570  var import_element11 = __toESM(require_element(), 1);
2571  var import_data5 = __toESM(require_data(), 1);
2572  var import_core_data3 = __toESM(require_core_data(), 1);
2573  var import_components14 = __toESM(require_components(), 1);
2574  var import_i18n7 = __toESM(require_i18n(), 1);
2575  
2576  // packages/global-styles-ui/build-module/block-preview-panel.mjs
2577  var import_block_editor3 = __toESM(require_block_editor(), 1);
2578  var import_blocks3 = __toESM(require_blocks(), 1);
2579  var import_components12 = __toESM(require_components(), 1);
2580  var import_element10 = __toESM(require_element(), 1);
2581  var import_jsx_runtime21 = __toESM(require_jsx_runtime(), 1);
2582  
2583  // packages/global-styles-ui/build-module/subtitle.mjs
2584  var import_components13 = __toESM(require_components(), 1);
2585  var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
2586  function Subtitle({ children, level = 2 }) {
2587    return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_components13.__experimentalHeading, { className: "global-styles-ui-subtitle", level, children });
2588  }
2589  
2590  // packages/global-styles-ui/build-module/screen-block.mjs
2591  var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
2592  var {
2593    useHasDimensionsPanel: useHasDimensionsPanel3,
2594    useHasTypographyPanel: useHasTypographyPanel3,
2595    useHasBorderPanel: useHasBorderPanel2,
2596    useSettingsForBlockElement: useSettingsForBlockElement3,
2597    useHasColorPanel: useHasColorPanel3,
2598    useHasFiltersPanel,
2599    useHasImageSettingsPanel,
2600    useHasBackgroundPanel: useHasBackgroundPanel2,
2601    BackgroundPanel: StylesBackgroundPanel,
2602    BorderPanel: StylesBorderPanel,
2603    ColorPanel: StylesColorPanel,
2604    TypographyPanel: StylesTypographyPanel,
2605    DimensionsPanel: StylesDimensionsPanel,
2606    FiltersPanel: StylesFiltersPanel,
2607    ImageSettingsPanel,
2608    AdvancedPanel: StylesAdvancedPanel
2609  } = unlock(import_block_editor4.privateApis);
2610  
2611  // packages/global-styles-ui/build-module/screen-typography.mjs
2612  var import_i18n21 = __toESM(require_i18n(), 1);
2613  var import_components34 = __toESM(require_components(), 1);
2614  var import_element22 = __toESM(require_element(), 1);
2615  
2616  // packages/global-styles-ui/build-module/screen-body.mjs
2617  var import_components15 = __toESM(require_components(), 1);
2618  var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
2619  
2620  // packages/global-styles-ui/build-module/typography-elements.mjs
2621  var import_i18n8 = __toESM(require_i18n(), 1);
2622  var import_components16 = __toESM(require_components(), 1);
2623  var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
2624  
2625  // packages/global-styles-ui/build-module/variations/variations-typography.mjs
2626  var import_components19 = __toESM(require_components(), 1);
2627  
2628  // packages/global-styles-ui/build-module/preview-typography.mjs
2629  var import_components17 = __toESM(require_components(), 1);
2630  var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
2631  var StylesPreviewTypography = ({
2632    variation,
2633    isFocused,
2634    withHoverView
2635  }) => {
2636    return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2637      preview_wrapper_default,
2638      {
2639        label: variation.title,
2640        isFocused,
2641        withHoverView,
2642        children: ({ ratio, key }) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2643          import_components17.__experimentalHStack,
2644          {
2645            spacing: 10 * ratio,
2646            justify: "center",
2647            style: {
2648              height: "100%",
2649              overflow: "hidden"
2650            },
2651            children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2652              PreviewTypography,
2653              {
2654                variation,
2655                fontSize: 85 * ratio
2656              }
2657            )
2658          },
2659          key
2660        )
2661      }
2662    );
2663  };
2664  var preview_typography_default = StylesPreviewTypography;
2665  
2666  // packages/global-styles-ui/build-module/variations/variation.mjs
2667  var import_components18 = __toESM(require_components(), 1);
2668  var import_element12 = __toESM(require_element(), 1);
2669  var import_keycodes = __toESM(require_keycodes(), 1);
2670  var import_i18n9 = __toESM(require_i18n(), 1);
2671  var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
2672  function Variation({
2673    variation,
2674    children,
2675    isPill = false,
2676    properties,
2677    showTooltip = false
2678  }) {
2679    const [isFocused, setIsFocused] = (0, import_element12.useState)(false);
2680    const {
2681      base,
2682      user,
2683      onChange: setUserConfig
2684    } = (0, import_element12.useContext)(GlobalStylesContext);
2685    const context = (0, import_element12.useMemo)(() => {
2686      let merged = mergeGlobalStyles(base, variation);
2687      if (properties) {
2688        merged = filterObjectByProperties(merged, properties);
2689      }
2690      return {
2691        user: variation,
2692        base,
2693        merged,
2694        onChange: () => {
2695        }
2696      };
2697    }, [variation, base, properties]);
2698    const selectVariation = () => setUserConfig(variation);
2699    const selectOnEnter = (event) => {
2700      if (event.keyCode === import_keycodes.ENTER) {
2701        event.preventDefault();
2702        selectVariation();
2703      }
2704    };
2705    const isActive = (0, import_element12.useMemo)(
2706      () => areGlobalStylesEqual(user, variation),
2707      [user, variation]
2708    );
2709    let label = variation?.title;
2710    if (variation?.description) {
2711      label = (0, import_i18n9.sprintf)(
2712        /* translators: 1: variation title. 2: variation description. */
2713        (0, import_i18n9._x)("%1$s (%2$s)", "variation label"),
2714        variation?.title,
2715        variation?.description
2716      );
2717    }
2718    const content = /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2719      "div",
2720      {
2721        className: clsx_default("global-styles-ui-variations_item", {
2722          "is-active": isActive
2723        }),
2724        role: "button",
2725        onClick: selectVariation,
2726        onKeyDown: selectOnEnter,
2727        tabIndex: 0,
2728        "aria-label": label,
2729        "aria-current": isActive,
2730        onFocus: () => setIsFocused(true),
2731        onBlur: () => setIsFocused(false),
2732        children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
2733          "div",
2734          {
2735            className: clsx_default("global-styles-ui-variations_item-preview", {
2736              "is-pill": isPill
2737            }),
2738            children: children(isFocused)
2739          }
2740        )
2741      }
2742    );
2743    return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(GlobalStylesContext.Provider, { value: context, children: showTooltip ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_components18.Tooltip, { text: variation?.title, children: content }) : content });
2744  }
2745  
2746  // packages/global-styles-ui/build-module/variations/variations-typography.mjs
2747  var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
2748  var propertiesToFilter = ["typography"];
2749  function TypographyVariations({
2750    title,
2751    gap = 2
2752  }) {
2753    const typographyVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter);
2754    if (typographyVariations?.length <= 1) {
2755      return null;
2756    }
2757    return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_components19.__experimentalVStack, { spacing: 3, children: [
2758      title && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Subtitle, { level: 3, children: title }),
2759      /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2760        import_components19.__experimentalGrid,
2761        {
2762          columns: 3,
2763          gap,
2764          className: "global-styles-ui-style-variations-container",
2765          children: typographyVariations.map(
2766            (variation, index) => {
2767              return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2768                Variation,
2769                {
2770                  variation,
2771                  properties: propertiesToFilter,
2772                  showTooltip: true,
2773                  children: () => /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
2774                    preview_typography_default,
2775                    {
2776                      variation
2777                    }
2778                  )
2779                },
2780                index
2781              );
2782            }
2783          )
2784        }
2785      )
2786    ] });
2787  }
2788  
2789  // packages/global-styles-ui/build-module/font-families.mjs
2790  var import_i18n19 = __toESM(require_i18n(), 1);
2791  var import_components32 = __toESM(require_components(), 1);
2792  var import_element21 = __toESM(require_element(), 1);
2793  
2794  // packages/global-styles-ui/build-module/font-library/context.mjs
2795  var import_element13 = __toESM(require_element(), 1);
2796  var import_data6 = __toESM(require_data(), 1);
2797  var import_core_data5 = __toESM(require_core_data(), 1);
2798  var import_i18n11 = __toESM(require_i18n(), 1);
2799  
2800  // packages/global-styles-ui/build-module/font-library/api.mjs
2801  var import_api_fetch = __toESM(require_api_fetch(), 1);
2802  var import_core_data4 = __toESM(require_core_data(), 1);
2803  var FONT_FAMILIES_URL = "/wp/v2/font-families";
2804  function invalidateFontFamilyCache(registry) {
2805    const { receiveEntityRecords } = registry.dispatch(import_core_data4.store);
2806    receiveEntityRecords(
2807      "postType",
2808      "wp_font_family",
2809      [],
2810      void 0,
2811      true
2812      // invalidateCache
2813    );
2814  }
2815  async function fetchInstallFontFamily(data, registry) {
2816    const config = {
2817      path: FONT_FAMILIES_URL,
2818      method: "POST",
2819      body: data
2820    };
2821    const response = await (0, import_api_fetch.default)(config);
2822    invalidateFontFamilyCache(registry);
2823    return {
2824      id: response.id,
2825      ...response.font_family_settings,
2826      fontFace: []
2827    };
2828  }
2829  async function fetchInstallFontFace(fontFamilyId, data, registry) {
2830    const config = {
2831      path: `$FONT_FAMILIES_URL}/$fontFamilyId}/font-faces`,
2832      method: "POST",
2833      body: data
2834    };
2835    const response = await (0, import_api_fetch.default)(config);
2836    invalidateFontFamilyCache(registry);
2837    return {
2838      id: response.id,
2839      ...response.font_face_settings
2840    };
2841  }
2842  
2843  // packages/global-styles-ui/build-module/font-library/utils/index.mjs
2844  var import_components20 = __toESM(require_components(), 1);
2845  
2846  // packages/global-styles-ui/build-module/font-library/utils/constants.mjs
2847  var import_i18n10 = __toESM(require_i18n(), 1);
2848  var ALLOWED_FILE_EXTENSIONS = ["otf", "ttf", "woff", "woff2"];
2849  var FONT_WEIGHTS = {
2850    100: (0, import_i18n10._x)("Thin", "font weight"),
2851    200: (0, import_i18n10._x)("Extra-light", "font weight"),
2852    300: (0, import_i18n10._x)("Light", "font weight"),
2853    400: (0, import_i18n10._x)("Normal", "font weight"),
2854    500: (0, import_i18n10._x)("Medium", "font weight"),
2855    600: (0, import_i18n10._x)("Semi-bold", "font weight"),
2856    700: (0, import_i18n10._x)("Bold", "font weight"),
2857    800: (0, import_i18n10._x)("Extra-bold", "font weight"),
2858    900: (0, import_i18n10._x)("Black", "font weight")
2859  };
2860  var FONT_STYLES = {
2861    normal: (0, import_i18n10._x)("Normal", "font style"),
2862    italic: (0, import_i18n10._x)("Italic", "font style")
2863  };
2864  
2865  // packages/global-styles-ui/build-module/font-library/utils/index.mjs
2866  var { File } = window;
2867  var { kebabCase } = unlock(import_components20.privateApis);
2868  function setUIValuesNeeded(font2, extraValues = {}) {
2869    if (!font2.name && (font2.fontFamily || font2.slug)) {
2870      font2.name = font2.fontFamily || font2.slug;
2871    }
2872    return {
2873      ...font2,
2874      ...extraValues
2875    };
2876  }
2877  function isUrlEncoded(url) {
2878    if (typeof url !== "string") {
2879      return false;
2880    }
2881    return url !== decodeURIComponent(url);
2882  }
2883  function getFontFaceVariantName(face) {
2884    const weightName = FONT_WEIGHTS[face.fontWeight ?? ""] || face.fontWeight;
2885    const styleName = face.fontStyle === "normal" ? "" : FONT_STYLES[face.fontStyle ?? ""] || face.fontStyle;
2886    return `$weightName} $styleName}`;
2887  }
2888  function mergeFontFaces(existing = [], incoming = []) {
2889    const map = /* @__PURE__ */ new Map();
2890    for (const face of existing) {
2891      map.set(`$face.fontWeight}$face.fontStyle}`, face);
2892    }
2893    for (const face of incoming) {
2894      map.set(`$face.fontWeight}$face.fontStyle}`, face);
2895    }
2896    return Array.from(map.values());
2897  }
2898  function mergeFontFamilies(existing = [], incoming = []) {
2899    const map = /* @__PURE__ */ new Map();
2900    for (const font2 of existing) {
2901      map.set(font2.slug, { ...font2 });
2902    }
2903    for (const font2 of incoming) {
2904      if (map.has(font2.slug)) {
2905        const { fontFace: incomingFontFaces, ...restIncoming } = font2;
2906        const existingFont = map.get(font2.slug);
2907        const mergedFontFaces = mergeFontFaces(
2908          existingFont.fontFace,
2909          incomingFontFaces
2910        );
2911        map.set(font2.slug, {
2912          ...restIncoming,
2913          fontFace: mergedFontFaces
2914        });
2915      } else {
2916        map.set(font2.slug, { ...font2 });
2917      }
2918    }
2919    return Array.from(map.values());
2920  }
2921  async function loadFontFaceInBrowser(fontFace, source, addTo = "all") {
2922    let dataSource;
2923    if (typeof source === "string") {
2924      dataSource = `url($source})`;
2925    } else if (source instanceof File) {
2926      dataSource = await source.arrayBuffer();
2927    } else {
2928      return;
2929    }
2930    const newFont = new window.FontFace(
2931      formatFontFaceName(fontFace.fontFamily),
2932      dataSource,
2933      {
2934        style: fontFace.fontStyle,
2935        weight: String(fontFace.fontWeight)
2936      }
2937    );
2938    const loadedFace = await newFont.load();
2939    if (addTo === "document" || addTo === "all") {
2940      document.fonts.add(loadedFace);
2941    }
2942    if (addTo === "iframe" || addTo === "all") {
2943      const iframe = document.querySelector(
2944        'iframe[name="editor-canvas"]'
2945      );
2946      if (iframe?.contentDocument) {
2947        iframe.contentDocument.fonts.add(loadedFace);
2948      }
2949    }
2950  }
2951  function unloadFontFaceInBrowser(fontFace, removeFrom = "all") {
2952    const unloadFontFace = (fonts) => {
2953      fonts.forEach((f2) => {
2954        if (f2.family === formatFontFaceName(fontFace?.fontFamily) && f2.weight === fontFace?.fontWeight && f2.style === fontFace?.fontStyle) {
2955          fonts.delete(f2);
2956        }
2957      });
2958    };
2959    if (removeFrom === "document" || removeFrom === "all") {
2960      unloadFontFace(document.fonts);
2961    }
2962    if (removeFrom === "iframe" || removeFrom === "all") {
2963      const iframe = document.querySelector(
2964        'iframe[name="editor-canvas"]'
2965      );
2966      if (iframe?.contentDocument) {
2967        unloadFontFace(iframe.contentDocument.fonts);
2968      }
2969    }
2970  }
2971  function getDisplaySrcFromFontFace(input) {
2972    if (!input) {
2973      return;
2974    }
2975    let src;
2976    if (Array.isArray(input)) {
2977      src = input[0];
2978    } else {
2979      src = input;
2980    }
2981    if (src.startsWith("file:.")) {
2982      return;
2983    }
2984    if (!isUrlEncoded(src)) {
2985      src = encodeURI(src);
2986    }
2987    return src;
2988  }
2989  function makeFontFamilyFormData(fontFamily) {
2990    const formData = new FormData();
2991    const { fontFace, category, ...familyWithValidParameters } = fontFamily;
2992    const fontFamilySettings = {
2993      ...familyWithValidParameters,
2994      slug: kebabCase(fontFamily.slug)
2995    };
2996    formData.append(
2997      "font_family_settings",
2998      JSON.stringify(fontFamilySettings)
2999    );
3000    return formData;
3001  }
3002  function makeFontFacesFormData(font2) {
3003    const fontFacesFormData = (font2?.fontFace ?? []).map(
3004      (item, faceIndex) => {
3005        const face = { ...item };
3006        const formData = new FormData();
3007        if (face.file) {
3008          const files = Array.isArray(face.file) ? face.file : [face.file];
3009          const src = [];
3010          files.forEach((file, key) => {
3011            const fileId = `file-$faceIndex}-$key}`;
3012            formData.append(fileId, file, file.name);
3013            src.push(fileId);
3014          });
3015          face.src = src.length === 1 ? src[0] : src;
3016          delete face.file;
3017          formData.append("font_face_settings", JSON.stringify(face));
3018        } else {
3019          formData.append("font_face_settings", JSON.stringify(face));
3020        }
3021        return formData;
3022      }
3023    );
3024    return fontFacesFormData;
3025  }
3026  async function batchInstallFontFaces(fontFamilyId, fontFacesData, registry) {
3027    const responses = [];
3028    for (const faceData of fontFacesData) {
3029      try {
3030        const response = await fetchInstallFontFace(
3031          fontFamilyId,
3032          faceData,
3033          registry
3034        );
3035        responses.push({ status: "fulfilled", value: response });
3036      } catch (error) {
3037        responses.push({ status: "rejected", reason: error });
3038      }
3039    }
3040    const results = {
3041      errors: [],
3042      successes: []
3043    };
3044    responses.forEach((result, index) => {
3045      if (result.status === "fulfilled" && result.value) {
3046        const response = result.value;
3047        results.successes.push(response);
3048      } else if (result.reason) {
3049        results.errors.push({
3050          data: fontFacesData[index],
3051          message: result.reason.message
3052        });
3053      }
3054    });
3055    return results;
3056  }
3057  async function downloadFontFaceAssets(src) {
3058    src = Array.isArray(src) ? src : [src];
3059    const files = await Promise.all(
3060      src.map(async (url) => {
3061        return fetch(new Request(url)).then((response) => {
3062          if (!response.ok) {
3063            throw new Error(
3064              `Error downloading font face asset from $url}. Server responded with status: $response.status}`
3065            );
3066          }
3067          return response.blob();
3068        }).then((blob) => {
3069          const filename = url.split("/").pop();
3070          const file = new File([blob], filename, {
3071            type: blob.type
3072          });
3073          return file;
3074        });
3075      })
3076    );
3077    return files.length === 1 ? files[0] : files;
3078  }
3079  function checkFontFaceInstalled(fontFace, collection) {
3080    return -1 !== collection.findIndex((collectionFontFace) => {
3081      return collectionFontFace.fontWeight === fontFace.fontWeight && collectionFontFace.fontStyle === fontFace.fontStyle;
3082    });
3083  }
3084  
3085  // packages/global-styles-ui/build-module/font-library/utils/set-immutably.mjs
3086  function setImmutably2(object, path, value) {
3087    path = Array.isArray(path) ? [...path] : [path];
3088    object = Array.isArray(object) ? [...object] : { ...object };
3089    const leaf = path.pop();
3090    let prev = object;
3091    for (const key of path) {
3092      const lvl = prev[key];
3093      prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };
3094    }
3095    prev[leaf] = value;
3096    return object;
3097  }
3098  
3099  // packages/global-styles-ui/build-module/font-library/utils/toggleFont.mjs
3100  function toggleFont(font2, face, initialfonts = []) {
3101    const isFontActivated = (f2) => f2.slug === font2.slug;
3102    const getActivatedFont = (fonts) => fonts.find(isFontActivated);
3103    const toggleEntireFontFamily = (activatedFont2) => {
3104      if (!activatedFont2) {
3105        return [...initialfonts, font2];
3106      }
3107      return initialfonts.filter(
3108        (f2) => !isFontActivated(f2)
3109      );
3110    };
3111    const toggleFontVariant = (activatedFont2) => {
3112      const isFaceActivated = (f2) => f2.fontWeight === face.fontWeight && f2.fontStyle === face.fontStyle;
3113      if (!activatedFont2) {
3114        return [...initialfonts, { ...font2, fontFace: [face] }];
3115      }
3116      let newFontFaces = activatedFont2.fontFace || [];
3117      if (newFontFaces.find(isFaceActivated)) {
3118        newFontFaces = newFontFaces.filter(
3119          (f2) => !isFaceActivated(f2)
3120        );
3121      } else {
3122        newFontFaces = [...newFontFaces, face];
3123      }
3124      if (newFontFaces.length === 0) {
3125        return initialfonts.filter(
3126          (f2) => !isFontActivated(f2)
3127        );
3128      }
3129      return initialfonts.map(
3130        (f2) => isFontActivated(f2) ? { ...f2, fontFace: newFontFaces } : f2
3131      );
3132    };
3133    const activatedFont = getActivatedFont(initialfonts);
3134    if (!face) {
3135      return toggleEntireFontFamily(activatedFont);
3136    }
3137    return toggleFontVariant(activatedFont);
3138  }
3139  
3140  // packages/global-styles-ui/build-module/font-library/context.mjs
3141  var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
3142  var FontLibraryContext = (0, import_element13.createContext)(
3143    {}
3144  );
3145  FontLibraryContext.displayName = "FontLibraryContext";
3146  function FontLibraryProvider({ children }) {
3147    const registry = (0, import_data6.useRegistry)();
3148    const { saveEntityRecord, deleteEntityRecord } = (0, import_data6.useDispatch)(import_core_data5.store);
3149    const { globalStylesId } = (0, import_data6.useSelect)((select) => {
3150      const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data5.store);
3151      return { globalStylesId: __experimentalGetCurrentGlobalStylesId() };
3152    }, []);
3153    const globalStyles = (0, import_core_data5.useEntityRecord)(
3154      "root",
3155      "globalStyles",
3156      globalStylesId
3157    );
3158    const [isInstalling, setIsInstalling] = (0, import_element13.useState)(false);
3159    const { records: libraryPosts = [], isResolving: isResolvingLibrary } = (0, import_core_data5.useEntityRecords)(
3160      "postType",
3161      "wp_font_family",
3162      {
3163        _embed: true
3164      }
3165    );
3166    const libraryFonts = (libraryPosts || []).map((fontFamilyPost) => {
3167      return {
3168        id: fontFamilyPost.id,
3169        ...fontFamilyPost.font_family_settings || {},
3170        fontFace: fontFamilyPost?._embedded?.font_faces?.map(
3171          (face) => face.font_face_settings
3172        ) || []
3173      };
3174    }) || [];
3175    const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies");
3176    const saveFontFamilies = async (fonts) => {
3177      if (!globalStyles.record) {
3178        return;
3179      }
3180      const updatedGlobalStyles = globalStyles.record;
3181      const finalGlobalStyles = setImmutably2(
3182        updatedGlobalStyles ?? {},
3183        ["settings", "typography", "fontFamilies"],
3184        fonts
3185      );
3186      await saveEntityRecord("root", "globalStyles", finalGlobalStyles);
3187    };
3188    const [modalTabOpen, setModalTabOpen] = (0, import_element13.useState)("");
3189    const [libraryFontSelected, setLibraryFontSelected] = (0, import_element13.useState)(void 0);
3190    const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
3191    const customFonts = fontFamilies?.custom ? fontFamilies.custom.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
3192    const baseCustomFonts = libraryFonts ? libraryFonts.map((f2) => setUIValuesNeeded(f2, { source: "custom" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
3193    (0, import_element13.useEffect)(() => {
3194      if (!modalTabOpen) {
3195        setLibraryFontSelected(void 0);
3196      }
3197    }, [modalTabOpen]);
3198    const handleSetLibraryFontSelected = (font2) => {
3199      if (!font2) {
3200        setLibraryFontSelected(void 0);
3201        return;
3202      }
3203      const fonts = font2.source === "theme" ? themeFonts : baseCustomFonts;
3204      const fontSelected = fonts.find((f2) => f2.slug === font2.slug);
3205      setLibraryFontSelected({
3206        ...fontSelected || font2,
3207        source: font2.source
3208      });
3209    };
3210    const [loadedFontUrls] = (0, import_element13.useState)(/* @__PURE__ */ new Set());
3211    const getAvailableFontsOutline = (availableFontFamilies) => {
3212      const outline = availableFontFamilies.reduce(
3213        (acc, font2) => {
3214          const availableFontFaces = font2?.fontFace && font2.fontFace?.length > 0 ? font2?.fontFace.map(
3215            (face) => `$face.fontStyle ?? ""}$face.fontWeight ?? ""}`
3216          ) : ["normal400"];
3217          acc[font2.slug] = availableFontFaces;
3218          return acc;
3219        },
3220        {}
3221      );
3222      return outline;
3223    };
3224    const getActivatedFontsOutline = (source) => {
3225      switch (source) {
3226        case "theme":
3227          return getAvailableFontsOutline(themeFonts);
3228        case "custom":
3229        default:
3230          return getAvailableFontsOutline(customFonts);
3231      }
3232    };
3233    const isFontActivated = (slug, style, weight, source) => {
3234      if (!style && !weight) {
3235        return !!getActivatedFontsOutline(source)[slug];
3236      }
3237      return !!getActivatedFontsOutline(source)[slug]?.includes(
3238        (style ?? "") + (weight ?? "")
3239      );
3240    };
3241    const getFontFacesActivated = (slug, source) => {
3242      return getActivatedFontsOutline(source)[slug] || [];
3243    };
3244    async function installFonts(fontFamiliesToInstall) {
3245      setIsInstalling(true);
3246      try {
3247        const fontFamiliesToActivate = [];
3248        let installationErrors = [];
3249        for (const fontFamilyToInstall of fontFamiliesToInstall) {
3250          let isANewFontFamily = false;
3251          const fontFamilyRecords = await (0, import_data6.resolveSelect)(
3252            import_core_data5.store
3253          ).getEntityRecords(
3254            "postType",
3255            "wp_font_family",
3256            {
3257              slug: fontFamilyToInstall.slug,
3258              per_page: 1,
3259              _embed: true
3260            }
3261          );
3262          const fontFamilyPost = fontFamilyRecords && fontFamilyRecords.length > 0 ? fontFamilyRecords[0] : null;
3263          let installedFontFamily = fontFamilyPost ? {
3264            id: fontFamilyPost.id,
3265            ...fontFamilyPost.font_family_settings,
3266            fontFace: (fontFamilyPost?._embedded?.font_faces ?? []).map(
3267              (face) => face.font_face_settings
3268            ) || []
3269          } : null;
3270          if (!installedFontFamily) {
3271            isANewFontFamily = true;
3272            installedFontFamily = await fetchInstallFontFamily(
3273              makeFontFamilyFormData(fontFamilyToInstall),
3274              registry
3275            );
3276          }
3277          const alreadyInstalledFontFaces = installedFontFamily.fontFace && fontFamilyToInstall.fontFace ? installedFontFamily.fontFace.filter(
3278            (fontFaceToInstall) => fontFaceToInstall && fontFamilyToInstall.fontFace && checkFontFaceInstalled(
3279              fontFaceToInstall,
3280              fontFamilyToInstall.fontFace
3281            )
3282          ) : [];
3283          if (installedFontFamily.fontFace && fontFamilyToInstall.fontFace) {
3284            fontFamilyToInstall.fontFace = fontFamilyToInstall.fontFace.filter(
3285              (fontFaceToInstall) => !checkFontFaceInstalled(
3286                fontFaceToInstall,
3287                installedFontFamily.fontFace
3288              )
3289            );
3290          }
3291          let successfullyInstalledFontFaces = [];
3292          let unsuccessfullyInstalledFontFaces = [];
3293          if (fontFamilyToInstall?.fontFace?.length ?? 0 > 0) {
3294            const response = await batchInstallFontFaces(
3295              // @ts-expect-error - Type mismatch: WpFontFamily.id can be number | string, but batchInstallFontFaces expects only string.
3296              installedFontFamily.id,
3297              makeFontFacesFormData(
3298                fontFamilyToInstall
3299              ),
3300              registry
3301            );
3302            successfullyInstalledFontFaces = response?.successes;
3303            unsuccessfullyInstalledFontFaces = response?.errors;
3304          }
3305          if (successfullyInstalledFontFaces?.length > 0 || alreadyInstalledFontFaces?.length > 0) {
3306            installedFontFamily.fontFace = [
3307              ...successfullyInstalledFontFaces
3308            ];
3309            fontFamiliesToActivate.push(installedFontFamily);
3310          }
3311          if (installedFontFamily && !fontFamilyToInstall?.fontFace?.length) {
3312            fontFamiliesToActivate.push(installedFontFamily);
3313          }
3314          if (isANewFontFamily && (fontFamilyToInstall?.fontFace?.length ?? 0) > 0 && successfullyInstalledFontFaces?.length === 0) {
3315            await deleteEntityRecord(
3316              "postType",
3317              "wp_font_family",
3318              installedFontFamily.id,
3319              { force: true }
3320            );
3321          }
3322          installationErrors = installationErrors.concat(
3323            unsuccessfullyInstalledFontFaces
3324          );
3325        }
3326        const installationErrorMessages = installationErrors.reduce(
3327          (unique, item) => unique.includes(item.message) ? unique : [...unique, item.message],
3328          []
3329        );
3330        if (fontFamiliesToActivate.length > 0) {
3331          const activeFonts = activateCustomFontFamilies(
3332            // @ts-expect-error - Type mismatch: items may have id as number | string, but FontFamily.id should be string | undefined.
3333            fontFamiliesToActivate
3334          );
3335          await saveFontFamilies(activeFonts);
3336        }
3337        if (installationErrorMessages.length > 0) {
3338          const installError = new Error((0, import_i18n11.__)("There was an error installing fonts."));
3339          installError.installationErrors = installationErrorMessages;
3340          throw installError;
3341        }
3342      } finally {
3343        setIsInstalling(false);
3344      }
3345    }
3346    async function uninstallFontFamily(fontFamilyToUninstall) {
3347      if (!fontFamilyToUninstall?.id) {
3348        throw new Error((0, import_i18n11.__)("Font family to uninstall is not defined."));
3349      }
3350      try {
3351        await deleteEntityRecord(
3352          "postType",
3353          "wp_font_family",
3354          fontFamilyToUninstall.id,
3355          { force: true }
3356        );
3357        const activeFonts = deactivateFontFamily(fontFamilyToUninstall);
3358        await saveFontFamilies(activeFonts);
3359        return { deleted: true };
3360      } catch (error) {
3361        console.error(
3362          `There was an error uninstalling the font family:`,
3363          error
3364        );
3365        throw error;
3366      }
3367    }
3368    const deactivateFontFamily = (font2) => {
3369      const initialCustomFonts = fontFamilies?.[font2.source ?? ""] ?? [];
3370      const newCustomFonts = initialCustomFonts.filter(
3371        (f2) => f2.slug !== font2.slug
3372      );
3373      const activeFonts = {
3374        ...fontFamilies,
3375        [font2.source ?? ""]: newCustomFonts
3376      };
3377      setFontFamilies(activeFonts);
3378      if (font2.fontFace) {
3379        font2.fontFace.forEach((face) => {
3380          unloadFontFaceInBrowser(face, "all");
3381        });
3382      }
3383      return activeFonts;
3384    };
3385    const activateCustomFontFamilies = (fontsToAdd) => {
3386      const fontsToActivate = cleanFontsForSave(fontsToAdd);
3387      const activeFonts = {
3388        ...fontFamilies,
3389        // Merge the existing custom fonts with the new fonts.
3390        custom: mergeFontFamilies(fontFamilies?.custom, fontsToActivate)
3391      };
3392      setFontFamilies(activeFonts);
3393      loadFontsInBrowser(fontsToActivate);
3394      return activeFonts;
3395    };
3396    const cleanFontsForSave = (fonts) => {
3397      return fonts.map(({ id: _familyDbId, fontFace, ...font2 }) => ({
3398        ...font2,
3399        ...fontFace && fontFace.length > 0 ? {
3400          fontFace: fontFace.map(
3401            ({ id: _faceDbId, ...face }) => face
3402          )
3403        } : {}
3404      }));
3405    };
3406    const loadFontsInBrowser = (fonts) => {
3407      fonts.forEach((font2) => {
3408        if (font2.fontFace) {
3409          font2.fontFace.forEach((face) => {
3410            const displaySrc = getDisplaySrcFromFontFace(
3411              face?.src ?? ""
3412            );
3413            if (displaySrc) {
3414              loadFontFaceInBrowser(face, displaySrc, "all");
3415            }
3416          });
3417        }
3418      });
3419    };
3420    const toggleActivateFont = (font2, face) => {
3421      const initialFonts = fontFamilies?.[font2.source ?? ""] ?? [];
3422      const newFonts = toggleFont(font2, face, initialFonts);
3423      setFontFamilies({
3424        ...fontFamilies,
3425        [font2.source ?? ""]: newFonts
3426      });
3427      const isFaceActivated = isFontActivated(
3428        font2.slug,
3429        face?.fontStyle ?? "",
3430        face?.fontWeight ?? "",
3431        font2.source ?? "custom"
3432      );
3433      if (face && isFaceActivated) {
3434        unloadFontFaceInBrowser(face, "all");
3435      } else {
3436        const displaySrc = getDisplaySrcFromFontFace(face?.src ?? "");
3437        if (face && displaySrc) {
3438          loadFontFaceInBrowser(face, displaySrc, "all");
3439        }
3440      }
3441    };
3442    const loadFontFaceAsset = async (fontFace) => {
3443      if (!fontFace.src) {
3444        return;
3445      }
3446      const src = getDisplaySrcFromFontFace(fontFace.src);
3447      if (!src || loadedFontUrls.has(src)) {
3448        return;
3449      }
3450      loadFontFaceInBrowser(fontFace, src, "document");
3451      loadedFontUrls.add(src);
3452    };
3453    return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3454      FontLibraryContext.Provider,
3455      {
3456        value: {
3457          libraryFontSelected,
3458          handleSetLibraryFontSelected,
3459          fontFamilies: fontFamilies ?? {},
3460          baseCustomFonts,
3461          isFontActivated,
3462          getFontFacesActivated,
3463          loadFontFaceAsset,
3464          installFonts,
3465          uninstallFontFamily,
3466          toggleActivateFont,
3467          getAvailableFontsOutline,
3468          modalTabOpen,
3469          setModalTabOpen,
3470          saveFontFamilies,
3471          isResolvingLibrary,
3472          isInstalling
3473        },
3474        children
3475      }
3476    );
3477  }
3478  var context_default = FontLibraryProvider;
3479  
3480  // packages/global-styles-ui/build-module/font-library/modal.mjs
3481  var import_i18n17 = __toESM(require_i18n(), 1);
3482  var import_components30 = __toESM(require_components(), 1);
3483  var import_core_data8 = __toESM(require_core_data(), 1);
3484  var import_data8 = __toESM(require_data(), 1);
3485  
3486  // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs
3487  var import_components24 = __toESM(require_components(), 1);
3488  var import_core_data6 = __toESM(require_core_data(), 1);
3489  var import_data7 = __toESM(require_data(), 1);
3490  var import_element16 = __toESM(require_element(), 1);
3491  var import_i18n13 = __toESM(require_i18n(), 1);
3492  
3493  // packages/global-styles-ui/build-module/font-library/font-card.mjs
3494  var import_i18n12 = __toESM(require_i18n(), 1);
3495  var import_components22 = __toESM(require_components(), 1);
3496  
3497  // packages/global-styles-ui/build-module/font-library/font-demo.mjs
3498  var import_components21 = __toESM(require_components(), 1);
3499  var import_element14 = __toESM(require_element(), 1);
3500  var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
3501  function getPreviewUrl(fontFace) {
3502    if (fontFace.preview) {
3503      return fontFace.preview;
3504    }
3505    if (fontFace.src) {
3506      return Array.isArray(fontFace.src) ? fontFace.src[0] : fontFace.src;
3507    }
3508    return void 0;
3509  }
3510  function getDisplayFontFace(font2) {
3511    if ("fontStyle" in font2 && font2.fontStyle || "fontWeight" in font2 && font2.fontWeight) {
3512      return font2;
3513    }
3514    if ("fontFace" in font2 && font2.fontFace && font2.fontFace.length) {
3515      return font2.fontFace.find(
3516        (face) => face.fontStyle === "normal" && face.fontWeight === "400"
3517      ) || font2.fontFace[0];
3518    }
3519    return {
3520      fontStyle: "normal",
3521      fontWeight: "400",
3522      fontFamily: font2.fontFamily
3523    };
3524  }
3525  function FontDemo({ font: font2, text }) {
3526    const ref = (0, import_element14.useRef)(null);
3527    const fontFace = getDisplayFontFace(font2);
3528    const style = getFamilyPreviewStyle(font2);
3529    text = text || ("name" in font2 ? font2.name : "");
3530    const customPreviewUrl = font2.preview;
3531    const [isIntersecting, setIsIntersecting] = (0, import_element14.useState)(false);
3532    const [isAssetLoaded, setIsAssetLoaded] = (0, import_element14.useState)(false);
3533    const { loadFontFaceAsset } = (0, import_element14.useContext)(FontLibraryContext);
3534    const previewUrl = customPreviewUrl ?? getPreviewUrl(fontFace);
3535    const isPreviewImage = previewUrl && previewUrl.match(/\.(png|jpg|jpeg|gif|svg)$/i);
3536    const faceStyles = getFacePreviewStyle(fontFace);
3537    const textDemoStyle = {
3538      fontSize: "18px",
3539      lineHeight: 1,
3540      opacity: isAssetLoaded ? "1" : "0",
3541      ...style,
3542      ...faceStyles
3543    };
3544    (0, import_element14.useEffect)(() => {
3545      const observer = new window.IntersectionObserver(([entry]) => {
3546        setIsIntersecting(entry.isIntersecting);
3547      }, {});
3548      if (ref.current) {
3549        observer.observe(ref.current);
3550      }
3551      return () => observer.disconnect();
3552    }, [ref]);
3553    (0, import_element14.useEffect)(() => {
3554      const loadAsset = async () => {
3555        if (isIntersecting) {
3556          if (!isPreviewImage && fontFace.src) {
3557            await loadFontFaceAsset(fontFace);
3558          }
3559          setIsAssetLoaded(true);
3560        }
3561      };
3562      loadAsset();
3563    }, [fontFace, isIntersecting, loadFontFaceAsset, isPreviewImage]);
3564    return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("div", { ref, children: isPreviewImage ? /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
3565      "img",
3566      {
3567        src: previewUrl,
3568        loading: "lazy",
3569        alt: text,
3570        className: "font-library__font-variant_demo-image"
3571      }
3572    ) : /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
3573      import_components21.__experimentalText,
3574      {
3575        style: textDemoStyle,
3576        className: "font-library__font-variant_demo-text",
3577        children: text
3578      }
3579    ) });
3580  }
3581  var font_demo_default = FontDemo;
3582  
3583  // packages/global-styles-ui/build-module/font-library/font-card.mjs
3584  var import_jsx_runtime31 = __toESM(require_jsx_runtime(), 1);
3585  function FontCard({
3586    font: font2,
3587    onClick,
3588    variantsText,
3589    navigatorPath
3590  }) {
3591    const variantsCount = font2.fontFace?.length || 1;
3592    const style = {
3593      cursor: !!onClick ? "pointer" : "default"
3594    };
3595    const navigator = (0, import_components22.useNavigator)();
3596    return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3597      import_components22.Button,
3598      {
3599        __next40pxDefaultSize: true,
3600        onClick: () => {
3601          onClick();
3602          if (navigatorPath) {
3603            navigator.goTo(navigatorPath);
3604          }
3605        },
3606        style,
3607        className: "font-library__font-card",
3608        children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components22.Flex, { justify: "space-between", wrap: false, children: [
3609          /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(font_demo_default, { font: font2 }),
3610          /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(import_components22.Flex, { justify: "flex-end", children: [
3611            /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.__experimentalText, { className: "font-library__font-card__count", children: variantsText || (0, import_i18n12.sprintf)(
3612              /* translators: %d: Number of font variants. */
3613              (0, import_i18n12._n)(
3614                "%d variant",
3615                "%d variants",
3616                variantsCount
3617              ),
3618              variantsCount
3619            ) }) }),
3620            /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(import_components22.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(icon_default, { icon: (0, import_i18n12.isRTL)() ? chevron_left_default : chevron_right_default }) })
3621          ] })
3622        ] })
3623      }
3624    );
3625  }
3626  var font_card_default = FontCard;
3627  
3628  // packages/global-styles-ui/build-module/font-library/library-font-variant.mjs
3629  var import_element15 = __toESM(require_element(), 1);
3630  var import_components23 = __toESM(require_components(), 1);
3631  var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
3632  function LibraryFontVariant({
3633    face,
3634    font: font2
3635  }) {
3636    const { isFontActivated, toggleActivateFont } = (0, import_element15.useContext)(FontLibraryContext);
3637    const isInstalled = (font2?.fontFace?.length ?? 0) > 0 ? isFontActivated(
3638      font2.slug,
3639      face.fontStyle,
3640      face.fontWeight,
3641      font2.source
3642    ) : isFontActivated(font2.slug, void 0, void 0, font2.source);
3643    const handleToggleActivation = () => {
3644      if ((font2?.fontFace?.length ?? 0) > 0) {
3645        toggleActivateFont(font2, face);
3646        return;
3647      }
3648      toggleActivateFont(font2);
3649    };
3650    const displayName = font2.name + " " + getFontFaceVariantName(face);
3651    const checkboxId = (0, import_element15.useId)();
3652    return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(import_components23.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [
3653      /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3654        import_components23.CheckboxControl,
3655        {
3656          checked: isInstalled,
3657          onChange: handleToggleActivation,
3658          id: checkboxId
3659        }
3660      ),
3661      /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
3662        font_demo_default,
3663        {
3664          font: face,
3665          text: displayName,
3666          onClick: handleToggleActivation
3667        }
3668      ) })
3669    ] }) });
3670  }
3671  var library_font_variant_default = LibraryFontVariant;
3672  
3673  // packages/global-styles-ui/build-module/font-library/utils/sort-font-faces.mjs
3674  function getNumericFontWeight(value) {
3675    switch (value) {
3676      case "normal":
3677        return 400;
3678      case "bold":
3679        return 700;
3680      case "bolder":
3681        return 500;
3682      case "lighter":
3683        return 300;
3684      default:
3685        return parseInt(value, 10);
3686    }
3687  }
3688  function sortFontFaces(faces) {
3689    return faces.sort((a2, b2) => {
3690      if (a2.fontStyle === "normal" && b2.fontStyle !== "normal") {
3691        return -1;
3692      }
3693      if (b2.fontStyle === "normal" && a2.fontStyle !== "normal") {
3694        return 1;
3695      }
3696      if (a2.fontStyle === b2.fontStyle) {
3697        return getNumericFontWeight(a2.fontWeight?.toString() ?? "normal") - getNumericFontWeight(b2.fontWeight?.toString() ?? "normal");
3698      }
3699      if (!a2.fontStyle || !b2.fontStyle) {
3700        return !a2.fontStyle ? 1 : -1;
3701      }
3702      return a2.fontStyle.localeCompare(b2.fontStyle);
3703    });
3704  }
3705  
3706  // packages/global-styles-ui/build-module/font-library/installed-fonts.mjs
3707  var import_jsx_runtime33 = __toESM(require_jsx_runtime(), 1);
3708  function InstalledFonts() {
3709    const {
3710      baseCustomFonts,
3711      libraryFontSelected,
3712      handleSetLibraryFontSelected,
3713      uninstallFontFamily,
3714      isResolvingLibrary,
3715      isInstalling,
3716      saveFontFamilies,
3717      getFontFacesActivated
3718    } = (0, import_element16.useContext)(FontLibraryContext);
3719    const [fontFamilies, setFontFamilies] = useSetting("typography.fontFamilies");
3720    const [isConfirmDeleteOpen, setIsConfirmDeleteOpen] = (0, import_element16.useState)(false);
3721    const [notice, setNotice] = (0, import_element16.useState)(null);
3722    const [baseFontFamilies] = useSetting("typography.fontFamilies", void 0, "base");
3723    const globalStylesId = (0, import_data7.useSelect)((select) => {
3724      const { __experimentalGetCurrentGlobalStylesId } = select(import_core_data6.store);
3725      return __experimentalGetCurrentGlobalStylesId();
3726    }, []);
3727    const globalStyles = (0, import_core_data6.useEntityRecord)(
3728      "root",
3729      "globalStyles",
3730      globalStylesId
3731    );
3732    const fontFamiliesHasChanges = !!globalStyles?.edits?.settings?.typography?.fontFamilies;
3733    const themeFonts = fontFamilies?.theme ? fontFamilies.theme.map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name)) : [];
3734    const themeFontsSlugs = new Set(themeFonts.map((f2) => f2.slug));
3735    const baseThemeFonts = baseFontFamilies?.theme ? themeFonts.concat(
3736      baseFontFamilies.theme.filter((f2) => !themeFontsSlugs.has(f2.slug)).map((f2) => setUIValuesNeeded(f2, { source: "theme" })).sort((a2, b2) => a2.name.localeCompare(b2.name))
3737    ) : [];
3738    const customFontFamilyId = libraryFontSelected?.source === "custom" && libraryFontSelected?.id;
3739    const canUserDelete = (0, import_data7.useSelect)(
3740      (select) => {
3741        const { canUser } = select(import_core_data6.store);
3742        return customFontFamilyId && canUser("delete", {
3743          kind: "postType",
3744          name: "wp_font_family",
3745          id: customFontFamilyId
3746        });
3747      },
3748      [customFontFamilyId]
3749    );
3750    const shouldDisplayDeleteButton = !!libraryFontSelected && libraryFontSelected?.source !== "theme" && canUserDelete;
3751    const handleUninstallClick = () => {
3752      setIsConfirmDeleteOpen(true);
3753    };
3754    const handleUpdate = async () => {
3755      setNotice(null);
3756      try {
3757        await saveFontFamilies(fontFamilies);
3758        setNotice({
3759          type: "success",
3760          message: (0, import_i18n13.__)("Font family updated successfully.")
3761        });
3762      } catch (error) {
3763        setNotice({
3764          type: "error",
3765          message: (0, import_i18n13.sprintf)(
3766            /* translators: %s: error message */
3767            (0, import_i18n13.__)("There was an error updating the font family. %s"),
3768            error.message
3769          )
3770        });
3771      }
3772    };
3773    const getFontFacesToDisplay = (font2) => {
3774      if (!font2) {
3775        return [];
3776      }
3777      if (!font2.fontFace || !font2.fontFace.length) {
3778        return [
3779          {
3780            fontFamily: font2.fontFamily,
3781            fontStyle: "normal",
3782            fontWeight: "400"
3783          }
3784        ];
3785      }
3786      return sortFontFaces(font2.fontFace);
3787    };
3788    const getFontCardVariantsText = (font2) => {
3789      const variantsInstalled = font2?.fontFace && (font2?.fontFace?.length ?? 0) > 0 ? font2.fontFace.length : 1;
3790      const variantsActive = getFontFacesActivated(
3791        font2.slug,
3792        font2.source
3793      ).length;
3794      return (0, import_i18n13.sprintf)(
3795        /* translators: 1: Active font variants, 2: Total font variants. */
3796        (0, import_i18n13.__)("%1$d/%2$d variants active"),
3797        variantsActive,
3798        variantsInstalled
3799      );
3800    };
3801    (0, import_element16.useEffect)(() => {
3802      handleSetLibraryFontSelected(libraryFontSelected);
3803    }, []);
3804    const activeFontsCount = libraryFontSelected ? getFontFacesActivated(
3805      libraryFontSelected.slug,
3806      libraryFontSelected.source
3807    ).length : 0;
3808    const selectedFontsCount = libraryFontSelected?.fontFace?.length ?? (libraryFontSelected?.fontFamily ? 1 : 0);
3809    const isIndeterminate = activeFontsCount > 0 && activeFontsCount !== selectedFontsCount;
3810    const isSelectAllChecked = activeFontsCount === selectedFontsCount;
3811    const toggleSelectAll = () => {
3812      if (!libraryFontSelected || !libraryFontSelected?.source) {
3813        return;
3814      }
3815      const initialFonts = fontFamilies?.[libraryFontSelected.source]?.filter(
3816        (f2) => f2.slug !== libraryFontSelected.slug
3817      ) ?? [];
3818      const newFonts = isSelectAllChecked ? initialFonts : [...initialFonts, libraryFontSelected];
3819      setFontFamilies({
3820        ...fontFamilies,
3821        [libraryFontSelected.source]: newFonts
3822      });
3823      if (libraryFontSelected.fontFace) {
3824        libraryFontSelected.fontFace.forEach((face) => {
3825          if (isSelectAllChecked) {
3826            unloadFontFaceInBrowser(face, "all");
3827          } else {
3828            const displaySrc = getDisplaySrcFromFontFace(
3829              face?.src ?? ""
3830            );
3831            if (displaySrc) {
3832              loadFontFaceInBrowser(face, displaySrc, "all");
3833            }
3834          }
3835        });
3836      }
3837    };
3838    const hasFonts = baseThemeFonts.length > 0 || baseCustomFonts.length > 0;
3839    return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
3840      isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.ProgressBar, {}) }),
3841      !isResolvingLibrary && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
3842        /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
3843          import_components24.Navigator,
3844          {
3845            initialPath: libraryFontSelected ? "/fontFamily" : "/",
3846            children: [
3847              /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.Navigator.Screen, { path: "/", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { spacing: "8", children: [
3848                notice && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3849                  import_components24.Notice,
3850                  {
3851                    status: notice.type,
3852                    onRemove: () => setNotice(null),
3853                    children: notice.message
3854                  }
3855                ),
3856                !hasFonts && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { as: "p", children: (0, import_i18n13.__)("No fonts installed.") }),
3857                baseThemeFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { children: [
3858                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", {
3859                    className: "font-library__fonts-title",
3860                    /* translators: Heading for a list of fonts provided by the theme. */
3861                    children: (0, import_i18n13._x)("Theme", "font source")
3862                  }),
3863                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3864                    "ul",
3865                    {
3866                      role: "list",
3867                      className: "font-library__fonts-list",
3868                      children: baseThemeFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3869                        "li",
3870                        {
3871                          className: "font-library__fonts-list-item",
3872                          children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3873                            font_card_default,
3874                            {
3875                              font: font2,
3876                              navigatorPath: "/fontFamily",
3877                              variantsText: getFontCardVariantsText(
3878                                font2
3879                              ),
3880                              onClick: () => {
3881                                setNotice(null);
3882                                handleSetLibraryFontSelected(
3883                                  font2
3884                                );
3885                              }
3886                            }
3887                          )
3888                        },
3889                        font2.slug
3890                      ))
3891                    }
3892                  )
3893                ] }),
3894                baseCustomFonts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { children: [
3895                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("h2", {
3896                    className: "font-library__fonts-title",
3897                    /* translators: Heading for a list of fonts installed by the user. */
3898                    children: (0, import_i18n13._x)("Custom", "font source")
3899                  }),
3900                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3901                    "ul",
3902                    {
3903                      role: "list",
3904                      className: "font-library__fonts-list",
3905                      children: baseCustomFonts.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3906                        "li",
3907                        {
3908                          className: "font-library__fonts-list-item",
3909                          children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3910                            font_card_default,
3911                            {
3912                              font: font2,
3913                              navigatorPath: "/fontFamily",
3914                              variantsText: getFontCardVariantsText(
3915                                font2
3916                              ),
3917                              onClick: () => {
3918                                setNotice(null);
3919                                handleSetLibraryFontSelected(
3920                                  font2
3921                                );
3922                              }
3923                            }
3924                          )
3925                        },
3926                        font2.slug
3927                      ))
3928                    }
3929                  )
3930                ] })
3931              ] }) }),
3932              /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.Navigator.Screen, { path: "/fontFamily", children: [
3933                libraryFontSelected && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3934                  ConfirmDeleteDialog,
3935                  {
3936                    font: libraryFontSelected,
3937                    isOpen: isConfirmDeleteOpen,
3938                    setIsOpen: setIsConfirmDeleteOpen,
3939                    setNotice,
3940                    uninstallFontFamily,
3941                    handleSetLibraryFontSelected
3942                  }
3943                ),
3944                /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.Flex, { justify: "flex-start", children: [
3945                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3946                    import_components24.Navigator.BackButton,
3947                    {
3948                      icon: (0, import_i18n13.isRTL)() ? chevron_right_default : chevron_left_default,
3949                      size: "small",
3950                      onClick: () => {
3951                        handleSetLibraryFontSelected(
3952                          void 0
3953                        );
3954                        setNotice(null);
3955                      },
3956                      label: (0, import_i18n13.__)("Back")
3957                    }
3958                  ),
3959                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3960                    import_components24.__experimentalHeading,
3961                    {
3962                      level: 2,
3963                      size: 13,
3964                      className: "global-styles-ui-header",
3965                      children: libraryFontSelected?.name
3966                    }
3967                  )
3968                ] }),
3969                notice && /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_jsx_runtime33.Fragment, { children: [
3970                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 1 }),
3971                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3972                    import_components24.Notice,
3973                    {
3974                      status: notice.type,
3975                      onRemove: () => setNotice(null),
3976                      children: notice.message
3977                    }
3978                  ),
3979                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 1 })
3980                ] }),
3981                /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 4 }),
3982                /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalText, { children: (0, import_i18n13.__)(
3983                  "Choose font variants. Keep in mind that too many variants could make your site slower."
3984                ) }),
3985                /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 4 }),
3986                /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalVStack, { spacing: 0, children: [
3987                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3988                    import_components24.CheckboxControl,
3989                    {
3990                      className: "font-library__select-all",
3991                      label: (0, import_i18n13.__)("Select all"),
3992                      checked: isSelectAllChecked,
3993                      onChange: toggleSelectAll,
3994                      indeterminate: isIndeterminate
3995                    }
3996                  ),
3997                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.__experimentalSpacer, { margin: 8 }),
3998                  /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
3999                    "ul",
4000                    {
4001                      role: "list",
4002                      className: "font-library__fonts-list",
4003                      children: libraryFontSelected && getFontFacesToDisplay(
4004                        libraryFontSelected
4005                      ).map((face, i2) => /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4006                        "li",
4007                        {
4008                          className: "font-library__fonts-list-item",
4009                          children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4010                            library_font_variant_default,
4011                            {
4012                              font: libraryFontSelected,
4013                              face
4014                            },
4015                            `face$i2}`
4016                          )
4017                        },
4018                        `face$i2}`
4019                      ))
4020                    }
4021                  )
4022                ] })
4023              ] })
4024            ]
4025          }
4026        ),
4027        /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(import_components24.__experimentalHStack, { justify: "flex-end", className: "font-library__footer", children: [
4028          isInstalling && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_components24.ProgressBar, {}),
4029          shouldDisplayDeleteButton && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4030            import_components24.Button,
4031            {
4032              __next40pxDefaultSize: true,
4033              isDestructive: true,
4034              variant: "tertiary",
4035              onClick: handleUninstallClick,
4036              children: (0, import_i18n13.__)("Delete")
4037            }
4038          ),
4039          /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4040            import_components24.Button,
4041            {
4042              __next40pxDefaultSize: true,
4043              variant: "primary",
4044              onClick: handleUpdate,
4045              disabled: !fontFamiliesHasChanges,
4046              accessibleWhenDisabled: true,
4047              children: (0, import_i18n13.__)("Update")
4048            }
4049          )
4050        ] })
4051      ] })
4052    ] });
4053  }
4054  function ConfirmDeleteDialog({
4055    font: font2,
4056    isOpen,
4057    setIsOpen,
4058    setNotice,
4059    uninstallFontFamily,
4060    handleSetLibraryFontSelected
4061  }) {
4062    const navigator = (0, import_components24.useNavigator)();
4063    const handleConfirmUninstall = async () => {
4064      setNotice(null);
4065      setIsOpen(false);
4066      try {
4067        await uninstallFontFamily(font2);
4068        navigator.goBack();
4069        handleSetLibraryFontSelected(void 0);
4070        setNotice({
4071          type: "success",
4072          message: (0, import_i18n13.__)("Font family uninstalled successfully.")
4073        });
4074      } catch (error) {
4075        setNotice({
4076          type: "error",
4077          message: (0, import_i18n13.__)("There was an error uninstalling the font family.") + error.message
4078        });
4079      }
4080    };
4081    const handleCancelUninstall = () => {
4082      setIsOpen(false);
4083    };
4084    return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4085      import_components24.__experimentalConfirmDialog,
4086      {
4087        isOpen,
4088        cancelButtonText: (0, import_i18n13.__)("Cancel"),
4089        confirmButtonText: (0, import_i18n13.__)("Delete"),
4090        onCancel: handleCancelUninstall,
4091        onConfirm: handleConfirmUninstall,
4092        size: "medium",
4093        children: font2 && (0, import_i18n13.sprintf)(
4094          /* translators: %s: Name of the font. */
4095          (0, import_i18n13.__)(
4096            'Are you sure you want to delete "%s" font and all its variants and assets?'
4097          ),
4098          font2.name
4099        )
4100      }
4101    );
4102  }
4103  var installed_fonts_default = InstalledFonts;
4104  
4105  // packages/global-styles-ui/build-module/font-library/font-collection.mjs
4106  var import_element18 = __toESM(require_element(), 1);
4107  var import_components27 = __toESM(require_components(), 1);
4108  var import_compose3 = __toESM(require_compose(), 1);
4109  var import_i18n15 = __toESM(require_i18n(), 1);
4110  var import_core_data7 = __toESM(require_core_data(), 1);
4111  
4112  // packages/global-styles-ui/build-module/font-library/utils/filter-fonts.mjs
4113  function filterFonts(fonts, filters) {
4114    const { category, search } = filters;
4115    let filteredFonts = fonts || [];
4116    if (category && category !== "all") {
4117      filteredFonts = filteredFonts.filter(
4118        (font2) => font2.categories && font2.categories.indexOf(category) !== -1
4119      );
4120    }
4121    if (search) {
4122      filteredFonts = filteredFonts.filter(
4123        (font2) => font2.font_family_settings && font2.font_family_settings.name.toLowerCase().includes(search.toLowerCase())
4124      );
4125    }
4126    return filteredFonts;
4127  }
4128  
4129  // packages/global-styles-ui/build-module/font-library/utils/fonts-outline.mjs
4130  function getFontsOutline(fonts) {
4131    return fonts.reduce(
4132      (acc, font2) => ({
4133        ...acc,
4134        [font2.slug]: (font2?.fontFace || []).reduce(
4135          (faces, face) => ({
4136            ...faces,
4137            [`$face.fontStyle}-$face.fontWeight}`]: true
4138          }),
4139          {}
4140        )
4141      }),
4142      {}
4143    );
4144  }
4145  function isFontFontFaceInOutline(slug, face, outline) {
4146    if (!face) {
4147      return !!outline[slug];
4148    }
4149    return !!outline[slug]?.[`$face.fontStyle}-$face.fontWeight}`];
4150  }
4151  
4152  // packages/global-styles-ui/build-module/font-library/google-fonts-confirm-dialog.mjs
4153  var import_i18n14 = __toESM(require_i18n(), 1);
4154  var import_components25 = __toESM(require_components(), 1);
4155  var import_jsx_runtime34 = __toESM(require_jsx_runtime(), 1);
4156  function GoogleFontsConfirmDialog() {
4157    const handleConfirm = () => {
4158      window.localStorage.setItem(
4159        "wp-font-library-google-fonts-permission",
4160        "true"
4161      );
4162      window.dispatchEvent(new Event("storage"));
4163    };
4164    return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("div", { className: "font-library__google-fonts-confirm", children: /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.Card, { children: /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)(import_components25.CardBody, { children: [
4165      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalHeading, { level: 2, children: (0, import_i18n14.__)("Connect to Google Fonts") }),
4166      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 6 }),
4167      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n14.__)(
4168        "To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts."
4169      ) }),
4170      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 3 }),
4171      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalText, { as: "p", children: (0, import_i18n14.__)(
4172        "You can alternatively upload files directly on the Upload tab."
4173      ) }),
4174      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_components25.__experimentalSpacer, { margin: 6 }),
4175      /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4176        import_components25.Button,
4177        {
4178          __next40pxDefaultSize: true,
4179          variant: "primary",
4180          onClick: handleConfirm,
4181          children: (0, import_i18n14.__)("Allow access to Google Fonts")
4182        }
4183      )
4184    ] }) }) });
4185  }
4186  var google_fonts_confirm_dialog_default = GoogleFontsConfirmDialog;
4187  
4188  // packages/global-styles-ui/build-module/font-library/collection-font-variant.mjs
4189  var import_element17 = __toESM(require_element(), 1);
4190  var import_components26 = __toESM(require_components(), 1);
4191  var import_jsx_runtime35 = __toESM(require_jsx_runtime(), 1);
4192  function CollectionFontVariant({
4193    face,
4194    font: font2,
4195    handleToggleVariant,
4196    selected
4197  }) {
4198    const handleToggleActivation = () => {
4199      if (font2?.fontFace) {
4200        handleToggleVariant(font2, face);
4201        return;
4202      }
4203      handleToggleVariant(font2);
4204    };
4205    const displayName = font2.name + " " + getFontFaceVariantName(face);
4206    const checkboxId = (0, import_element17.useId)();
4207    return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { className: "font-library__font-card", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(import_components26.Flex, { justify: "flex-start", align: "center", gap: "1rem", children: [
4208      /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4209        import_components26.CheckboxControl,
4210        {
4211          checked: selected,
4212          onChange: handleToggleActivation,
4213          id: checkboxId
4214        }
4215      ),
4216      /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("label", { htmlFor: checkboxId, children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4217        font_demo_default,
4218        {
4219          font: face,
4220          text: displayName,
4221          onClick: handleToggleActivation
4222        }
4223      ) })
4224    ] }) });
4225  }
4226  var collection_font_variant_default = CollectionFontVariant;
4227  
4228  // packages/global-styles-ui/build-module/font-library/font-collection.mjs
4229  var import_jsx_runtime36 = __toESM(require_jsx_runtime(), 1);
4230  var DEFAULT_CATEGORY = {
4231    slug: "all",
4232    name: (0, import_i18n15._x)("All", "font categories")
4233  };
4234  var LOCAL_STORAGE_ITEM = "wp-font-library-google-fonts-permission";
4235  var MIN_WINDOW_HEIGHT = 500;
4236  function FontCollection({ slug }) {
4237    const requiresPermission = slug === "google-fonts";
4238    const getGoogleFontsPermissionFromStorage = () => {
4239      return window.localStorage.getItem(LOCAL_STORAGE_ITEM) === "true";
4240    };
4241    const [selectedFont, setSelectedFont] = (0, import_element18.useState)(
4242      null
4243    );
4244    const [notice, setNotice] = (0, import_element18.useState)(null);
4245    const [fontsToInstall, setFontsToInstall] = (0, import_element18.useState)(
4246      []
4247    );
4248    const [page, setPage] = (0, import_element18.useState)(1);
4249    const [filters, setFilters] = (0, import_element18.useState)({});
4250    const [renderConfirmDialog, setRenderConfirmDialog] = (0, import_element18.useState)(
4251      requiresPermission && !getGoogleFontsPermissionFromStorage()
4252    );
4253    const { installFonts, isInstalling } = (0, import_element18.useContext)(FontLibraryContext);
4254    const { record: selectedCollection, isResolving: isLoading } = (0, import_core_data7.useEntityRecord)("root", "fontCollection", slug);
4255    (0, import_element18.useEffect)(() => {
4256      const handleStorage = () => {
4257        setRenderConfirmDialog(
4258          requiresPermission && !getGoogleFontsPermissionFromStorage()
4259        );
4260      };
4261      handleStorage();
4262      window.addEventListener("storage", handleStorage);
4263      return () => window.removeEventListener("storage", handleStorage);
4264    }, [slug, requiresPermission]);
4265    const revokeAccess = () => {
4266      window.localStorage.setItem(LOCAL_STORAGE_ITEM, "false");
4267      window.dispatchEvent(new Event("storage"));
4268    };
4269    (0, import_element18.useEffect)(() => {
4270      setSelectedFont(null);
4271    }, [slug]);
4272    (0, import_element18.useEffect)(() => {
4273      setFontsToInstall([]);
4274    }, [selectedFont]);
4275    const collectionFonts = (0, import_element18.useMemo)(
4276      () => selectedCollection?.font_families ?? [],
4277      [selectedCollection]
4278    );
4279    const collectionCategories = selectedCollection?.categories ?? [];
4280    const categories = [DEFAULT_CATEGORY, ...collectionCategories];
4281    const fonts = (0, import_element18.useMemo)(
4282      () => filterFonts(collectionFonts, filters),
4283      [collectionFonts, filters]
4284    );
4285    const windowHeight = Math.max(window.innerHeight, MIN_WINDOW_HEIGHT);
4286    const pageSize = Math.floor((windowHeight - 417) / 61);
4287    const totalPages = Math.ceil(fonts.length / pageSize);
4288    const itemsStart = (page - 1) * pageSize;
4289    const itemsLimit = page * pageSize;
4290    const items = fonts.slice(itemsStart, itemsLimit);
4291    const handleCategoryFilter = (category) => {
4292      setFilters({ ...filters, category });
4293      setPage(1);
4294    };
4295    const handleUpdateSearchInput = (value) => {
4296      setFilters({ ...filters, search: value });
4297      setPage(1);
4298    };
4299    const debouncedUpdateSearchInput = (0, import_compose3.debounce)(handleUpdateSearchInput, 300);
4300    const handleToggleVariant = (font2, face) => {
4301      const newFontsToInstall = toggleFont(font2, face, fontsToInstall);
4302      setFontsToInstall(newFontsToInstall);
4303    };
4304    const fontToInstallOutline = getFontsOutline(fontsToInstall);
4305    const resetFontsToInstall = () => {
4306      setFontsToInstall([]);
4307    };
4308    const selectFontCount = fontsToInstall.length > 0 ? fontsToInstall[0]?.fontFace?.length ?? 0 : 0;
4309    const isIndeterminate = selectFontCount > 0 && selectFontCount !== selectedFont?.fontFace?.length;
4310    const isSelectAllChecked = selectFontCount === selectedFont?.fontFace?.length;
4311    const toggleSelectAll = () => {
4312      const newFonts = [];
4313      if (!isSelectAllChecked && selectedFont) {
4314        newFonts.push(selectedFont);
4315      }
4316      setFontsToInstall(newFonts);
4317    };
4318    const handleInstall = async () => {
4319      setNotice(null);
4320      const fontFamily = fontsToInstall[0];
4321      try {
4322        if (fontFamily?.fontFace) {
4323          await Promise.all(
4324            fontFamily.fontFace.map(async (fontFace) => {
4325              if (fontFace.src) {
4326                fontFace.file = await downloadFontFaceAssets(
4327                  fontFace.src
4328                );
4329              }
4330            })
4331          );
4332        }
4333      } catch (error) {
4334        setNotice({
4335          type: "error",
4336          message: (0, import_i18n15.__)(
4337            "Error installing the fonts, could not be downloaded."
4338          )
4339        });
4340        return;
4341      }
4342      try {
4343        await installFonts([fontFamily]);
4344        setNotice({
4345          type: "success",
4346          message: (0, import_i18n15.__)("Fonts were installed successfully.")
4347        });
4348      } catch (error) {
4349        setNotice({
4350          type: "error",
4351          message: error.message
4352        });
4353      }
4354      resetFontsToInstall();
4355    };
4356    const getSortedFontFaces = (fontFamily) => {
4357      if (!fontFamily) {
4358        return [];
4359      }
4360      if (!fontFamily.fontFace || !fontFamily.fontFace.length) {
4361        return [
4362          {
4363            fontFamily: fontFamily.fontFamily,
4364            fontStyle: "normal",
4365            fontWeight: "400"
4366          }
4367        ];
4368      }
4369      return sortFontFaces(fontFamily.fontFace);
4370    };
4371    if (renderConfirmDialog) {
4372      return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(google_fonts_confirm_dialog_default, {});
4373    }
4374    const ActionsComponent = () => {
4375      if (slug !== "google-fonts" || renderConfirmDialog || selectedFont) {
4376        return null;
4377      }
4378      return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4379        import_components27.DropdownMenu,
4380        {
4381          icon: more_vertical_default,
4382          label: (0, import_i18n15.__)("Actions"),
4383          popoverProps: {
4384            position: "bottom left"
4385          },
4386          controls: [
4387            {
4388              title: (0, import_i18n15.__)("Revoke access to Google Fonts"),
4389              onClick: revokeAccess
4390            }
4391          ]
4392        }
4393      );
4394    };
4395    return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
4396      isLoading && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__loading", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.ProgressBar, {}) }),
4397      !isLoading && selectedCollection && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
4398        /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4399          import_components27.Navigator,
4400          {
4401            initialPath: "/",
4402            className: "font-library__tabpanel-layout",
4403            children: [
4404              /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.Navigator.Screen, { path: "/", children: [
4405                /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalHStack, { justify: "space-between", children: [
4406                  /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalVStack, { children: [
4407                    /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalHeading, { level: 2, size: 13, children: selectedCollection.name }),
4408                    /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: selectedCollection.description })
4409                  ] }),
4410                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(ActionsComponent, {})
4411                ] }),
4412                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }),
4413                /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalHStack, { spacing: 4, justify: "space-between", children: [
4414                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4415                    import_components27.SearchControl,
4416                    {
4417                      value: filters.search,
4418                      placeholder: (0, import_i18n15.__)("Font name\u2026"),
4419                      label: (0, import_i18n15.__)("Search"),
4420                      onChange: debouncedUpdateSearchInput,
4421                      hideLabelFromVision: false
4422                    }
4423                  ),
4424                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4425                    import_components27.SelectControl,
4426                    {
4427                      __next40pxDefaultSize: true,
4428                      label: (0, import_i18n15.__)("Category"),
4429                      value: filters.category,
4430                      onChange: handleCategoryFilter,
4431                      children: categories && categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4432                        "option",
4433                        {
4434                          value: category.slug,
4435                          children: category.name
4436                        },
4437                        category.slug
4438                      ))
4439                    }
4440                  )
4441                ] }),
4442                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }),
4443                !!selectedCollection?.font_families?.length && !fonts.length && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n15.__)(
4444                  "No fonts found. Try with a different search term."
4445                ) }),
4446                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { className: "font-library__fonts-grid__main", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4447                  "ul",
4448                  {
4449                    role: "list",
4450                    className: "font-library__fonts-list",
4451                    children: items.map((font2) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4452                      "li",
4453                      {
4454                        className: "font-library__fonts-list-item",
4455                        children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4456                          font_card_default,
4457                          {
4458                            font: font2.font_family_settings,
4459                            navigatorPath: "/fontFamily",
4460                            onClick: () => {
4461                              setSelectedFont(
4462                                font2.font_family_settings
4463                              );
4464                            }
4465                          }
4466                        )
4467                      },
4468                      font2.font_family_settings.slug
4469                    ))
4470                  }
4471                ) })
4472              ] }),
4473              /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.Navigator.Screen, { path: "/fontFamily", children: [
4474                /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.Flex, { justify: "flex-start", children: [
4475                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4476                    import_components27.Navigator.BackButton,
4477                    {
4478                      icon: (0, import_i18n15.isRTL)() ? chevron_right_default : chevron_left_default,
4479                      size: "small",
4480                      onClick: () => {
4481                        setSelectedFont(null);
4482                        setNotice(null);
4483                      },
4484                      label: (0, import_i18n15.__)("Back")
4485                    }
4486                  ),
4487                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4488                    import_components27.__experimentalHeading,
4489                    {
4490                      level: 2,
4491                      size: 13,
4492                      className: "global-styles-ui-header",
4493                      children: selectedFont?.name
4494                    }
4495                  )
4496                ] }),
4497                notice && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_jsx_runtime36.Fragment, { children: [
4498                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 1 }),
4499                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4500                    import_components27.Notice,
4501                    {
4502                      status: notice.type,
4503                      onRemove: () => setNotice(null),
4504                      children: notice.message
4505                    }
4506                  ),
4507                  /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 1 })
4508                ] }),
4509                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }),
4510                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalText, { children: (0, import_i18n15.__)("Select font variants to install.") }),
4511                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 4 }),
4512                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4513                  import_components27.CheckboxControl,
4514                  {
4515                    className: "font-library__select-all",
4516                    label: (0, import_i18n15.__)("Select all"),
4517                    checked: isSelectAllChecked,
4518                    onChange: toggleSelectAll,
4519                    indeterminate: isIndeterminate
4520                  }
4521                ),
4522                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalVStack, { spacing: 0, children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4523                  "ul",
4524                  {
4525                    role: "list",
4526                    className: "font-library__fonts-list",
4527                    children: selectedFont && getSortedFontFaces(selectedFont).map(
4528                      (face, i2) => /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4529                        "li",
4530                        {
4531                          className: "font-library__fonts-list-item",
4532                          children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4533                            collection_font_variant_default,
4534                            {
4535                              font: selectedFont,
4536                              face,
4537                              handleToggleVariant,
4538                              selected: isFontFontFaceInOutline(
4539                                selectedFont.slug,
4540                                selectedFont.fontFace ? face : null,
4541                                // If the font has no fontFace, we want to check if the font is in the outline
4542                                fontToInstallOutline
4543                              )
4544                            }
4545                          )
4546                        },
4547                        `face$i2}`
4548                      )
4549                    )
4550                  }
4551                ) }),
4552                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_components27.__experimentalSpacer, { margin: 16 })
4553              ] })
4554            ]
4555          }
4556        ),
4557        selectedFont && /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4558          import_components27.Flex,
4559          {
4560            justify: "flex-end",
4561            className: "font-library__footer",
4562            children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4563              import_components27.Button,
4564              {
4565                __next40pxDefaultSize: true,
4566                variant: "primary",
4567                onClick: handleInstall,
4568                isBusy: isInstalling,
4569                disabled: fontsToInstall.length === 0 || isInstalling,
4570                accessibleWhenDisabled: true,
4571                children: (0, import_i18n15.__)("Install")
4572              }
4573            )
4574          }
4575        ),
4576        !selectedFont && /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4577          import_components27.__experimentalHStack,
4578          {
4579            expanded: false,
4580            className: "font-library__footer",
4581            justify: "end",
4582            spacing: 6,
4583            children: [
4584              /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4585                import_components27.__experimentalHStack,
4586                {
4587                  justify: "flex-start",
4588                  expanded: false,
4589                  spacing: 1,
4590                  className: "font-library__page-selection",
4591                  children: (0, import_element18.createInterpolateElement)(
4592                    (0, import_i18n15.sprintf)(
4593                      // translators: 1: Current page number, 2: Total number of pages.
4594                      (0, import_i18n15._x)(
4595                        "<div>Page</div>%1$s<div>of %2$d</div>",
4596                        "paging"
4597                      ),
4598                      "<CurrentPage />",
4599                      totalPages
4600                    ),
4601                    {
4602                      div: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("div", { "aria-hidden": true }),
4603                      CurrentPage: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4604                        import_components27.SelectControl,
4605                        {
4606                          "aria-label": (0, import_i18n15.__)(
4607                            "Current page"
4608                          ),
4609                          value: page.toString(),
4610                          options: [
4611                            ...Array(totalPages)
4612                          ].map((e2, i2) => {
4613                            return {
4614                              label: (i2 + 1).toString(),
4615                              value: (i2 + 1).toString()
4616                            };
4617                          }),
4618                          onChange: (newPage) => setPage(
4619                            parseInt(newPage)
4620                          ),
4621                          size: "small",
4622                          variant: "minimal"
4623                        }
4624                      )
4625                    }
4626                  )
4627                }
4628              ),
4629              /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(import_components27.__experimentalHStack, { expanded: false, spacing: 1, children: [
4630                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4631                  import_components27.Button,
4632                  {
4633                    onClick: () => setPage(page - 1),
4634                    disabled: page === 1,
4635                    accessibleWhenDisabled: true,
4636                    label: (0, import_i18n15.__)("Previous page"),
4637                    icon: (0, import_i18n15.isRTL)() ? next_default : previous_default,
4638                    showTooltip: true,
4639                    size: "compact",
4640                    tooltipPosition: "top"
4641                  }
4642                ),
4643                /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4644                  import_components27.Button,
4645                  {
4646                    onClick: () => setPage(page + 1),
4647                    disabled: page === totalPages,
4648                    accessibleWhenDisabled: true,
4649                    label: (0, import_i18n15.__)("Next page"),
4650                    icon: (0, import_i18n15.isRTL)() ? previous_default : next_default,
4651                    showTooltip: true,
4652                    size: "compact",
4653                    tooltipPosition: "top"
4654                  }
4655                )
4656              ] })
4657            ]
4658          }
4659        )
4660      ] })
4661    ] });
4662  }
4663  var font_collection_default = FontCollection;
4664  
4665  // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs
4666  var import_i18n16 = __toESM(require_i18n(), 1);
4667  var import_components29 = __toESM(require_components(), 1);
4668  var import_element19 = __toESM(require_element(), 1);
4669  
4670  // packages/global-styles-ui/build-module/font-library/lib/unbrotli.mjs
4671  var __require2 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, {
4672    get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2]
4673  }) : x2)(function(x2) {
4674    if (typeof __require !== "undefined") return __require.apply(this, arguments);
4675    throw Error('Dynamic require of "' + x2 + '" is not supported');
4676  });
4677  var unbrotli_default = (function() {
4678    var define, module, exports;
4679    return (/* @__PURE__ */ (function() {
4680      function r3(e2, n2, t3) {
4681        function o3(i22, f2) {
4682          if (!n2[i22]) {
4683            if (!e2[i22]) {
4684              var c2 = "function" == typeof __require2 && __require2;
4685              if (!f2 && c2) return c2(i22, true);
4686              if (u2) return u2(i22, true);
4687              var a2 = new Error("Cannot find module '" + i22 + "'");
4688              throw a2.code = "MODULE_NOT_FOUND", a2;
4689            }
4690            var p3 = n2[i22] = { exports: {} };
4691            e2[i22][0].call(
4692              p3.exports,
4693              function(r22) {
4694                var n22 = e2[i22][1][r22];
4695                return o3(n22 || r22);
4696              },
4697              p3,
4698              p3.exports,
4699              r3,
4700              e2,
4701              n2,
4702              t3
4703            );
4704          }
4705          return n2[i22].exports;
4706        }
4707        for (var u2 = "function" == typeof __require2 && __require2, i2 = 0; i2 < t3.length; i2++)
4708          o3(t3[i2]);
4709        return o3;
4710      }
4711      return r3;
4712    })())(
4713      {
4714        1: [
4715          function(require2, module2, exports2) {
4716            var BROTLI_READ_SIZE = 4096;
4717            var BROTLI_IBUF_SIZE = 2 * BROTLI_READ_SIZE + 32;
4718            var BROTLI_IBUF_MASK = 2 * BROTLI_READ_SIZE - 1;
4719            var kBitMask = new Uint32Array([
4720              0,
4721              1,
4722              3,
4723              7,
4724              15,
4725              31,
4726              63,
4727              127,
4728              255,
4729              511,
4730              1023,
4731              2047,
4732              4095,
4733              8191,
4734              16383,
4735              32767,
4736              65535,
4737              131071,
4738              262143,
4739              524287,
4740              1048575,
4741              2097151,
4742              4194303,
4743              8388607,
4744              16777215
4745            ]);
4746            function BrotliBitReader(input) {
4747              this.buf_ = new Uint8Array(BROTLI_IBUF_SIZE);
4748              this.input_ = input;
4749              this.reset();
4750            }
4751            BrotliBitReader.READ_SIZE = BROTLI_READ_SIZE;
4752            BrotliBitReader.IBUF_MASK = BROTLI_IBUF_MASK;
4753            BrotliBitReader.prototype.reset = function() {
4754              this.buf_ptr_ = 0;
4755              this.val_ = 0;
4756              this.pos_ = 0;
4757              this.bit_pos_ = 0;
4758              this.bit_end_pos_ = 0;
4759              this.eos_ = 0;
4760              this.readMoreInput();
4761              for (var i2 = 0; i2 < 4; i2++) {
4762                this.val_ |= this.buf_[this.pos_] << 8 * i2;
4763                ++this.pos_;
4764              }
4765              return this.bit_end_pos_ > 0;
4766            };
4767            BrotliBitReader.prototype.readMoreInput = function() {
4768              if (this.bit_end_pos_ > 256) {
4769                return;
4770              } else if (this.eos_) {
4771                if (this.bit_pos_ > this.bit_end_pos_)
4772                  throw new Error(
4773                    "Unexpected end of input " + this.bit_pos_ + " " + this.bit_end_pos_
4774                  );
4775              } else {
4776                var dst = this.buf_ptr_;
4777                var bytes_read = this.input_.read(
4778                  this.buf_,
4779                  dst,
4780                  BROTLI_READ_SIZE
4781                );
4782                if (bytes_read < 0) {
4783                  throw new Error("Unexpected end of input");
4784                }
4785                if (bytes_read < BROTLI_READ_SIZE) {
4786                  this.eos_ = 1;
4787                  for (var p3 = 0; p3 < 32; p3++)
4788                    this.buf_[dst + bytes_read + p3] = 0;
4789                }
4790                if (dst === 0) {
4791                  for (var p3 = 0; p3 < 32; p3++)
4792                    this.buf_[(BROTLI_READ_SIZE << 1) + p3] = this.buf_[p3];
4793                  this.buf_ptr_ = BROTLI_READ_SIZE;
4794                } else {
4795                  this.buf_ptr_ = 0;
4796                }
4797                this.bit_end_pos_ += bytes_read << 3;
4798              }
4799            };
4800            BrotliBitReader.prototype.fillBitWindow = function() {
4801              while (this.bit_pos_ >= 8) {
4802                this.val_ >>>= 8;
4803                this.val_ |= this.buf_[this.pos_ & BROTLI_IBUF_MASK] << 24;
4804                ++this.pos_;
4805                this.bit_pos_ = this.bit_pos_ - 8 >>> 0;
4806                this.bit_end_pos_ = this.bit_end_pos_ - 8 >>> 0;
4807              }
4808            };
4809            BrotliBitReader.prototype.readBits = function(n_bits) {
4810              if (32 - this.bit_pos_ < n_bits) {
4811                this.fillBitWindow();
4812              }
4813              var val = this.val_ >>> this.bit_pos_ & kBitMask[n_bits];
4814              this.bit_pos_ += n_bits;
4815              return val;
4816            };
4817            module2.exports = BrotliBitReader;
4818          },
4819          {}
4820        ],
4821        2: [
4822          function(require2, module2, exports2) {
4823            var CONTEXT_LSB6 = 0;
4824            var CONTEXT_MSB6 = 1;
4825            var CONTEXT_UTF8 = 2;
4826            var CONTEXT_SIGNED = 3;
4827            exports2.lookup = new Uint8Array([
4828              /* CONTEXT_UTF8, last byte. */
4829              /* ASCII range. */
4830              0,
4831              0,
4832              0,
4833              0,
4834              0,
4835              0,
4836              0,
4837              0,
4838              0,
4839              4,
4840              4,
4841              0,
4842              0,
4843              4,
4844              0,
4845              0,
4846              0,
4847              0,
4848              0,
4849              0,
4850              0,
4851              0,
4852              0,
4853              0,
4854              0,
4855              0,
4856              0,
4857              0,
4858              0,
4859              0,
4860              0,
4861              0,
4862              8,
4863              12,
4864              16,
4865              12,
4866              12,
4867              20,
4868              12,
4869              16,
4870              24,
4871              28,
4872              12,
4873              12,
4874              32,
4875              12,
4876              36,
4877              12,
4878              44,
4879              44,
4880              44,
4881              44,
4882              44,
4883              44,
4884              44,
4885              44,
4886              44,
4887              44,
4888              32,
4889              32,
4890              24,
4891              40,
4892              28,
4893              12,
4894              12,
4895              48,
4896              52,
4897              52,
4898              52,
4899              48,
4900              52,
4901              52,
4902              52,
4903              48,
4904              52,
4905              52,
4906              52,
4907              52,
4908              52,
4909              48,
4910              52,
4911              52,
4912              52,
4913              52,
4914              52,
4915              48,
4916              52,
4917              52,
4918              52,
4919              52,
4920              52,
4921              24,
4922              12,
4923              28,
4924              12,
4925              12,
4926              12,
4927              56,
4928              60,
4929              60,
4930              60,
4931              56,
4932              60,
4933              60,
4934              60,
4935              56,
4936              60,
4937              60,
4938              60,
4939              60,
4940              60,
4941              56,
4942              60,
4943              60,
4944              60,
4945              60,
4946              60,
4947              56,
4948              60,
4949              60,
4950              60,
4951              60,
4952              60,
4953              24,
4954              12,
4955              28,
4956              12,
4957              0,
4958              /* UTF8 continuation byte range. */
4959              0,
4960              1,
4961              0,
4962              1,
4963              0,
4964              1,
4965              0,
4966              1,
4967              0,
4968              1,
4969              0,
4970              1,
4971              0,
4972              1,
4973              0,
4974              1,
4975              0,
4976              1,
4977              0,
4978              1,
4979              0,
4980              1,
4981              0,
4982              1,
4983              0,
4984              1,
4985              0,
4986              1,
4987              0,
4988              1,
4989              0,
4990              1,
4991              0,
4992              1,
4993              0,
4994              1,
4995              0,
4996              1,
4997              0,
4998              1,
4999              0,
5000              1,
5001              0,
5002              1,
5003              0,
5004              1,
5005              0,
5006              1,
5007              0,
5008              1,
5009              0,
5010              1,
5011              0,
5012              1,
5013              0,
5014              1,
5015              0,
5016              1,
5017              0,
5018              1,
5019              0,
5020              1,
5021              0,
5022              1,
5023              2,
5024              3,
5025              2,
5026              3,
5027              2,
5028              3,
5029              2,
5030              3,
5031              2,
5032              3,
5033              2,
5034              3,
5035              2,
5036              3,
5037              2,
5038              3,
5039              2,
5040              3,
5041              2,
5042              3,
5043              2,
5044              3,
5045              2,
5046              3,
5047              2,
5048              3,
5049              2,
5050              3,
5051              2,
5052              3,
5053              2,
5054              3,
5055              2,
5056              3,
5057              2,
5058              3,
5059              2,
5060              3,
5061              2,
5062              3,
5063              2,
5064              3,
5065              2,
5066              3,
5067              2,
5068              3,
5069              2,
5070              3,
5071              2,
5072              3,
5073              2,
5074              3,
5075              2,
5076              3,
5077              2,
5078              3,
5079              2,
5080              3,
5081              2,
5082              3,
5083              2,
5084              3,
5085              2,
5086              3,
5087              /* ASCII range. */
5088              0,
5089              0,
5090              0,
5091              0,
5092              0,
5093              0,
5094              0,
5095              0,
5096              0,
5097              0,
5098              0,
5099              0,
5100              0,
5101              0,
5102              0,
5103              0,
5104              0,
5105              0,
5106              0,
5107              0,
5108              0,
5109              0,
5110              0,
5111              0,
5112              0,
5113              0,
5114              0,
5115              0,
5116              0,
5117              0,
5118              0,
5119              0,
5120              0,
5121              1,
5122              1,
5123              1,
5124              1,
5125              1,
5126              1,
5127              1,
5128              1,
5129              1,
5130              1,
5131              1,
5132              1,
5133              1,
5134              1,
5135              1,
5136              2,
5137              2,
5138              2,
5139              2,
5140              2,
5141              2,
5142              2,
5143              2,
5144              2,
5145              2,
5146              1,
5147              1,
5148              1,
5149              1,
5150              1,
5151              1,
5152              1,
5153              2,
5154              2,
5155              2,
5156              2,
5157              2,
5158              2,
5159              2,
5160              2,
5161              2,
5162              2,
5163              2,
5164              2,
5165              2,
5166              2,
5167              2,
5168              2,
5169              2,
5170              2,
5171              2,
5172              2,
5173              2,
5174              2,
5175              2,
5176              2,
5177              2,
5178              2,
5179              1,
5180              1,
5181              1,
5182              1,
5183              1,
5184              1,
5185              3,
5186              3,
5187              3,
5188              3,
5189              3,
5190              3,
5191              3,
5192              3,
5193              3,
5194              3,
5195              3,
5196              3,
5197              3,
5198              3,
5199              3,
5200              3,
5201              3,
5202              3,
5203              3,
5204              3,
5205              3,
5206              3,
5207              3,
5208              3,
5209              3,
5210              3,
5211              1,
5212              1,
5213              1,
5214              1,
5215              0,
5216              /* UTF8 continuation byte range. */
5217              0,
5218              0,
5219              0,
5220              0,
5221              0,
5222              0,
5223              0,
5224              0,
5225              0,
5226              0,
5227              0,
5228              0,
5229              0,
5230              0,
5231              0,
5232              0,
5233              0,
5234              0,
5235              0,
5236              0,
5237              0,
5238              0,
5239              0,
5240              0,
5241              0,
5242              0,
5243              0,
5244              0,
5245              0,
5246              0,
5247              0,
5248              0,
5249              0,
5250              0,
5251              0,
5252              0,
5253              0,
5254              0,
5255              0,
5256              0,
5257              0,
5258              0,
5259              0,
5260              0,
5261              0,
5262              0,
5263              0,
5264              0,
5265              0,
5266              0,
5267              0,
5268              0,
5269              0,
5270              0,
5271              0,
5272              0,
5273              0,
5274              0,
5275              0,
5276              0,
5277              0,
5278              0,
5279              0,
5280              0,
5281              0,
5282              0,
5283              0,
5284              0,
5285              0,
5286              0,
5287              0,
5288              0,
5289              0,
5290              0,
5291              0,
5292              0,
5293              0,
5294              0,
5295              0,
5296              0,
5297              0,
5298              0,
5299              0,
5300              0,
5301              0,
5302              0,
5303              0,
5304              0,
5305              0,
5306              0,
5307              0,
5308              0,
5309              0,
5310              0,
5311              0,
5312              0,
5313              2,
5314              2,
5315              2,
5316              2,
5317              2,
5318              2,
5319              2,
5320              2,
5321              2,
5322              2,
5323              2,
5324              2,
5325              2,
5326              2,
5327              2,
5328              2,
5329              2,
5330              2,
5331              2,
5332              2,
5333              2,
5334              2,
5335              2,
5336              2,
5337              2,
5338              2,
5339              2,
5340              2,
5341              2,
5342              2,
5343              2,
5344              2,
5345              0,
5346              1,
5347              1,
5348              1,
5349              1,
5350              1,
5351              1,
5352              1,
5353              1,
5354              1,
5355              1,
5356              1,
5357              1,
5358              1,
5359              1,
5360              1,
5361              2,
5362              2,
5363              2,
5364              2,
5365              2,
5366              2,
5367              2,
5368              2,
5369              2,
5370              2,
5371              2,
5372              2,
5373              2,
5374              2,
5375              2,
5376              2,
5377              2,
5378              2,
5379              2,
5380              2,
5381              2,
5382              2,
5383              2,
5384              2,
5385              2,
5386              2,
5387              2,
5388              2,
5389              2,
5390              2,
5391              2,
5392              2,
5393              2,
5394              2,
5395              2,
5396              2,
5397              2,
5398              2,
5399              2,
5400              2,
5401              2,
5402              2,
5403              2,
5404              2,
5405              2,
5406              2,
5407              2,
5408              2,
5409              3,
5410              3,
5411              3,
5412              3,
5413              3,
5414              3,
5415              3,
5416              3,
5417              3,
5418              3,
5419              3,
5420              3,
5421              3,
5422              3,
5423              3,
5424              3,
5425              3,
5426              3,
5427              3,
5428              3,
5429              3,
5430              3,
5431              3,
5432              3,
5433              3,
5434              3,
5435              3,
5436              3,
5437              3,
5438              3,
5439              3,
5440              3,
5441              3,
5442              3,
5443              3,
5444              3,
5445              3,
5446              3,
5447              3,
5448              3,
5449              3,
5450              3,
5451              3,
5452              3,
5453              3,
5454              3,
5455              3,
5456              3,
5457              3,
5458              3,
5459              3,
5460              3,
5461              3,
5462              3,
5463              3,
5464              3,
5465              3,
5466              3,
5467              3,
5468              3,
5469              3,
5470              3,
5471              3,
5472              3,
5473              4,
5474              4,
5475              4,
5476              4,
5477              4,
5478              4,
5479              4,
5480              4,
5481              4,
5482              4,
5483              4,
5484              4,
5485              4,
5486              4,
5487              4,
5488              4,
5489              4,
5490              4,
5491              4,
5492              4,
5493              4,
5494              4,
5495              4,
5496              4,
5497              4,
5498              4,
5499              4,
5500              4,
5501              4,
5502              4,
5503              4,
5504              4,
5505              4,
5506              4,
5507              4,
5508              4,
5509              4,
5510              4,
5511              4,
5512              4,
5513              4,
5514              4,
5515              4,
5516              4,
5517              4,
5518              4,
5519              4,
5520              4,
5521              4,
5522              4,
5523              4,
5524              4,
5525              4,
5526              4,
5527              4,
5528              4,
5529              4,
5530              4,
5531              4,
5532              4,
5533              4,
5534              4,
5535              4,
5536              4,
5537              5,
5538              5,
5539              5,
5540              5,
5541              5,
5542              5,
5543              5,
5544              5,
5545              5,
5546              5,
5547              5,
5548              5,
5549              5,
5550              5,
5551              5,
5552              5,
5553              5,
5554              5,
5555              5,
5556              5,
5557              5,
5558              5,
5559              5,
5560              5,
5561              5,
5562              5,
5563              5,
5564              5,
5565              5,
5566              5,
5567              5,
5568              5,
5569              5,
5570              5,
5571              5,
5572              5,
5573              5,
5574              5,
5575              5,
5576              5,
5577              5,
5578              5,
5579              5,
5580              5,
5581              5,
5582              5,
5583              5,
5584              5,
5585              6,
5586              6,
5587              6,
5588              6,
5589              6,
5590              6,
5591              6,
5592              6,
5593              6,
5594              6,
5595              6,
5596              6,
5597              6,
5598              6,
5599              6,
5600              7,
5601              /* CONTEXT_SIGNED, last byte, same as the above values shifted by 3 bits. */
5602              0,
5603              8,
5604              8,
5605              8,
5606              8,
5607              8,
5608              8,
5609              8,
5610              8,
5611              8,
5612              8,
5613              8,
5614              8,
5615              8,
5616              8,
5617              8,
5618              16,
5619              16,
5620              16,
5621              16,
5622              16,
5623              16,
5624              16,
5625              16,
5626              16,
5627              16,
5628              16,
5629              16,
5630              16,
5631              16,
5632              16,
5633              16,
5634              16,
5635              16,
5636              16,
5637              16,
5638              16,
5639              16,
5640              16,
5641              16,
5642              16,
5643              16,
5644              16,
5645              16,
5646              16,
5647              16,
5648              16,
5649              16,
5650              16,
5651              16,
5652              16,
5653              16,
5654              16,
5655              16,
5656              16,
5657              16,
5658              16,
5659              16,
5660              16,
5661              16,
5662              16,
5663              16,
5664              16,
5665              16,
5666              24,
5667              24,
5668              24,
5669              24,
5670              24,
5671              24,
5672              24,
5673              24,
5674              24,
5675              24,
5676              24,
5677              24,
5678              24,
5679              24,
5680              24,
5681              24,
5682              24,
5683              24,
5684              24,
5685              24,
5686              24,
5687              24,
5688              24,
5689              24,
5690              24,
5691              24,
5692              24,
5693              24,
5694              24,
5695              24,
5696              24,
5697              24,
5698              24,
5699              24,
5700              24,
5701              24,
5702              24,
5703              24,
5704              24,
5705              24,
5706              24,
5707              24,
5708              24,
5709              24,
5710              24,
5711              24,
5712              24,
5713              24,
5714              24,
5715              24,
5716              24,
5717              24,
5718              24,
5719              24,
5720              24,
5721              24,
5722              24,
5723              24,
5724              24,
5725              24,
5726              24,
5727              24,
5728              24,
5729              24,
5730              32,
5731              32,
5732              32,
5733              32,
5734              32,
5735              32,
5736              32,
5737              32,
5738              32,
5739              32,
5740              32,
5741              32,
5742              32,
5743              32,
5744              32,
5745              32,
5746              32,
5747              32,
5748              32,
5749              32,
5750              32,
5751              32,
5752              32,
5753              32,
5754              32,
5755              32,
5756              32,
5757              32,
5758              32,
5759              32,
5760              32,
5761              32,
5762              32,
5763              32,
5764              32,
5765              32,
5766              32,
5767              32,
5768              32,
5769              32,
5770              32,
5771              32,
5772              32,
5773              32,
5774              32,
5775              32,
5776              32,
5777              32,
5778              32,
5779              32,
5780              32,
5781              32,
5782              32,
5783              32,
5784              32,
5785              32,
5786              32,
5787              32,
5788              32,
5789              32,
5790              32,
5791              32,
5792              32,
5793              32,
5794              40,
5795              40,
5796              40,
5797              40,
5798              40,
5799              40,
5800              40,
5801              40,
5802              40,
5803              40,
5804              40,
5805              40,
5806              40,
5807              40,
5808              40,
5809              40,
5810              40,
5811              40,
5812              40,
5813              40,
5814              40,
5815              40,
5816              40,
5817              40,
5818              40,
5819              40,
5820              40,
5821              40,
5822              40,
5823              40,
5824              40,
5825              40,
5826              40,
5827              40,
5828              40,
5829              40,
5830              40,
5831              40,
5832              40,
5833              40,
5834              40,
5835              40,
5836              40,
5837              40,
5838              40,
5839              40,
5840              40,
5841              40,
5842              48,
5843              48,
5844              48,
5845              48,
5846              48,
5847              48,
5848              48,
5849              48,
5850              48,
5851              48,
5852              48,
5853              48,
5854              48,
5855              48,
5856              48,
5857              56,
5858              /* CONTEXT_LSB6, last byte. */
5859              0,
5860              1,
5861              2,
5862              3,
5863              4,
5864              5,
5865              6,
5866              7,
5867              8,
5868              9,
5869              10,
5870              11,
5871              12,
5872              13,
5873              14,
5874              15,
5875              16,
5876              17,
5877              18,
5878              19,
5879              20,
5880              21,
5881              22,
5882              23,
5883              24,
5884              25,
5885              26,
5886              27,
5887              28,
5888              29,
5889              30,
5890              31,
5891              32,
5892              33,
5893              34,
5894              35,
5895              36,
5896              37,
5897              38,
5898              39,
5899              40,
5900              41,
5901              42,
5902              43,
5903              44,
5904              45,
5905              46,
5906              47,
5907              48,
5908              49,
5909              50,
5910              51,
5911              52,
5912              53,
5913              54,
5914              55,
5915              56,
5916              57,
5917              58,
5918              59,
5919              60,
5920              61,
5921              62,
5922              63,
5923              0,
5924              1,
5925              2,
5926              3,
5927              4,
5928              5,
5929              6,
5930              7,
5931              8,
5932              9,
5933              10,
5934              11,
5935              12,
5936              13,
5937              14,
5938              15,
5939              16,
5940              17,
5941              18,
5942              19,
5943              20,
5944              21,
5945              22,
5946              23,
5947              24,
5948              25,
5949              26,
5950              27,
5951              28,
5952              29,
5953              30,
5954              31,
5955              32,
5956              33,
5957              34,
5958              35,
5959              36,
5960              37,
5961              38,
5962              39,
5963              40,
5964              41,
5965              42,
5966              43,
5967              44,
5968              45,
5969              46,
5970              47,
5971              48,
5972              49,
5973              50,
5974              51,
5975              52,
5976              53,
5977              54,
5978              55,
5979              56,
5980              57,
5981              58,
5982              59,
5983              60,
5984              61,
5985              62,
5986              63,
5987              0,
5988              1,
5989              2,
5990              3,
5991              4,
5992              5,
5993              6,
5994              7,
5995              8,
5996              9,
5997              10,
5998              11,
5999              12,
6000              13,
6001              14,
6002              15,
6003              16,
6004              17,
6005              18,
6006              19,
6007              20,
6008              21,
6009              22,
6010              23,
6011              24,
6012              25,
6013              26,
6014              27,
6015              28,
6016              29,
6017              30,
6018              31,
6019              32,
6020              33,
6021              34,
6022              35,
6023              36,
6024              37,
6025              38,
6026              39,
6027              40,
6028              41,
6029              42,
6030              43,
6031              44,
6032              45,
6033              46,
6034              47,
6035              48,
6036              49,
6037              50,
6038              51,
6039              52,
6040              53,
6041              54,
6042              55,
6043              56,
6044              57,
6045              58,
6046              59,
6047              60,
6048              61,
6049              62,
6050              63,
6051              0,
6052              1,
6053              2,
6054              3,
6055              4,
6056              5,
6057              6,
6058              7,
6059              8,
6060              9,
6061              10,
6062              11,
6063              12,
6064              13,
6065              14,
6066              15,
6067              16,
6068              17,
6069              18,
6070              19,
6071              20,
6072              21,
6073              22,
6074              23,
6075              24,
6076              25,
6077              26,
6078              27,
6079              28,
6080              29,
6081              30,
6082              31,
6083              32,
6084              33,
6085              34,
6086              35,
6087              36,
6088              37,
6089              38,
6090              39,
6091              40,
6092              41,
6093              42,
6094              43,
6095              44,
6096              45,
6097              46,
6098              47,
6099              48,
6100              49,
6101              50,
6102              51,
6103              52,
6104              53,
6105              54,
6106              55,
6107              56,
6108              57,
6109              58,
6110              59,
6111              60,
6112              61,
6113              62,
6114              63,
6115              /* CONTEXT_MSB6, last byte. */
6116              0,
6117              0,
6118              0,
6119              0,
6120              1,
6121              1,
6122              1,
6123              1,
6124              2,
6125              2,
6126              2,
6127              2,
6128              3,
6129              3,
6130              3,
6131              3,
6132              4,
6133              4,
6134              4,
6135              4,
6136              5,
6137              5,
6138              5,
6139              5,
6140              6,
6141              6,
6142              6,
6143              6,
6144              7,
6145              7,
6146              7,
6147              7,
6148              8,
6149              8,
6150              8,
6151              8,
6152              9,
6153              9,
6154              9,
6155              9,
6156              10,
6157              10,
6158              10,
6159              10,
6160              11,
6161              11,
6162              11,
6163              11,
6164              12,
6165              12,
6166              12,
6167              12,
6168              13,
6169              13,
6170              13,
6171              13,
6172              14,
6173              14,
6174              14,
6175              14,
6176              15,
6177              15,
6178              15,
6179              15,
6180              16,
6181              16,
6182              16,
6183              16,
6184              17,
6185              17,
6186              17,
6187              17,
6188              18,
6189              18,
6190              18,
6191              18,
6192              19,
6193              19,
6194              19,
6195              19,
6196              20,
6197              20,
6198              20,
6199              20,
6200              21,
6201              21,
6202              21,
6203              21,
6204              22,
6205              22,
6206              22,
6207              22,
6208              23,
6209              23,
6210              23,
6211              23,
6212              24,
6213              24,
6214              24,
6215              24,
6216              25,
6217              25,
6218              25,
6219              25,
6220              26,
6221              26,
6222              26,
6223              26,
6224              27,
6225              27,
6226              27,
6227              27,
6228              28,
6229              28,
6230              28,
6231              28,
6232              29,
6233              29,
6234              29,
6235              29,
6236              30,
6237              30,
6238              30,
6239              30,
6240              31,
6241              31,
6242              31,
6243              31,
6244              32,
6245              32,
6246              32,
6247              32,
6248              33,
6249              33,
6250              33,
6251              33,
6252              34,
6253              34,
6254              34,
6255              34,
6256              35,
6257              35,
6258              35,
6259              35,
6260              36,
6261              36,
6262              36,
6263              36,
6264              37,
6265              37,
6266              37,
6267              37,
6268              38,
6269              38,
6270              38,
6271              38,
6272              39,
6273              39,
6274              39,
6275              39,
6276              40,
6277              40,
6278              40,
6279              40,
6280              41,
6281              41,
6282              41,
6283              41,
6284              42,
6285              42,
6286              42,
6287              42,
6288              43,
6289              43,
6290              43,
6291              43,
6292              44,
6293              44,
6294              44,
6295              44,
6296              45,
6297              45,
6298              45,
6299              45,
6300              46,
6301              46,
6302              46,
6303              46,
6304              47,
6305              47,
6306              47,
6307              47,
6308              48,
6309              48,
6310              48,
6311              48,
6312              49,
6313              49,
6314              49,
6315              49,
6316              50,
6317              50,
6318              50,
6319              50,
6320              51,
6321              51,
6322              51,
6323              51,
6324              52,
6325              52,
6326              52,
6327              52,
6328              53,
6329              53,
6330              53,
6331              53,
6332              54,
6333              54,
6334              54,
6335              54,
6336              55,
6337              55,
6338              55,
6339              55,
6340              56,
6341              56,
6342              56,
6343              56,
6344              57,
6345              57,
6346              57,
6347              57,
6348              58,
6349              58,
6350              58,
6351              58,
6352              59,
6353              59,
6354              59,
6355              59,
6356              60,
6357              60,
6358              60,
6359              60,
6360              61,
6361              61,
6362              61,
6363              61,
6364              62,
6365              62,
6366              62,
6367              62,
6368              63,
6369              63,
6370              63,
6371              63,
6372              /* CONTEXT_{M,L}SB6, second last byte, */
6373              0,
6374              0,
6375              0,
6376              0,
6377              0,
6378              0,
6379              0,
6380              0,
6381              0,
6382              0,
6383              0,
6384              0,
6385              0,
6386              0,
6387              0,
6388              0,
6389              0,
6390              0,
6391              0,
6392              0,
6393              0,
6394              0,
6395              0,
6396              0,
6397              0,
6398              0,
6399              0,
6400              0,
6401              0,
6402              0,
6403              0,
6404              0,
6405              0,
6406              0,
6407              0,
6408              0,
6409              0,
6410              0,
6411              0,
6412              0,
6413              0,
6414              0,
6415              0,
6416              0,
6417              0,
6418              0,
6419              0,
6420              0,
6421              0,
6422              0,
6423              0,
6424              0,
6425              0,
6426              0,
6427              0,
6428              0,
6429              0,
6430              0,
6431              0,
6432              0,
6433              0,
6434              0,
6435              0,
6436              0,
6437              0,
6438              0,
6439              0,
6440              0,
6441              0,
6442              0,
6443              0,
6444              0,
6445              0,
6446              0,
6447              0,
6448              0,
6449              0,
6450              0,
6451              0,
6452              0,
6453              0,
6454              0,
6455              0,
6456              0,
6457              0,
6458              0,
6459              0,
6460              0,
6461              0,
6462              0,
6463              0,
6464              0,
6465              0,
6466              0,
6467              0,
6468              0,
6469              0,
6470              0,
6471              0,
6472              0,
6473              0,
6474              0,
6475              0,
6476              0,
6477              0,
6478              0,
6479              0,
6480              0,
6481              0,
6482              0,
6483              0,
6484              0,
6485              0,
6486              0,
6487              0,
6488              0,
6489              0,
6490              0,
6491              0,
6492              0,
6493              0,
6494              0,
6495              0,
6496              0,
6497              0,
6498              0,
6499              0,
6500              0,
6501              0,
6502              0,
6503              0,
6504              0,
6505              0,
6506              0,
6507              0,
6508              0,
6509              0,
6510              0,
6511              0,
6512              0,
6513              0,
6514              0,
6515              0,
6516              0,
6517              0,
6518              0,
6519              0,
6520              0,
6521              0,
6522              0,
6523              0,
6524              0,
6525              0,
6526              0,
6527              0,
6528              0,
6529              0,
6530              0,
6531              0,
6532              0,
6533              0,
6534              0,
6535              0,
6536              0,
6537              0,
6538              0,
6539              0,
6540              0,
6541              0,
6542              0,
6543              0,
6544              0,
6545              0,
6546              0,
6547              0,
6548              0,
6549              0,
6550              0,
6551              0,
6552              0,
6553              0,
6554              0,
6555              0,
6556              0,
6557              0,
6558              0,
6559              0,
6560              0,
6561              0,
6562              0,
6563              0,
6564              0,
6565              0,
6566              0,
6567              0,
6568              0,
6569              0,
6570              0,
6571              0,
6572              0,
6573              0,
6574              0,
6575              0,
6576              0,
6577              0,
6578              0,
6579              0,
6580              0,
6581              0,
6582              0,
6583              0,
6584              0,
6585              0,
6586              0,
6587              0,
6588              0,
6589              0,
6590              0,
6591              0,
6592              0,
6593              0,
6594              0,
6595              0,
6596              0,
6597              0,
6598              0,
6599              0,
6600              0,
6601              0,
6602              0,
6603              0,
6604              0,
6605              0,
6606              0,
6607              0,
6608              0,
6609              0,
6610              0,
6611              0,
6612              0,
6613              0,
6614              0,
6615              0,
6616              0,
6617              0,
6618              0,
6619              0,
6620              0,
6621              0,
6622              0,
6623              0,
6624              0,
6625              0,
6626              0,
6627              0,
6628              0
6629            ]);
6630            exports2.lookupOffsets = new Uint16Array([
6631              /* CONTEXT_LSB6 */
6632              1024,
6633              1536,
6634              1280,
6635              1536,
6636              0,
6637              256,
6638              768,
6639              512
6640            ]);
6641          },
6642          {}
6643        ],
6644        3: [
6645          function(require2, module2, exports2) {
6646            var BrotliInput = require2("./streams").BrotliInput;
6647            var BrotliOutput = require2("./streams").BrotliOutput;
6648            var BrotliBitReader = require2("./bit_reader");
6649            var BrotliDictionary = require2("./dictionary");
6650            var HuffmanCode = require2("./huffman").HuffmanCode;
6651            var BrotliBuildHuffmanTable = require2("./huffman").BrotliBuildHuffmanTable;
6652            var Context = require2("./context");
6653            var Prefix = require2("./prefix");
6654            var Transform = require2("./transform");
6655            var kDefaultCodeLength = 8;
6656            var kCodeLengthRepeatCode = 16;
6657            var kNumLiteralCodes = 256;
6658            var kNumInsertAndCopyCodes = 704;
6659            var kNumBlockLengthCodes = 26;
6660            var kLiteralContextBits = 6;
6661            var kDistanceContextBits = 2;
6662            var HUFFMAN_TABLE_BITS = 8;
6663            var HUFFMAN_TABLE_MASK = 255;
6664            var HUFFMAN_MAX_TABLE_SIZE = 1080;
6665            var CODE_LENGTH_CODES = 18;
6666            var kCodeLengthCodeOrder = new Uint8Array([
6667              1,
6668              2,
6669              3,
6670              4,
6671              0,
6672              5,
6673              17,
6674              6,
6675              16,
6676              7,
6677              8,
6678              9,
6679              10,
6680              11,
6681              12,
6682              13,
6683              14,
6684              15
6685            ]);
6686            var NUM_DISTANCE_SHORT_CODES = 16;
6687            var kDistanceShortCodeIndexOffset = new Uint8Array([
6688              3,
6689              2,
6690              1,
6691              0,
6692              3,
6693              3,
6694              3,
6695              3,
6696              3,
6697              3,
6698              2,
6699              2,
6700              2,
6701              2,
6702              2,
6703              2
6704            ]);
6705            var kDistanceShortCodeValueOffset = new Int8Array([
6706              0,
6707              0,
6708              0,
6709              0,
6710              -1,
6711              1,
6712              -2,
6713              2,
6714              -3,
6715              3,
6716              -1,
6717              1,
6718              -2,
6719              2,
6720              -3,
6721              3
6722            ]);
6723            var kMaxHuffmanTableSize = new Uint16Array([
6724              256,
6725              402,
6726              436,
6727              468,
6728              500,
6729              534,
6730              566,
6731              598,
6732              630,
6733              662,
6734              694,
6735              726,
6736              758,
6737              790,
6738              822,
6739              854,
6740              886,
6741              920,
6742              952,
6743              984,
6744              1016,
6745              1048,
6746              1080
6747            ]);
6748            function DecodeWindowBits(br) {
6749              var n2;
6750              if (br.readBits(1) === 0) {
6751                return 16;
6752              }
6753              n2 = br.readBits(3);
6754              if (n2 > 0) {
6755                return 17 + n2;
6756              }
6757              n2 = br.readBits(3);
6758              if (n2 > 0) {
6759                return 8 + n2;
6760              }
6761              return 17;
6762            }
6763            function DecodeVarLenUint8(br) {
6764              if (br.readBits(1)) {
6765                var nbits = br.readBits(3);
6766                if (nbits === 0) {
6767                  return 1;
6768                } else {
6769                  return br.readBits(nbits) + (1 << nbits);
6770                }
6771              }
6772              return 0;
6773            }
6774            function MetaBlockLength() {
6775              this.meta_block_length = 0;
6776              this.input_end = 0;
6777              this.is_uncompressed = 0;
6778              this.is_metadata = false;
6779            }
6780            function DecodeMetaBlockLength(br) {
6781              var out = new MetaBlockLength();
6782              var size_nibbles;
6783              var size_bytes;
6784              var i2;
6785              out.input_end = br.readBits(1);
6786              if (out.input_end && br.readBits(1)) {
6787                return out;
6788              }
6789              size_nibbles = br.readBits(2) + 4;
6790              if (size_nibbles === 7) {
6791                out.is_metadata = true;
6792                if (br.readBits(1) !== 0)
6793                  throw new Error("Invalid reserved bit");
6794                size_bytes = br.readBits(2);
6795                if (size_bytes === 0) return out;
6796                for (i2 = 0; i2 < size_bytes; i2++) {
6797                  var next_byte = br.readBits(8);
6798                  if (i2 + 1 === size_bytes && size_bytes > 1 && next_byte === 0)
6799                    throw new Error("Invalid size byte");
6800                  out.meta_block_length |= next_byte << i2 * 8;
6801                }
6802              } else {
6803                for (i2 = 0; i2 < size_nibbles; ++i2) {
6804                  var next_nibble = br.readBits(4);
6805                  if (i2 + 1 === size_nibbles && size_nibbles > 4 && next_nibble === 0)
6806                    throw new Error("Invalid size nibble");
6807                  out.meta_block_length |= next_nibble << i2 * 4;
6808                }
6809              }
6810              ++out.meta_block_length;
6811              if (!out.input_end && !out.is_metadata) {
6812                out.is_uncompressed = br.readBits(1);
6813              }
6814              return out;
6815            }
6816            function ReadSymbol(table, index, br) {
6817              var start_index = index;
6818              var nbits;
6819              br.fillBitWindow();
6820              index += br.val_ >>> br.bit_pos_ & HUFFMAN_TABLE_MASK;
6821              nbits = table[index].bits - HUFFMAN_TABLE_BITS;
6822              if (nbits > 0) {
6823                br.bit_pos_ += HUFFMAN_TABLE_BITS;
6824                index += table[index].value;
6825                index += br.val_ >>> br.bit_pos_ & (1 << nbits) - 1;
6826              }
6827              br.bit_pos_ += table[index].bits;
6828              return table[index].value;
6829            }
6830            function ReadHuffmanCodeLengths(code_length_code_lengths, num_symbols, code_lengths, br) {
6831              var symbol = 0;
6832              var prev_code_len = kDefaultCodeLength;
6833              var repeat = 0;
6834              var repeat_code_len = 0;
6835              var space = 32768;
6836              var table = [];
6837              for (var i2 = 0; i2 < 32; i2++)
6838                table.push(new HuffmanCode(0, 0));
6839              BrotliBuildHuffmanTable(
6840                table,
6841                0,
6842                5,
6843                code_length_code_lengths,
6844                CODE_LENGTH_CODES
6845              );
6846              while (symbol < num_symbols && space > 0) {
6847                var p3 = 0;
6848                var code_len;
6849                br.readMoreInput();
6850                br.fillBitWindow();
6851                p3 += br.val_ >>> br.bit_pos_ & 31;
6852                br.bit_pos_ += table[p3].bits;
6853                code_len = table[p3].value & 255;
6854                if (code_len < kCodeLengthRepeatCode) {
6855                  repeat = 0;
6856                  code_lengths[symbol++] = code_len;
6857                  if (code_len !== 0) {
6858                    prev_code_len = code_len;
6859                    space -= 32768 >> code_len;
6860                  }
6861                } else {
6862                  var extra_bits = code_len - 14;
6863                  var old_repeat;
6864                  var repeat_delta;
6865                  var new_len = 0;
6866                  if (code_len === kCodeLengthRepeatCode) {
6867                    new_len = prev_code_len;
6868                  }
6869                  if (repeat_code_len !== new_len) {
6870                    repeat = 0;
6871                    repeat_code_len = new_len;
6872                  }
6873                  old_repeat = repeat;
6874                  if (repeat > 0) {
6875                    repeat -= 2;
6876                    repeat <<= extra_bits;
6877                  }
6878                  repeat += br.readBits(extra_bits) + 3;
6879                  repeat_delta = repeat - old_repeat;
6880                  if (symbol + repeat_delta > num_symbols) {
6881                    throw new Error(
6882                      "[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols"
6883                    );
6884                  }
6885                  for (var x2 = 0; x2 < repeat_delta; x2++)
6886                    code_lengths[symbol + x2] = repeat_code_len;
6887                  symbol += repeat_delta;
6888                  if (repeat_code_len !== 0) {
6889                    space -= repeat_delta << 15 - repeat_code_len;
6890                  }
6891                }
6892              }
6893              if (space !== 0) {
6894                throw new Error(
6895                  "[ReadHuffmanCodeLengths] space = " + space
6896                );
6897              }
6898              for (; symbol < num_symbols; symbol++)
6899                code_lengths[symbol] = 0;
6900            }
6901            function ReadHuffmanCode(alphabet_size, tables, table, br) {
6902              var table_size = 0;
6903              var simple_code_or_skip;
6904              var code_lengths = new Uint8Array(alphabet_size);
6905              br.readMoreInput();
6906              simple_code_or_skip = br.readBits(2);
6907              if (simple_code_or_skip === 1) {
6908                var i2;
6909                var max_bits_counter = alphabet_size - 1;
6910                var max_bits = 0;
6911                var symbols = new Int32Array(4);
6912                var num_symbols = br.readBits(2) + 1;
6913                while (max_bits_counter) {
6914                  max_bits_counter >>= 1;
6915                  ++max_bits;
6916                }
6917                for (i2 = 0; i2 < num_symbols; ++i2) {
6918                  symbols[i2] = br.readBits(max_bits) % alphabet_size;
6919                  code_lengths[symbols[i2]] = 2;
6920                }
6921                code_lengths[symbols[0]] = 1;
6922                switch (num_symbols) {
6923                  case 1:
6924                    break;
6925                  case 3:
6926                    if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[1] === symbols[2]) {
6927                      throw new Error(
6928                        "[ReadHuffmanCode] invalid symbols"
6929                      );
6930                    }
6931                    break;
6932                  case 2:
6933                    if (symbols[0] === symbols[1]) {
6934                      throw new Error(
6935                        "[ReadHuffmanCode] invalid symbols"
6936                      );
6937                    }
6938                    code_lengths[symbols[1]] = 1;
6939                    break;
6940                  case 4:
6941                    if (symbols[0] === symbols[1] || symbols[0] === symbols[2] || symbols[0] === symbols[3] || symbols[1] === symbols[2] || symbols[1] === symbols[3] || symbols[2] === symbols[3]) {
6942                      throw new Error(
6943                        "[ReadHuffmanCode] invalid symbols"
6944                      );
6945                    }
6946                    if (br.readBits(1)) {
6947                      code_lengths[symbols[2]] = 3;
6948                      code_lengths[symbols[3]] = 3;
6949                    } else {
6950                      code_lengths[symbols[0]] = 2;
6951                    }
6952                    break;
6953                }
6954              } else {
6955                var i2;
6956                var code_length_code_lengths = new Uint8Array(
6957                  CODE_LENGTH_CODES
6958                );
6959                var space = 32;
6960                var num_codes = 0;
6961                var huff = [
6962                  new HuffmanCode(2, 0),
6963                  new HuffmanCode(2, 4),
6964                  new HuffmanCode(2, 3),
6965                  new HuffmanCode(3, 2),
6966                  new HuffmanCode(2, 0),
6967                  new HuffmanCode(2, 4),
6968                  new HuffmanCode(2, 3),
6969                  new HuffmanCode(4, 1),
6970                  new HuffmanCode(2, 0),
6971                  new HuffmanCode(2, 4),
6972                  new HuffmanCode(2, 3),
6973                  new HuffmanCode(3, 2),
6974                  new HuffmanCode(2, 0),
6975                  new HuffmanCode(2, 4),
6976                  new HuffmanCode(2, 3),
6977                  new HuffmanCode(4, 5)
6978                ];
6979                for (i2 = simple_code_or_skip; i2 < CODE_LENGTH_CODES && space > 0; ++i2) {
6980                  var code_len_idx = kCodeLengthCodeOrder[i2];
6981                  var p3 = 0;
6982                  var v2;
6983                  br.fillBitWindow();
6984                  p3 += br.val_ >>> br.bit_pos_ & 15;
6985                  br.bit_pos_ += huff[p3].bits;
6986                  v2 = huff[p3].value;
6987                  code_length_code_lengths[code_len_idx] = v2;
6988                  if (v2 !== 0) {
6989                    space -= 32 >> v2;
6990                    ++num_codes;
6991                  }
6992                }
6993                if (!(num_codes === 1 || space === 0))
6994                  throw new Error(
6995                    "[ReadHuffmanCode] invalid num_codes or space"
6996                  );
6997                ReadHuffmanCodeLengths(
6998                  code_length_code_lengths,
6999                  alphabet_size,
7000                  code_lengths,
7001                  br
7002                );
7003              }
7004              table_size = BrotliBuildHuffmanTable(
7005                tables,
7006                table,
7007                HUFFMAN_TABLE_BITS,
7008                code_lengths,
7009                alphabet_size
7010              );
7011              if (table_size === 0) {
7012                throw new Error(
7013                  "[ReadHuffmanCode] BuildHuffmanTable failed: "
7014                );
7015              }
7016              return table_size;
7017            }
7018            function ReadBlockLength(table, index, br) {
7019              var code;
7020              var nbits;
7021              code = ReadSymbol(table, index, br);
7022              nbits = Prefix.kBlockLengthPrefixCode[code].nbits;
7023              return Prefix.kBlockLengthPrefixCode[code].offset + br.readBits(nbits);
7024            }
7025            function TranslateShortCodes(code, ringbuffer, index) {
7026              var val;
7027              if (code < NUM_DISTANCE_SHORT_CODES) {
7028                index += kDistanceShortCodeIndexOffset[code];
7029                index &= 3;
7030                val = ringbuffer[index] + kDistanceShortCodeValueOffset[code];
7031              } else {
7032                val = code - NUM_DISTANCE_SHORT_CODES + 1;
7033              }
7034              return val;
7035            }
7036            function MoveToFront(v2, index) {
7037              var value = v2[index];
7038              var i2 = index;
7039              for (; i2; --i2) v2[i2] = v2[i2 - 1];
7040              v2[0] = value;
7041            }
7042            function InverseMoveToFrontTransform(v2, v_len) {
7043              var mtf = new Uint8Array(256);
7044              var i2;
7045              for (i2 = 0; i2 < 256; ++i2) {
7046                mtf[i2] = i2;
7047              }
7048              for (i2 = 0; i2 < v_len; ++i2) {
7049                var index = v2[i2];
7050                v2[i2] = mtf[index];
7051                if (index) MoveToFront(mtf, index);
7052              }
7053            }
7054            function HuffmanTreeGroup(alphabet_size, num_htrees) {
7055              this.alphabet_size = alphabet_size;
7056              this.num_htrees = num_htrees;
7057              this.codes = new Array(
7058                num_htrees + num_htrees * kMaxHuffmanTableSize[alphabet_size + 31 >>> 5]
7059              );
7060              this.htrees = new Uint32Array(num_htrees);
7061            }
7062            HuffmanTreeGroup.prototype.decode = function(br) {
7063              var i2;
7064              var table_size;
7065              var next = 0;
7066              for (i2 = 0; i2 < this.num_htrees; ++i2) {
7067                this.htrees[i2] = next;
7068                table_size = ReadHuffmanCode(
7069                  this.alphabet_size,
7070                  this.codes,
7071                  next,
7072                  br
7073                );
7074                next += table_size;
7075              }
7076            };
7077            function DecodeContextMap(context_map_size, br) {
7078              var out = { num_htrees: null, context_map: null };
7079              var use_rle_for_zeros;
7080              var max_run_length_prefix = 0;
7081              var table;
7082              var i2;
7083              br.readMoreInput();
7084              var num_htrees = out.num_htrees = DecodeVarLenUint8(br) + 1;
7085              var context_map = out.context_map = new Uint8Array(
7086                context_map_size
7087              );
7088              if (num_htrees <= 1) {
7089                return out;
7090              }
7091              use_rle_for_zeros = br.readBits(1);
7092              if (use_rle_for_zeros) {
7093                max_run_length_prefix = br.readBits(4) + 1;
7094              }
7095              table = [];
7096              for (i2 = 0; i2 < HUFFMAN_MAX_TABLE_SIZE; i2++) {
7097                table[i2] = new HuffmanCode(0, 0);
7098              }
7099              ReadHuffmanCode(
7100                num_htrees + max_run_length_prefix,
7101                table,
7102                0,
7103                br
7104              );
7105              for (i2 = 0; i2 < context_map_size; ) {
7106                var code;
7107                br.readMoreInput();
7108                code = ReadSymbol(table, 0, br);
7109                if (code === 0) {
7110                  context_map[i2] = 0;
7111                  ++i2;
7112                } else if (code <= max_run_length_prefix) {
7113                  var reps = 1 + (1 << code) + br.readBits(code);
7114                  while (--reps) {
7115                    if (i2 >= context_map_size) {
7116                      throw new Error(
7117                        "[DecodeContextMap] i >= context_map_size"
7118                      );
7119                    }
7120                    context_map[i2] = 0;
7121                    ++i2;
7122                  }
7123                } else {
7124                  context_map[i2] = code - max_run_length_prefix;
7125                  ++i2;
7126                }
7127              }
7128              if (br.readBits(1)) {
7129                InverseMoveToFrontTransform(
7130                  context_map,
7131                  context_map_size
7132                );
7133              }
7134              return out;
7135            }
7136            function DecodeBlockType(max_block_type, trees, tree_type, block_types, ringbuffers, indexes, br) {
7137              var ringbuffer = tree_type * 2;
7138              var index = tree_type;
7139              var type_code = ReadSymbol(
7140                trees,
7141                tree_type * HUFFMAN_MAX_TABLE_SIZE,
7142                br
7143              );
7144              var block_type;
7145              if (type_code === 0) {
7146                block_type = ringbuffers[ringbuffer + (indexes[index] & 1)];
7147              } else if (type_code === 1) {
7148                block_type = ringbuffers[ringbuffer + (indexes[index] - 1 & 1)] + 1;
7149              } else {
7150                block_type = type_code - 2;
7151              }
7152              if (block_type >= max_block_type) {
7153                block_type -= max_block_type;
7154              }
7155              block_types[tree_type] = block_type;
7156              ringbuffers[ringbuffer + (indexes[index] & 1)] = block_type;
7157              ++indexes[index];
7158            }
7159            function CopyUncompressedBlockToOutput(output, len, pos, ringbuffer, ringbuffer_mask, br) {
7160              var rb_size = ringbuffer_mask + 1;
7161              var rb_pos = pos & ringbuffer_mask;
7162              var br_pos = br.pos_ & BrotliBitReader.IBUF_MASK;
7163              var nbytes;
7164              if (len < 8 || br.bit_pos_ + (len << 3) < br.bit_end_pos_) {
7165                while (len-- > 0) {
7166                  br.readMoreInput();
7167                  ringbuffer[rb_pos++] = br.readBits(8);
7168                  if (rb_pos === rb_size) {
7169                    output.write(ringbuffer, rb_size);
7170                    rb_pos = 0;
7171                  }
7172                }
7173                return;
7174              }
7175              if (br.bit_end_pos_ < 32) {
7176                throw new Error(
7177                  "[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32"
7178                );
7179              }
7180              while (br.bit_pos_ < 32) {
7181                ringbuffer[rb_pos] = br.val_ >>> br.bit_pos_;
7182                br.bit_pos_ += 8;
7183                ++rb_pos;
7184                --len;
7185              }
7186              nbytes = br.bit_end_pos_ - br.bit_pos_ >> 3;
7187              if (br_pos + nbytes > BrotliBitReader.IBUF_MASK) {
7188                var tail = BrotliBitReader.IBUF_MASK + 1 - br_pos;
7189                for (var x2 = 0; x2 < tail; x2++)
7190                  ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2];
7191                nbytes -= tail;
7192                rb_pos += tail;
7193                len -= tail;
7194                br_pos = 0;
7195              }
7196              for (var x2 = 0; x2 < nbytes; x2++)
7197                ringbuffer[rb_pos + x2] = br.buf_[br_pos + x2];
7198              rb_pos += nbytes;
7199              len -= nbytes;
7200              if (rb_pos >= rb_size) {
7201                output.write(ringbuffer, rb_size);
7202                rb_pos -= rb_size;
7203                for (var x2 = 0; x2 < rb_pos; x2++)
7204                  ringbuffer[x2] = ringbuffer[rb_size + x2];
7205              }
7206              while (rb_pos + len >= rb_size) {
7207                nbytes = rb_size - rb_pos;
7208                if (br.input_.read(ringbuffer, rb_pos, nbytes) < nbytes) {
7209                  throw new Error(
7210                    "[CopyUncompressedBlockToOutput] not enough bytes"
7211                  );
7212                }
7213                output.write(ringbuffer, rb_size);
7214                len -= nbytes;
7215                rb_pos = 0;
7216              }
7217              if (br.input_.read(ringbuffer, rb_pos, len) < len) {
7218                throw new Error(
7219                  "[CopyUncompressedBlockToOutput] not enough bytes"
7220                );
7221              }
7222              br.reset();
7223            }
7224            function JumpToByteBoundary(br) {
7225              var new_bit_pos = br.bit_pos_ + 7 & ~7;
7226              var pad_bits = br.readBits(new_bit_pos - br.bit_pos_);
7227              return pad_bits == 0;
7228            }
7229            function BrotliDecompressedSize(buffer) {
7230              var input = new BrotliInput(buffer);
7231              var br = new BrotliBitReader(input);
7232              DecodeWindowBits(br);
7233              var out = DecodeMetaBlockLength(br);
7234              return out.meta_block_length;
7235            }
7236            exports2.BrotliDecompressedSize = BrotliDecompressedSize;
7237            function BrotliDecompressBuffer(buffer, output_size) {
7238              var input = new BrotliInput(buffer);
7239              if (output_size == null) {
7240                output_size = BrotliDecompressedSize(buffer);
7241              }
7242              var output_buffer = new Uint8Array(output_size);
7243              var output = new BrotliOutput(output_buffer);
7244              BrotliDecompress(input, output);
7245              if (output.pos < output.buffer.length) {
7246                output.buffer = output.buffer.subarray(
7247                  0,
7248                  output.pos
7249                );
7250              }
7251              return output.buffer;
7252            }
7253            exports2.BrotliDecompressBuffer = BrotliDecompressBuffer;
7254            function BrotliDecompress(input, output) {
7255              var i2;
7256              var pos = 0;
7257              var input_end = 0;
7258              var window_bits = 0;
7259              var max_backward_distance;
7260              var max_distance = 0;
7261              var ringbuffer_size;
7262              var ringbuffer_mask;
7263              var ringbuffer;
7264              var ringbuffer_end;
7265              var dist_rb = [16, 15, 11, 4];
7266              var dist_rb_idx = 0;
7267              var prev_byte1 = 0;
7268              var prev_byte2 = 0;
7269              var hgroup = [
7270                new HuffmanTreeGroup(0, 0),
7271                new HuffmanTreeGroup(0, 0),
7272                new HuffmanTreeGroup(0, 0)
7273              ];
7274              var block_type_trees;
7275              var block_len_trees;
7276              var br;
7277              var kRingBufferWriteAheadSlack = 128 + BrotliBitReader.READ_SIZE;
7278              br = new BrotliBitReader(input);
7279              window_bits = DecodeWindowBits(br);
7280              max_backward_distance = (1 << window_bits) - 16;
7281              ringbuffer_size = 1 << window_bits;
7282              ringbuffer_mask = ringbuffer_size - 1;
7283              ringbuffer = new Uint8Array(
7284                ringbuffer_size + kRingBufferWriteAheadSlack + BrotliDictionary.maxDictionaryWordLength
7285              );
7286              ringbuffer_end = ringbuffer_size;
7287              block_type_trees = [];
7288              block_len_trees = [];
7289              for (var x2 = 0; x2 < 3 * HUFFMAN_MAX_TABLE_SIZE; x2++) {
7290                block_type_trees[x2] = new HuffmanCode(0, 0);
7291                block_len_trees[x2] = new HuffmanCode(0, 0);
7292              }
7293              while (!input_end) {
7294                var meta_block_remaining_len = 0;
7295                var is_uncompressed;
7296                var block_length = [1 << 28, 1 << 28, 1 << 28];
7297                var block_type = [0];
7298                var num_block_types = [1, 1, 1];
7299                var block_type_rb = [0, 1, 0, 1, 0, 1];
7300                var block_type_rb_index = [0];
7301                var distance_postfix_bits;
7302                var num_direct_distance_codes;
7303                var distance_postfix_mask;
7304                var num_distance_codes;
7305                var context_map = null;
7306                var context_modes = null;
7307                var num_literal_htrees;
7308                var dist_context_map = null;
7309                var num_dist_htrees;
7310                var context_offset = 0;
7311                var context_map_slice = null;
7312                var literal_htree_index = 0;
7313                var dist_context_offset = 0;
7314                var dist_context_map_slice = null;
7315                var dist_htree_index = 0;
7316                var context_lookup_offset1 = 0;
7317                var context_lookup_offset2 = 0;
7318                var context_mode;
7319                var htree_command;
7320                for (i2 = 0; i2 < 3; ++i2) {
7321                  hgroup[i2].codes = null;
7322                  hgroup[i2].htrees = null;
7323                }
7324                br.readMoreInput();
7325                var _out = DecodeMetaBlockLength(br);
7326                meta_block_remaining_len = _out.meta_block_length;
7327                if (pos + meta_block_remaining_len > output.buffer.length) {
7328                  var tmp = new Uint8Array(
7329                    pos + meta_block_remaining_len
7330                  );
7331                  tmp.set(output.buffer);
7332                  output.buffer = tmp;
7333                }
7334                input_end = _out.input_end;
7335                is_uncompressed = _out.is_uncompressed;
7336                if (_out.is_metadata) {
7337                  JumpToByteBoundary(br);
7338                  for (; meta_block_remaining_len > 0; --meta_block_remaining_len) {
7339                    br.readMoreInput();
7340                    br.readBits(8);
7341                  }
7342                  continue;
7343                }
7344                if (meta_block_remaining_len === 0) {
7345                  continue;
7346                }
7347                if (is_uncompressed) {
7348                  br.bit_pos_ = br.bit_pos_ + 7 & ~7;
7349                  CopyUncompressedBlockToOutput(
7350                    output,
7351                    meta_block_remaining_len,
7352                    pos,
7353                    ringbuffer,
7354                    ringbuffer_mask,
7355                    br
7356                  );
7357                  pos += meta_block_remaining_len;
7358                  continue;
7359                }
7360                for (i2 = 0; i2 < 3; ++i2) {
7361                  num_block_types[i2] = DecodeVarLenUint8(br) + 1;
7362                  if (num_block_types[i2] >= 2) {
7363                    ReadHuffmanCode(
7364                      num_block_types[i2] + 2,
7365                      block_type_trees,
7366                      i2 * HUFFMAN_MAX_TABLE_SIZE,
7367                      br
7368                    );
7369                    ReadHuffmanCode(
7370                      kNumBlockLengthCodes,
7371                      block_len_trees,
7372                      i2 * HUFFMAN_MAX_TABLE_SIZE,
7373                      br
7374                    );
7375                    block_length[i2] = ReadBlockLength(
7376                      block_len_trees,
7377                      i2 * HUFFMAN_MAX_TABLE_SIZE,
7378                      br
7379                    );
7380                    block_type_rb_index[i2] = 1;
7381                  }
7382                }
7383                br.readMoreInput();
7384                distance_postfix_bits = br.readBits(2);
7385                num_direct_distance_codes = NUM_DISTANCE_SHORT_CODES + (br.readBits(4) << distance_postfix_bits);
7386                distance_postfix_mask = (1 << distance_postfix_bits) - 1;
7387                num_distance_codes = num_direct_distance_codes + (48 << distance_postfix_bits);
7388                context_modes = new Uint8Array(
7389                  num_block_types[0]
7390                );
7391                for (i2 = 0; i2 < num_block_types[0]; ++i2) {
7392                  br.readMoreInput();
7393                  context_modes[i2] = br.readBits(2) << 1;
7394                }
7395                var _o1 = DecodeContextMap(
7396                  num_block_types[0] << kLiteralContextBits,
7397                  br
7398                );
7399                num_literal_htrees = _o1.num_htrees;
7400                context_map = _o1.context_map;
7401                var _o2 = DecodeContextMap(
7402                  num_block_types[2] << kDistanceContextBits,
7403                  br
7404                );
7405                num_dist_htrees = _o2.num_htrees;
7406                dist_context_map = _o2.context_map;
7407                hgroup[0] = new HuffmanTreeGroup(
7408                  kNumLiteralCodes,
7409                  num_literal_htrees
7410                );
7411                hgroup[1] = new HuffmanTreeGroup(
7412                  kNumInsertAndCopyCodes,
7413                  num_block_types[1]
7414                );
7415                hgroup[2] = new HuffmanTreeGroup(
7416                  num_distance_codes,
7417                  num_dist_htrees
7418                );
7419                for (i2 = 0; i2 < 3; ++i2) {
7420                  hgroup[i2].decode(br);
7421                }
7422                context_map_slice = 0;
7423                dist_context_map_slice = 0;
7424                context_mode = context_modes[block_type[0]];
7425                context_lookup_offset1 = Context.lookupOffsets[context_mode];
7426                context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
7427                htree_command = hgroup[1].htrees[0];
7428                while (meta_block_remaining_len > 0) {
7429                  var cmd_code;
7430                  var range_idx;
7431                  var insert_code;
7432                  var copy_code;
7433                  var insert_length;
7434                  var copy_length;
7435                  var distance_code;
7436                  var distance;
7437                  var context;
7438                  var j2;
7439                  var copy_dst;
7440                  br.readMoreInput();
7441                  if (block_length[1] === 0) {
7442                    DecodeBlockType(
7443                      num_block_types[1],
7444                      block_type_trees,
7445                      1,
7446                      block_type,
7447                      block_type_rb,
7448                      block_type_rb_index,
7449                      br
7450                    );
7451                    block_length[1] = ReadBlockLength(
7452                      block_len_trees,
7453                      HUFFMAN_MAX_TABLE_SIZE,
7454                      br
7455                    );
7456                    htree_command = hgroup[1].htrees[block_type[1]];
7457                  }
7458                  --block_length[1];
7459                  cmd_code = ReadSymbol(
7460                    hgroup[1].codes,
7461                    htree_command,
7462                    br
7463                  );
7464                  range_idx = cmd_code >> 6;
7465                  if (range_idx >= 2) {
7466                    range_idx -= 2;
7467                    distance_code = -1;
7468                  } else {
7469                    distance_code = 0;
7470                  }
7471                  insert_code = Prefix.kInsertRangeLut[range_idx] + (cmd_code >> 3 & 7);
7472                  copy_code = Prefix.kCopyRangeLut[range_idx] + (cmd_code & 7);
7473                  insert_length = Prefix.kInsertLengthPrefixCode[insert_code].offset + br.readBits(
7474                    Prefix.kInsertLengthPrefixCode[insert_code].nbits
7475                  );
7476                  copy_length = Prefix.kCopyLengthPrefixCode[copy_code].offset + br.readBits(
7477                    Prefix.kCopyLengthPrefixCode[copy_code].nbits
7478                  );
7479                  prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask];
7480                  prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask];
7481                  for (j2 = 0; j2 < insert_length; ++j2) {
7482                    br.readMoreInput();
7483                    if (block_length[0] === 0) {
7484                      DecodeBlockType(
7485                        num_block_types[0],
7486                        block_type_trees,
7487                        0,
7488                        block_type,
7489                        block_type_rb,
7490                        block_type_rb_index,
7491                        br
7492                      );
7493                      block_length[0] = ReadBlockLength(
7494                        block_len_trees,
7495                        0,
7496                        br
7497                      );
7498                      context_offset = block_type[0] << kLiteralContextBits;
7499                      context_map_slice = context_offset;
7500                      context_mode = context_modes[block_type[0]];
7501                      context_lookup_offset1 = Context.lookupOffsets[context_mode];
7502                      context_lookup_offset2 = Context.lookupOffsets[context_mode + 1];
7503                    }
7504                    context = Context.lookup[context_lookup_offset1 + prev_byte1] | Context.lookup[context_lookup_offset2 + prev_byte2];
7505                    literal_htree_index = context_map[context_map_slice + context];
7506                    --block_length[0];
7507                    prev_byte2 = prev_byte1;
7508                    prev_byte1 = ReadSymbol(
7509                      hgroup[0].codes,
7510                      hgroup[0].htrees[literal_htree_index],
7511                      br
7512                    );
7513                    ringbuffer[pos & ringbuffer_mask] = prev_byte1;
7514                    if ((pos & ringbuffer_mask) === ringbuffer_mask) {
7515                      output.write(
7516                        ringbuffer,
7517                        ringbuffer_size
7518                      );
7519                    }
7520                    ++pos;
7521                  }
7522                  meta_block_remaining_len -= insert_length;
7523                  if (meta_block_remaining_len <= 0) break;
7524                  if (distance_code < 0) {
7525                    var context;
7526                    br.readMoreInput();
7527                    if (block_length[2] === 0) {
7528                      DecodeBlockType(
7529                        num_block_types[2],
7530                        block_type_trees,
7531                        2,
7532                        block_type,
7533                        block_type_rb,
7534                        block_type_rb_index,
7535                        br
7536                      );
7537                      block_length[2] = ReadBlockLength(
7538                        block_len_trees,
7539                        2 * HUFFMAN_MAX_TABLE_SIZE,
7540                        br
7541                      );
7542                      dist_context_offset = block_type[2] << kDistanceContextBits;
7543                      dist_context_map_slice = dist_context_offset;
7544                    }
7545                    --block_length[2];
7546                    context = (copy_length > 4 ? 3 : copy_length - 2) & 255;
7547                    dist_htree_index = dist_context_map[dist_context_map_slice + context];
7548                    distance_code = ReadSymbol(
7549                      hgroup[2].codes,
7550                      hgroup[2].htrees[dist_htree_index],
7551                      br
7552                    );
7553                    if (distance_code >= num_direct_distance_codes) {
7554                      var nbits;
7555                      var postfix;
7556                      var offset;
7557                      distance_code -= num_direct_distance_codes;
7558                      postfix = distance_code & distance_postfix_mask;
7559                      distance_code >>= distance_postfix_bits;
7560                      nbits = (distance_code >> 1) + 1;
7561                      offset = (2 + (distance_code & 1) << nbits) - 4;
7562                      distance_code = num_direct_distance_codes + (offset + br.readBits(nbits) << distance_postfix_bits) + postfix;
7563                    }
7564                  }
7565                  distance = TranslateShortCodes(
7566                    distance_code,
7567                    dist_rb,
7568                    dist_rb_idx
7569                  );
7570                  if (distance < 0) {
7571                    throw new Error(
7572                      "[BrotliDecompress] invalid distance"
7573                    );
7574                  }
7575                  if (pos < max_backward_distance && max_distance !== max_backward_distance) {
7576                    max_distance = pos;
7577                  } else {
7578                    max_distance = max_backward_distance;
7579                  }
7580                  copy_dst = pos & ringbuffer_mask;
7581                  if (distance > max_distance) {
7582                    if (copy_length >= BrotliDictionary.minDictionaryWordLength && copy_length <= BrotliDictionary.maxDictionaryWordLength) {
7583                      var offset = BrotliDictionary.offsetsByLength[copy_length];
7584                      var word_id = distance - max_distance - 1;
7585                      var shift = BrotliDictionary.sizeBitsByLength[copy_length];
7586                      var mask = (1 << shift) - 1;
7587                      var word_idx = word_id & mask;
7588                      var transform_idx = word_id >> shift;
7589                      offset += word_idx * copy_length;
7590                      if (transform_idx < Transform.kNumTransforms) {
7591                        var len = Transform.transformDictionaryWord(
7592                          ringbuffer,
7593                          copy_dst,
7594                          offset,
7595                          copy_length,
7596                          transform_idx
7597                        );
7598                        copy_dst += len;
7599                        pos += len;
7600                        meta_block_remaining_len -= len;
7601                        if (copy_dst >= ringbuffer_end) {
7602                          output.write(
7603                            ringbuffer,
7604                            ringbuffer_size
7605                          );
7606                          for (var _x9 = 0; _x9 < copy_dst - ringbuffer_end; _x9++)
7607                            ringbuffer[_x9] = ringbuffer[ringbuffer_end + _x9];
7608                        }
7609                      } else {
7610                        throw new Error(
7611                          "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
7612                        );
7613                      }
7614                    } else {
7615                      throw new Error(
7616                        "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
7617                      );
7618                    }
7619                  } else {
7620                    if (distance_code > 0) {
7621                      dist_rb[dist_rb_idx & 3] = distance;
7622                      ++dist_rb_idx;
7623                    }
7624                    if (copy_length > meta_block_remaining_len) {
7625                      throw new Error(
7626                        "Invalid backward reference. pos: " + pos + " distance: " + distance + " len: " + copy_length + " bytes left: " + meta_block_remaining_len
7627                      );
7628                    }
7629                    for (j2 = 0; j2 < copy_length; ++j2) {
7630                      ringbuffer[pos & ringbuffer_mask] = ringbuffer[pos - distance & ringbuffer_mask];
7631                      if ((pos & ringbuffer_mask) === ringbuffer_mask) {
7632                        output.write(
7633                          ringbuffer,
7634                          ringbuffer_size
7635                        );
7636                      }
7637                      ++pos;
7638                      --meta_block_remaining_len;
7639                    }
7640                  }
7641                  prev_byte1 = ringbuffer[pos - 1 & ringbuffer_mask];
7642                  prev_byte2 = ringbuffer[pos - 2 & ringbuffer_mask];
7643                }
7644                pos &= 1073741823;
7645              }
7646              output.write(ringbuffer, pos & ringbuffer_mask);
7647            }
7648            exports2.BrotliDecompress = BrotliDecompress;
7649            BrotliDictionary.init();
7650          },
7651          {
7652            "./bit_reader": 1,
7653            "./context": 2,
7654            "./dictionary": 6,
7655            "./huffman": 7,
7656            "./prefix": 9,
7657            "./streams": 10,
7658            "./transform": 11
7659          }
7660        ],
7661        4: [
7662          function(require2, module2, exports2) {
7663            var base64 = require2("base64-js");
7664            exports2.init = function() {
7665              var BrotliDecompressBuffer = require2("./decode").BrotliDecompressBuffer;
7666              var compressed = base64.toByteArray(
7667                require2("./dictionary.bin.js")
7668              );
7669              return BrotliDecompressBuffer(compressed);
7670            };
7671          },
7672          { "./decode": 3, "./dictionary.bin.js": 5, "base64-js": 8 }
7673        ],
7674        5: [
7675          function(require2, module2, exports2) {
7676            module2.exports = "W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg=";
7677          },
7678          {}
7679        ],
7680        6: [
7681          function(require2, module2, exports2) {
7682            var data = require2("./dictionary-browser");
7683            exports2.init = function() {
7684              exports2.dictionary = data.init();
7685            };
7686            exports2.offsetsByLength = new Uint32Array([
7687              0,
7688              0,
7689              0,
7690              0,
7691              0,
7692              4096,
7693              9216,
7694              21504,
7695              35840,
7696              44032,
7697              53248,
7698              63488,
7699              74752,
7700              87040,
7701              93696,
7702              100864,
7703              104704,
7704              106752,
7705              108928,
7706              113536,
7707              115968,
7708              118528,
7709              119872,
7710              121280,
7711              122016
7712            ]);
7713            exports2.sizeBitsByLength = new Uint8Array([
7714              0,
7715              0,
7716              0,
7717              0,
7718              10,
7719              10,
7720              11,
7721              11,
7722              10,
7723              10,
7724              10,
7725              10,
7726              10,
7727              9,
7728              9,
7729              8,
7730              7,
7731              7,
7732              8,
7733              7,
7734              7,
7735              6,
7736              6,
7737              5,
7738              5
7739            ]);
7740            exports2.minDictionaryWordLength = 4;
7741            exports2.maxDictionaryWordLength = 24;
7742          },
7743          { "./dictionary-browser": 4 }
7744        ],
7745        7: [
7746          function(require2, module2, exports2) {
7747            function HuffmanCode(bits, value) {
7748              this.bits = bits;
7749              this.value = value;
7750            }
7751            exports2.HuffmanCode = HuffmanCode;
7752            var MAX_LENGTH = 15;
7753            function GetNextKey(key, len) {
7754              var step = 1 << len - 1;
7755              while (key & step) {
7756                step >>= 1;
7757              }
7758              return (key & step - 1) + step;
7759            }
7760            function ReplicateValue(table, i2, step, end, code) {
7761              do {
7762                end -= step;
7763                table[i2 + end] = new HuffmanCode(
7764                  code.bits,
7765                  code.value
7766                );
7767              } while (end > 0);
7768            }
7769            function NextTableBitSize(count, len, root_bits) {
7770              var left = 1 << len - root_bits;
7771              while (len < MAX_LENGTH) {
7772                left -= count[len];
7773                if (left <= 0) break;
7774                ++len;
7775                left <<= 1;
7776              }
7777              return len - root_bits;
7778            }
7779            exports2.BrotliBuildHuffmanTable = function(root_table, table, root_bits, code_lengths, code_lengths_size) {
7780              var start_table = table;
7781              var code;
7782              var len;
7783              var symbol;
7784              var key;
7785              var step;
7786              var low;
7787              var mask;
7788              var table_bits;
7789              var table_size;
7790              var total_size;
7791              var sorted;
7792              var count = new Int32Array(
7793                MAX_LENGTH + 1
7794              );
7795              var offset = new Int32Array(
7796                MAX_LENGTH + 1
7797              );
7798              sorted = new Int32Array(code_lengths_size);
7799              for (symbol = 0; symbol < code_lengths_size; symbol++) {
7800                count[code_lengths[symbol]]++;
7801              }
7802              offset[1] = 0;
7803              for (len = 1; len < MAX_LENGTH; len++) {
7804                offset[len + 1] = offset[len] + count[len];
7805              }
7806              for (symbol = 0; symbol < code_lengths_size; symbol++) {
7807                if (code_lengths[symbol] !== 0) {
7808                  sorted[offset[code_lengths[symbol]]++] = symbol;
7809                }
7810              }
7811              table_bits = root_bits;
7812              table_size = 1 << table_bits;
7813              total_size = table_size;
7814              if (offset[MAX_LENGTH] === 1) {
7815                for (key = 0; key < total_size; ++key) {
7816                  root_table[table + key] = new HuffmanCode(
7817                    0,
7818                    sorted[0] & 65535
7819                  );
7820                }
7821                return total_size;
7822              }
7823              key = 0;
7824              symbol = 0;
7825              for (len = 1, step = 2; len <= root_bits; ++len, step <<= 1) {
7826                for (; count[len] > 0; --count[len]) {
7827                  code = new HuffmanCode(
7828                    len & 255,
7829                    sorted[symbol++] & 65535
7830                  );
7831                  ReplicateValue(
7832                    root_table,
7833                    table + key,
7834                    step,
7835                    table_size,
7836                    code
7837                  );
7838                  key = GetNextKey(key, len);
7839                }
7840              }
7841              mask = total_size - 1;
7842              low = -1;
7843              for (len = root_bits + 1, step = 2; len <= MAX_LENGTH; ++len, step <<= 1) {
7844                for (; count[len] > 0; --count[len]) {
7845                  if ((key & mask) !== low) {
7846                    table += table_size;
7847                    table_bits = NextTableBitSize(
7848                      count,
7849                      len,
7850                      root_bits
7851                    );
7852                    table_size = 1 << table_bits;
7853                    total_size += table_size;
7854                    low = key & mask;
7855                    root_table[start_table + low] = new HuffmanCode(
7856                      table_bits + root_bits & 255,
7857                      table - start_table - low & 65535
7858                    );
7859                  }
7860                  code = new HuffmanCode(
7861                    len - root_bits & 255,
7862                    sorted[symbol++] & 65535
7863                  );
7864                  ReplicateValue(
7865                    root_table,
7866                    table + (key >> root_bits),
7867                    step,
7868                    table_size,
7869                    code
7870                  );
7871                  key = GetNextKey(key, len);
7872                }
7873              }
7874              return total_size;
7875            };
7876          },
7877          {}
7878        ],
7879        8: [
7880          function(require2, module2, exports2) {
7881            "use strict";
7882            exports2.byteLength = byteLength;
7883            exports2.toByteArray = toByteArray;
7884            exports2.fromByteArray = fromByteArray;
7885            var lookup = [];
7886            var revLookup = [];
7887            var Arr = typeof Uint8Array !== "undefined" ? Uint8Array : Array;
7888            var code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
7889            for (var i2 = 0, len = code.length; i2 < len; ++i2) {
7890              lookup[i2] = code[i2];
7891              revLookup[code.charCodeAt(i2)] = i2;
7892            }
7893            revLookup["-".charCodeAt(0)] = 62;
7894            revLookup["_".charCodeAt(0)] = 63;
7895            function getLens(b64) {
7896              var len2 = b64.length;
7897              if (len2 % 4 > 0) {
7898                throw new Error(
7899                  "Invalid string. Length must be a multiple of 4"
7900                );
7901              }
7902              var validLen = b64.indexOf("=");
7903              if (validLen === -1) validLen = len2;
7904              var placeHoldersLen = validLen === len2 ? 0 : 4 - validLen % 4;
7905              return [validLen, placeHoldersLen];
7906            }
7907            function byteLength(b64) {
7908              var lens = getLens(b64);
7909              var validLen = lens[0];
7910              var placeHoldersLen = lens[1];
7911              return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
7912            }
7913            function _byteLength(b64, validLen, placeHoldersLen) {
7914              return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
7915            }
7916            function toByteArray(b64) {
7917              var tmp;
7918              var lens = getLens(b64);
7919              var validLen = lens[0];
7920              var placeHoldersLen = lens[1];
7921              var arr = new Arr(
7922                _byteLength(b64, validLen, placeHoldersLen)
7923              );
7924              var curByte = 0;
7925              var len2 = placeHoldersLen > 0 ? validLen - 4 : validLen;
7926              for (var i22 = 0; i22 < len2; i22 += 4) {
7927                tmp = revLookup[b64.charCodeAt(i22)] << 18 | revLookup[b64.charCodeAt(i22 + 1)] << 12 | revLookup[b64.charCodeAt(i22 + 2)] << 6 | revLookup[b64.charCodeAt(i22 + 3)];
7928                arr[curByte++] = tmp >> 16 & 255;
7929                arr[curByte++] = tmp >> 8 & 255;
7930                arr[curByte++] = tmp & 255;
7931              }
7932              if (placeHoldersLen === 2) {
7933                tmp = revLookup[b64.charCodeAt(i22)] << 2 | revLookup[b64.charCodeAt(i22 + 1)] >> 4;
7934                arr[curByte++] = tmp & 255;
7935              }
7936              if (placeHoldersLen === 1) {
7937                tmp = revLookup[b64.charCodeAt(i22)] << 10 | revLookup[b64.charCodeAt(i22 + 1)] << 4 | revLookup[b64.charCodeAt(i22 + 2)] >> 2;
7938                arr[curByte++] = tmp >> 8 & 255;
7939                arr[curByte++] = tmp & 255;
7940              }
7941              return arr;
7942            }
7943            function tripletToBase64(num) {
7944              return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];
7945            }
7946            function encodeChunk(uint8, start, end) {
7947              var tmp;
7948              var output = [];
7949              for (var i22 = start; i22 < end; i22 += 3) {
7950                tmp = (uint8[i22] << 16 & 16711680) + (uint8[i22 + 1] << 8 & 65280) + (uint8[i22 + 2] & 255);
7951                output.push(tripletToBase64(tmp));
7952              }
7953              return output.join("");
7954            }
7955            function fromByteArray(uint8) {
7956              var tmp;
7957              var len2 = uint8.length;
7958              var extraBytes = len2 % 3;
7959              var parts = [];
7960              var maxChunkLength = 16383;
7961              for (var i22 = 0, len22 = len2 - extraBytes; i22 < len22; i22 += maxChunkLength) {
7962                parts.push(
7963                  encodeChunk(
7964                    uint8,
7965                    i22,
7966                    i22 + maxChunkLength > len22 ? len22 : i22 + maxChunkLength
7967                  )
7968                );
7969              }
7970              if (extraBytes === 1) {
7971                tmp = uint8[len2 - 1];
7972                parts.push(
7973                  lookup[tmp >> 2] + lookup[tmp << 4 & 63] + "=="
7974                );
7975              } else if (extraBytes === 2) {
7976                tmp = (uint8[len2 - 2] << 8) + uint8[len2 - 1];
7977                parts.push(
7978                  lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + "="
7979                );
7980              }
7981              return parts.join("");
7982            }
7983          },
7984          {}
7985        ],
7986        9: [
7987          function(require2, module2, exports2) {
7988            function PrefixCodeRange(offset, nbits) {
7989              this.offset = offset;
7990              this.nbits = nbits;
7991            }
7992            exports2.kBlockLengthPrefixCode = [
7993              new PrefixCodeRange(1, 2),
7994              new PrefixCodeRange(5, 2),
7995              new PrefixCodeRange(9, 2),
7996              new PrefixCodeRange(13, 2),
7997              new PrefixCodeRange(17, 3),
7998              new PrefixCodeRange(25, 3),
7999              new PrefixCodeRange(33, 3),
8000              new PrefixCodeRange(41, 3),
8001              new PrefixCodeRange(49, 4),
8002              new PrefixCodeRange(65, 4),
8003              new PrefixCodeRange(81, 4),
8004              new PrefixCodeRange(97, 4),
8005              new PrefixCodeRange(113, 5),
8006              new PrefixCodeRange(145, 5),
8007              new PrefixCodeRange(177, 5),
8008              new PrefixCodeRange(209, 5),
8009              new PrefixCodeRange(241, 6),
8010              new PrefixCodeRange(305, 6),
8011              new PrefixCodeRange(369, 7),
8012              new PrefixCodeRange(497, 8),
8013              new PrefixCodeRange(753, 9),
8014              new PrefixCodeRange(1265, 10),
8015              new PrefixCodeRange(2289, 11),
8016              new PrefixCodeRange(4337, 12),
8017              new PrefixCodeRange(8433, 13),
8018              new PrefixCodeRange(16625, 24)
8019            ];
8020            exports2.kInsertLengthPrefixCode = [
8021              new PrefixCodeRange(0, 0),
8022              new PrefixCodeRange(1, 0),
8023              new PrefixCodeRange(2, 0),
8024              new PrefixCodeRange(3, 0),
8025              new PrefixCodeRange(4, 0),
8026              new PrefixCodeRange(5, 0),
8027              new PrefixCodeRange(6, 1),
8028              new PrefixCodeRange(8, 1),
8029              new PrefixCodeRange(10, 2),
8030              new PrefixCodeRange(14, 2),
8031              new PrefixCodeRange(18, 3),
8032              new PrefixCodeRange(26, 3),
8033              new PrefixCodeRange(34, 4),
8034              new PrefixCodeRange(50, 4),
8035              new PrefixCodeRange(66, 5),
8036              new PrefixCodeRange(98, 5),
8037              new PrefixCodeRange(130, 6),
8038              new PrefixCodeRange(194, 7),
8039              new PrefixCodeRange(322, 8),
8040              new PrefixCodeRange(578, 9),
8041              new PrefixCodeRange(1090, 10),
8042              new PrefixCodeRange(2114, 12),
8043              new PrefixCodeRange(6210, 14),
8044              new PrefixCodeRange(22594, 24)
8045            ];
8046            exports2.kCopyLengthPrefixCode = [
8047              new PrefixCodeRange(2, 0),
8048              new PrefixCodeRange(3, 0),
8049              new PrefixCodeRange(4, 0),
8050              new PrefixCodeRange(5, 0),
8051              new PrefixCodeRange(6, 0),
8052              new PrefixCodeRange(7, 0),
8053              new PrefixCodeRange(8, 0),
8054              new PrefixCodeRange(9, 0),
8055              new PrefixCodeRange(10, 1),
8056              new PrefixCodeRange(12, 1),
8057              new PrefixCodeRange(14, 2),
8058              new PrefixCodeRange(18, 2),
8059              new PrefixCodeRange(22, 3),
8060              new PrefixCodeRange(30, 3),
8061              new PrefixCodeRange(38, 4),
8062              new PrefixCodeRange(54, 4),
8063              new PrefixCodeRange(70, 5),
8064              new PrefixCodeRange(102, 5),
8065              new PrefixCodeRange(134, 6),
8066              new PrefixCodeRange(198, 7),
8067              new PrefixCodeRange(326, 8),
8068              new PrefixCodeRange(582, 9),
8069              new PrefixCodeRange(1094, 10),
8070              new PrefixCodeRange(2118, 24)
8071            ];
8072            exports2.kInsertRangeLut = [0, 0, 8, 8, 0, 16, 8, 16, 16];
8073            exports2.kCopyRangeLut = [0, 8, 0, 8, 16, 0, 16, 8, 16];
8074          },
8075          {}
8076        ],
8077        10: [
8078          function(require2, module2, exports2) {
8079            function BrotliInput(buffer) {
8080              this.buffer = buffer;
8081              this.pos = 0;
8082            }
8083            BrotliInput.prototype.read = function(buf, i2, count) {
8084              if (this.pos + count > this.buffer.length) {
8085                count = this.buffer.length - this.pos;
8086              }
8087              for (var p3 = 0; p3 < count; p3++)
8088                buf[i2 + p3] = this.buffer[this.pos + p3];
8089              this.pos += count;
8090              return count;
8091            };
8092            exports2.BrotliInput = BrotliInput;
8093            function BrotliOutput(buf) {
8094              this.buffer = buf;
8095              this.pos = 0;
8096            }
8097            BrotliOutput.prototype.write = function(buf, count) {
8098              if (this.pos + count > this.buffer.length)
8099                throw new Error(
8100                  "Output buffer is not large enough"
8101                );
8102              this.buffer.set(buf.subarray(0, count), this.pos);
8103              this.pos += count;
8104              return count;
8105            };
8106            exports2.BrotliOutput = BrotliOutput;
8107          },
8108          {}
8109        ],
8110        11: [
8111          function(require2, module2, exports2) {
8112            var BrotliDictionary = require2("./dictionary");
8113            var kIdentity = 0;
8114            var kOmitLast1 = 1;
8115            var kOmitLast2 = 2;
8116            var kOmitLast3 = 3;
8117            var kOmitLast4 = 4;
8118            var kOmitLast5 = 5;
8119            var kOmitLast6 = 6;
8120            var kOmitLast7 = 7;
8121            var kOmitLast8 = 8;
8122            var kOmitLast9 = 9;
8123            var kUppercaseFirst = 10;
8124            var kUppercaseAll = 11;
8125            var kOmitFirst1 = 12;
8126            var kOmitFirst2 = 13;
8127            var kOmitFirst3 = 14;
8128            var kOmitFirst4 = 15;
8129            var kOmitFirst5 = 16;
8130            var kOmitFirst6 = 17;
8131            var kOmitFirst7 = 18;
8132            var kOmitFirst8 = 19;
8133            var kOmitFirst9 = 20;
8134            function Transform(prefix, transform, suffix) {
8135              this.prefix = new Uint8Array(prefix.length);
8136              this.transform = transform;
8137              this.suffix = new Uint8Array(suffix.length);
8138              for (var i2 = 0; i2 < prefix.length; i2++)
8139                this.prefix[i2] = prefix.charCodeAt(i2);
8140              for (var i2 = 0; i2 < suffix.length; i2++)
8141                this.suffix[i2] = suffix.charCodeAt(i2);
8142            }
8143            var kTransforms = [
8144              new Transform("", kIdentity, ""),
8145              new Transform("", kIdentity, " "),
8146              new Transform(" ", kIdentity, " "),
8147              new Transform("", kOmitFirst1, ""),
8148              new Transform("", kUppercaseFirst, " "),
8149              new Transform("", kIdentity, " the "),
8150              new Transform(" ", kIdentity, ""),
8151              new Transform("s ", kIdentity, " "),
8152              new Transform("", kIdentity, " of "),
8153              new Transform("", kUppercaseFirst, ""),
8154              new Transform("", kIdentity, " and "),
8155              new Transform("", kOmitFirst2, ""),
8156              new Transform("", kOmitLast1, ""),
8157              new Transform(", ", kIdentity, " "),
8158              new Transform("", kIdentity, ", "),
8159              new Transform(" ", kUppercaseFirst, " "),
8160              new Transform("", kIdentity, " in "),
8161              new Transform("", kIdentity, " to "),
8162              new Transform("e ", kIdentity, " "),
8163              new Transform("", kIdentity, '"'),
8164              new Transform("", kIdentity, "."),
8165              new Transform("", kIdentity, '">'),
8166              new Transform("", kIdentity, "\n"),
8167              new Transform("", kOmitLast3, ""),
8168              new Transform("", kIdentity, "]"),
8169              new Transform("", kIdentity, " for "),
8170              new Transform("", kOmitFirst3, ""),
8171              new Transform("", kOmitLast2, ""),
8172              new Transform("", kIdentity, " a "),
8173              new Transform("", kIdentity, " that "),
8174              new Transform(" ", kUppercaseFirst, ""),
8175              new Transform("", kIdentity, ". "),
8176              new Transform(".", kIdentity, ""),
8177              new Transform(" ", kIdentity, ", "),
8178              new Transform("", kOmitFirst4, ""),
8179              new Transform("", kIdentity, " with "),
8180              new Transform("", kIdentity, "'"),
8181              new Transform("", kIdentity, " from "),
8182              new Transform("", kIdentity, " by "),
8183              new Transform("", kOmitFirst5, ""),
8184              new Transform("", kOmitFirst6, ""),
8185              new Transform(" the ", kIdentity, ""),
8186              new Transform("", kOmitLast4, ""),
8187              new Transform("", kIdentity, ". The "),
8188              new Transform("", kUppercaseAll, ""),
8189              new Transform("", kIdentity, " on "),
8190              new Transform("", kIdentity, " as "),
8191              new Transform("", kIdentity, " is "),
8192              new Transform("", kOmitLast7, ""),
8193              new Transform("", kOmitLast1, "ing "),
8194              new Transform("", kIdentity, "\n    "),
8195              new Transform("", kIdentity, ":"),
8196              new Transform(" ", kIdentity, ". "),
8197              new Transform("", kIdentity, "ed "),
8198              new Transform("", kOmitFirst9, ""),
8199              new Transform("", kOmitFirst7, ""),
8200              new Transform("", kOmitLast6, ""),
8201              new Transform("", kIdentity, "("),
8202              new Transform("", kUppercaseFirst, ", "),
8203              new Transform("", kOmitLast8, ""),
8204              new Transform("", kIdentity, " at "),
8205              new Transform("", kIdentity, "ly "),
8206              new Transform(" the ", kIdentity, " of "),
8207              new Transform("", kOmitLast5, ""),
8208              new Transform("", kOmitLast9, ""),
8209              new Transform(" ", kUppercaseFirst, ", "),
8210              new Transform("", kUppercaseFirst, '"'),
8211              new Transform(".", kIdentity, "("),
8212              new Transform("", kUppercaseAll, " "),
8213              new Transform("", kUppercaseFirst, '">'),
8214              new Transform("", kIdentity, '="'),
8215              new Transform(" ", kIdentity, "."),
8216              new Transform(".com/", kIdentity, ""),
8217              new Transform(" the ", kIdentity, " of the "),
8218              new Transform("", kUppercaseFirst, "'"),
8219              new Transform("", kIdentity, ". This "),
8220              new Transform("", kIdentity, ","),
8221              new Transform(".", kIdentity, " "),
8222              new Transform("", kUppercaseFirst, "("),
8223              new Transform("", kUppercaseFirst, "."),
8224              new Transform("", kIdentity, " not "),
8225              new Transform(" ", kIdentity, '="'),
8226              new Transform("", kIdentity, "er "),
8227              new Transform(" ", kUppercaseAll, " "),
8228              new Transform("", kIdentity, "al "),
8229              new Transform(" ", kUppercaseAll, ""),
8230              new Transform("", kIdentity, "='"),
8231              new Transform("", kUppercaseAll, '"'),
8232              new Transform("", kUppercaseFirst, ". "),
8233              new Transform(" ", kIdentity, "("),
8234              new Transform("", kIdentity, "ful "),
8235              new Transform(" ", kUppercaseFirst, ". "),
8236              new Transform("", kIdentity, "ive "),
8237              new Transform("", kIdentity, "less "),
8238              new Transform("", kUppercaseAll, "'"),
8239              new Transform("", kIdentity, "est "),
8240              new Transform(" ", kUppercaseFirst, "."),
8241              new Transform("", kUppercaseAll, '">'),
8242              new Transform(" ", kIdentity, "='"),
8243              new Transform("", kUppercaseFirst, ","),
8244              new Transform("", kIdentity, "ize "),
8245              new Transform("", kUppercaseAll, "."),
8246              new Transform("\xC2\xA0", kIdentity, ""),
8247              new Transform(" ", kIdentity, ","),
8248              new Transform("", kUppercaseFirst, '="'),
8249              new Transform("", kUppercaseAll, '="'),
8250              new Transform("", kIdentity, "ous "),
8251              new Transform("", kUppercaseAll, ", "),
8252              new Transform("", kUppercaseFirst, "='"),
8253              new Transform(" ", kUppercaseFirst, ","),
8254              new Transform(" ", kUppercaseAll, '="'),
8255              new Transform(" ", kUppercaseAll, ", "),
8256              new Transform("", kUppercaseAll, ","),
8257              new Transform("", kUppercaseAll, "("),
8258              new Transform("", kUppercaseAll, ". "),
8259              new Transform(" ", kUppercaseAll, "."),
8260              new Transform("", kUppercaseAll, "='"),
8261              new Transform(" ", kUppercaseAll, ". "),
8262              new Transform(" ", kUppercaseFirst, '="'),
8263              new Transform(" ", kUppercaseAll, "='"),
8264              new Transform(" ", kUppercaseFirst, "='")
8265            ];
8266            exports2.kTransforms = kTransforms;
8267            exports2.kNumTransforms = kTransforms.length;
8268            function ToUpperCase(p3, i2) {
8269              if (p3[i2] < 192) {
8270                if (p3[i2] >= 97 && p3[i2] <= 122) {
8271                  p3[i2] ^= 32;
8272                }
8273                return 1;
8274              }
8275              if (p3[i2] < 224) {
8276                p3[i2 + 1] ^= 32;
8277                return 2;
8278              }
8279              p3[i2 + 2] ^= 5;
8280              return 3;
8281            }
8282            exports2.transformDictionaryWord = function(dst, idx, word, len, transform) {
8283              var prefix = kTransforms[transform].prefix;
8284              var suffix = kTransforms[transform].suffix;
8285              var t3 = kTransforms[transform].transform;
8286              var skip = t3 < kOmitFirst1 ? 0 : t3 - (kOmitFirst1 - 1);
8287              var i2 = 0;
8288              var start_idx = idx;
8289              var uppercase;
8290              if (skip > len) {
8291                skip = len;
8292              }
8293              var prefix_pos = 0;
8294              while (prefix_pos < prefix.length) {
8295                dst[idx++] = prefix[prefix_pos++];
8296              }
8297              word += skip;
8298              len -= skip;
8299              if (t3 <= kOmitLast9) {
8300                len -= t3;
8301              }
8302              for (i2 = 0; i2 < len; i2++) {
8303                dst[idx++] = BrotliDictionary.dictionary[word + i2];
8304              }
8305              uppercase = idx - len;
8306              if (t3 === kUppercaseFirst) {
8307                ToUpperCase(dst, uppercase);
8308              } else if (t3 === kUppercaseAll) {
8309                while (len > 0) {
8310                  var step = ToUpperCase(dst, uppercase);
8311                  uppercase += step;
8312                  len -= step;
8313                }
8314              }
8315              var suffix_pos = 0;
8316              while (suffix_pos < suffix.length) {
8317                dst[idx++] = suffix[suffix_pos++];
8318              }
8319              return idx - start_idx;
8320            };
8321          },
8322          { "./dictionary": 6 }
8323        ],
8324        12: [
8325          function(require2, module2, exports2) {
8326            module2.exports = require2("./dec/decode").BrotliDecompressBuffer;
8327          },
8328          { "./dec/decode": 3 }
8329        ]
8330      },
8331      {},
8332      [12]
8333    )(12);
8334  })();
8335  
8336  // packages/global-styles-ui/build-module/font-library/lib/inflate.mjs
8337  var __require3 = /* @__PURE__ */ ((x2) => typeof __require !== "undefined" ? __require : typeof Proxy !== "undefined" ? new Proxy(x2, {
8338    get: (a2, b2) => (typeof __require !== "undefined" ? __require : a2)[b2]
8339  }) : x2)(function(x2) {
8340    if (typeof __require !== "undefined") return __require.apply(this, arguments);
8341    throw Error('Dynamic require of "' + x2 + '" is not supported');
8342  });
8343  var inflate_default = (function() {
8344    var define, module, exports;
8345    return (/* @__PURE__ */ (function() {
8346      function r3(e2, n2, t3) {
8347        function o3(i22, f2) {
8348          if (!n2[i22]) {
8349            if (!e2[i22]) {
8350              var c2 = "function" == typeof __require3 && __require3;
8351              if (!f2 && c2) return c2(i22, true);
8352              if (u2) return u2(i22, true);
8353              var a2 = new Error("Cannot find module '" + i22 + "'");
8354              throw a2.code = "MODULE_NOT_FOUND", a2;
8355            }
8356            var p3 = n2[i22] = { exports: {} };
8357            e2[i22][0].call(
8358              p3.exports,
8359              function(r22) {
8360                var n22 = e2[i22][1][r22];
8361                return o3(n22 || r22);
8362              },
8363              p3,
8364              p3.exports,
8365              r3,
8366              e2,
8367              n2,
8368              t3
8369            );
8370          }
8371          return n2[i22].exports;
8372        }
8373        for (var u2 = "function" == typeof __require3 && __require3, i2 = 0; i2 < t3.length; i2++)
8374          o3(t3[i2]);
8375        return o3;
8376      }
8377      return r3;
8378    })())(
8379      {
8380        1: [
8381          function(require2, module2, exports2) {
8382            "use strict";
8383            var TYPED_OK = typeof Uint8Array !== "undefined" && typeof Uint16Array !== "undefined" && typeof Int32Array !== "undefined";
8384            function _has(obj, key) {
8385              return Object.prototype.hasOwnProperty.call(obj, key);
8386            }
8387            exports2.assign = function(obj) {
8388              var sources = Array.prototype.slice.call(
8389                arguments,
8390                1
8391              );
8392              while (sources.length) {
8393                var source = sources.shift();
8394                if (!source) {
8395                  continue;
8396                }
8397                if (typeof source !== "object") {
8398                  throw new TypeError(
8399                    source + "must be non-object"
8400                  );
8401                }
8402                for (var p3 in source) {
8403                  if (_has(source, p3)) {
8404                    obj[p3] = source[p3];
8405                  }
8406                }
8407              }
8408              return obj;
8409            };
8410            exports2.shrinkBuf = function(buf, size) {
8411              if (buf.length === size) {
8412                return buf;
8413              }
8414              if (buf.subarray) {
8415                return buf.subarray(0, size);
8416              }
8417              buf.length = size;
8418              return buf;
8419            };
8420            var fnTyped = {
8421              arraySet: function(dest, src, src_offs, len, dest_offs) {
8422                if (src.subarray && dest.subarray) {
8423                  dest.set(
8424                    src.subarray(src_offs, src_offs + len),
8425                    dest_offs
8426                  );
8427                  return;
8428                }
8429                for (var i2 = 0; i2 < len; i2++) {
8430                  dest[dest_offs + i2] = src[src_offs + i2];
8431                }
8432              },
8433              // Join array of chunks to single array.
8434              flattenChunks: function(chunks) {
8435                var i2, l2, len, pos, chunk, result;
8436                len = 0;
8437                for (i2 = 0, l2 = chunks.length; i2 < l2; i2++) {
8438                  len += chunks[i2].length;
8439                }
8440                result = new Uint8Array(len);
8441                pos = 0;
8442                for (i2 = 0, l2 = chunks.length; i2 < l2; i2++) {
8443                  chunk = chunks[i2];
8444                  result.set(chunk, pos);
8445                  pos += chunk.length;
8446                }
8447                return result;
8448              }
8449            };
8450            var fnUntyped = {
8451              arraySet: function(dest, src, src_offs, len, dest_offs) {
8452                for (var i2 = 0; i2 < len; i2++) {
8453                  dest[dest_offs + i2] = src[src_offs + i2];
8454                }
8455              },
8456              // Join array of chunks to single array.
8457              flattenChunks: function(chunks) {
8458                return [].concat.apply([], chunks);
8459              }
8460            };
8461            exports2.setTyped = function(on) {
8462              if (on) {
8463                exports2.Buf8 = Uint8Array;
8464                exports2.Buf16 = Uint16Array;
8465                exports2.Buf32 = Int32Array;
8466                exports2.assign(exports2, fnTyped);
8467              } else {
8468                exports2.Buf8 = Array;
8469                exports2.Buf16 = Array;
8470                exports2.Buf32 = Array;
8471                exports2.assign(exports2, fnUntyped);
8472              }
8473            };
8474            exports2.setTyped(TYPED_OK);
8475          },
8476          {}
8477        ],
8478        2: [
8479          function(require2, module2, exports2) {
8480            "use strict";
8481            var utils = require2("./common");
8482            var STR_APPLY_OK = true;
8483            var STR_APPLY_UIA_OK = true;
8484            try {
8485              String.fromCharCode.apply(null, [0]);
8486            } catch (__42) {
8487              STR_APPLY_OK = false;
8488            }
8489            try {
8490              String.fromCharCode.apply(null, new Uint8Array(1));
8491            } catch (__42) {
8492              STR_APPLY_UIA_OK = false;
8493            }
8494            var _utf8len = new utils.Buf8(256);
8495            for (var q = 0; q < 256; q++) {
8496              _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1;
8497            }
8498            _utf8len[254] = _utf8len[254] = 1;
8499            exports2.string2buf = function(str) {
8500              var buf, c2, c22, m_pos, i2, str_len = str.length, buf_len = 0;
8501              for (m_pos = 0; m_pos < str_len; m_pos++) {
8502                c2 = str.charCodeAt(m_pos);
8503                if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) {
8504                  c22 = str.charCodeAt(m_pos + 1);
8505                  if ((c22 & 64512) === 56320) {
8506                    c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320);
8507                    m_pos++;
8508                  }
8509                }
8510                buf_len += c2 < 128 ? 1 : c2 < 2048 ? 2 : c2 < 65536 ? 3 : 4;
8511              }
8512              buf = new utils.Buf8(buf_len);
8513              for (i2 = 0, m_pos = 0; i2 < buf_len; m_pos++) {
8514                c2 = str.charCodeAt(m_pos);
8515                if ((c2 & 64512) === 55296 && m_pos + 1 < str_len) {
8516                  c22 = str.charCodeAt(m_pos + 1);
8517                  if ((c22 & 64512) === 56320) {
8518                    c2 = 65536 + (c2 - 55296 << 10) + (c22 - 56320);
8519                    m_pos++;
8520                  }
8521                }
8522                if (c2 < 128) {
8523                  buf[i2++] = c2;
8524                } else if (c2 < 2048) {
8525                  buf[i2++] = 192 | c2 >>> 6;
8526                  buf[i2++] = 128 | c2 & 63;
8527                } else if (c2 < 65536) {
8528                  buf[i2++] = 224 | c2 >>> 12;
8529                  buf[i2++] = 128 | c2 >>> 6 & 63;
8530                  buf[i2++] = 128 | c2 & 63;
8531                } else {
8532                  buf[i2++] = 240 | c2 >>> 18;
8533                  buf[i2++] = 128 | c2 >>> 12 & 63;
8534                  buf[i2++] = 128 | c2 >>> 6 & 63;
8535                  buf[i2++] = 128 | c2 & 63;
8536                }
8537              }
8538              return buf;
8539            };
8540            function buf2binstring(buf, len) {
8541              if (len < 65534) {
8542                if (buf.subarray && STR_APPLY_UIA_OK || !buf.subarray && STR_APPLY_OK) {
8543                  return String.fromCharCode.apply(
8544                    null,
8545                    utils.shrinkBuf(buf, len)
8546                  );
8547                }
8548              }
8549              var result = "";
8550              for (var i2 = 0; i2 < len; i2++) {
8551                result += String.fromCharCode(buf[i2]);
8552              }
8553              return result;
8554            }
8555            exports2.buf2binstring = function(buf) {
8556              return buf2binstring(buf, buf.length);
8557            };
8558            exports2.binstring2buf = function(str) {
8559              var buf = new utils.Buf8(str.length);
8560              for (var i2 = 0, len = buf.length; i2 < len; i2++) {
8561                buf[i2] = str.charCodeAt(i2);
8562              }
8563              return buf;
8564            };
8565            exports2.buf2string = function(buf, max) {
8566              var i2, out, c2, c_len;
8567              var len = max || buf.length;
8568              var utf16buf = new Array(len * 2);
8569              for (out = 0, i2 = 0; i2 < len; ) {
8570                c2 = buf[i2++];
8571                if (c2 < 128) {
8572                  utf16buf[out++] = c2;
8573                  continue;
8574                }
8575                c_len = _utf8len[c2];
8576                if (c_len > 4) {
8577                  utf16buf[out++] = 65533;
8578                  i2 += c_len - 1;
8579                  continue;
8580                }
8581                c2 &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7;
8582                while (c_len > 1 && i2 < len) {
8583                  c2 = c2 << 6 | buf[i2++] & 63;
8584                  c_len--;
8585                }
8586                if (c_len > 1) {
8587                  utf16buf[out++] = 65533;
8588                  continue;
8589                }
8590                if (c2 < 65536) {
8591                  utf16buf[out++] = c2;
8592                } else {
8593                  c2 -= 65536;
8594                  utf16buf[out++] = 55296 | c2 >> 10 & 1023;
8595                  utf16buf[out++] = 56320 | c2 & 1023;
8596                }
8597              }
8598              return buf2binstring(utf16buf, out);
8599            };
8600            exports2.utf8border = function(buf, max) {
8601              var pos;
8602              max = max || buf.length;
8603              if (max > buf.length) {
8604                max = buf.length;
8605              }
8606              pos = max - 1;
8607              while (pos >= 0 && (buf[pos] & 192) === 128) {
8608                pos--;
8609              }
8610              if (pos < 0) {
8611                return max;
8612              }
8613              if (pos === 0) {
8614                return max;
8615              }
8616              return pos + _utf8len[buf[pos]] > max ? pos : max;
8617            };
8618          },
8619          { "./common": 1 }
8620        ],
8621        3: [
8622          function(require2, module2, exports2) {
8623            "use strict";
8624            function adler32(adler, buf, len, pos) {
8625              var s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n2 = 0;
8626              while (len !== 0) {
8627                n2 = len > 2e3 ? 2e3 : len;
8628                len -= n2;
8629                do {
8630                  s1 = s1 + buf[pos++] | 0;
8631                  s2 = s2 + s1 | 0;
8632                } while (--n2);
8633                s1 %= 65521;
8634                s2 %= 65521;
8635              }
8636              return s1 | s2 << 16 | 0;
8637            }
8638            module2.exports = adler32;
8639          },
8640          {}
8641        ],
8642        4: [
8643          function(require2, module2, exports2) {
8644            "use strict";
8645            module2.exports = {
8646              /* Allowed flush values; see deflate() and inflate() below for details */
8647              Z_NO_FLUSH: 0,
8648              Z_PARTIAL_FLUSH: 1,
8649              Z_SYNC_FLUSH: 2,
8650              Z_FULL_FLUSH: 3,
8651              Z_FINISH: 4,
8652              Z_BLOCK: 5,
8653              Z_TREES: 6,
8654              /* Return codes for the compression/decompression functions. Negative values
8655               * are errors, positive values are used for special but normal events.
8656               */
8657              Z_OK: 0,
8658              Z_STREAM_END: 1,
8659              Z_NEED_DICT: 2,
8660              Z_ERRNO: -1,
8661              Z_STREAM_ERROR: -2,
8662              Z_DATA_ERROR: -3,
8663              //Z_MEM_ERROR:     -4,
8664              Z_BUF_ERROR: -5,
8665              //Z_VERSION_ERROR: -6,
8666              /* compression levels */
8667              Z_NO_COMPRESSION: 0,
8668              Z_BEST_SPEED: 1,
8669              Z_BEST_COMPRESSION: 9,
8670              Z_DEFAULT_COMPRESSION: -1,
8671              Z_FILTERED: 1,
8672              Z_HUFFMAN_ONLY: 2,
8673              Z_RLE: 3,
8674              Z_FIXED: 4,
8675              Z_DEFAULT_STRATEGY: 0,
8676              /* Possible values of the data_type field (though see inflate()) */
8677              Z_BINARY: 0,
8678              Z_TEXT: 1,
8679              //Z_ASCII:                1, // = Z_TEXT (deprecated)
8680              Z_UNKNOWN: 2,
8681              /* The deflate compression method */
8682              Z_DEFLATED: 8
8683              //Z_NULL:                 null // Use -1 or null inline, depending on var type
8684            };
8685          },
8686          {}
8687        ],
8688        5: [
8689          function(require2, module2, exports2) {
8690            "use strict";
8691            function makeTable() {
8692              var c2, table = [];
8693              for (var n2 = 0; n2 < 256; n2++) {
8694                c2 = n2;
8695                for (var k2 = 0; k2 < 8; k2++) {
8696                  c2 = c2 & 1 ? 3988292384 ^ c2 >>> 1 : c2 >>> 1;
8697                }
8698                table[n2] = c2;
8699              }
8700              return table;
8701            }
8702            var crcTable = makeTable();
8703            function crc32(crc, buf, len, pos) {
8704              var t3 = crcTable, end = pos + len;
8705              crc ^= -1;
8706              for (var i2 = pos; i2 < end; i2++) {
8707                crc = crc >>> 8 ^ t3[(crc ^ buf[i2]) & 255];
8708              }
8709              return crc ^ -1;
8710            }
8711            module2.exports = crc32;
8712          },
8713          {}
8714        ],
8715        6: [
8716          function(require2, module2, exports2) {
8717            "use strict";
8718            function GZheader() {
8719              this.text = 0;
8720              this.time = 0;
8721              this.xflags = 0;
8722              this.os = 0;
8723              this.extra = null;
8724              this.extra_len = 0;
8725              this.name = "";
8726              this.comment = "";
8727              this.hcrc = 0;
8728              this.done = false;
8729            }
8730            module2.exports = GZheader;
8731          },
8732          {}
8733        ],
8734        7: [
8735          function(require2, module2, exports2) {
8736            "use strict";
8737            var BAD = 30;
8738            var TYPE = 12;
8739            module2.exports = function inflate_fast(strm, start) {
8740              var state;
8741              var _in;
8742              var last;
8743              var _out;
8744              var beg;
8745              var end;
8746              var dmax;
8747              var wsize;
8748              var whave;
8749              var wnext;
8750              var s_window;
8751              var hold;
8752              var bits;
8753              var lcode;
8754              var dcode;
8755              var lmask;
8756              var dmask;
8757              var here;
8758              var op;
8759              var len;
8760              var dist;
8761              var from;
8762              var from_source;
8763              var input, output;
8764              state = strm.state;
8765              _in = strm.next_in;
8766              input = strm.input;
8767              last = _in + (strm.avail_in - 5);
8768              _out = strm.next_out;
8769              output = strm.output;
8770              beg = _out - (start - strm.avail_out);
8771              end = _out + (strm.avail_out - 257);
8772              dmax = state.dmax;
8773              wsize = state.wsize;
8774              whave = state.whave;
8775              wnext = state.wnext;
8776              s_window = state.window;
8777              hold = state.hold;
8778              bits = state.bits;
8779              lcode = state.lencode;
8780              dcode = state.distcode;
8781              lmask = (1 << state.lenbits) - 1;
8782              dmask = (1 << state.distbits) - 1;
8783              top: do {
8784                if (bits < 15) {
8785                  hold += input[_in++] << bits;
8786                  bits += 8;
8787                  hold += input[_in++] << bits;
8788                  bits += 8;
8789                }
8790                here = lcode[hold & lmask];
8791                dolen: for (; ; ) {
8792                  op = here >>> 24;
8793                  hold >>>= op;
8794                  bits -= op;
8795                  op = here >>> 16 & 255;
8796                  if (op === 0) {
8797                    output[_out++] = here & 65535;
8798                  } else if (op & 16) {
8799                    len = here & 65535;
8800                    op &= 15;
8801                    if (op) {
8802                      if (bits < op) {
8803                        hold += input[_in++] << bits;
8804                        bits += 8;
8805                      }
8806                      len += hold & (1 << op) - 1;
8807                      hold >>>= op;
8808                      bits -= op;
8809                    }
8810                    if (bits < 15) {
8811                      hold += input[_in++] << bits;
8812                      bits += 8;
8813                      hold += input[_in++] << bits;
8814                      bits += 8;
8815                    }
8816                    here = dcode[hold & dmask];
8817                    dodist: for (; ; ) {
8818                      op = here >>> 24;
8819                      hold >>>= op;
8820                      bits -= op;
8821                      op = here >>> 16 & 255;
8822                      if (op & 16) {
8823                        dist = here & 65535;
8824                        op &= 15;
8825                        if (bits < op) {
8826                          hold += input[_in++] << bits;
8827                          bits += 8;
8828                          if (bits < op) {
8829                            hold += input[_in++] << bits;
8830                            bits += 8;
8831                          }
8832                        }
8833                        dist += hold & (1 << op) - 1;
8834                        if (dist > dmax) {
8835                          strm.msg = "invalid distance too far back";
8836                          state.mode = BAD;
8837                          break top;
8838                        }
8839                        hold >>>= op;
8840                        bits -= op;
8841                        op = _out - beg;
8842                        if (dist > op) {
8843                          op = dist - op;
8844                          if (op > whave) {
8845                            if (state.sane) {
8846                              strm.msg = "invalid distance too far back";
8847                              state.mode = BAD;
8848                              break top;
8849                            }
8850                          }
8851                          from = 0;
8852                          from_source = s_window;
8853                          if (wnext === 0) {
8854                            from += wsize - op;
8855                            if (op < len) {
8856                              len -= op;
8857                              do {
8858                                output[_out++] = s_window[from++];
8859                              } while (--op);
8860                              from = _out - dist;
8861                              from_source = output;
8862                            }
8863                          } else if (wnext < op) {
8864                            from += wsize + wnext - op;
8865                            op -= wnext;
8866                            if (op < len) {
8867                              len -= op;
8868                              do {
8869                                output[_out++] = s_window[from++];
8870                              } while (--op);
8871                              from = 0;
8872                              if (wnext < len) {
8873                                op = wnext;
8874                                len -= op;
8875                                do {
8876                                  output[_out++] = s_window[from++];
8877                                } while (--op);
8878                                from = _out - dist;
8879                                from_source = output;
8880                              }
8881                            }
8882                          } else {
8883                            from += wnext - op;
8884                            if (op < len) {
8885                              len -= op;
8886                              do {
8887                                output[_out++] = s_window[from++];
8888                              } while (--op);
8889                              from = _out - dist;
8890                              from_source = output;
8891                            }
8892                          }
8893                          while (len > 2) {
8894                            output[_out++] = from_source[from++];
8895                            output[_out++] = from_source[from++];
8896                            output[_out++] = from_source[from++];
8897                            len -= 3;
8898                          }
8899                          if (len) {
8900                            output[_out++] = from_source[from++];
8901                            if (len > 1) {
8902                              output[_out++] = from_source[from++];
8903                            }
8904                          }
8905                        } else {
8906                          from = _out - dist;
8907                          do {
8908                            output[_out++] = output[from++];
8909                            output[_out++] = output[from++];
8910                            output[_out++] = output[from++];
8911                            len -= 3;
8912                          } while (len > 2);
8913                          if (len) {
8914                            output[_out++] = output[from++];
8915                            if (len > 1) {
8916                              output[_out++] = output[from++];
8917                            }
8918                          }
8919                        }
8920                      } else if ((op & 64) === 0) {
8921                        here = dcode[(here & 65535) + (hold & (1 << op) - 1)];
8922                        continue dodist;
8923                      } else {
8924                        strm.msg = "invalid distance code";
8925                        state.mode = BAD;
8926                        break top;
8927                      }
8928                      break;
8929                    }
8930                  } else if ((op & 64) === 0) {
8931                    here = lcode[(here & 65535) + (hold & (1 << op) - 1)];
8932                    continue dolen;
8933                  } else if (op & 32) {
8934                    state.mode = TYPE;
8935                    break top;
8936                  } else {
8937                    strm.msg = "invalid literal/length code";
8938                    state.mode = BAD;
8939                    break top;
8940                  }
8941                  break;
8942                }
8943              } while (_in < last && _out < end);
8944              len = bits >> 3;
8945              _in -= len;
8946              bits -= len << 3;
8947              hold &= (1 << bits) - 1;
8948              strm.next_in = _in;
8949              strm.next_out = _out;
8950              strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last);
8951              strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end);
8952              state.hold = hold;
8953              state.bits = bits;
8954              return;
8955            };
8956          },
8957          {}
8958        ],
8959        8: [
8960          function(require2, module2, exports2) {
8961            "use strict";
8962            var utils = require2("../utils/common");
8963            var adler32 = require2("./adler32");
8964            var crc32 = require2("./crc32");
8965            var inflate_fast = require2("./inffast");
8966            var inflate_table = require2("./inftrees");
8967            var CODES = 0;
8968            var LENS = 1;
8969            var DISTS = 2;
8970            var Z_FINISH = 4;
8971            var Z_BLOCK = 5;
8972            var Z_TREES = 6;
8973            var Z_OK = 0;
8974            var Z_STREAM_END = 1;
8975            var Z_NEED_DICT = 2;
8976            var Z_STREAM_ERROR = -2;
8977            var Z_DATA_ERROR = -3;
8978            var Z_MEM_ERROR = -4;
8979            var Z_BUF_ERROR = -5;
8980            var Z_DEFLATED = 8;
8981            var HEAD = 1;
8982            var FLAGS = 2;
8983            var TIME = 3;
8984            var OS = 4;
8985            var EXLEN = 5;
8986            var EXTRA = 6;
8987            var NAME = 7;
8988            var COMMENT = 8;
8989            var HCRC = 9;
8990            var DICTID = 10;
8991            var DICT = 11;
8992            var TYPE = 12;
8993            var TYPEDO = 13;
8994            var STORED = 14;
8995            var COPY_ = 15;
8996            var COPY = 16;
8997            var TABLE = 17;
8998            var LENLENS = 18;
8999            var CODELENS = 19;
9000            var LEN_ = 20;
9001            var LEN = 21;
9002            var LENEXT = 22;
9003            var DIST = 23;
9004            var DISTEXT = 24;
9005            var MATCH = 25;
9006            var LIT = 26;
9007            var CHECK = 27;
9008            var LENGTH = 28;
9009            var DONE = 29;
9010            var BAD = 30;
9011            var MEM = 31;
9012            var SYNC = 32;
9013            var ENOUGH_LENS = 852;
9014            var ENOUGH_DISTS = 592;
9015            var MAX_WBITS = 15;
9016            var DEF_WBITS = MAX_WBITS;
9017            function zswap32(q) {
9018              return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24);
9019            }
9020            function InflateState() {
9021              this.mode = 0;
9022              this.last = false;
9023              this.wrap = 0;
9024              this.havedict = false;
9025              this.flags = 0;
9026              this.dmax = 0;
9027              this.check = 0;
9028              this.total = 0;
9029              this.head = null;
9030              this.wbits = 0;
9031              this.wsize = 0;
9032              this.whave = 0;
9033              this.wnext = 0;
9034              this.window = null;
9035              this.hold = 0;
9036              this.bits = 0;
9037              this.length = 0;
9038              this.offset = 0;
9039              this.extra = 0;
9040              this.lencode = null;
9041              this.distcode = null;
9042              this.lenbits = 0;
9043              this.distbits = 0;
9044              this.ncode = 0;
9045              this.nlen = 0;
9046              this.ndist = 0;
9047              this.have = 0;
9048              this.next = null;
9049              this.lens = new utils.Buf16(
9050                320
9051              );
9052              this.work = new utils.Buf16(
9053                288
9054              );
9055              this.lendyn = null;
9056              this.distdyn = null;
9057              this.sane = 0;
9058              this.back = 0;
9059              this.was = 0;
9060            }
9061            function inflateResetKeep(strm) {
9062              var state;
9063              if (!strm || !strm.state) {
9064                return Z_STREAM_ERROR;
9065              }
9066              state = strm.state;
9067              strm.total_in = strm.total_out = state.total = 0;
9068              strm.msg = "";
9069              if (state.wrap) {
9070                strm.adler = state.wrap & 1;
9071              }
9072              state.mode = HEAD;
9073              state.last = 0;
9074              state.havedict = 0;
9075              state.dmax = 32768;
9076              state.head = null;
9077              state.hold = 0;
9078              state.bits = 0;
9079              state.lencode = state.lendyn = new utils.Buf32(
9080                ENOUGH_LENS
9081              );
9082              state.distcode = state.distdyn = new utils.Buf32(
9083                ENOUGH_DISTS
9084              );
9085              state.sane = 1;
9086              state.back = -1;
9087              return Z_OK;
9088            }
9089            function inflateReset(strm) {
9090              var state;
9091              if (!strm || !strm.state) {
9092                return Z_STREAM_ERROR;
9093              }
9094              state = strm.state;
9095              state.wsize = 0;
9096              state.whave = 0;
9097              state.wnext = 0;
9098              return inflateResetKeep(strm);
9099            }
9100            function inflateReset2(strm, windowBits) {
9101              var wrap;
9102              var state;
9103              if (!strm || !strm.state) {
9104                return Z_STREAM_ERROR;
9105              }
9106              state = strm.state;
9107              if (windowBits < 0) {
9108                wrap = 0;
9109                windowBits = -windowBits;
9110              } else {
9111                wrap = (windowBits >> 4) + 1;
9112                if (windowBits < 48) {
9113                  windowBits &= 15;
9114                }
9115              }
9116              if (windowBits && (windowBits < 8 || windowBits > 15)) {
9117                return Z_STREAM_ERROR;
9118              }
9119              if (state.window !== null && state.wbits !== windowBits) {
9120                state.window = null;
9121              }
9122              state.wrap = wrap;
9123              state.wbits = windowBits;
9124              return inflateReset(strm);
9125            }
9126            function inflateInit2(strm, windowBits) {
9127              var ret;
9128              var state;
9129              if (!strm) {
9130                return Z_STREAM_ERROR;
9131              }
9132              state = new InflateState();
9133              strm.state = state;
9134              state.window = null;
9135              ret = inflateReset2(strm, windowBits);
9136              if (ret !== Z_OK) {
9137                strm.state = null;
9138              }
9139              return ret;
9140            }
9141            function inflateInit(strm) {
9142              return inflateInit2(strm, DEF_WBITS);
9143            }
9144            var virgin = true;
9145            var lenfix, distfix;
9146            function fixedtables(state) {
9147              if (virgin) {
9148                var sym;
9149                lenfix = new utils.Buf32(512);
9150                distfix = new utils.Buf32(32);
9151                sym = 0;
9152                while (sym < 144) {
9153                  state.lens[sym++] = 8;
9154                }
9155                while (sym < 256) {
9156                  state.lens[sym++] = 9;
9157                }
9158                while (sym < 280) {
9159                  state.lens[sym++] = 7;
9160                }
9161                while (sym < 288) {
9162                  state.lens[sym++] = 8;
9163                }
9164                inflate_table(
9165                  LENS,
9166                  state.lens,
9167                  0,
9168                  288,
9169                  lenfix,
9170                  0,
9171                  state.work,
9172                  { bits: 9 }
9173                );
9174                sym = 0;
9175                while (sym < 32) {
9176                  state.lens[sym++] = 5;
9177                }
9178                inflate_table(
9179                  DISTS,
9180                  state.lens,
9181                  0,
9182                  32,
9183                  distfix,
9184                  0,
9185                  state.work,
9186                  { bits: 5 }
9187                );
9188                virgin = false;
9189              }
9190              state.lencode = lenfix;
9191              state.lenbits = 9;
9192              state.distcode = distfix;
9193              state.distbits = 5;
9194            }
9195            function updatewindow(strm, src, end, copy) {
9196              var dist;
9197              var state = strm.state;
9198              if (state.window === null) {
9199                state.wsize = 1 << state.wbits;
9200                state.wnext = 0;
9201                state.whave = 0;
9202                state.window = new utils.Buf8(state.wsize);
9203              }
9204              if (copy >= state.wsize) {
9205                utils.arraySet(
9206                  state.window,
9207                  src,
9208                  end - state.wsize,
9209                  state.wsize,
9210                  0
9211                );
9212                state.wnext = 0;
9213                state.whave = state.wsize;
9214              } else {
9215                dist = state.wsize - state.wnext;
9216                if (dist > copy) {
9217                  dist = copy;
9218                }
9219                utils.arraySet(
9220                  state.window,
9221                  src,
9222                  end - copy,
9223                  dist,
9224                  state.wnext
9225                );
9226                copy -= dist;
9227                if (copy) {
9228                  utils.arraySet(
9229                    state.window,
9230                    src,
9231                    end - copy,
9232                    copy,
9233                    0
9234                  );
9235                  state.wnext = copy;
9236                  state.whave = state.wsize;
9237                } else {
9238                  state.wnext += dist;
9239                  if (state.wnext === state.wsize) {
9240                    state.wnext = 0;
9241                  }
9242                  if (state.whave < state.wsize) {
9243                    state.whave += dist;
9244                  }
9245                }
9246              }
9247              return 0;
9248            }
9249            function inflate(strm, flush) {
9250              var state;
9251              var input, output;
9252              var next;
9253              var put;
9254              var have, left;
9255              var hold;
9256              var bits;
9257              var _in, _out;
9258              var copy;
9259              var from;
9260              var from_source;
9261              var here = 0;
9262              var here_bits, here_op, here_val;
9263              var last_bits, last_op, last_val;
9264              var len;
9265              var ret;
9266              var hbuf = new utils.Buf8(
9267                4
9268              );
9269              var opts;
9270              var n2;
9271              var order = (
9272                /* permutation of code lengths */
9273                [
9274                  16,
9275                  17,
9276                  18,
9277                  0,
9278                  8,
9279                  7,
9280                  9,
9281                  6,
9282                  10,
9283                  5,
9284                  11,
9285                  4,
9286                  12,
9287                  3,
9288                  13,
9289                  2,
9290                  14,
9291                  1,
9292                  15
9293                ]
9294              );
9295              if (!strm || !strm.state || !strm.output || !strm.input && strm.avail_in !== 0) {
9296                return Z_STREAM_ERROR;
9297              }
9298              state = strm.state;
9299              if (state.mode === TYPE) {
9300                state.mode = TYPEDO;
9301              }
9302              put = strm.next_out;
9303              output = strm.output;
9304              left = strm.avail_out;
9305              next = strm.next_in;
9306              input = strm.input;
9307              have = strm.avail_in;
9308              hold = state.hold;
9309              bits = state.bits;
9310              _in = have;
9311              _out = left;
9312              ret = Z_OK;
9313              inf_leave: for (; ; ) {
9314                switch (state.mode) {
9315                  case HEAD:
9316                    if (state.wrap === 0) {
9317                      state.mode = TYPEDO;
9318                      break;
9319                    }
9320                    while (bits < 16) {
9321                      if (have === 0) {
9322                        break inf_leave;
9323                      }
9324                      have--;
9325                      hold += input[next++] << bits;
9326                      bits += 8;
9327                    }
9328                    if (state.wrap & 2 && hold === 35615) {
9329                      state.check = 0;
9330                      hbuf[0] = hold & 255;
9331                      hbuf[1] = hold >>> 8 & 255;
9332                      state.check = crc32(
9333                        state.check,
9334                        hbuf,
9335                        2,
9336                        0
9337                      );
9338                      hold = 0;
9339                      bits = 0;
9340                      state.mode = FLAGS;
9341                      break;
9342                    }
9343                    state.flags = 0;
9344                    if (state.head) {
9345                      state.head.done = false;
9346                    }
9347                    if (!(state.wrap & 1) || (((hold & 255) << 8) + (hold >> 8)) % 31) {
9348                      strm.msg = "incorrect header check";
9349                      state.mode = BAD;
9350                      break;
9351                    }
9352                    if ((hold & 15) !== Z_DEFLATED) {
9353                      strm.msg = "unknown compression method";
9354                      state.mode = BAD;
9355                      break;
9356                    }
9357                    hold >>>= 4;
9358                    bits -= 4;
9359                    len = (hold & 15) + 8;
9360                    if (state.wbits === 0) {
9361                      state.wbits = len;
9362                    } else if (len > state.wbits) {
9363                      strm.msg = "invalid window size";
9364                      state.mode = BAD;
9365                      break;
9366                    }
9367                    state.dmax = 1 << len;
9368                    strm.adler = state.check = 1;
9369                    state.mode = hold & 512 ? DICTID : TYPE;
9370                    hold = 0;
9371                    bits = 0;
9372                    break;
9373                  case FLAGS:
9374                    while (bits < 16) {
9375                      if (have === 0) {
9376                        break inf_leave;
9377                      }
9378                      have--;
9379                      hold += input[next++] << bits;
9380                      bits += 8;
9381                    }
9382                    state.flags = hold;
9383                    if ((state.flags & 255) !== Z_DEFLATED) {
9384                      strm.msg = "unknown compression method";
9385                      state.mode = BAD;
9386                      break;
9387                    }
9388                    if (state.flags & 57344) {
9389                      strm.msg = "unknown header flags set";
9390                      state.mode = BAD;
9391                      break;
9392                    }
9393                    if (state.head) {
9394                      state.head.text = hold >> 8 & 1;
9395                    }
9396                    if (state.flags & 512) {
9397                      hbuf[0] = hold & 255;
9398                      hbuf[1] = hold >>> 8 & 255;
9399                      state.check = crc32(
9400                        state.check,
9401                        hbuf,
9402                        2,
9403                        0
9404                      );
9405                    }
9406                    hold = 0;
9407                    bits = 0;
9408                    state.mode = TIME;
9409                  /* falls through */
9410                  case TIME:
9411                    while (bits < 32) {
9412                      if (have === 0) {
9413                        break inf_leave;
9414                      }
9415                      have--;
9416                      hold += input[next++] << bits;
9417                      bits += 8;
9418                    }
9419                    if (state.head) {
9420                      state.head.time = hold;
9421                    }
9422                    if (state.flags & 512) {
9423                      hbuf[0] = hold & 255;
9424                      hbuf[1] = hold >>> 8 & 255;
9425                      hbuf[2] = hold >>> 16 & 255;
9426                      hbuf[3] = hold >>> 24 & 255;
9427                      state.check = crc32(
9428                        state.check,
9429                        hbuf,
9430                        4,
9431                        0
9432                      );
9433                    }
9434                    hold = 0;
9435                    bits = 0;
9436                    state.mode = OS;
9437                  /* falls through */
9438                  case OS:
9439                    while (bits < 16) {
9440                      if (have === 0) {
9441                        break inf_leave;
9442                      }
9443                      have--;
9444                      hold += input[next++] << bits;
9445                      bits += 8;
9446                    }
9447                    if (state.head) {
9448                      state.head.xflags = hold & 255;
9449                      state.head.os = hold >> 8;
9450                    }
9451                    if (state.flags & 512) {
9452                      hbuf[0] = hold & 255;
9453                      hbuf[1] = hold >>> 8 & 255;
9454                      state.check = crc32(
9455                        state.check,
9456                        hbuf,
9457                        2,
9458                        0
9459                      );
9460                    }
9461                    hold = 0;
9462                    bits = 0;
9463                    state.mode = EXLEN;
9464                  /* falls through */
9465                  case EXLEN:
9466                    if (state.flags & 1024) {
9467                      while (bits < 16) {
9468                        if (have === 0) {
9469                          break inf_leave;
9470                        }
9471                        have--;
9472                        hold += input[next++] << bits;
9473                        bits += 8;
9474                      }
9475                      state.length = hold;
9476                      if (state.head) {
9477                        state.head.extra_len = hold;
9478                      }
9479                      if (state.flags & 512) {
9480                        hbuf[0] = hold & 255;
9481                        hbuf[1] = hold >>> 8 & 255;
9482                        state.check = crc32(
9483                          state.check,
9484                          hbuf,
9485                          2,
9486                          0
9487                        );
9488                      }
9489                      hold = 0;
9490                      bits = 0;
9491                    } else if (state.head) {
9492                      state.head.extra = null;
9493                    }
9494                    state.mode = EXTRA;
9495                  /* falls through */
9496                  case EXTRA:
9497                    if (state.flags & 1024) {
9498                      copy = state.length;
9499                      if (copy > have) {
9500                        copy = have;
9501                      }
9502                      if (copy) {
9503                        if (state.head) {
9504                          len = state.head.extra_len - state.length;
9505                          if (!state.head.extra) {
9506                            state.head.extra = new Array(
9507                              state.head.extra_len
9508                            );
9509                          }
9510                          utils.arraySet(
9511                            state.head.extra,
9512                            input,
9513                            next,
9514                            // extra field is limited to 65536 bytes
9515                            // - no need for additional size check
9516                            copy,
9517                            /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
9518                            len
9519                          );
9520                        }
9521                        if (state.flags & 512) {
9522                          state.check = crc32(
9523                            state.check,
9524                            input,
9525                            copy,
9526                            next
9527                          );
9528                        }
9529                        have -= copy;
9530                        next += copy;
9531                        state.length -= copy;
9532                      }
9533                      if (state.length) {
9534                        break inf_leave;
9535                      }
9536                    }
9537                    state.length = 0;
9538                    state.mode = NAME;
9539                  /* falls through */
9540                  case NAME:
9541                    if (state.flags & 2048) {
9542                      if (have === 0) {
9543                        break inf_leave;
9544                      }
9545                      copy = 0;
9546                      do {
9547                        len = input[next + copy++];
9548                        if (state.head && len && state.length < 65536) {
9549                          state.head.name += String.fromCharCode(len);
9550                        }
9551                      } while (len && copy < have);
9552                      if (state.flags & 512) {
9553                        state.check = crc32(
9554                          state.check,
9555                          input,
9556                          copy,
9557                          next
9558                        );
9559                      }
9560                      have -= copy;
9561                      next += copy;
9562                      if (len) {
9563                        break inf_leave;
9564                      }
9565                    } else if (state.head) {
9566                      state.head.name = null;
9567                    }
9568                    state.length = 0;
9569                    state.mode = COMMENT;
9570                  /* falls through */
9571                  case COMMENT:
9572                    if (state.flags & 4096) {
9573                      if (have === 0) {
9574                        break inf_leave;
9575                      }
9576                      copy = 0;
9577                      do {
9578                        len = input[next + copy++];
9579                        if (state.head && len && state.length < 65536) {
9580                          state.head.comment += String.fromCharCode(len);
9581                        }
9582                      } while (len && copy < have);
9583                      if (state.flags & 512) {
9584                        state.check = crc32(
9585                          state.check,
9586                          input,
9587                          copy,
9588                          next
9589                        );
9590                      }
9591                      have -= copy;
9592                      next += copy;
9593                      if (len) {
9594                        break inf_leave;
9595                      }
9596                    } else if (state.head) {
9597                      state.head.comment = null;
9598                    }
9599                    state.mode = HCRC;
9600                  /* falls through */
9601                  case HCRC:
9602                    if (state.flags & 512) {
9603                      while (bits < 16) {
9604                        if (have === 0) {
9605                          break inf_leave;
9606                        }
9607                        have--;
9608                        hold += input[next++] << bits;
9609                        bits += 8;
9610                      }
9611                      if (hold !== (state.check & 65535)) {
9612                        strm.msg = "header crc mismatch";
9613                        state.mode = BAD;
9614                        break;
9615                      }
9616                      hold = 0;
9617                      bits = 0;
9618                    }
9619                    if (state.head) {
9620                      state.head.hcrc = state.flags >> 9 & 1;
9621                      state.head.done = true;
9622                    }
9623                    strm.adler = state.check = 0;
9624                    state.mode = TYPE;
9625                    break;
9626                  case DICTID:
9627                    while (bits < 32) {
9628                      if (have === 0) {
9629                        break inf_leave;
9630                      }
9631                      have--;
9632                      hold += input[next++] << bits;
9633                      bits += 8;
9634                    }
9635                    strm.adler = state.check = zswap32(hold);
9636                    hold = 0;
9637                    bits = 0;
9638                    state.mode = DICT;
9639                  /* falls through */
9640                  case DICT:
9641                    if (state.havedict === 0) {
9642                      strm.next_out = put;
9643                      strm.avail_out = left;
9644                      strm.next_in = next;
9645                      strm.avail_in = have;
9646                      state.hold = hold;
9647                      state.bits = bits;
9648                      return Z_NEED_DICT;
9649                    }
9650                    strm.adler = state.check = 1;
9651                    state.mode = TYPE;
9652                  /* falls through */
9653                  case TYPE:
9654                    if (flush === Z_BLOCK || flush === Z_TREES) {
9655                      break inf_leave;
9656                    }
9657                  /* falls through */
9658                  case TYPEDO:
9659                    if (state.last) {
9660                      hold >>>= bits & 7;
9661                      bits -= bits & 7;
9662                      state.mode = CHECK;
9663                      break;
9664                    }
9665                    while (bits < 3) {
9666                      if (have === 0) {
9667                        break inf_leave;
9668                      }
9669                      have--;
9670                      hold += input[next++] << bits;
9671                      bits += 8;
9672                    }
9673                    state.last = hold & 1;
9674                    hold >>>= 1;
9675                    bits -= 1;
9676                    switch (hold & 3) {
9677                      case 0:
9678                        state.mode = STORED;
9679                        break;
9680                      case 1:
9681                        fixedtables(state);
9682                        state.mode = LEN_;
9683                        if (flush === Z_TREES) {
9684                          hold >>>= 2;
9685                          bits -= 2;
9686                          break inf_leave;
9687                        }
9688                        break;
9689                      case 2:
9690                        state.mode = TABLE;
9691                        break;
9692                      case 3:
9693                        strm.msg = "invalid block type";
9694                        state.mode = BAD;
9695                    }
9696                    hold >>>= 2;
9697                    bits -= 2;
9698                    break;
9699                  case STORED:
9700                    hold >>>= bits & 7;
9701                    bits -= bits & 7;
9702                    while (bits < 32) {
9703                      if (have === 0) {
9704                        break inf_leave;
9705                      }
9706                      have--;
9707                      hold += input[next++] << bits;
9708                      bits += 8;
9709                    }
9710                    if ((hold & 65535) !== (hold >>> 16 ^ 65535)) {
9711                      strm.msg = "invalid stored block lengths";
9712                      state.mode = BAD;
9713                      break;
9714                    }
9715                    state.length = hold & 65535;
9716                    hold = 0;
9717                    bits = 0;
9718                    state.mode = COPY_;
9719                    if (flush === Z_TREES) {
9720                      break inf_leave;
9721                    }
9722                  /* falls through */
9723                  case COPY_:
9724                    state.mode = COPY;
9725                  /* falls through */
9726                  case COPY:
9727                    copy = state.length;
9728                    if (copy) {
9729                      if (copy > have) {
9730                        copy = have;
9731                      }
9732                      if (copy > left) {
9733                        copy = left;
9734                      }
9735                      if (copy === 0) {
9736                        break inf_leave;
9737                      }
9738                      utils.arraySet(
9739                        output,
9740                        input,
9741                        next,
9742                        copy,
9743                        put
9744                      );
9745                      have -= copy;
9746                      next += copy;
9747                      left -= copy;
9748                      put += copy;
9749                      state.length -= copy;
9750                      break;
9751                    }
9752                    state.mode = TYPE;
9753                    break;
9754                  case TABLE:
9755                    while (bits < 14) {
9756                      if (have === 0) {
9757                        break inf_leave;
9758                      }
9759                      have--;
9760                      hold += input[next++] << bits;
9761                      bits += 8;
9762                    }
9763                    state.nlen = (hold & 31) + 257;
9764                    hold >>>= 5;
9765                    bits -= 5;
9766                    state.ndist = (hold & 31) + 1;
9767                    hold >>>= 5;
9768                    bits -= 5;
9769                    state.ncode = (hold & 15) + 4;
9770                    hold >>>= 4;
9771                    bits -= 4;
9772                    if (state.nlen > 286 || state.ndist > 30) {
9773                      strm.msg = "too many length or distance symbols";
9774                      state.mode = BAD;
9775                      break;
9776                    }
9777                    state.have = 0;
9778                    state.mode = LENLENS;
9779                  /* falls through */
9780                  case LENLENS:
9781                    while (state.have < state.ncode) {
9782                      while (bits < 3) {
9783                        if (have === 0) {
9784                          break inf_leave;
9785                        }
9786                        have--;
9787                        hold += input[next++] << bits;
9788                        bits += 8;
9789                      }
9790                      state.lens[order[state.have++]] = hold & 7;
9791                      hold >>>= 3;
9792                      bits -= 3;
9793                    }
9794                    while (state.have < 19) {
9795                      state.lens[order[state.have++]] = 0;
9796                    }
9797                    state.lencode = state.lendyn;
9798                    state.lenbits = 7;
9799                    opts = { bits: state.lenbits };
9800                    ret = inflate_table(
9801                      CODES,
9802                      state.lens,
9803                      0,
9804                      19,
9805                      state.lencode,
9806                      0,
9807                      state.work,
9808                      opts
9809                    );
9810                    state.lenbits = opts.bits;
9811                    if (ret) {
9812                      strm.msg = "invalid code lengths set";
9813                      state.mode = BAD;
9814                      break;
9815                    }
9816                    state.have = 0;
9817                    state.mode = CODELENS;
9818                  /* falls through */
9819                  case CODELENS:
9820                    while (state.have < state.nlen + state.ndist) {
9821                      for (; ; ) {
9822                        here = state.lencode[hold & (1 << state.lenbits) - 1];
9823                        here_bits = here >>> 24;
9824                        here_op = here >>> 16 & 255;
9825                        here_val = here & 65535;
9826                        if (here_bits <= bits) {
9827                          break;
9828                        }
9829                        if (have === 0) {
9830                          break inf_leave;
9831                        }
9832                        have--;
9833                        hold += input[next++] << bits;
9834                        bits += 8;
9835                      }
9836                      if (here_val < 16) {
9837                        hold >>>= here_bits;
9838                        bits -= here_bits;
9839                        state.lens[state.have++] = here_val;
9840                      } else {
9841                        if (here_val === 16) {
9842                          n2 = here_bits + 2;
9843                          while (bits < n2) {
9844                            if (have === 0) {
9845                              break inf_leave;
9846                            }
9847                            have--;
9848                            hold += input[next++] << bits;
9849                            bits += 8;
9850                          }
9851                          hold >>>= here_bits;
9852                          bits -= here_bits;
9853                          if (state.have === 0) {
9854                            strm.msg = "invalid bit length repeat";
9855                            state.mode = BAD;
9856                            break;
9857                          }
9858                          len = state.lens[state.have - 1];
9859                          copy = 3 + (hold & 3);
9860                          hold >>>= 2;
9861                          bits -= 2;
9862                        } else if (here_val === 17) {
9863                          n2 = here_bits + 3;
9864                          while (bits < n2) {
9865                            if (have === 0) {
9866                              break inf_leave;
9867                            }
9868                            have--;
9869                            hold += input[next++] << bits;
9870                            bits += 8;
9871                          }
9872                          hold >>>= here_bits;
9873                          bits -= here_bits;
9874                          len = 0;
9875                          copy = 3 + (hold & 7);
9876                          hold >>>= 3;
9877                          bits -= 3;
9878                        } else {
9879                          n2 = here_bits + 7;
9880                          while (bits < n2) {
9881                            if (have === 0) {
9882                              break inf_leave;
9883                            }
9884                            have--;
9885                            hold += input[next++] << bits;
9886                            bits += 8;
9887                          }
9888                          hold >>>= here_bits;
9889                          bits -= here_bits;
9890                          len = 0;
9891                          copy = 11 + (hold & 127);
9892                          hold >>>= 7;
9893                          bits -= 7;
9894                        }
9895                        if (state.have + copy > state.nlen + state.ndist) {
9896                          strm.msg = "invalid bit length repeat";
9897                          state.mode = BAD;
9898                          break;
9899                        }
9900                        while (copy--) {
9901                          state.lens[state.have++] = len;
9902                        }
9903                      }
9904                    }
9905                    if (state.mode === BAD) {
9906                      break;
9907                    }
9908                    if (state.lens[256] === 0) {
9909                      strm.msg = "invalid code -- missing end-of-block";
9910                      state.mode = BAD;
9911                      break;
9912                    }
9913                    state.lenbits = 9;
9914                    opts = { bits: state.lenbits };
9915                    ret = inflate_table(
9916                      LENS,
9917                      state.lens,
9918                      0,
9919                      state.nlen,
9920                      state.lencode,
9921                      0,
9922                      state.work,
9923                      opts
9924                    );
9925                    state.lenbits = opts.bits;
9926                    if (ret) {
9927                      strm.msg = "invalid literal/lengths set";
9928                      state.mode = BAD;
9929                      break;
9930                    }
9931                    state.distbits = 6;
9932                    state.distcode = state.distdyn;
9933                    opts = { bits: state.distbits };
9934                    ret = inflate_table(
9935                      DISTS,
9936                      state.lens,
9937                      state.nlen,
9938                      state.ndist,
9939                      state.distcode,
9940                      0,
9941                      state.work,
9942                      opts
9943                    );
9944                    state.distbits = opts.bits;
9945                    if (ret) {
9946                      strm.msg = "invalid distances set";
9947                      state.mode = BAD;
9948                      break;
9949                    }
9950                    state.mode = LEN_;
9951                    if (flush === Z_TREES) {
9952                      break inf_leave;
9953                    }
9954                  /* falls through */
9955                  case LEN_:
9956                    state.mode = LEN;
9957                  /* falls through */
9958                  case LEN:
9959                    if (have >= 6 && left >= 258) {
9960                      strm.next_out = put;
9961                      strm.avail_out = left;
9962                      strm.next_in = next;
9963                      strm.avail_in = have;
9964                      state.hold = hold;
9965                      state.bits = bits;
9966                      inflate_fast(strm, _out);
9967                      put = strm.next_out;
9968                      output = strm.output;
9969                      left = strm.avail_out;
9970                      next = strm.next_in;
9971                      input = strm.input;
9972                      have = strm.avail_in;
9973                      hold = state.hold;
9974                      bits = state.bits;
9975                      if (state.mode === TYPE) {
9976                        state.back = -1;
9977                      }
9978                      break;
9979                    }
9980                    state.back = 0;
9981                    for (; ; ) {
9982                      here = state.lencode[hold & (1 << state.lenbits) - 1];
9983                      here_bits = here >>> 24;
9984                      here_op = here >>> 16 & 255;
9985                      here_val = here & 65535;
9986                      if (here_bits <= bits) {
9987                        break;
9988                      }
9989                      if (have === 0) {
9990                        break inf_leave;
9991                      }
9992                      have--;
9993                      hold += input[next++] << bits;
9994                      bits += 8;
9995                    }
9996                    if (here_op && (here_op & 240) === 0) {
9997                      last_bits = here_bits;
9998                      last_op = here_op;
9999                      last_val = here_val;
10000                      for (; ; ) {
10001                        here = state.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
10002                        here_bits = here >>> 24;
10003                        here_op = here >>> 16 & 255;
10004                        here_val = here & 65535;
10005                        if (last_bits + here_bits <= bits) {
10006                          break;
10007                        }
10008                        if (have === 0) {
10009                          break inf_leave;
10010                        }
10011                        have--;
10012                        hold += input[next++] << bits;
10013                        bits += 8;
10014                      }
10015                      hold >>>= last_bits;
10016                      bits -= last_bits;
10017                      state.back += last_bits;
10018                    }
10019                    hold >>>= here_bits;
10020                    bits -= here_bits;
10021                    state.back += here_bits;
10022                    state.length = here_val;
10023                    if (here_op === 0) {
10024                      state.mode = LIT;
10025                      break;
10026                    }
10027                    if (here_op & 32) {
10028                      state.back = -1;
10029                      state.mode = TYPE;
10030                      break;
10031                    }
10032                    if (here_op & 64) {
10033                      strm.msg = "invalid literal/length code";
10034                      state.mode = BAD;
10035                      break;
10036                    }
10037                    state.extra = here_op & 15;
10038                    state.mode = LENEXT;
10039                  /* falls through */
10040                  case LENEXT:
10041                    if (state.extra) {
10042                      n2 = state.extra;
10043                      while (bits < n2) {
10044                        if (have === 0) {
10045                          break inf_leave;
10046                        }
10047                        have--;
10048                        hold += input[next++] << bits;
10049                        bits += 8;
10050                      }
10051                      state.length += hold & (1 << state.extra) - 1;
10052                      hold >>>= state.extra;
10053                      bits -= state.extra;
10054                      state.back += state.extra;
10055                    }
10056                    state.was = state.length;
10057                    state.mode = DIST;
10058                  /* falls through */
10059                  case DIST:
10060                    for (; ; ) {
10061                      here = state.distcode[hold & (1 << state.distbits) - 1];
10062                      here_bits = here >>> 24;
10063                      here_op = here >>> 16 & 255;
10064                      here_val = here & 65535;
10065                      if (here_bits <= bits) {
10066                        break;
10067                      }
10068                      if (have === 0) {
10069                        break inf_leave;
10070                      }
10071                      have--;
10072                      hold += input[next++] << bits;
10073                      bits += 8;
10074                    }
10075                    if ((here_op & 240) === 0) {
10076                      last_bits = here_bits;
10077                      last_op = here_op;
10078                      last_val = here_val;
10079                      for (; ; ) {
10080                        here = state.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)];
10081                        here_bits = here >>> 24;
10082                        here_op = here >>> 16 & 255;
10083                        here_val = here & 65535;
10084                        if (last_bits + here_bits <= bits) {
10085                          break;
10086                        }
10087                        if (have === 0) {
10088                          break inf_leave;
10089                        }
10090                        have--;
10091                        hold += input[next++] << bits;
10092                        bits += 8;
10093                      }
10094                      hold >>>= last_bits;
10095                      bits -= last_bits;
10096                      state.back += last_bits;
10097                    }
10098                    hold >>>= here_bits;
10099                    bits -= here_bits;
10100                    state.back += here_bits;
10101                    if (here_op & 64) {
10102                      strm.msg = "invalid distance code";
10103                      state.mode = BAD;
10104                      break;
10105                    }
10106                    state.offset = here_val;
10107                    state.extra = here_op & 15;
10108                    state.mode = DISTEXT;
10109                  /* falls through */
10110                  case DISTEXT:
10111                    if (state.extra) {
10112                      n2 = state.extra;
10113                      while (bits < n2) {
10114                        if (have === 0) {
10115                          break inf_leave;
10116                        }
10117                        have--;
10118                        hold += input[next++] << bits;
10119                        bits += 8;
10120                      }
10121                      state.offset += hold & (1 << state.extra) - 1;
10122                      hold >>>= state.extra;
10123                      bits -= state.extra;
10124                      state.back += state.extra;
10125                    }
10126                    if (state.offset > state.dmax) {
10127                      strm.msg = "invalid distance too far back";
10128                      state.mode = BAD;
10129                      break;
10130                    }
10131                    state.mode = MATCH;
10132                  /* falls through */
10133                  case MATCH:
10134                    if (left === 0) {
10135                      break inf_leave;
10136                    }
10137                    copy = _out - left;
10138                    if (state.offset > copy) {
10139                      copy = state.offset - copy;
10140                      if (copy > state.whave) {
10141                        if (state.sane) {
10142                          strm.msg = "invalid distance too far back";
10143                          state.mode = BAD;
10144                          break;
10145                        }
10146                      }
10147                      if (copy > state.wnext) {
10148                        copy -= state.wnext;
10149                        from = state.wsize - copy;
10150                      } else {
10151                        from = state.wnext - copy;
10152                      }
10153                      if (copy > state.length) {
10154                        copy = state.length;
10155                      }
10156                      from_source = state.window;
10157                    } else {
10158                      from_source = output;
10159                      from = put - state.offset;
10160                      copy = state.length;
10161                    }
10162                    if (copy > left) {
10163                      copy = left;
10164                    }
10165                    left -= copy;
10166                    state.length -= copy;
10167                    do {
10168                      output[put++] = from_source[from++];
10169                    } while (--copy);
10170                    if (state.length === 0) {
10171                      state.mode = LEN;
10172                    }
10173                    break;
10174                  case LIT:
10175                    if (left === 0) {
10176                      break inf_leave;
10177                    }
10178                    output[put++] = state.length;
10179                    left--;
10180                    state.mode = LEN;
10181                    break;
10182                  case CHECK:
10183                    if (state.wrap) {
10184                      while (bits < 32) {
10185                        if (have === 0) {
10186                          break inf_leave;
10187                        }
10188                        have--;
10189                        hold |= input[next++] << bits;
10190                        bits += 8;
10191                      }
10192                      _out -= left;
10193                      strm.total_out += _out;
10194                      state.total += _out;
10195                      if (_out) {
10196                        strm.adler = state.check = /*UPDATE(state.check, put - _out, _out);*/
10197                        state.flags ? crc32(
10198                          state.check,
10199                          output,
10200                          _out,
10201                          put - _out
10202                        ) : adler32(
10203                          state.check,
10204                          output,
10205                          _out,
10206                          put - _out
10207                        );
10208                      }
10209                      _out = left;
10210                      if ((state.flags ? hold : zswap32(hold)) !== state.check) {
10211                        strm.msg = "incorrect data check";
10212                        state.mode = BAD;
10213                        break;
10214                      }
10215                      hold = 0;
10216                      bits = 0;
10217                    }
10218                    state.mode = LENGTH;
10219                  /* falls through */
10220                  case LENGTH:
10221                    if (state.wrap && state.flags) {
10222                      while (bits < 32) {
10223                        if (have === 0) {
10224                          break inf_leave;
10225                        }
10226                        have--;
10227                        hold += input[next++] << bits;
10228                        bits += 8;
10229                      }
10230                      if (hold !== (state.total & 4294967295)) {
10231                        strm.msg = "incorrect length check";
10232                        state.mode = BAD;
10233                        break;
10234                      }
10235                      hold = 0;
10236                      bits = 0;
10237                    }
10238                    state.mode = DONE;
10239                  /* falls through */
10240                  case DONE:
10241                    ret = Z_STREAM_END;
10242                    break inf_leave;
10243                  case BAD:
10244                    ret = Z_DATA_ERROR;
10245                    break inf_leave;
10246                  case MEM:
10247                    return Z_MEM_ERROR;
10248                  case SYNC:
10249                  /* falls through */
10250                  default:
10251                    return Z_STREAM_ERROR;
10252                }
10253              }
10254              strm.next_out = put;
10255              strm.avail_out = left;
10256              strm.next_in = next;
10257              strm.avail_in = have;
10258              state.hold = hold;
10259              state.bits = bits;
10260              if (state.wsize || _out !== strm.avail_out && state.mode < BAD && (state.mode < CHECK || flush !== Z_FINISH)) {
10261                if (updatewindow(
10262                  strm,
10263                  strm.output,
10264                  strm.next_out,
10265                  _out - strm.avail_out
10266                )) {
10267                  state.mode = MEM;
10268                  return Z_MEM_ERROR;
10269                }
10270              }
10271              _in -= strm.avail_in;
10272              _out -= strm.avail_out;
10273              strm.total_in += _in;
10274              strm.total_out += _out;
10275              state.total += _out;
10276              if (state.wrap && _out) {
10277                strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
10278                state.flags ? crc32(
10279                  state.check,
10280                  output,
10281                  _out,
10282                  strm.next_out - _out
10283                ) : adler32(
10284                  state.check,
10285                  output,
10286                  _out,
10287                  strm.next_out - _out
10288                );
10289              }
10290              strm.data_type = state.bits + (state.last ? 64 : 0) + (state.mode === TYPE ? 128 : 0) + (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
10291              if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) {
10292                ret = Z_BUF_ERROR;
10293              }
10294              return ret;
10295            }
10296            function inflateEnd(strm) {
10297              if (!strm || !strm.state) {
10298                return Z_STREAM_ERROR;
10299              }
10300              var state = strm.state;
10301              if (state.window) {
10302                state.window = null;
10303              }
10304              strm.state = null;
10305              return Z_OK;
10306            }
10307            function inflateGetHeader(strm, head2) {
10308              var state;
10309              if (!strm || !strm.state) {
10310                return Z_STREAM_ERROR;
10311              }
10312              state = strm.state;
10313              if ((state.wrap & 2) === 0) {
10314                return Z_STREAM_ERROR;
10315              }
10316              state.head = head2;
10317              head2.done = false;
10318              return Z_OK;
10319            }
10320            function inflateSetDictionary(strm, dictionary) {
10321              var dictLength = dictionary.length;
10322              var state;
10323              var dictid;
10324              var ret;
10325              if (!strm || !strm.state) {
10326                return Z_STREAM_ERROR;
10327              }
10328              state = strm.state;
10329              if (state.wrap !== 0 && state.mode !== DICT) {
10330                return Z_STREAM_ERROR;
10331              }
10332              if (state.mode === DICT) {
10333                dictid = 1;
10334                dictid = adler32(
10335                  dictid,
10336                  dictionary,
10337                  dictLength,
10338                  0
10339                );
10340                if (dictid !== state.check) {
10341                  return Z_DATA_ERROR;
10342                }
10343              }
10344              ret = updatewindow(
10345                strm,
10346                dictionary,
10347                dictLength,
10348                dictLength
10349              );
10350              if (ret) {
10351                state.mode = MEM;
10352                return Z_MEM_ERROR;
10353              }
10354              state.havedict = 1;
10355              return Z_OK;
10356            }
10357            exports2.inflateReset = inflateReset;
10358            exports2.inflateReset2 = inflateReset2;
10359            exports2.inflateResetKeep = inflateResetKeep;
10360            exports2.inflateInit = inflateInit;
10361            exports2.inflateInit2 = inflateInit2;
10362            exports2.inflate = inflate;
10363            exports2.inflateEnd = inflateEnd;
10364            exports2.inflateGetHeader = inflateGetHeader;
10365            exports2.inflateSetDictionary = inflateSetDictionary;
10366            exports2.inflateInfo = "pako inflate (from Nodeca project)";
10367          },
10368          {
10369            "../utils/common": 1,
10370            "./adler32": 3,
10371            "./crc32": 5,
10372            "./inffast": 7,
10373            "./inftrees": 9
10374          }
10375        ],
10376        9: [
10377          function(require2, module2, exports2) {
10378            "use strict";
10379            var utils = require2("../utils/common");
10380            var MAXBITS = 15;
10381            var ENOUGH_LENS = 852;
10382            var ENOUGH_DISTS = 592;
10383            var CODES = 0;
10384            var LENS = 1;
10385            var DISTS = 2;
10386            var lbase = [
10387              /* Length codes 257..285 base */
10388              3,
10389              4,
10390              5,
10391              6,
10392              7,
10393              8,
10394              9,
10395              10,
10396              11,
10397              13,
10398              15,
10399              17,
10400              19,
10401              23,
10402              27,
10403              31,
10404              35,
10405              43,
10406              51,
10407              59,
10408              67,
10409              83,
10410              99,
10411              115,
10412              131,
10413              163,
10414              195,
10415              227,
10416              258,
10417              0,
10418              0
10419            ];
10420            var lext = [
10421              /* Length codes 257..285 extra */
10422              16,
10423              16,
10424              16,
10425              16,
10426              16,
10427              16,
10428              16,
10429              16,
10430              17,
10431              17,
10432              17,
10433              17,
10434              18,
10435              18,
10436              18,
10437              18,
10438              19,
10439              19,
10440              19,
10441              19,
10442              20,
10443              20,
10444              20,
10445              20,
10446              21,
10447              21,
10448              21,
10449              21,
10450              16,
10451              72,
10452              78
10453            ];
10454            var dbase = [
10455              /* Distance codes 0..29 base */
10456              1,
10457              2,
10458              3,
10459              4,
10460              5,
10461              7,
10462              9,
10463              13,
10464              17,
10465              25,
10466              33,
10467              49,
10468              65,
10469              97,
10470              129,
10471              193,
10472              257,
10473              385,
10474              513,
10475              769,
10476              1025,
10477              1537,
10478              2049,
10479              3073,
10480              4097,
10481              6145,
10482              8193,
10483              12289,
10484              16385,
10485              24577,
10486              0,
10487              0
10488            ];
10489            var dext = [
10490              /* Distance codes 0..29 extra */
10491              16,
10492              16,
10493              16,
10494              16,
10495              17,
10496              17,
10497              18,
10498              18,
10499              19,
10500              19,
10501              20,
10502              20,
10503              21,
10504              21,
10505              22,
10506              22,
10507              23,
10508              23,
10509              24,
10510              24,
10511              25,
10512              25,
10513              26,
10514              26,
10515              27,
10516              27,
10517              28,
10518              28,
10519              29,
10520              29,
10521              64,
10522              64
10523            ];
10524            module2.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {
10525              var bits = opts.bits;
10526              var len = 0;
10527              var sym = 0;
10528              var min = 0, max = 0;
10529              var root = 0;
10530              var curr = 0;
10531              var drop = 0;
10532              var left = 0;
10533              var used = 0;
10534              var huff = 0;
10535              var incr;
10536              var fill;
10537              var low;
10538              var mask;
10539              var next;
10540              var base = null;
10541              var base_index = 0;
10542              var end;
10543              var count = new utils.Buf16(MAXBITS + 1);
10544              var offs = new utils.Buf16(MAXBITS + 1);
10545              var extra = null;
10546              var extra_index = 0;
10547              var here_bits, here_op, here_val;
10548              for (len = 0; len <= MAXBITS; len++) {
10549                count[len] = 0;
10550              }
10551              for (sym = 0; sym < codes; sym++) {
10552                count[lens[lens_index + sym]]++;
10553              }
10554              root = bits;
10555              for (max = MAXBITS; max >= 1; max--) {
10556                if (count[max] !== 0) {
10557                  break;
10558                }
10559              }
10560              if (root > max) {
10561                root = max;
10562              }
10563              if (max === 0) {
10564                table[table_index++] = 1 << 24 | 64 << 16 | 0;
10565                table[table_index++] = 1 << 24 | 64 << 16 | 0;
10566                opts.bits = 1;
10567                return 0;
10568              }
10569              for (min = 1; min < max; min++) {
10570                if (count[min] !== 0) {
10571                  break;
10572                }
10573              }
10574              if (root < min) {
10575                root = min;
10576              }
10577              left = 1;
10578              for (len = 1; len <= MAXBITS; len++) {
10579                left <<= 1;
10580                left -= count[len];
10581                if (left < 0) {
10582                  return -1;
10583                }
10584              }
10585              if (left > 0 && (type === CODES || max !== 1)) {
10586                return -1;
10587              }
10588              offs[1] = 0;
10589              for (len = 1; len < MAXBITS; len++) {
10590                offs[len + 1] = offs[len] + count[len];
10591              }
10592              for (sym = 0; sym < codes; sym++) {
10593                if (lens[lens_index + sym] !== 0) {
10594                  work[offs[lens[lens_index + sym]]++] = sym;
10595                }
10596              }
10597              if (type === CODES) {
10598                base = extra = work;
10599                end = 19;
10600              } else if (type === LENS) {
10601                base = lbase;
10602                base_index -= 257;
10603                extra = lext;
10604                extra_index -= 257;
10605                end = 256;
10606              } else {
10607                base = dbase;
10608                extra = dext;
10609                end = -1;
10610              }
10611              huff = 0;
10612              sym = 0;
10613              len = min;
10614              next = table_index;
10615              curr = root;
10616              drop = 0;
10617              low = -1;
10618              used = 1 << root;
10619              mask = used - 1;
10620              if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
10621                return 1;
10622              }
10623              for (; ; ) {
10624                here_bits = len - drop;
10625                if (work[sym] < end) {
10626                  here_op = 0;
10627                  here_val = work[sym];
10628                } else if (work[sym] > end) {
10629                  here_op = extra[extra_index + work[sym]];
10630                  here_val = base[base_index + work[sym]];
10631                } else {
10632                  here_op = 32 + 64;
10633                  here_val = 0;
10634                }
10635                incr = 1 << len - drop;
10636                fill = 1 << curr;
10637                min = fill;
10638                do {
10639                  fill -= incr;
10640                  table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0;
10641                } while (fill !== 0);
10642                incr = 1 << len - 1;
10643                while (huff & incr) {
10644                  incr >>= 1;
10645                }
10646                if (incr !== 0) {
10647                  huff &= incr - 1;
10648                  huff += incr;
10649                } else {
10650                  huff = 0;
10651                }
10652                sym++;
10653                if (--count[len] === 0) {
10654                  if (len === max) {
10655                    break;
10656                  }
10657                  len = lens[lens_index + work[sym]];
10658                }
10659                if (len > root && (huff & mask) !== low) {
10660                  if (drop === 0) {
10661                    drop = root;
10662                  }
10663                  next += min;
10664                  curr = len - drop;
10665                  left = 1 << curr;
10666                  while (curr + drop < max) {
10667                    left -= count[curr + drop];
10668                    if (left <= 0) {
10669                      break;
10670                    }
10671                    curr++;
10672                    left <<= 1;
10673                  }
10674                  used += 1 << curr;
10675                  if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) {
10676                    return 1;
10677                  }
10678                  low = huff & mask;
10679                  table[low] = root << 24 | curr << 16 | next - table_index | 0;
10680                }
10681              }
10682              if (huff !== 0) {
10683                table[next + huff] = len - drop << 24 | 64 << 16 | 0;
10684              }
10685              opts.bits = root;
10686              return 0;
10687            };
10688          },
10689          { "../utils/common": 1 }
10690        ],
10691        10: [
10692          function(require2, module2, exports2) {
10693            "use strict";
10694            module2.exports = {
10695              2: "need dictionary",
10696              1: "stream end",
10697              0: "",
10698              "-1": "file error",
10699              "-2": "stream error",
10700              "-3": "data error",
10701              "-4": "insufficient memory",
10702              "-5": "buffer error",
10703              "-6": "incompatible version"
10704            };
10705          },
10706          {}
10707        ],
10708        11: [
10709          function(require2, module2, exports2) {
10710            "use strict";
10711            function ZStream() {
10712              this.input = null;
10713              this.next_in = 0;
10714              this.avail_in = 0;
10715              this.total_in = 0;
10716              this.output = null;
10717              this.next_out = 0;
10718              this.avail_out = 0;
10719              this.total_out = 0;
10720              this.msg = "";
10721              this.state = null;
10722              this.data_type = 2;
10723              this.adler = 0;
10724            }
10725            module2.exports = ZStream;
10726          },
10727          {}
10728        ],
10729        "/lib/inflate.js": [
10730          function(require2, module2, exports2) {
10731            "use strict";
10732            var zlib_inflate = require2("./zlib/inflate");
10733            var utils = require2("./utils/common");
10734            var strings = require2("./utils/strings");
10735            var c2 = require2("./zlib/constants");
10736            var msg = require2("./zlib/messages");
10737            var ZStream = require2("./zlib/zstream");
10738            var GZheader = require2("./zlib/gzheader");
10739            var toString = Object.prototype.toString;
10740            function Inflate(options) {
10741              if (!(this instanceof Inflate))
10742                return new Inflate(options);
10743              this.options = utils.assign(
10744                {
10745                  chunkSize: 16384,
10746                  windowBits: 0,
10747                  to: ""
10748                },
10749                options || {}
10750              );
10751              var opt = this.options;
10752              if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) {
10753                opt.windowBits = -opt.windowBits;
10754                if (opt.windowBits === 0) {
10755                  opt.windowBits = -15;
10756                }
10757              }
10758              if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) {
10759                opt.windowBits += 32;
10760              }
10761              if (opt.windowBits > 15 && opt.windowBits < 48) {
10762                if ((opt.windowBits & 15) === 0) {
10763                  opt.windowBits |= 15;
10764                }
10765              }
10766              this.err = 0;
10767              this.msg = "";
10768              this.ended = false;
10769              this.chunks = [];
10770              this.strm = new ZStream();
10771              this.strm.avail_out = 0;
10772              var status = zlib_inflate.inflateInit2(
10773                this.strm,
10774                opt.windowBits
10775              );
10776              if (status !== c2.Z_OK) {
10777                throw new Error(msg[status]);
10778              }
10779              this.header = new GZheader();
10780              zlib_inflate.inflateGetHeader(this.strm, this.header);
10781              if (opt.dictionary) {
10782                if (typeof opt.dictionary === "string") {
10783                  opt.dictionary = strings.string2buf(
10784                    opt.dictionary
10785                  );
10786                } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") {
10787                  opt.dictionary = new Uint8Array(
10788                    opt.dictionary
10789                  );
10790                }
10791                if (opt.raw) {
10792                  status = zlib_inflate.inflateSetDictionary(
10793                    this.strm,
10794                    opt.dictionary
10795                  );
10796                  if (status !== c2.Z_OK) {
10797                    throw new Error(msg[status]);
10798                  }
10799                }
10800              }
10801            }
10802            Inflate.prototype.push = function(data, mode) {
10803              var strm = this.strm;
10804              var chunkSize = this.options.chunkSize;
10805              var dictionary = this.options.dictionary;
10806              var status, _mode;
10807              var next_out_utf8, tail, utf8str;
10808              var allowBufError = false;
10809              if (this.ended) {
10810                return false;
10811              }
10812              _mode = mode === ~~mode ? mode : mode === true ? c2.Z_FINISH : c2.Z_NO_FLUSH;
10813              if (typeof data === "string") {
10814                strm.input = strings.binstring2buf(data);
10815              } else if (toString.call(data) === "[object ArrayBuffer]") {
10816                strm.input = new Uint8Array(data);
10817              } else {
10818                strm.input = data;
10819              }
10820              strm.next_in = 0;
10821              strm.avail_in = strm.input.length;
10822              do {
10823                if (strm.avail_out === 0) {
10824                  strm.output = new utils.Buf8(chunkSize);
10825                  strm.next_out = 0;
10826                  strm.avail_out = chunkSize;
10827                }
10828                status = zlib_inflate.inflate(
10829                  strm,
10830                  c2.Z_NO_FLUSH
10831                );
10832                if (status === c2.Z_NEED_DICT && dictionary) {
10833                  status = zlib_inflate.inflateSetDictionary(
10834                    this.strm,
10835                    dictionary
10836                  );
10837                }
10838                if (status === c2.Z_BUF_ERROR && allowBufError === true) {
10839                  status = c2.Z_OK;
10840                  allowBufError = false;
10841                }
10842                if (status !== c2.Z_STREAM_END && status !== c2.Z_OK) {
10843                  this.onEnd(status);
10844                  this.ended = true;
10845                  return false;
10846                }
10847                if (strm.next_out) {
10848                  if (strm.avail_out === 0 || status === c2.Z_STREAM_END || strm.avail_in === 0 && (_mode === c2.Z_FINISH || _mode === c2.Z_SYNC_FLUSH)) {
10849                    if (this.options.to === "string") {
10850                      next_out_utf8 = strings.utf8border(
10851                        strm.output,
10852                        strm.next_out
10853                      );
10854                      tail = strm.next_out - next_out_utf8;
10855                      utf8str = strings.buf2string(
10856                        strm.output,
10857                        next_out_utf8
10858                      );
10859                      strm.next_out = tail;
10860                      strm.avail_out = chunkSize - tail;
10861                      if (tail) {
10862                        utils.arraySet(
10863                          strm.output,
10864                          strm.output,
10865                          next_out_utf8,
10866                          tail,
10867                          0
10868                        );
10869                      }
10870                      this.onData(utf8str);
10871                    } else {
10872                      this.onData(
10873                        utils.shrinkBuf(
10874                          strm.output,
10875                          strm.next_out
10876                        )
10877                      );
10878                    }
10879                  }
10880                }
10881                if (strm.avail_in === 0 && strm.avail_out === 0) {
10882                  allowBufError = true;
10883                }
10884              } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c2.Z_STREAM_END);
10885              if (status === c2.Z_STREAM_END) {
10886                _mode = c2.Z_FINISH;
10887              }
10888              if (_mode === c2.Z_FINISH) {
10889                status = zlib_inflate.inflateEnd(this.strm);
10890                this.onEnd(status);
10891                this.ended = true;
10892                return status === c2.Z_OK;
10893              }
10894              if (_mode === c2.Z_SYNC_FLUSH) {
10895                this.onEnd(c2.Z_OK);
10896                strm.avail_out = 0;
10897                return true;
10898              }
10899              return true;
10900            };
10901            Inflate.prototype.onData = function(chunk) {
10902              this.chunks.push(chunk);
10903            };
10904            Inflate.prototype.onEnd = function(status) {
10905              if (status === c2.Z_OK) {
10906                if (this.options.to === "string") {
10907                  this.result = this.chunks.join("");
10908                } else {
10909                  this.result = utils.flattenChunks(
10910                    this.chunks
10911                  );
10912                }
10913              }
10914              this.chunks = [];
10915              this.err = status;
10916              this.msg = this.strm.msg;
10917            };
10918            function inflate(input, options) {
10919              var inflator = new Inflate(options);
10920              inflator.push(input, true);
10921              if (inflator.err) {
10922                throw inflator.msg || msg[inflator.err];
10923              }
10924              return inflator.result;
10925            }
10926            function inflateRaw(input, options) {
10927              options = options || {};
10928              options.raw = true;
10929              return inflate(input, options);
10930            }
10931            exports2.Inflate = Inflate;
10932            exports2.inflate = inflate;
10933            exports2.inflateRaw = inflateRaw;
10934            exports2.ungzip = inflate;
10935          },
10936          {
10937            "./utils/common": 1,
10938            "./utils/strings": 2,
10939            "./zlib/constants": 4,
10940            "./zlib/gzheader": 6,
10941            "./zlib/inflate": 8,
10942            "./zlib/messages": 10,
10943            "./zlib/zstream": 11
10944          }
10945        ]
10946      },
10947      {},
10948      []
10949    )("/lib/inflate.js");
10950  })();
10951  
10952  // packages/global-styles-ui/build-module/font-library/lib/lib-font.browser.mjs
10953  var fetchFunction = globalThis.fetch;
10954  var Event2 = class {
10955    constructor(type, detail = {}, msg) {
10956      this.type = type;
10957      this.detail = detail;
10958      this.msg = msg;
10959      Object.defineProperty(this, `__mayPropagate`, {
10960        enumerable: false,
10961        writable: true
10962      });
10963      this.__mayPropagate = true;
10964    }
10965    preventDefault() {
10966    }
10967    stopPropagation() {
10968      this.__mayPropagate = false;
10969    }
10970    valueOf() {
10971      return this;
10972    }
10973    toString() {
10974      return this.msg ? `[$this.type} event]: $this.msg}` : `[$this.type} event]`;
10975    }
10976  };
10977  var EventManager = class {
10978    constructor() {
10979      this.listeners = {};
10980    }
10981    addEventListener(type, listener, useCapture) {
10982      let bin = this.listeners[type] || [];
10983      if (useCapture) bin.unshift(listener);
10984      else bin.push(listener);
10985      this.listeners[type] = bin;
10986    }
10987    removeEventListener(type, listener) {
10988      let bin = this.listeners[type] || [];
10989      let pos = bin.findIndex((e2) => e2 === listener);
10990      if (pos > -1) {
10991        bin.splice(pos, 1);
10992        this.listeners[type] = bin;
10993      }
10994    }
10995    dispatch(event) {
10996      let bin = this.listeners[event.type];
10997      if (bin) {
10998        for (let l2 = 0, e2 = bin.length; l2 < e2; l2++) {
10999          if (!event.__mayPropagate) break;
11000          bin[l2](event);
11001        }
11002      }
11003    }
11004  };
11005  var startDate = (/* @__PURE__ */ new Date(`1904-01-01T00:00:00+0000`)).getTime();
11006  function asText(data) {
11007    return Array.from(data).map((v2) => String.fromCharCode(v2)).join(``);
11008  }
11009  var Parser = class {
11010    constructor(dict, dataview, name2) {
11011      this.name = (name2 || dict.tag || ``).trim();
11012      this.length = dict.length;
11013      this.start = dict.offset;
11014      this.offset = 0;
11015      this.data = dataview;
11016      [
11017        `getInt8`,
11018        `getUint8`,
11019        `getInt16`,
11020        `getUint16`,
11021        `getInt32`,
11022        `getUint32`,
11023        `getBigInt64`,
11024        `getBigUint64`
11025      ].forEach((name3) => {
11026        let fn = name3.replace(/get(Big)?/, "").toLowerCase();
11027        let increment = parseInt(name3.replace(/[^\d]/g, "")) / 8;
11028        Object.defineProperty(this, fn, {
11029          get: () => this.getValue(name3, increment)
11030        });
11031      });
11032    }
11033    get currentPosition() {
11034      return this.start + this.offset;
11035    }
11036    set currentPosition(position) {
11037      this.start = position;
11038      this.offset = 0;
11039    }
11040    skip(n2 = 0, bits = 8) {
11041      this.offset += n2 * bits / 8;
11042    }
11043    getValue(type, increment) {
11044      let pos = this.start + this.offset;
11045      this.offset += increment;
11046      try {
11047        return this.data[type](pos);
11048      } catch (e2) {
11049        console.error(`parser`, type, increment, this);
11050        console.error(`parser`, this.start, this.offset);
11051        throw e2;
11052      }
11053    }
11054    flags(n2) {
11055      if (n2 === 8 || n2 === 16 || n2 === 32 || n2 === 64) {
11056        return this[`uint$n2}`].toString(2).padStart(n2, 0).split(``).map((v2) => v2 === "1");
11057      }
11058      console.error(
11059        `Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long`
11060      );
11061      console.trace();
11062    }
11063    get tag() {
11064      const t3 = this.uint32;
11065      return asText([
11066        t3 >> 24 & 255,
11067        t3 >> 16 & 255,
11068        t3 >> 8 & 255,
11069        t3 & 255
11070      ]);
11071    }
11072    get fixed() {
11073      let major = this.int16;
11074      let minor = Math.round(1e3 * this.uint16 / 65356);
11075      return major + minor / 1e3;
11076    }
11077    get legacyFixed() {
11078      let major = this.uint16;
11079      let minor = this.uint16.toString(16).padStart(4, 0);
11080      return parseFloat(`$major}.$minor}`);
11081    }
11082    get uint24() {
11083      return (this.uint8 << 16) + (this.uint8 << 8) + this.uint8;
11084    }
11085    get uint128() {
11086      let value = 0;
11087      for (let i2 = 0; i2 < 5; i2++) {
11088        let byte = this.uint8;
11089        value = value * 128 + (byte & 127);
11090        if (byte < 128) break;
11091      }
11092      return value;
11093    }
11094    get longdatetime() {
11095      return new Date(startDate + 1e3 * parseInt(this.int64.toString()));
11096    }
11097    get fword() {
11098      return this.int16;
11099    }
11100    get ufword() {
11101      return this.uint16;
11102    }
11103    get Offset16() {
11104      return this.uint16;
11105    }
11106    get Offset32() {
11107      return this.uint32;
11108    }
11109    get F2DOT14() {
11110      const bits = p.uint16;
11111      const integer = [0, 1, -2, -1][bits >> 14];
11112      const fraction = bits & 16383;
11113      return integer + fraction / 16384;
11114    }
11115    verifyLength() {
11116      if (this.offset != this.length) {
11117        console.error(
11118          `unexpected parsed table size ($this.offset}) for "$this.name}" (expected $this.length})`
11119        );
11120      }
11121    }
11122    readBytes(n2 = 0, position = 0, bits = 8, signed = false) {
11123      n2 = n2 || this.length;
11124      if (n2 === 0) return [];
11125      if (position) this.currentPosition = position;
11126      const fn = `$signed ? `` : `u`}int$bits}`, slice = [];
11127      while (n2--) slice.push(this[fn]);
11128      return slice;
11129    }
11130  };
11131  var ParsedData = class {
11132    constructor(parser) {
11133      const pGetter = { enumerable: false, get: () => parser };
11134      Object.defineProperty(this, `parser`, pGetter);
11135      const start = parser.currentPosition;
11136      const startGetter = { enumerable: false, get: () => start };
11137      Object.defineProperty(this, `start`, startGetter);
11138    }
11139    load(struct) {
11140      Object.keys(struct).forEach((p22) => {
11141        let props = Object.getOwnPropertyDescriptor(struct, p22);
11142        if (props.get) {
11143          this[p22] = props.get.bind(this);
11144        } else if (props.value !== void 0) {
11145          this[p22] = props.value;
11146        }
11147      });
11148      if (this.parser.length) {
11149        this.parser.verifyLength();
11150      }
11151    }
11152  };
11153  var SimpleTable = class extends ParsedData {
11154    constructor(dict, dataview, name2) {
11155      const { parser, start } = super(
11156        new Parser(dict, dataview, name2)
11157      );
11158      const pGetter = { enumerable: false, get: () => parser };
11159      Object.defineProperty(this, `p`, pGetter);
11160      const startGetter = { enumerable: false, get: () => start };
11161      Object.defineProperty(this, `tableStart`, startGetter);
11162    }
11163  };
11164  function lazy$1(object, property, getter) {
11165    let val;
11166    Object.defineProperty(object, property, {
11167      get: () => {
11168        if (val) return val;
11169        val = getter();
11170        return val;
11171      },
11172      enumerable: true
11173    });
11174  }
11175  var SFNT = class extends SimpleTable {
11176    constructor(font2, dataview, createTable2) {
11177      const { p: p22 } = super({ offset: 0, length: 12 }, dataview, `sfnt`);
11178      this.version = p22.uint32;
11179      this.numTables = p22.uint16;
11180      this.searchRange = p22.uint16;
11181      this.entrySelector = p22.uint16;
11182      this.rangeShift = p22.uint16;
11183      p22.verifyLength();
11184      this.directory = [...new Array(this.numTables)].map(
11185        (_) => new TableRecord(p22)
11186      );
11187      this.tables = {};
11188      this.directory.forEach((entry) => {
11189        const getter = () => createTable2(
11190          this.tables,
11191          {
11192            tag: entry.tag,
11193            offset: entry.offset,
11194            length: entry.length
11195          },
11196          dataview
11197        );
11198        lazy$1(this.tables, entry.tag.trim(), getter);
11199      });
11200    }
11201  };
11202  var TableRecord = class {
11203    constructor(p22) {
11204      this.tag = p22.tag;
11205      this.checksum = p22.uint32;
11206      this.offset = p22.uint32;
11207      this.length = p22.uint32;
11208    }
11209  };
11210  var gzipDecode = inflate_default.inflate || void 0;
11211  var nativeGzipDecode = void 0;
11212  var WOFF$1 = class extends SimpleTable {
11213    constructor(font2, dataview, createTable2) {
11214      const { p: p22 } = super({ offset: 0, length: 44 }, dataview, `woff`);
11215      this.signature = p22.tag;
11216      this.flavor = p22.uint32;
11217      this.length = p22.uint32;
11218      this.numTables = p22.uint16;
11219      p22.uint16;
11220      this.totalSfntSize = p22.uint32;
11221      this.majorVersion = p22.uint16;
11222      this.minorVersion = p22.uint16;
11223      this.metaOffset = p22.uint32;
11224      this.metaLength = p22.uint32;
11225      this.metaOrigLength = p22.uint32;
11226      this.privOffset = p22.uint32;
11227      this.privLength = p22.uint32;
11228      p22.verifyLength();
11229      this.directory = [...new Array(this.numTables)].map(
11230        (_) => new WoffTableDirectoryEntry(p22)
11231      );
11232      buildWoffLazyLookups(this, dataview, createTable2);
11233    }
11234  };
11235  var WoffTableDirectoryEntry = class {
11236    constructor(p22) {
11237      this.tag = p22.tag;
11238      this.offset = p22.uint32;
11239      this.compLength = p22.uint32;
11240      this.origLength = p22.uint32;
11241      this.origChecksum = p22.uint32;
11242    }
11243  };
11244  function buildWoffLazyLookups(woff, dataview, createTable2) {
11245    woff.tables = {};
11246    woff.directory.forEach((entry) => {
11247      lazy$1(woff.tables, entry.tag.trim(), () => {
11248        let offset = 0;
11249        let view = dataview;
11250        if (entry.compLength !== entry.origLength) {
11251          const data = dataview.buffer.slice(
11252            entry.offset,
11253            entry.offset + entry.compLength
11254          );
11255          let unpacked;
11256          if (gzipDecode) {
11257            unpacked = gzipDecode(new Uint8Array(data));
11258          } else if (nativeGzipDecode) {
11259            unpacked = nativeGzipDecode(new Uint8Array(data));
11260          } else {
11261            const msg = `no brotli decoder available to decode WOFF2 font`;
11262            if (font.onerror) font.onerror(msg);
11263            throw new Error(msg);
11264          }
11265          view = new DataView(unpacked.buffer);
11266        } else {
11267          offset = entry.offset;
11268        }
11269        return createTable2(
11270          woff.tables,
11271          { tag: entry.tag, offset, length: entry.origLength },
11272          view
11273        );
11274      });
11275    });
11276  }
11277  var brotliDecode = unbrotli_default;
11278  var nativeBrotliDecode = void 0;
11279  var WOFF2$1 = class extends SimpleTable {
11280    constructor(font2, dataview, createTable2) {
11281      const { p: p22 } = super({ offset: 0, length: 48 }, dataview, `woff2`);
11282      this.signature = p22.tag;
11283      this.flavor = p22.uint32;
11284      this.length = p22.uint32;
11285      this.numTables = p22.uint16;
11286      p22.uint16;
11287      this.totalSfntSize = p22.uint32;
11288      this.totalCompressedSize = p22.uint32;
11289      this.majorVersion = p22.uint16;
11290      this.minorVersion = p22.uint16;
11291      this.metaOffset = p22.uint32;
11292      this.metaLength = p22.uint32;
11293      this.metaOrigLength = p22.uint32;
11294      this.privOffset = p22.uint32;
11295      this.privLength = p22.uint32;
11296      p22.verifyLength();
11297      this.directory = [...new Array(this.numTables)].map(
11298        (_) => new Woff2TableDirectoryEntry(p22)
11299      );
11300      let dictOffset = p22.currentPosition;
11301      this.directory[0].offset = 0;
11302      this.directory.forEach((e2, i2) => {
11303        let next = this.directory[i2 + 1];
11304        if (next) {
11305          next.offset = e2.offset + (e2.transformLength !== void 0 ? e2.transformLength : e2.origLength);
11306        }
11307      });
11308      let decoded;
11309      let buffer = dataview.buffer.slice(dictOffset);
11310      if (brotliDecode) {
11311        decoded = brotliDecode(new Uint8Array(buffer));
11312      } else if (nativeBrotliDecode) {
11313        decoded = new Uint8Array(nativeBrotliDecode(buffer));
11314      } else {
11315        const msg = `no brotli decoder available to decode WOFF2 font`;
11316        if (font2.onerror) font2.onerror(msg);
11317        throw new Error(msg);
11318      }
11319      buildWoff2LazyLookups(this, decoded, createTable2);
11320    }
11321  };
11322  var Woff2TableDirectoryEntry = class {
11323    constructor(p22) {
11324      this.flags = p22.uint8;
11325      const tagNumber = this.tagNumber = this.flags & 63;
11326      if (tagNumber === 63) {
11327        this.tag = p22.tag;
11328      } else {
11329        this.tag = getWOFF2Tag(tagNumber);
11330      }
11331      const transformVersion = this.transformVersion = (this.flags & 192) >> 6;
11332      let hasTransforms = transformVersion !== 0;
11333      if (this.tag === `glyf` || this.tag === `loca`) {
11334        hasTransforms = this.transformVersion !== 3;
11335      }
11336      this.origLength = p22.uint128;
11337      if (hasTransforms) {
11338        this.transformLength = p22.uint128;
11339      }
11340    }
11341  };
11342  function buildWoff2LazyLookups(woff2, decoded, createTable2) {
11343    woff2.tables = {};
11344    woff2.directory.forEach((entry) => {
11345      lazy$1(woff2.tables, entry.tag.trim(), () => {
11346        const start = entry.offset;
11347        const end = start + (entry.transformLength ? entry.transformLength : entry.origLength);
11348        const data = new DataView(decoded.slice(start, end).buffer);
11349        try {
11350          return createTable2(
11351            woff2.tables,
11352            { tag: entry.tag, offset: 0, length: entry.origLength },
11353            data
11354          );
11355        } catch (e2) {
11356          console.error(e2);
11357        }
11358      });
11359    });
11360  }
11361  function getWOFF2Tag(flag) {
11362    return [
11363      `cmap`,
11364      `head`,
11365      `hhea`,
11366      `hmtx`,
11367      `maxp`,
11368      `name`,
11369      `OS/2`,
11370      `post`,
11371      `cvt `,
11372      `fpgm`,
11373      `glyf`,
11374      `loca`,
11375      `prep`,
11376      `CFF `,
11377      `VORG`,
11378      `EBDT`,
11379      `EBLC`,
11380      `gasp`,
11381      `hdmx`,
11382      `kern`,
11383      `LTSH`,
11384      `PCLT`,
11385      `VDMX`,
11386      `vhea`,
11387      `vmtx`,
11388      `BASE`,
11389      `GDEF`,
11390      `GPOS`,
11391      `GSUB`,
11392      `EBSC`,
11393      `JSTF`,
11394      `MATH`,
11395      `CBDT`,
11396      `CBLC`,
11397      `COLR`,
11398      `CPAL`,
11399      `SVG `,
11400      `sbix`,
11401      `acnt`,
11402      `avar`,
11403      `bdat`,
11404      `bloc`,
11405      `bsln`,
11406      `cvar`,
11407      `fdsc`,
11408      `feat`,
11409      `fmtx`,
11410      `fvar`,
11411      `gvar`,
11412      `hsty`,
11413      `just`,
11414      `lcar`,
11415      `mort`,
11416      `morx`,
11417      `opbd`,
11418      `prop`,
11419      `trak`,
11420      `Zapf`,
11421      `Silf`,
11422      `Glat`,
11423      `Gloc`,
11424      `Feat`,
11425      `Sill`
11426    ][flag & 63];
11427  }
11428  var tableClasses = {};
11429  var tableClassesLoaded = false;
11430  Promise.all([
11431    Promise.resolve().then(function() {
11432      return cmap$1;
11433    }),
11434    Promise.resolve().then(function() {
11435      return head$1;
11436    }),
11437    Promise.resolve().then(function() {
11438      return hhea$1;
11439    }),
11440    Promise.resolve().then(function() {
11441      return hmtx$1;
11442    }),
11443    Promise.resolve().then(function() {
11444      return maxp$1;
11445    }),
11446    Promise.resolve().then(function() {
11447      return name$1;
11448    }),
11449    Promise.resolve().then(function() {
11450      return OS2$1;
11451    }),
11452    Promise.resolve().then(function() {
11453      return post$1;
11454    }),
11455    Promise.resolve().then(function() {
11456      return BASE$1;
11457    }),
11458    Promise.resolve().then(function() {
11459      return GDEF$1;
11460    }),
11461    Promise.resolve().then(function() {
11462      return GSUB$1;
11463    }),
11464    Promise.resolve().then(function() {
11465      return GPOS$1;
11466    }),
11467    Promise.resolve().then(function() {
11468      return SVG$1;
11469    }),
11470    Promise.resolve().then(function() {
11471      return fvar$1;
11472    }),
11473    Promise.resolve().then(function() {
11474      return cvt$1;
11475    }),
11476    Promise.resolve().then(function() {
11477      return fpgm$1;
11478    }),
11479    Promise.resolve().then(function() {
11480      return gasp$1;
11481    }),
11482    Promise.resolve().then(function() {
11483      return glyf$1;
11484    }),
11485    Promise.resolve().then(function() {
11486      return loca$1;
11487    }),
11488    Promise.resolve().then(function() {
11489      return prep$1;
11490    }),
11491    Promise.resolve().then(function() {
11492      return CFF$1;
11493    }),
11494    Promise.resolve().then(function() {
11495      return CFF2$1;
11496    }),
11497    Promise.resolve().then(function() {
11498      return VORG$1;
11499    }),
11500    Promise.resolve().then(function() {
11501      return EBLC$1;
11502    }),
11503    Promise.resolve().then(function() {
11504      return EBDT$1;
11505    }),
11506    Promise.resolve().then(function() {
11507      return EBSC$1;
11508    }),
11509    Promise.resolve().then(function() {
11510      return CBLC$1;
11511    }),
11512    Promise.resolve().then(function() {
11513      return CBDT$1;
11514    }),
11515    Promise.resolve().then(function() {
11516      return sbix$1;
11517    }),
11518    Promise.resolve().then(function() {
11519      return COLR$1;
11520    }),
11521    Promise.resolve().then(function() {
11522      return CPAL$1;
11523    }),
11524    Promise.resolve().then(function() {
11525      return DSIG$1;
11526    }),
11527    Promise.resolve().then(function() {
11528      return hdmx$1;
11529    }),
11530    Promise.resolve().then(function() {
11531      return kern$1;
11532    }),
11533    Promise.resolve().then(function() {
11534      return LTSH$1;
11535    }),
11536    Promise.resolve().then(function() {
11537      return MERG$1;
11538    }),
11539    Promise.resolve().then(function() {
11540      return meta$1;
11541    }),
11542    Promise.resolve().then(function() {
11543      return PCLT$1;
11544    }),
11545    Promise.resolve().then(function() {
11546      return VDMX$1;
11547    }),
11548    Promise.resolve().then(function() {
11549      return vhea$1;
11550    }),
11551    Promise.resolve().then(function() {
11552      return vmtx$1;
11553    })
11554  ]).then((data) => {
11555    data.forEach((e2) => {
11556      let name2 = Object.keys(e2)[0];
11557      tableClasses[name2] = e2[name2];
11558    });
11559    tableClassesLoaded = true;
11560  });
11561  function createTable(tables, dict, dataview) {
11562    let name2 = dict.tag.replace(/[^\w\d]/g, ``);
11563    let Type = tableClasses[name2];
11564    if (Type) return new Type(dict, dataview, tables);
11565    console.warn(
11566      `lib-font has no definition for $name2}. The table was skipped.`
11567    );
11568    return {};
11569  }
11570  function loadTableClasses() {
11571    let count = 0;
11572    function checkLoaded(resolve, reject) {
11573      if (!tableClassesLoaded) {
11574        if (count > 10) {
11575          return reject(new Error(`loading took too long`));
11576        }
11577        count++;
11578        return setTimeout(() => checkLoaded(resolve), 250);
11579      }
11580      resolve(createTable);
11581    }
11582    return new Promise((resolve, reject) => checkLoaded(resolve));
11583  }
11584  function getFontCSSFormat(path, errorOnStyle) {
11585    let pos = path.lastIndexOf(`.`);
11586    let ext = (path.substring(pos + 1) || ``).toLowerCase();
11587    let format = {
11588      ttf: `truetype`,
11589      otf: `opentype`,
11590      woff: `woff`,
11591      woff2: `woff2`
11592    }[ext];
11593    if (format) return format;
11594    let msg = {
11595      eot: `The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.`,
11596      svg: `The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.`,
11597      fon: `The .fon format is not supported: this is an ancient Windows bitmap font format.`,
11598      ttc: `Based on the current CSS specification, font collections are not (yet?) supported.`
11599    }[ext];
11600    if (!msg) msg = `$path} is not a known webfont format.`;
11601    if (errorOnStyle) {
11602      throw new Error(msg);
11603    } else {
11604      console.warn(`Could not load font: $msg}`);
11605    }
11606  }
11607  async function setupFontFace(name2, url, options = {}) {
11608    if (!globalThis.document) return;
11609    let format = getFontCSSFormat(url, options.errorOnStyle);
11610    if (!format) return;
11611    let style = document.createElement(`style`);
11612    style.className = `injected-by-Font-js`;
11613    let rules = [];
11614    if (options.styleRules) {
11615      rules = Object.entries(options.styleRules).map(
11616        ([key, value]) => `$key}: $value};`
11617      );
11618    }
11619    style.textContent = `
11620  @font-face {
11621      font-family: "$name2}";
11622      $rules.join(
11623      `
11624      `
11625    )}
11626      src: url("$url}") format("$format}");
11627  }`;
11628    globalThis.document.head.appendChild(style);
11629    return style;
11630  }
11631  var TTF = [0, 1, 0, 0];
11632  var OTF = [79, 84, 84, 79];
11633  var WOFF = [119, 79, 70, 70];
11634  var WOFF2 = [119, 79, 70, 50];
11635  function match(ar1, ar2) {
11636    if (ar1.length !== ar2.length) return;
11637    for (let i2 = 0; i2 < ar1.length; i2++) {
11638      if (ar1[i2] !== ar2[i2]) return;
11639    }
11640    return true;
11641  }
11642  function validFontFormat(dataview) {
11643    const LEAD_BYTES = [
11644      dataview.getUint8(0),
11645      dataview.getUint8(1),
11646      dataview.getUint8(2),
11647      dataview.getUint8(3)
11648    ];
11649    if (match(LEAD_BYTES, TTF) || match(LEAD_BYTES, OTF)) return `SFNT`;
11650    if (match(LEAD_BYTES, WOFF)) return `WOFF`;
11651    if (match(LEAD_BYTES, WOFF2)) return `WOFF2`;
11652  }
11653  function checkFetchResponseStatus(response) {
11654    if (!response.ok) {
11655      throw new Error(
11656        `HTTP $response.status} - $response.statusText}`
11657      );
11658    }
11659    return response;
11660  }
11661  var Font = class extends EventManager {
11662    constructor(name2, options = {}) {
11663      super();
11664      this.name = name2;
11665      this.options = options;
11666      this.metrics = false;
11667    }
11668    get src() {
11669      return this.__src;
11670    }
11671    set src(src) {
11672      this.__src = src;
11673      (async () => {
11674        if (globalThis.document && !this.options.skipStyleSheet) {
11675          await setupFontFace(this.name, src, this.options);
11676        }
11677        this.loadFont(src);
11678      })();
11679    }
11680    async loadFont(url, filename) {
11681      fetch(url).then(
11682        (response) => checkFetchResponseStatus(response) && response.arrayBuffer()
11683      ).then(
11684        (buffer) => this.fromDataBuffer(buffer, filename || url)
11685      ).catch((err) => {
11686        const evt = new Event2(
11687          `error`,
11688          err,
11689          `Failed to load font at $filename || url}`
11690        );
11691        this.dispatch(evt);
11692        if (this.onerror) this.onerror(evt);
11693      });
11694    }
11695    async fromDataBuffer(buffer, filenameOrUrL) {
11696      this.fontData = new DataView(buffer);
11697      let type = validFontFormat(this.fontData);
11698      if (!type) {
11699        throw new Error(
11700          `$filenameOrUrL} is either an unsupported font format, or not a font at all.`
11701        );
11702      }
11703      await this.parseBasicData(type);
11704      const evt = new Event2("load", { font: this });
11705      this.dispatch(evt);
11706      if (this.onload) this.onload(evt);
11707    }
11708    async parseBasicData(type) {
11709      return loadTableClasses().then((createTable2) => {
11710        if (type === `SFNT`) {
11711          this.opentype = new SFNT(this, this.fontData, createTable2);
11712        }
11713        if (type === `WOFF`) {
11714          this.opentype = new WOFF$1(this, this.fontData, createTable2);
11715        }
11716        if (type === `WOFF2`) {
11717          this.opentype = new WOFF2$1(this, this.fontData, createTable2);
11718        }
11719        return this.opentype;
11720      });
11721    }
11722    getGlyphId(char) {
11723      return this.opentype.tables.cmap.getGlyphId(char);
11724    }
11725    reverse(glyphid) {
11726      return this.opentype.tables.cmap.reverse(glyphid);
11727    }
11728    supports(char) {
11729      return this.getGlyphId(char) !== 0;
11730    }
11731    supportsVariation(variation) {
11732      return this.opentype.tables.cmap.supportsVariation(variation) !== false;
11733    }
11734    measureText(text, size = 16) {
11735      if (this.__unloaded)
11736        throw new Error(
11737          "Cannot measure text: font was unloaded. Please reload before calling measureText()"
11738        );
11739      let d2 = document.createElement("div");
11740      d2.textContent = text;
11741      d2.style.fontFamily = this.name;
11742      d2.style.fontSize = `$size}px`;
11743      d2.style.color = `transparent`;
11744      d2.style.background = `transparent`;
11745      d2.style.top = `0`;
11746      d2.style.left = `0`;
11747      d2.style.position = `absolute`;
11748      document.body.appendChild(d2);
11749      let bbox = d2.getBoundingClientRect();
11750      document.body.removeChild(d2);
11751      const OS22 = this.opentype.tables["OS/2"];
11752      bbox.fontSize = size;
11753      bbox.ascender = OS22.sTypoAscender;
11754      bbox.descender = OS22.sTypoDescender;
11755      return bbox;
11756    }
11757    unload() {
11758      if (this.styleElement.parentNode) {
11759        this.styleElement.parentNode.removeElement(this.styleElement);
11760        const evt = new Event2("unload", { font: this });
11761        this.dispatch(evt);
11762        if (this.onunload) this.onunload(evt);
11763      }
11764      this._unloaded = true;
11765    }
11766    load() {
11767      if (this.__unloaded) {
11768        delete this.__unloaded;
11769        document.head.appendChild(this.styleElement);
11770        const evt = new Event2("load", { font: this });
11771        this.dispatch(evt);
11772        if (this.onload) this.onload(evt);
11773      }
11774    }
11775  };
11776  globalThis.Font = Font;
11777  var Subtable = class extends ParsedData {
11778    constructor(p22, plaformID, encodingID) {
11779      super(p22);
11780      this.plaformID = plaformID;
11781      this.encodingID = encodingID;
11782    }
11783  };
11784  var Format0 = class extends Subtable {
11785    constructor(p22, platformID, encodingID) {
11786      super(p22, platformID, encodingID);
11787      this.format = 0;
11788      this.length = p22.uint16;
11789      this.language = p22.uint16;
11790      this.glyphIdArray = [...new Array(256)].map((_) => p22.uint8);
11791    }
11792    supports(charCode) {
11793      if (charCode.charCodeAt) {
11794        charCode = -1;
11795        console.warn(
11796          `supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.`
11797        );
11798      }
11799      return 0 <= charCode && charCode <= 255;
11800    }
11801    reverse(glyphID) {
11802      console.warn(`reverse not implemented for cmap subtable format 0`);
11803      return {};
11804    }
11805    getSupportedCharCodes() {
11806      return [{ start: 1, end: 256 }];
11807    }
11808  };
11809  var Format2 = class extends Subtable {
11810    constructor(p22, platformID, encodingID) {
11811      super(p22, platformID, encodingID);
11812      this.format = 2;
11813      this.length = p22.uint16;
11814      this.language = p22.uint16;
11815      this.subHeaderKeys = [...new Array(256)].map((_) => p22.uint16);
11816      const subHeaderCount = Math.max(...this.subHeaderKeys);
11817      const subHeaderOffset = p22.currentPosition;
11818      lazy$1(this, `subHeaders`, () => {
11819        p22.currentPosition = subHeaderOffset;
11820        return [...new Array(subHeaderCount)].map(
11821          (_) => new SubHeader(p22)
11822        );
11823      });
11824      const glyphIndexOffset = subHeaderOffset + subHeaderCount * 8;
11825      lazy$1(this, `glyphIndexArray`, () => {
11826        p22.currentPosition = glyphIndexOffset;
11827        return [...new Array(subHeaderCount)].map((_) => p22.uint16);
11828      });
11829    }
11830    supports(charCode) {
11831      if (charCode.charCodeAt) {
11832        charCode = -1;
11833        console.warn(
11834          `supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented.`
11835        );
11836      }
11837      const low = charCode && 255;
11838      const high = charCode && 65280;
11839      const subHeaderKey = this.subHeaders[high];
11840      const subheader = this.subHeaders[subHeaderKey];
11841      const first = subheader.firstCode;
11842      const last = first + subheader.entryCount;
11843      return first <= low && low <= last;
11844    }
11845    reverse(glyphID) {
11846      console.warn(`reverse not implemented for cmap subtable format 2`);
11847      return {};
11848    }
11849    getSupportedCharCodes(preservePropNames = false) {
11850      if (preservePropNames) {
11851        return this.subHeaders.map((h2) => ({
11852          firstCode: h2.firstCode,
11853          lastCode: h2.lastCode
11854        }));
11855      }
11856      return this.subHeaders.map((h2) => ({
11857        start: h2.firstCode,
11858        end: h2.lastCode
11859      }));
11860    }
11861  };
11862  var SubHeader = class {
11863    constructor(p22) {
11864      this.firstCode = p22.uint16;
11865      this.entryCount = p22.uint16;
11866      this.lastCode = this.first + this.entryCount;
11867      this.idDelta = p22.int16;
11868      this.idRangeOffset = p22.uint16;
11869    }
11870  };
11871  var Format4 = class extends Subtable {
11872    constructor(p22, platformID, encodingID) {
11873      super(p22, platformID, encodingID);
11874      this.format = 4;
11875      this.length = p22.uint16;
11876      this.language = p22.uint16;
11877      this.segCountX2 = p22.uint16;
11878      this.segCount = this.segCountX2 / 2;
11879      this.searchRange = p22.uint16;
11880      this.entrySelector = p22.uint16;
11881      this.rangeShift = p22.uint16;
11882      const endCodePosition = p22.currentPosition;
11883      lazy$1(
11884        this,
11885        `endCode`,
11886        () => p22.readBytes(this.segCount, endCodePosition, 16)
11887      );
11888      const startCodePosition = endCodePosition + 2 + this.segCountX2;
11889      lazy$1(
11890        this,
11891        `startCode`,
11892        () => p22.readBytes(this.segCount, startCodePosition, 16)
11893      );
11894      const idDeltaPosition = startCodePosition + this.segCountX2;
11895      lazy$1(
11896        this,
11897        `idDelta`,
11898        () => p22.readBytes(this.segCount, idDeltaPosition, 16, true)
11899      );
11900      const idRangePosition = idDeltaPosition + this.segCountX2;
11901      lazy$1(
11902        this,
11903        `idRangeOffset`,
11904        () => p22.readBytes(this.segCount, idRangePosition, 16)
11905      );
11906      const glyphIdArrayPosition = idRangePosition + this.segCountX2;
11907      const glyphIdArrayLength = this.length - (glyphIdArrayPosition - this.tableStart);
11908      lazy$1(
11909        this,
11910        `glyphIdArray`,
11911        () => p22.readBytes(glyphIdArrayLength, glyphIdArrayPosition, 16)
11912      );
11913      lazy$1(
11914        this,
11915        `segments`,
11916        () => this.buildSegments(idRangePosition, glyphIdArrayPosition, p22)
11917      );
11918    }
11919    buildSegments(idRangePosition, glyphIdArrayPosition, p22) {
11920      const build = (_, i2) => {
11921        let startCode = this.startCode[i2], endCode = this.endCode[i2], idDelta = this.idDelta[i2], idRangeOffset = this.idRangeOffset[i2], idRangeOffsetPointer = idRangePosition + 2 * i2, glyphIDs = [];
11922        if (idRangeOffset === 0) {
11923          for (let i22 = startCode + idDelta, e2 = endCode + idDelta; i22 <= e2; i22++) {
11924            glyphIDs.push(i22);
11925          }
11926        } else {
11927          for (let i22 = 0, e2 = endCode - startCode; i22 <= e2; i22++) {
11928            p22.currentPosition = idRangeOffsetPointer + idRangeOffset + i22 * 2;
11929            glyphIDs.push(p22.uint16);
11930          }
11931        }
11932        return {
11933          startCode,
11934          endCode,
11935          idDelta,
11936          idRangeOffset,
11937          glyphIDs
11938        };
11939      };
11940      return [...new Array(this.segCount)].map(build);
11941    }
11942    reverse(glyphID) {
11943      let s2 = this.segments.find((v2) => v2.glyphIDs.includes(glyphID));
11944      if (!s2) return {};
11945      const code = s2.startCode + s2.glyphIDs.indexOf(glyphID);
11946      return { code, unicode: String.fromCodePoint(code) };
11947    }
11948    getGlyphId(charCode) {
11949      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
11950      if (55296 <= charCode && charCode <= 57343) return 0;
11951      if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535)
11952        return 0;
11953      let segment = this.segments.find(
11954        (s2) => s2.startCode <= charCode && charCode <= s2.endCode
11955      );
11956      if (!segment) return 0;
11957      return segment.glyphIDs[charCode - segment.startCode];
11958    }
11959    supports(charCode) {
11960      return this.getGlyphId(charCode) !== 0;
11961    }
11962    getSupportedCharCodes(preservePropNames = false) {
11963      if (preservePropNames) return this.segments;
11964      return this.segments.map((v2) => ({
11965        start: v2.startCode,
11966        end: v2.endCode
11967      }));
11968    }
11969  };
11970  var Format6 = class extends Subtable {
11971    constructor(p22, platformID, encodingID) {
11972      super(p22, platformID, encodingID);
11973      this.format = 6;
11974      this.length = p22.uint16;
11975      this.language = p22.uint16;
11976      this.firstCode = p22.uint16;
11977      this.entryCount = p22.uint16;
11978      this.lastCode = this.firstCode + this.entryCount - 1;
11979      const getter = () => [...new Array(this.entryCount)].map((_) => p22.uint16);
11980      lazy$1(this, `glyphIdArray`, getter);
11981    }
11982    supports(charCode) {
11983      if (charCode.charCodeAt) {
11984        charCode = -1;
11985        console.warn(
11986          `supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.`
11987        );
11988      }
11989      if (charCode < this.firstCode) return {};
11990      if (charCode > this.firstCode + this.entryCount) return {};
11991      const code = charCode - this.firstCode;
11992      return { code, unicode: String.fromCodePoint(code) };
11993    }
11994    reverse(glyphID) {
11995      let pos = this.glyphIdArray.indexOf(glyphID);
11996      if (pos > -1) return this.firstCode + pos;
11997    }
11998    getSupportedCharCodes(preservePropNames = false) {
11999      if (preservePropNames) {
12000        return [{ firstCode: this.firstCode, lastCode: this.lastCode }];
12001      }
12002      return [{ start: this.firstCode, end: this.lastCode }];
12003    }
12004  };
12005  var Format8 = class extends Subtable {
12006    constructor(p22, platformID, encodingID) {
12007      super(p22, platformID, encodingID);
12008      this.format = 8;
12009      p22.uint16;
12010      this.length = p22.uint32;
12011      this.language = p22.uint32;
12012      this.is32 = [...new Array(8192)].map((_) => p22.uint8);
12013      this.numGroups = p22.uint32;
12014      const getter = () => [...new Array(this.numGroups)].map(
12015        (_) => new SequentialMapGroup$1(p22)
12016      );
12017      lazy$1(this, `groups`, getter);
12018    }
12019    supports(charCode) {
12020      if (charCode.charCodeAt) {
12021        charCode = -1;
12022        console.warn(
12023          `supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.`
12024        );
12025      }
12026      return this.groups.findIndex(
12027        (s2) => s2.startcharCode <= charCode && charCode <= s2.endcharCode
12028      ) !== -1;
12029    }
12030    reverse(glyphID) {
12031      console.warn(`reverse not implemented for cmap subtable format 8`);
12032      return {};
12033    }
12034    getSupportedCharCodes(preservePropNames = false) {
12035      if (preservePropNames) return this.groups;
12036      return this.groups.map((v2) => ({
12037        start: v2.startcharCode,
12038        end: v2.endcharCode
12039      }));
12040    }
12041  };
12042  var SequentialMapGroup$1 = class {
12043    constructor(p22) {
12044      this.startcharCode = p22.uint32;
12045      this.endcharCode = p22.uint32;
12046      this.startGlyphID = p22.uint32;
12047    }
12048  };
12049  var Format10 = class extends Subtable {
12050    constructor(p22, platformID, encodingID) {
12051      super(p22, platformID, encodingID);
12052      this.format = 10;
12053      p22.uint16;
12054      this.length = p22.uint32;
12055      this.language = p22.uint32;
12056      this.startCharCode = p22.uint32;
12057      this.numChars = p22.uint32;
12058      this.endCharCode = this.startCharCode + this.numChars;
12059      const getter = () => [...new Array(this.numChars)].map((_) => p22.uint16);
12060      lazy$1(this, `glyphs`, getter);
12061    }
12062    supports(charCode) {
12063      if (charCode.charCodeAt) {
12064        charCode = -1;
12065        console.warn(
12066          `supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.`
12067        );
12068      }
12069      if (charCode < this.startCharCode) return false;
12070      if (charCode > this.startCharCode + this.numChars) return false;
12071      return charCode - this.startCharCode;
12072    }
12073    reverse(glyphID) {
12074      console.warn(`reverse not implemented for cmap subtable format 10`);
12075      return {};
12076    }
12077    getSupportedCharCodes(preservePropNames = false) {
12078      if (preservePropNames) {
12079        return [
12080          {
12081            startCharCode: this.startCharCode,
12082            endCharCode: this.endCharCode
12083          }
12084        ];
12085      }
12086      return [{ start: this.startCharCode, end: this.endCharCode }];
12087    }
12088  };
12089  var Format12 = class extends Subtable {
12090    constructor(p22, platformID, encodingID) {
12091      super(p22, platformID, encodingID);
12092      this.format = 12;
12093      p22.uint16;
12094      this.length = p22.uint32;
12095      this.language = p22.uint32;
12096      this.numGroups = p22.uint32;
12097      const getter = () => [...new Array(this.numGroups)].map(
12098        (_) => new SequentialMapGroup(p22)
12099      );
12100      lazy$1(this, `groups`, getter);
12101    }
12102    supports(charCode) {
12103      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
12104      if (55296 <= charCode && charCode <= 57343) return 0;
12105      if ((charCode & 65534) === 65534 || (charCode & 65535) === 65535)
12106        return 0;
12107      return this.groups.findIndex(
12108        (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode
12109      ) !== -1;
12110    }
12111    reverse(glyphID) {
12112      for (let group of this.groups) {
12113        let start = group.startGlyphID;
12114        if (start > glyphID) continue;
12115        if (start === glyphID) return group.startCharCode;
12116        let end = start + (group.endCharCode - group.startCharCode);
12117        if (end < glyphID) continue;
12118        const code = group.startCharCode + (glyphID - start);
12119        return { code, unicode: String.fromCodePoint(code) };
12120      }
12121      return {};
12122    }
12123    getSupportedCharCodes(preservePropNames = false) {
12124      if (preservePropNames) return this.groups;
12125      return this.groups.map((v2) => ({
12126        start: v2.startCharCode,
12127        end: v2.endCharCode
12128      }));
12129    }
12130  };
12131  var SequentialMapGroup = class {
12132    constructor(p22) {
12133      this.startCharCode = p22.uint32;
12134      this.endCharCode = p22.uint32;
12135      this.startGlyphID = p22.uint32;
12136    }
12137  };
12138  var Format13 = class extends Subtable {
12139    constructor(p22, platformID, encodingID) {
12140      super(p22, platformID, encodingID);
12141      this.format = 13;
12142      p22.uint16;
12143      this.length = p22.uint32;
12144      this.language = p22.uint32;
12145      this.numGroups = p22.uint32;
12146      const getter = [...new Array(this.numGroups)].map(
12147        (_) => new ConstantMapGroup(p22)
12148      );
12149      lazy$1(this, `groups`, getter);
12150    }
12151    supports(charCode) {
12152      if (charCode.charCodeAt) charCode = charCode.charCodeAt(0);
12153      return this.groups.findIndex(
12154        (s2) => s2.startCharCode <= charCode && charCode <= s2.endCharCode
12155      ) !== -1;
12156    }
12157    reverse(glyphID) {
12158      console.warn(`reverse not implemented for cmap subtable format 13`);
12159      return {};
12160    }
12161    getSupportedCharCodes(preservePropNames = false) {
12162      if (preservePropNames) return this.groups;
12163      return this.groups.map((v2) => ({
12164        start: v2.startCharCode,
12165        end: v2.endCharCode
12166      }));
12167    }
12168  };
12169  var ConstantMapGroup = class {
12170    constructor(p22) {
12171      this.startCharCode = p22.uint32;
12172      this.endCharCode = p22.uint32;
12173      this.glyphID = p22.uint32;
12174    }
12175  };
12176  var Format14 = class extends Subtable {
12177    constructor(p22, platformID, encodingID) {
12178      super(p22, platformID, encodingID);
12179      this.subTableStart = p22.currentPosition;
12180      this.format = 14;
12181      this.length = p22.uint32;
12182      this.numVarSelectorRecords = p22.uint32;
12183      lazy$1(
12184        this,
12185        `varSelectors`,
12186        () => [...new Array(this.numVarSelectorRecords)].map(
12187          (_) => new VariationSelector(p22)
12188        )
12189      );
12190    }
12191    supports() {
12192      console.warn(`supports not implemented for cmap subtable format 14`);
12193      return 0;
12194    }
12195    getSupportedCharCodes() {
12196      console.warn(
12197        `getSupportedCharCodes not implemented for cmap subtable format 14`
12198      );
12199      return [];
12200    }
12201    reverse(glyphID) {
12202      console.warn(`reverse not implemented for cmap subtable format 14`);
12203      return {};
12204    }
12205    supportsVariation(variation) {
12206      let v2 = this.varSelector.find(
12207        (uvs) => uvs.varSelector === variation
12208      );
12209      return v2 ? v2 : false;
12210    }
12211    getSupportedVariations() {
12212      return this.varSelectors.map((v2) => v2.varSelector);
12213    }
12214  };
12215  var VariationSelector = class {
12216    constructor(p22) {
12217      this.varSelector = p22.uint24;
12218      this.defaultUVSOffset = p22.Offset32;
12219      this.nonDefaultUVSOffset = p22.Offset32;
12220    }
12221  };
12222  function createSubTable(parser, platformID, encodingID) {
12223    const format = parser.uint16;
12224    if (format === 0) return new Format0(parser, platformID, encodingID);
12225    if (format === 2) return new Format2(parser, platformID, encodingID);
12226    if (format === 4) return new Format4(parser, platformID, encodingID);
12227    if (format === 6) return new Format6(parser, platformID, encodingID);
12228    if (format === 8) return new Format8(parser, platformID, encodingID);
12229    if (format === 10) return new Format10(parser, platformID, encodingID);
12230    if (format === 12) return new Format12(parser, platformID, encodingID);
12231    if (format === 13) return new Format13(parser, platformID, encodingID);
12232    if (format === 14) return new Format14(parser, platformID, encodingID);
12233    return {};
12234  }
12235  var cmap = class extends SimpleTable {
12236    constructor(dict, dataview) {
12237      const { p: p22 } = super(dict, dataview);
12238      this.version = p22.uint16;
12239      this.numTables = p22.uint16;
12240      this.encodingRecords = [...new Array(this.numTables)].map(
12241        (_) => new EncodingRecord(p22, this.tableStart)
12242      );
12243    }
12244    getSubTable(tableID) {
12245      return this.encodingRecords[tableID].table;
12246    }
12247    getSupportedEncodings() {
12248      return this.encodingRecords.map((r3) => ({
12249        platformID: r3.platformID,
12250        encodingId: r3.encodingID
12251      }));
12252    }
12253    getSupportedCharCodes(platformID, encodingID) {
12254      const recordID = this.encodingRecords.findIndex(
12255        (r3) => r3.platformID === platformID && r3.encodingID === encodingID
12256      );
12257      if (recordID === -1) return false;
12258      const subtable = this.getSubTable(recordID);
12259      return subtable.getSupportedCharCodes();
12260    }
12261    reverse(glyphid) {
12262      for (let i2 = 0; i2 < this.numTables; i2++) {
12263        let code = this.getSubTable(i2).reverse(glyphid);
12264        if (code) return code;
12265      }
12266    }
12267    getGlyphId(char) {
12268      let last = 0;
12269      this.encodingRecords.some((_, tableID) => {
12270        let t3 = this.getSubTable(tableID);
12271        if (!t3.getGlyphId) return false;
12272        last = t3.getGlyphId(char);
12273        return last !== 0;
12274      });
12275      return last;
12276    }
12277    supports(char) {
12278      return this.encodingRecords.some((_, tableID) => {
12279        const t3 = this.getSubTable(tableID);
12280        return t3.supports && t3.supports(char) !== false;
12281      });
12282    }
12283    supportsVariation(variation) {
12284      return this.encodingRecords.some((_, tableID) => {
12285        const t3 = this.getSubTable(tableID);
12286        return t3.supportsVariation && t3.supportsVariation(variation) !== false;
12287      });
12288    }
12289  };
12290  var EncodingRecord = class {
12291    constructor(p22, tableStart) {
12292      const platformID = this.platformID = p22.uint16;
12293      const encodingID = this.encodingID = p22.uint16;
12294      const offset = this.offset = p22.Offset32;
12295      lazy$1(this, `table`, () => {
12296        p22.currentPosition = tableStart + offset;
12297        return createSubTable(p22, platformID, encodingID);
12298      });
12299    }
12300  };
12301  var cmap$1 = Object.freeze({ __proto__: null, cmap });
12302  var head = class extends SimpleTable {
12303    constructor(dict, dataview) {
12304      const { p: p22 } = super(dict, dataview);
12305      this.load({
12306        majorVersion: p22.uint16,
12307        minorVersion: p22.uint16,
12308        fontRevision: p22.fixed,
12309        checkSumAdjustment: p22.uint32,
12310        magicNumber: p22.uint32,
12311        flags: p22.flags(16),
12312        unitsPerEm: p22.uint16,
12313        created: p22.longdatetime,
12314        modified: p22.longdatetime,
12315        xMin: p22.int16,
12316        yMin: p22.int16,
12317        xMax: p22.int16,
12318        yMax: p22.int16,
12319        macStyle: p22.flags(16),
12320        lowestRecPPEM: p22.uint16,
12321        fontDirectionHint: p22.uint16,
12322        indexToLocFormat: p22.uint16,
12323        glyphDataFormat: p22.uint16
12324      });
12325    }
12326  };
12327  var head$1 = Object.freeze({ __proto__: null, head });
12328  var hhea = class extends SimpleTable {
12329    constructor(dict, dataview) {
12330      const { p: p22 } = super(dict, dataview);
12331      this.majorVersion = p22.uint16;
12332      this.minorVersion = p22.uint16;
12333      this.ascender = p22.fword;
12334      this.descender = p22.fword;
12335      this.lineGap = p22.fword;
12336      this.advanceWidthMax = p22.ufword;
12337      this.minLeftSideBearing = p22.fword;
12338      this.minRightSideBearing = p22.fword;
12339      this.xMaxExtent = p22.fword;
12340      this.caretSlopeRise = p22.int16;
12341      this.caretSlopeRun = p22.int16;
12342      this.caretOffset = p22.int16;
12343      p22.int16;
12344      p22.int16;
12345      p22.int16;
12346      p22.int16;
12347      this.metricDataFormat = p22.int16;
12348      this.numberOfHMetrics = p22.uint16;
12349      p22.verifyLength();
12350    }
12351  };
12352  var hhea$1 = Object.freeze({ __proto__: null, hhea });
12353  var hmtx = class extends SimpleTable {
12354    constructor(dict, dataview, tables) {
12355      const { p: p22 } = super(dict, dataview);
12356      const numberOfHMetrics = tables.hhea.numberOfHMetrics;
12357      const numGlyphs = tables.maxp.numGlyphs;
12358      const metricsStart = p22.currentPosition;
12359      lazy$1(this, `hMetrics`, () => {
12360        p22.currentPosition = metricsStart;
12361        return [...new Array(numberOfHMetrics)].map(
12362          (_) => new LongHorMetric(p22.uint16, p22.int16)
12363        );
12364      });
12365      if (numberOfHMetrics < numGlyphs) {
12366        const lsbStart = metricsStart + numberOfHMetrics * 4;
12367        lazy$1(this, `leftSideBearings`, () => {
12368          p22.currentPosition = lsbStart;
12369          return [...new Array(numGlyphs - numberOfHMetrics)].map(
12370            (_) => p22.int16
12371          );
12372        });
12373      }
12374    }
12375  };
12376  var LongHorMetric = class {
12377    constructor(w2, b2) {
12378      this.advanceWidth = w2;
12379      this.lsb = b2;
12380    }
12381  };
12382  var hmtx$1 = Object.freeze({ __proto__: null, hmtx });
12383  var maxp = class extends SimpleTable {
12384    constructor(dict, dataview) {
12385      const { p: p22 } = super(dict, dataview);
12386      this.version = p22.legacyFixed;
12387      this.numGlyphs = p22.uint16;
12388      if (this.version === 1) {
12389        this.maxPoints = p22.uint16;
12390        this.maxContours = p22.uint16;
12391        this.maxCompositePoints = p22.uint16;
12392        this.maxCompositeContours = p22.uint16;
12393        this.maxZones = p22.uint16;
12394        this.maxTwilightPoints = p22.uint16;
12395        this.maxStorage = p22.uint16;
12396        this.maxFunctionDefs = p22.uint16;
12397        this.maxInstructionDefs = p22.uint16;
12398        this.maxStackElements = p22.uint16;
12399        this.maxSizeOfInstructions = p22.uint16;
12400        this.maxComponentElements = p22.uint16;
12401        this.maxComponentDepth = p22.uint16;
12402      }
12403      p22.verifyLength();
12404    }
12405  };
12406  var maxp$1 = Object.freeze({ __proto__: null, maxp });
12407  var name = class extends SimpleTable {
12408    constructor(dict, dataview) {
12409      const { p: p22 } = super(dict, dataview);
12410      this.format = p22.uint16;
12411      this.count = p22.uint16;
12412      this.stringOffset = p22.Offset16;
12413      this.nameRecords = [...new Array(this.count)].map(
12414        (_) => new NameRecord(p22, this)
12415      );
12416      if (this.format === 1) {
12417        this.langTagCount = p22.uint16;
12418        this.langTagRecords = [...new Array(this.langTagCount)].map(
12419          (_) => new LangTagRecord(p22.uint16, p22.Offset16)
12420        );
12421      }
12422      this.stringStart = this.tableStart + this.stringOffset;
12423    }
12424    get(nameID) {
12425      let record = this.nameRecords.find(
12426        (record2) => record2.nameID === nameID
12427      );
12428      if (record) return record.string;
12429    }
12430  };
12431  var LangTagRecord = class {
12432    constructor(length, offset) {
12433      this.length = length;
12434      this.offset = offset;
12435    }
12436  };
12437  var NameRecord = class {
12438    constructor(p22, nameTable) {
12439      this.platformID = p22.uint16;
12440      this.encodingID = p22.uint16;
12441      this.languageID = p22.uint16;
12442      this.nameID = p22.uint16;
12443      this.length = p22.uint16;
12444      this.offset = p22.Offset16;
12445      lazy$1(this, `string`, () => {
12446        p22.currentPosition = nameTable.stringStart + this.offset;
12447        return decodeString(p22, this);
12448      });
12449    }
12450  };
12451  function decodeString(p22, record) {
12452    const { platformID, length } = record;
12453    if (length === 0) return ``;
12454    if (platformID === 0 || platformID === 3) {
12455      const str2 = [];
12456      for (let i2 = 0, e2 = length / 2; i2 < e2; i2++)
12457        str2[i2] = String.fromCharCode(p22.uint16);
12458      return str2.join(``);
12459    }
12460    const bytes = p22.readBytes(length);
12461    const str = [];
12462    bytes.forEach(function(b2, i2) {
12463      str[i2] = String.fromCharCode(b2);
12464    });
12465    return str.join(``);
12466  }
12467  var name$1 = Object.freeze({ __proto__: null, name });
12468  var OS2 = class extends SimpleTable {
12469    constructor(dict, dataview) {
12470      const { p: p22 } = super(dict, dataview);
12471      this.version = p22.uint16;
12472      this.xAvgCharWidth = p22.int16;
12473      this.usWeightClass = p22.uint16;
12474      this.usWidthClass = p22.uint16;
12475      this.fsType = p22.uint16;
12476      this.ySubscriptXSize = p22.int16;
12477      this.ySubscriptYSize = p22.int16;
12478      this.ySubscriptXOffset = p22.int16;
12479      this.ySubscriptYOffset = p22.int16;
12480      this.ySuperscriptXSize = p22.int16;
12481      this.ySuperscriptYSize = p22.int16;
12482      this.ySuperscriptXOffset = p22.int16;
12483      this.ySuperscriptYOffset = p22.int16;
12484      this.yStrikeoutSize = p22.int16;
12485      this.yStrikeoutPosition = p22.int16;
12486      this.sFamilyClass = p22.int16;
12487      this.panose = [...new Array(10)].map((_) => p22.uint8);
12488      this.ulUnicodeRange1 = p22.flags(32);
12489      this.ulUnicodeRange2 = p22.flags(32);
12490      this.ulUnicodeRange3 = p22.flags(32);
12491      this.ulUnicodeRange4 = p22.flags(32);
12492      this.achVendID = p22.tag;
12493      this.fsSelection = p22.uint16;
12494      this.usFirstCharIndex = p22.uint16;
12495      this.usLastCharIndex = p22.uint16;
12496      this.sTypoAscender = p22.int16;
12497      this.sTypoDescender = p22.int16;
12498      this.sTypoLineGap = p22.int16;
12499      this.usWinAscent = p22.uint16;
12500      this.usWinDescent = p22.uint16;
12501      if (this.version === 0) return p22.verifyLength();
12502      this.ulCodePageRange1 = p22.flags(32);
12503      this.ulCodePageRange2 = p22.flags(32);
12504      if (this.version === 1) return p22.verifyLength();
12505      this.sxHeight = p22.int16;
12506      this.sCapHeight = p22.int16;
12507      this.usDefaultChar = p22.uint16;
12508      this.usBreakChar = p22.uint16;
12509      this.usMaxContext = p22.uint16;
12510      if (this.version <= 4) return p22.verifyLength();
12511      this.usLowerOpticalPointSize = p22.uint16;
12512      this.usUpperOpticalPointSize = p22.uint16;
12513      if (this.version === 5) return p22.verifyLength();
12514    }
12515  };
12516  var OS2$1 = Object.freeze({ __proto__: null, OS2 });
12517  var post = class extends SimpleTable {
12518    constructor(dict, dataview) {
12519      const { p: p22 } = super(dict, dataview);
12520      this.version = p22.legacyFixed;
12521      this.italicAngle = p22.fixed;
12522      this.underlinePosition = p22.fword;
12523      this.underlineThickness = p22.fword;
12524      this.isFixedPitch = p22.uint32;
12525      this.minMemType42 = p22.uint32;
12526      this.maxMemType42 = p22.uint32;
12527      this.minMemType1 = p22.uint32;
12528      this.maxMemType1 = p22.uint32;
12529      if (this.version === 1 || this.version === 3) return p22.verifyLength();
12530      this.numGlyphs = p22.uint16;
12531      if (this.version === 2) {
12532        this.glyphNameIndex = [...new Array(this.numGlyphs)].map(
12533          (_) => p22.uint16
12534        );
12535        this.namesOffset = p22.currentPosition;
12536        this.glyphNameOffsets = [1];
12537        for (let i2 = 0; i2 < this.numGlyphs; i2++) {
12538          let index = this.glyphNameIndex[i2];
12539          if (index < macStrings.length) {
12540            this.glyphNameOffsets.push(this.glyphNameOffsets[i2]);
12541            continue;
12542          }
12543          let bytelength = p22.int8;
12544          p22.skip(bytelength);
12545          this.glyphNameOffsets.push(
12546            this.glyphNameOffsets[i2] + bytelength + 1
12547          );
12548        }
12549      }
12550      if (this.version === 2.5) {
12551        this.offset = [...new Array(this.numGlyphs)].map(
12552          (_) => p22.int8
12553        );
12554      }
12555    }
12556    getGlyphName(glyphid) {
12557      if (this.version !== 2) {
12558        console.warn(
12559          `post table version $this.version} does not support glyph name lookups`
12560        );
12561        return ``;
12562      }
12563      let index = this.glyphNameIndex[glyphid];
12564      if (index < 258) return macStrings[index];
12565      let offset = this.glyphNameOffsets[glyphid];
12566      let next = this.glyphNameOffsets[glyphid + 1];
12567      let len = next - offset - 1;
12568      if (len === 0) return `.notdef.`;
12569      this.parser.currentPosition = this.namesOffset + offset;
12570      const data = this.parser.readBytes(
12571        len,
12572        this.namesOffset + offset,
12573        8,
12574        true
12575      );
12576      return data.map((b2) => String.fromCharCode(b2)).join(``);
12577    }
12578  };
12579  var macStrings = [
12580    `.notdef`,
12581    `.null`,
12582    `nonmarkingreturn`,
12583    `space`,
12584    `exclam`,
12585    `quotedbl`,
12586    `numbersign`,
12587    `dollar`,
12588    `percent`,
12589    `ampersand`,
12590    `quotesingle`,
12591    `parenleft`,
12592    `parenright`,
12593    `asterisk`,
12594    `plus`,
12595    `comma`,
12596    `hyphen`,
12597    `period`,
12598    `slash`,
12599    `zero`,
12600    `one`,
12601    `two`,
12602    `three`,
12603    `four`,
12604    `five`,
12605    `six`,
12606    `seven`,
12607    `eight`,
12608    `nine`,
12609    `colon`,
12610    `semicolon`,
12611    `less`,
12612    `equal`,
12613    `greater`,
12614    `question`,
12615    `at`,
12616    `A`,
12617    `B`,
12618    `C`,
12619    `D`,
12620    `E`,
12621    `F`,
12622    `G`,
12623    `H`,
12624    `I`,
12625    `J`,
12626    `K`,
12627    `L`,
12628    `M`,
12629    `N`,
12630    `O`,
12631    `P`,
12632    `Q`,
12633    `R`,
12634    `S`,
12635    `T`,
12636    `U`,
12637    `V`,
12638    `W`,
12639    `X`,
12640    `Y`,
12641    `Z`,
12642    `bracketleft`,
12643    `backslash`,
12644    `bracketright`,
12645    `asciicircum`,
12646    `underscore`,
12647    `grave`,
12648    `a`,
12649    `b`,
12650    `c`,
12651    `d`,
12652    `e`,
12653    `f`,
12654    `g`,
12655    `h`,
12656    `i`,
12657    `j`,
12658    `k`,
12659    `l`,
12660    `m`,
12661    `n`,
12662    `o`,
12663    `p`,
12664    `q`,
12665    `r`,
12666    `s`,
12667    `t`,
12668    `u`,
12669    `v`,
12670    `w`,
12671    `x`,
12672    `y`,
12673    `z`,
12674    `braceleft`,
12675    `bar`,
12676    `braceright`,
12677    `asciitilde`,
12678    `Adieresis`,
12679    `Aring`,
12680    `Ccedilla`,
12681    `Eacute`,
12682    `Ntilde`,
12683    `Odieresis`,
12684    `Udieresis`,
12685    `aacute`,
12686    `agrave`,
12687    `acircumflex`,
12688    `adieresis`,
12689    `atilde`,
12690    `aring`,
12691    `ccedilla`,
12692    `eacute`,
12693    `egrave`,
12694    `ecircumflex`,
12695    `edieresis`,
12696    `iacute`,
12697    `igrave`,
12698    `icircumflex`,
12699    `idieresis`,
12700    `ntilde`,
12701    `oacute`,
12702    `ograve`,
12703    `ocircumflex`,
12704    `odieresis`,
12705    `otilde`,
12706    `uacute`,
12707    `ugrave`,
12708    `ucircumflex`,
12709    `udieresis`,
12710    `dagger`,
12711    `degree`,
12712    `cent`,
12713    `sterling`,
12714    `section`,
12715    `bullet`,
12716    `paragraph`,
12717    `germandbls`,
12718    `registered`,
12719    `copyright`,
12720    `trademark`,
12721    `acute`,
12722    `dieresis`,
12723    `notequal`,
12724    `AE`,
12725    `Oslash`,
12726    `infinity`,
12727    `plusminus`,
12728    `lessequal`,
12729    `greaterequal`,
12730    `yen`,
12731    `mu`,
12732    `partialdiff`,
12733    `summation`,
12734    `product`,
12735    `pi`,
12736    `integral`,
12737    `ordfeminine`,
12738    `ordmasculine`,
12739    `Omega`,
12740    `ae`,
12741    `oslash`,
12742    `questiondown`,
12743    `exclamdown`,
12744    `logicalnot`,
12745    `radical`,
12746    `florin`,
12747    `approxequal`,
12748    `Delta`,
12749    `guillemotleft`,
12750    `guillemotright`,
12751    `ellipsis`,
12752    `nonbreakingspace`,
12753    `Agrave`,
12754    `Atilde`,
12755    `Otilde`,
12756    `OE`,
12757    `oe`,
12758    `endash`,
12759    `emdash`,
12760    `quotedblleft`,
12761    `quotedblright`,
12762    `quoteleft`,
12763    `quoteright`,
12764    `divide`,
12765    `lozenge`,
12766    `ydieresis`,
12767    `Ydieresis`,
12768    `fraction`,
12769    `currency`,
12770    `guilsinglleft`,
12771    `guilsinglright`,
12772    `fi`,
12773    `fl`,
12774    `daggerdbl`,
12775    `periodcentered`,
12776    `quotesinglbase`,
12777    `quotedblbase`,
12778    `perthousand`,
12779    `Acircumflex`,
12780    `Ecircumflex`,
12781    `Aacute`,
12782    `Edieresis`,
12783    `Egrave`,
12784    `Iacute`,
12785    `Icircumflex`,
12786    `Idieresis`,
12787    `Igrave`,
12788    `Oacute`,
12789    `Ocircumflex`,
12790    `apple`,
12791    `Ograve`,
12792    `Uacute`,
12793    `Ucircumflex`,
12794    `Ugrave`,
12795    `dotlessi`,
12796    `circumflex`,
12797    `tilde`,
12798    `macron`,
12799    `breve`,
12800    `dotaccent`,
12801    `ring`,
12802    `cedilla`,
12803    `hungarumlaut`,
12804    `ogonek`,
12805    `caron`,
12806    `Lslash`,
12807    `lslash`,
12808    `Scaron`,
12809    `scaron`,
12810    `Zcaron`,
12811    `zcaron`,
12812    `brokenbar`,
12813    `Eth`,
12814    `eth`,
12815    `Yacute`,
12816    `yacute`,
12817    `Thorn`,
12818    `thorn`,
12819    `minus`,
12820    `multiply`,
12821    `onesuperior`,
12822    `twosuperior`,
12823    `threesuperior`,
12824    `onehalf`,
12825    `onequarter`,
12826    `threequarters`,
12827    `franc`,
12828    `Gbreve`,
12829    `gbreve`,
12830    `Idotaccent`,
12831    `Scedilla`,
12832    `scedilla`,
12833    `Cacute`,
12834    `cacute`,
12835    `Ccaron`,
12836    `ccaron`,
12837    `dcroat`
12838  ];
12839  var post$1 = Object.freeze({ __proto__: null, post });
12840  var BASE = class extends SimpleTable {
12841    constructor(dict, dataview) {
12842      const { p: p22 } = super(dict, dataview);
12843      this.majorVersion = p22.uint16;
12844      this.minorVersion = p22.uint16;
12845      this.horizAxisOffset = p22.Offset16;
12846      this.vertAxisOffset = p22.Offset16;
12847      lazy$1(
12848        this,
12849        `horizAxis`,
12850        () => new AxisTable(
12851          { offset: dict.offset + this.horizAxisOffset },
12852          dataview
12853        )
12854      );
12855      lazy$1(
12856        this,
12857        `vertAxis`,
12858        () => new AxisTable(
12859          { offset: dict.offset + this.vertAxisOffset },
12860          dataview
12861        )
12862      );
12863      if (this.majorVersion === 1 && this.minorVersion === 1) {
12864        this.itemVarStoreOffset = p22.Offset32;
12865        lazy$1(
12866          this,
12867          `itemVarStore`,
12868          () => new AxisTable(
12869            { offset: dict.offset + this.itemVarStoreOffset },
12870            dataview
12871          )
12872        );
12873      }
12874    }
12875  };
12876  var AxisTable = class extends SimpleTable {
12877    constructor(dict, dataview) {
12878      const { p: p22 } = super(dict, dataview, `AxisTable`);
12879      this.baseTagListOffset = p22.Offset16;
12880      this.baseScriptListOffset = p22.Offset16;
12881      lazy$1(
12882        this,
12883        `baseTagList`,
12884        () => new BaseTagListTable(
12885          { offset: dict.offset + this.baseTagListOffset },
12886          dataview
12887        )
12888      );
12889      lazy$1(
12890        this,
12891        `baseScriptList`,
12892        () => new BaseScriptListTable(
12893          { offset: dict.offset + this.baseScriptListOffset },
12894          dataview
12895        )
12896      );
12897    }
12898  };
12899  var BaseTagListTable = class extends SimpleTable {
12900    constructor(dict, dataview) {
12901      const { p: p22 } = super(dict, dataview, `BaseTagListTable`);
12902      this.baseTagCount = p22.uint16;
12903      this.baselineTags = [...new Array(this.baseTagCount)].map(
12904        (_) => p22.tag
12905      );
12906    }
12907  };
12908  var BaseScriptListTable = class extends SimpleTable {
12909    constructor(dict, dataview) {
12910      const { p: p22 } = super(dict, dataview, `BaseScriptListTable`);
12911      this.baseScriptCount = p22.uint16;
12912      const recordStart = p22.currentPosition;
12913      lazy$1(this, `baseScriptRecords`, () => {
12914        p22.currentPosition = recordStart;
12915        return [...new Array(this.baseScriptCount)].map(
12916          (_) => new BaseScriptRecord(this.start, p22)
12917        );
12918      });
12919    }
12920  };
12921  var BaseScriptRecord = class {
12922    constructor(baseScriptListTableStart, p22) {
12923      this.baseScriptTag = p22.tag;
12924      this.baseScriptOffset = p22.Offset16;
12925      lazy$1(this, `baseScriptTable`, () => {
12926        p22.currentPosition = baseScriptListTableStart + this.baseScriptOffset;
12927        return new BaseScriptTable(p22);
12928      });
12929    }
12930  };
12931  var BaseScriptTable = class {
12932    constructor(p22) {
12933      this.start = p22.currentPosition;
12934      this.baseValuesOffset = p22.Offset16;
12935      this.defaultMinMaxOffset = p22.Offset16;
12936      this.baseLangSysCount = p22.uint16;
12937      this.baseLangSysRecords = [...new Array(this.baseLangSysCount)].map(
12938        (_) => new BaseLangSysRecord(this.start, p22)
12939      );
12940      lazy$1(this, `baseValues`, () => {
12941        p22.currentPosition = this.start + this.baseValuesOffset;
12942        return new BaseValuesTable(p22);
12943      });
12944      lazy$1(this, `defaultMinMax`, () => {
12945        p22.currentPosition = this.start + this.defaultMinMaxOffset;
12946        return new MinMaxTable(p22);
12947      });
12948    }
12949  };
12950  var BaseLangSysRecord = class {
12951    constructor(baseScriptTableStart, p22) {
12952      this.baseLangSysTag = p22.tag;
12953      this.minMaxOffset = p22.Offset16;
12954      lazy$1(this, `minMax`, () => {
12955        p22.currentPosition = baseScriptTableStart + this.minMaxOffset;
12956        return new MinMaxTable(p22);
12957      });
12958    }
12959  };
12960  var BaseValuesTable = class {
12961    constructor(p22) {
12962      this.parser = p22;
12963      this.start = p22.currentPosition;
12964      this.defaultBaselineIndex = p22.uint16;
12965      this.baseCoordCount = p22.uint16;
12966      this.baseCoords = [...new Array(this.baseCoordCount)].map(
12967        (_) => p22.Offset16
12968      );
12969    }
12970    getTable(id) {
12971      this.parser.currentPosition = this.start + this.baseCoords[id];
12972      return new BaseCoordTable(this.parser);
12973    }
12974  };
12975  var MinMaxTable = class {
12976    constructor(p22) {
12977      this.minCoord = p22.Offset16;
12978      this.maxCoord = p22.Offset16;
12979      this.featMinMaxCount = p22.uint16;
12980      const recordStart = p22.currentPosition;
12981      lazy$1(this, `featMinMaxRecords`, () => {
12982        p22.currentPosition = recordStart;
12983        return [...new Array(this.featMinMaxCount)].map(
12984          (_) => new FeatMinMaxRecord(p22)
12985        );
12986      });
12987    }
12988  };
12989  var FeatMinMaxRecord = class {
12990    constructor(p22) {
12991      this.featureTableTag = p22.tag;
12992      this.minCoord = p22.Offset16;
12993      this.maxCoord = p22.Offset16;
12994    }
12995  };
12996  var BaseCoordTable = class {
12997    constructor(p22) {
12998      this.baseCoordFormat = p22.uint16;
12999      this.coordinate = p22.int16;
13000      if (this.baseCoordFormat === 2) {
13001        this.referenceGlyph = p22.uint16;
13002        this.baseCoordPoint = p22.uint16;
13003      }
13004      if (this.baseCoordFormat === 3) {
13005        this.deviceTable = p22.Offset16;
13006      }
13007    }
13008  };
13009  var BASE$1 = Object.freeze({ __proto__: null, BASE });
13010  var ClassDefinition = class {
13011    constructor(p22) {
13012      this.classFormat = p22.uint16;
13013      if (this.classFormat === 1) {
13014        this.startGlyphID = p22.uint16;
13015        this.glyphCount = p22.uint16;
13016        this.classValueArray = [...new Array(this.glyphCount)].map(
13017          (_) => p22.uint16
13018        );
13019      }
13020      if (this.classFormat === 2) {
13021        this.classRangeCount = p22.uint16;
13022        this.classRangeRecords = [
13023          ...new Array(this.classRangeCount)
13024        ].map((_) => new ClassRangeRecord(p22));
13025      }
13026    }
13027  };
13028  var ClassRangeRecord = class {
13029    constructor(p22) {
13030      this.startGlyphID = p22.uint16;
13031      this.endGlyphID = p22.uint16;
13032      this.class = p22.uint16;
13033    }
13034  };
13035  var CoverageTable = class extends ParsedData {
13036    constructor(p22) {
13037      super(p22);
13038      this.coverageFormat = p22.uint16;
13039      if (this.coverageFormat === 1) {
13040        this.glyphCount = p22.uint16;
13041        this.glyphArray = [...new Array(this.glyphCount)].map(
13042          (_) => p22.uint16
13043        );
13044      }
13045      if (this.coverageFormat === 2) {
13046        this.rangeCount = p22.uint16;
13047        this.rangeRecords = [...new Array(this.rangeCount)].map(
13048          (_) => new CoverageRangeRecord(p22)
13049        );
13050      }
13051    }
13052  };
13053  var CoverageRangeRecord = class {
13054    constructor(p22) {
13055      this.startGlyphID = p22.uint16;
13056      this.endGlyphID = p22.uint16;
13057      this.startCoverageIndex = p22.uint16;
13058    }
13059  };
13060  var ItemVariationStoreTable = class {
13061    constructor(table, p22) {
13062      this.table = table;
13063      this.parser = p22;
13064      this.start = p22.currentPosition;
13065      this.format = p22.uint16;
13066      this.variationRegionListOffset = p22.Offset32;
13067      this.itemVariationDataCount = p22.uint16;
13068      this.itemVariationDataOffsets = [
13069        ...new Array(this.itemVariationDataCount)
13070      ].map((_) => p22.Offset32);
13071    }
13072  };
13073  var GDEF = class extends SimpleTable {
13074    constructor(dict, dataview) {
13075      const { p: p22 } = super(dict, dataview);
13076      this.majorVersion = p22.uint16;
13077      this.minorVersion = p22.uint16;
13078      this.glyphClassDefOffset = p22.Offset16;
13079      lazy$1(this, `glyphClassDefs`, () => {
13080        if (this.glyphClassDefOffset === 0) return void 0;
13081        p22.currentPosition = this.tableStart + this.glyphClassDefOffset;
13082        return new ClassDefinition(p22);
13083      });
13084      this.attachListOffset = p22.Offset16;
13085      lazy$1(this, `attachList`, () => {
13086        if (this.attachListOffset === 0) return void 0;
13087        p22.currentPosition = this.tableStart + this.attachListOffset;
13088        return new AttachList(p22);
13089      });
13090      this.ligCaretListOffset = p22.Offset16;
13091      lazy$1(this, `ligCaretList`, () => {
13092        if (this.ligCaretListOffset === 0) return void 0;
13093        p22.currentPosition = this.tableStart + this.ligCaretListOffset;
13094        return new LigCaretList(p22);
13095      });
13096      this.markAttachClassDefOffset = p22.Offset16;
13097      lazy$1(this, `markAttachClassDef`, () => {
13098        if (this.markAttachClassDefOffset === 0) return void 0;
13099        p22.currentPosition = this.tableStart + this.markAttachClassDefOffset;
13100        return new ClassDefinition(p22);
13101      });
13102      if (this.minorVersion >= 2) {
13103        this.markGlyphSetsDefOffset = p22.Offset16;
13104        lazy$1(this, `markGlyphSetsDef`, () => {
13105          if (this.markGlyphSetsDefOffset === 0) return void 0;
13106          p22.currentPosition = this.tableStart + this.markGlyphSetsDefOffset;
13107          return new MarkGlyphSetsTable(p22);
13108        });
13109      }
13110      if (this.minorVersion === 3) {
13111        this.itemVarStoreOffset = p22.Offset32;
13112        lazy$1(this, `itemVarStore`, () => {
13113          if (this.itemVarStoreOffset === 0) return void 0;
13114          p22.currentPosition = this.tableStart + this.itemVarStoreOffset;
13115          return new ItemVariationStoreTable(p22);
13116        });
13117      }
13118    }
13119  };
13120  var AttachList = class extends ParsedData {
13121    constructor(p22) {
13122      super(p22);
13123      this.coverageOffset = p22.Offset16;
13124      this.glyphCount = p22.uint16;
13125      this.attachPointOffsets = [...new Array(this.glyphCount)].map(
13126        (_) => p22.Offset16
13127      );
13128    }
13129    getPoint(pointID) {
13130      this.parser.currentPosition = this.start + this.attachPointOffsets[pointID];
13131      return new AttachPoint(this.parser);
13132    }
13133  };
13134  var AttachPoint = class {
13135    constructor(p22) {
13136      this.pointCount = p22.uint16;
13137      this.pointIndices = [...new Array(this.pointCount)].map(
13138        (_) => p22.uint16
13139      );
13140    }
13141  };
13142  var LigCaretList = class extends ParsedData {
13143    constructor(p22) {
13144      super(p22);
13145      this.coverageOffset = p22.Offset16;
13146      lazy$1(this, `coverage`, () => {
13147        p22.currentPosition = this.start + this.coverageOffset;
13148        return new CoverageTable(p22);
13149      });
13150      this.ligGlyphCount = p22.uint16;
13151      this.ligGlyphOffsets = [...new Array(this.ligGlyphCount)].map(
13152        (_) => p22.Offset16
13153      );
13154    }
13155    getLigGlyph(ligGlyphID) {
13156      this.parser.currentPosition = this.start + this.ligGlyphOffsets[ligGlyphID];
13157      return new LigGlyph(this.parser);
13158    }
13159  };
13160  var LigGlyph = class extends ParsedData {
13161    constructor(p22) {
13162      super(p22);
13163      this.caretCount = p22.uint16;
13164      this.caretValueOffsets = [...new Array(this.caretCount)].map(
13165        (_) => p22.Offset16
13166      );
13167    }
13168    getCaretValue(caretID) {
13169      this.parser.currentPosition = this.start + this.caretValueOffsets[caretID];
13170      return new CaretValue(this.parser);
13171    }
13172  };
13173  var CaretValue = class {
13174    constructor(p22) {
13175      this.caretValueFormat = p22.uint16;
13176      if (this.caretValueFormat === 1) {
13177        this.coordinate = p22.int16;
13178      }
13179      if (this.caretValueFormat === 2) {
13180        this.caretValuePointIndex = p22.uint16;
13181      }
13182      if (this.caretValueFormat === 3) {
13183        this.coordinate = p22.int16;
13184        this.deviceOffset = p22.Offset16;
13185      }
13186    }
13187  };
13188  var MarkGlyphSetsTable = class extends ParsedData {
13189    constructor(p22) {
13190      super(p22);
13191      this.markGlyphSetTableFormat = p22.uint16;
13192      this.markGlyphSetCount = p22.uint16;
13193      this.coverageOffsets = [...new Array(this.markGlyphSetCount)].map(
13194        (_) => p22.Offset32
13195      );
13196    }
13197    getMarkGlyphSet(markGlyphSetID) {
13198      this.parser.currentPosition = this.start + this.coverageOffsets[markGlyphSetID];
13199      return new CoverageTable(this.parser);
13200    }
13201  };
13202  var GDEF$1 = Object.freeze({ __proto__: null, GDEF });
13203  var ScriptList = class extends ParsedData {
13204    static EMPTY = { scriptCount: 0, scriptRecords: [] };
13205    constructor(p22) {
13206      super(p22);
13207      this.scriptCount = p22.uint16;
13208      this.scriptRecords = [...new Array(this.scriptCount)].map(
13209        (_) => new ScriptRecord(p22)
13210      );
13211    }
13212  };
13213  var ScriptRecord = class {
13214    constructor(p22) {
13215      this.scriptTag = p22.tag;
13216      this.scriptOffset = p22.Offset16;
13217    }
13218  };
13219  var ScriptTable = class extends ParsedData {
13220    constructor(p22) {
13221      super(p22);
13222      this.defaultLangSys = p22.Offset16;
13223      this.langSysCount = p22.uint16;
13224      this.langSysRecords = [...new Array(this.langSysCount)].map(
13225        (_) => new LangSysRecord(p22)
13226      );
13227    }
13228  };
13229  var LangSysRecord = class {
13230    constructor(p22) {
13231      this.langSysTag = p22.tag;
13232      this.langSysOffset = p22.Offset16;
13233    }
13234  };
13235  var LangSysTable = class {
13236    constructor(p22) {
13237      this.lookupOrder = p22.Offset16;
13238      this.requiredFeatureIndex = p22.uint16;
13239      this.featureIndexCount = p22.uint16;
13240      this.featureIndices = [...new Array(this.featureIndexCount)].map(
13241        (_) => p22.uint16
13242      );
13243    }
13244  };
13245  var FeatureList = class extends ParsedData {
13246    static EMPTY = { featureCount: 0, featureRecords: [] };
13247    constructor(p22) {
13248      super(p22);
13249      this.featureCount = p22.uint16;
13250      this.featureRecords = [...new Array(this.featureCount)].map(
13251        (_) => new FeatureRecord(p22)
13252      );
13253    }
13254  };
13255  var FeatureRecord = class {
13256    constructor(p22) {
13257      this.featureTag = p22.tag;
13258      this.featureOffset = p22.Offset16;
13259    }
13260  };
13261  var FeatureTable = class extends ParsedData {
13262    constructor(p22) {
13263      super(p22);
13264      this.featureParams = p22.Offset16;
13265      this.lookupIndexCount = p22.uint16;
13266      this.lookupListIndices = [...new Array(this.lookupIndexCount)].map(
13267        (_) => p22.uint16
13268      );
13269    }
13270    getFeatureParams() {
13271      if (this.featureParams > 0) {
13272        const p22 = this.parser;
13273        p22.currentPosition = this.start + this.featureParams;
13274        const tag = this.featureTag;
13275        if (tag === `size`) return new Size(p22);
13276        if (tag.startsWith(`cc`)) return new CharacterVariant(p22);
13277        if (tag.startsWith(`ss`)) return new StylisticSet(p22);
13278      }
13279    }
13280  };
13281  var CharacterVariant = class {
13282    constructor(p22) {
13283      this.format = p22.uint16;
13284      this.featUiLabelNameId = p22.uint16;
13285      this.featUiTooltipTextNameId = p22.uint16;
13286      this.sampleTextNameId = p22.uint16;
13287      this.numNamedParameters = p22.uint16;
13288      this.firstParamUiLabelNameId = p22.uint16;
13289      this.charCount = p22.uint16;
13290      this.character = [...new Array(this.charCount)].map(
13291        (_) => p22.uint24
13292      );
13293    }
13294  };
13295  var Size = class {
13296    constructor(p22) {
13297      this.designSize = p22.uint16;
13298      this.subfamilyIdentifier = p22.uint16;
13299      this.subfamilyNameID = p22.uint16;
13300      this.smallEnd = p22.uint16;
13301      this.largeEnd = p22.uint16;
13302    }
13303  };
13304  var StylisticSet = class {
13305    constructor(p22) {
13306      this.version = p22.uint16;
13307      this.UINameID = p22.uint16;
13308    }
13309  };
13310  function undoCoverageOffsetParsing(instance) {
13311    instance.parser.currentPosition -= 2;
13312    delete instance.coverageOffset;
13313    delete instance.getCoverageTable;
13314  }
13315  var LookupType$1 = class extends ParsedData {
13316    constructor(p22) {
13317      super(p22);
13318      this.substFormat = p22.uint16;
13319      this.coverageOffset = p22.Offset16;
13320    }
13321    getCoverageTable() {
13322      let p22 = this.parser;
13323      p22.currentPosition = this.start + this.coverageOffset;
13324      return new CoverageTable(p22);
13325    }
13326  };
13327  var SubstLookupRecord = class {
13328    constructor(p22) {
13329      this.glyphSequenceIndex = p22.uint16;
13330      this.lookupListIndex = p22.uint16;
13331    }
13332  };
13333  var LookupType1$1 = class extends LookupType$1 {
13334    constructor(p22) {
13335      super(p22);
13336      this.deltaGlyphID = p22.int16;
13337    }
13338  };
13339  var LookupType2$1 = class extends LookupType$1 {
13340    constructor(p22) {
13341      super(p22);
13342      this.sequenceCount = p22.uint16;
13343      this.sequenceOffsets = [...new Array(this.sequenceCount)].map(
13344        (_) => p22.Offset16
13345      );
13346    }
13347    getSequence(index) {
13348      let p22 = this.parser;
13349      p22.currentPosition = this.start + this.sequenceOffsets[index];
13350      return new SequenceTable(p22);
13351    }
13352  };
13353  var SequenceTable = class {
13354    constructor(p22) {
13355      this.glyphCount = p22.uint16;
13356      this.substituteGlyphIDs = [...new Array(this.glyphCount)].map(
13357        (_) => p22.uint16
13358      );
13359    }
13360  };
13361  var LookupType3$1 = class extends LookupType$1 {
13362    constructor(p22) {
13363      super(p22);
13364      this.alternateSetCount = p22.uint16;
13365      this.alternateSetOffsets = [
13366        ...new Array(this.alternateSetCount)
13367      ].map((_) => p22.Offset16);
13368    }
13369    getAlternateSet(index) {
13370      let p22 = this.parser;
13371      p22.currentPosition = this.start + this.alternateSetOffsets[index];
13372      return new AlternateSetTable(p22);
13373    }
13374  };
13375  var AlternateSetTable = class {
13376    constructor(p22) {
13377      this.glyphCount = p22.uint16;
13378      this.alternateGlyphIDs = [...new Array(this.glyphCount)].map(
13379        (_) => p22.uint16
13380      );
13381    }
13382  };
13383  var LookupType4$1 = class extends LookupType$1 {
13384    constructor(p22) {
13385      super(p22);
13386      this.ligatureSetCount = p22.uint16;
13387      this.ligatureSetOffsets = [...new Array(this.ligatureSetCount)].map(
13388        (_) => p22.Offset16
13389      );
13390    }
13391    getLigatureSet(index) {
13392      let p22 = this.parser;
13393      p22.currentPosition = this.start + this.ligatureSetOffsets[index];
13394      return new LigatureSetTable(p22);
13395    }
13396  };
13397  var LigatureSetTable = class extends ParsedData {
13398    constructor(p22) {
13399      super(p22);
13400      this.ligatureCount = p22.uint16;
13401      this.ligatureOffsets = [...new Array(this.ligatureCount)].map(
13402        (_) => p22.Offset16
13403      );
13404    }
13405    getLigature(index) {
13406      let p22 = this.parser;
13407      p22.currentPosition = this.start + this.ligatureOffsets[index];
13408      return new LigatureTable(p22);
13409    }
13410  };
13411  var LigatureTable = class {
13412    constructor(p22) {
13413      this.ligatureGlyph = p22.uint16;
13414      this.componentCount = p22.uint16;
13415      this.componentGlyphIDs = [
13416        ...new Array(this.componentCount - 1)
13417      ].map((_) => p22.uint16);
13418    }
13419  };
13420  var LookupType5$1 = class extends LookupType$1 {
13421    constructor(p22) {
13422      super(p22);
13423      if (this.substFormat === 1) {
13424        this.subRuleSetCount = p22.uint16;
13425        this.subRuleSetOffsets = [
13426          ...new Array(this.subRuleSetCount)
13427        ].map((_) => p22.Offset16);
13428      }
13429      if (this.substFormat === 2) {
13430        this.classDefOffset = p22.Offset16;
13431        this.subClassSetCount = p22.uint16;
13432        this.subClassSetOffsets = [
13433          ...new Array(this.subClassSetCount)
13434        ].map((_) => p22.Offset16);
13435      }
13436      if (this.substFormat === 3) {
13437        undoCoverageOffsetParsing(this);
13438        this.glyphCount = p22.uint16;
13439        this.substitutionCount = p22.uint16;
13440        this.coverageOffsets = [...new Array(this.glyphCount)].map(
13441          (_) => p22.Offset16
13442        );
13443        this.substLookupRecords = [
13444          ...new Array(this.substitutionCount)
13445        ].map((_) => new SubstLookupRecord(p22));
13446      }
13447    }
13448    getSubRuleSet(index) {
13449      if (this.substFormat !== 1)
13450        throw new Error(
13451          `lookup type 5.$this.substFormat} has no subrule sets.`
13452        );
13453      let p22 = this.parser;
13454      p22.currentPosition = this.start + this.subRuleSetOffsets[index];
13455      return new SubRuleSetTable(p22);
13456    }
13457    getSubClassSet(index) {
13458      if (this.substFormat !== 2)
13459        throw new Error(
13460          `lookup type 5.$this.substFormat} has no subclass sets.`
13461        );
13462      let p22 = this.parser;
13463      p22.currentPosition = this.start + this.subClassSetOffsets[index];
13464      return new SubClassSetTable(p22);
13465    }
13466    getCoverageTable(index) {
13467      if (this.substFormat !== 3 && !index)
13468        return super.getCoverageTable();
13469      if (!index)
13470        throw new Error(
13471          `lookup type 5.$this.substFormat} requires an coverage table index.`
13472        );
13473      let p22 = this.parser;
13474      p22.currentPosition = this.start + this.coverageOffsets[index];
13475      return new CoverageTable(p22);
13476    }
13477  };
13478  var SubRuleSetTable = class extends ParsedData {
13479    constructor(p22) {
13480      super(p22);
13481      this.subRuleCount = p22.uint16;
13482      this.subRuleOffsets = [...new Array(this.subRuleCount)].map(
13483        (_) => p22.Offset16
13484      );
13485    }
13486    getSubRule(index) {
13487      let p22 = this.parser;
13488      p22.currentPosition = this.start + this.subRuleOffsets[index];
13489      return new SubRuleTable(p22);
13490    }
13491  };
13492  var SubRuleTable = class {
13493    constructor(p22) {
13494      this.glyphCount = p22.uint16;
13495      this.substitutionCount = p22.uint16;
13496      this.inputSequence = [...new Array(this.glyphCount - 1)].map(
13497        (_) => p22.uint16
13498      );
13499      this.substLookupRecords = [
13500        ...new Array(this.substitutionCount)
13501      ].map((_) => new SubstLookupRecord(p22));
13502    }
13503  };
13504  var SubClassSetTable = class extends ParsedData {
13505    constructor(p22) {
13506      super(p22);
13507      this.subClassRuleCount = p22.uint16;
13508      this.subClassRuleOffsets = [
13509        ...new Array(this.subClassRuleCount)
13510      ].map((_) => p22.Offset16);
13511    }
13512    getSubClass(index) {
13513      let p22 = this.parser;
13514      p22.currentPosition = this.start + this.subClassRuleOffsets[index];
13515      return new SubClassRuleTable(p22);
13516    }
13517  };
13518  var SubClassRuleTable = class extends SubRuleTable {
13519    constructor(p22) {
13520      super(p22);
13521    }
13522  };
13523  var LookupType6$1 = class extends LookupType$1 {
13524    constructor(p22) {
13525      super(p22);
13526      if (this.substFormat === 1) {
13527        this.chainSubRuleSetCount = p22.uint16;
13528        this.chainSubRuleSetOffsets = [
13529          ...new Array(this.chainSubRuleSetCount)
13530        ].map((_) => p22.Offset16);
13531      }
13532      if (this.substFormat === 2) {
13533        this.backtrackClassDefOffset = p22.Offset16;
13534        this.inputClassDefOffset = p22.Offset16;
13535        this.lookaheadClassDefOffset = p22.Offset16;
13536        this.chainSubClassSetCount = p22.uint16;
13537        this.chainSubClassSetOffsets = [
13538          ...new Array(this.chainSubClassSetCount)
13539        ].map((_) => p22.Offset16);
13540      }
13541      if (this.substFormat === 3) {
13542        undoCoverageOffsetParsing(this);
13543        this.backtrackGlyphCount = p22.uint16;
13544        this.backtrackCoverageOffsets = [
13545          ...new Array(this.backtrackGlyphCount)
13546        ].map((_) => p22.Offset16);
13547        this.inputGlyphCount = p22.uint16;
13548        this.inputCoverageOffsets = [
13549          ...new Array(this.inputGlyphCount)
13550        ].map((_) => p22.Offset16);
13551        this.lookaheadGlyphCount = p22.uint16;
13552        this.lookaheadCoverageOffsets = [
13553          ...new Array(this.lookaheadGlyphCount)
13554        ].map((_) => p22.Offset16);
13555        this.seqLookupCount = p22.uint16;
13556        this.seqLookupRecords = [
13557          ...new Array(this.substitutionCount)
13558        ].map((_) => new SequenceLookupRecord(p22));
13559      }
13560    }
13561    getChainSubRuleSet(index) {
13562      if (this.substFormat !== 1)
13563        throw new Error(
13564          `lookup type 6.$this.substFormat} has no chainsubrule sets.`
13565        );
13566      let p22 = this.parser;
13567      p22.currentPosition = this.start + this.chainSubRuleSetOffsets[index];
13568      return new ChainSubRuleSetTable(p22);
13569    }
13570    getChainSubClassSet(index) {
13571      if (this.substFormat !== 2)
13572        throw new Error(
13573          `lookup type 6.$this.substFormat} has no chainsubclass sets.`
13574        );
13575      let p22 = this.parser;
13576      p22.currentPosition = this.start + this.chainSubClassSetOffsets[index];
13577      return new ChainSubClassSetTable(p22);
13578    }
13579    getCoverageFromOffset(offset) {
13580      if (this.substFormat !== 3)
13581        throw new Error(
13582          `lookup type 6.$this.substFormat} does not use contextual coverage offsets.`
13583        );
13584      let p22 = this.parser;
13585      p22.currentPosition = this.start + offset;
13586      return new CoverageTable(p22);
13587    }
13588  };
13589  var ChainSubRuleSetTable = class extends ParsedData {
13590    constructor(p22) {
13591      super(p22);
13592      this.chainSubRuleCount = p22.uint16;
13593      this.chainSubRuleOffsets = [
13594        ...new Array(this.chainSubRuleCount)
13595      ].map((_) => p22.Offset16);
13596    }
13597    getSubRule(index) {
13598      let p22 = this.parser;
13599      p22.currentPosition = this.start + this.chainSubRuleOffsets[index];
13600      return new ChainSubRuleTable(p22);
13601    }
13602  };
13603  var ChainSubRuleTable = class {
13604    constructor(p22) {
13605      this.backtrackGlyphCount = p22.uint16;
13606      this.backtrackSequence = [
13607        ...new Array(this.backtrackGlyphCount)
13608      ].map((_) => p22.uint16);
13609      this.inputGlyphCount = p22.uint16;
13610      this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map(
13611        (_) => p22.uint16
13612      );
13613      this.lookaheadGlyphCount = p22.uint16;
13614      this.lookAheadSequence = [
13615        ...new Array(this.lookAheadGlyphCount)
13616      ].map((_) => p22.uint16);
13617      this.substitutionCount = p22.uint16;
13618      this.substLookupRecords = [...new Array(this.SubstCount)].map(
13619        (_) => new SubstLookupRecord(p22)
13620      );
13621    }
13622  };
13623  var ChainSubClassSetTable = class extends ParsedData {
13624    constructor(p22) {
13625      super(p22);
13626      this.chainSubClassRuleCount = p22.uint16;
13627      this.chainSubClassRuleOffsets = [
13628        ...new Array(this.chainSubClassRuleCount)
13629      ].map((_) => p22.Offset16);
13630    }
13631    getSubClass(index) {
13632      let p22 = this.parser;
13633      p22.currentPosition = this.start + this.chainSubRuleOffsets[index];
13634      return new ChainSubClassRuleTable(p22);
13635    }
13636  };
13637  var ChainSubClassRuleTable = class {
13638    constructor(p22) {
13639      this.backtrackGlyphCount = p22.uint16;
13640      this.backtrackSequence = [
13641        ...new Array(this.backtrackGlyphCount)
13642      ].map((_) => p22.uint16);
13643      this.inputGlyphCount = p22.uint16;
13644      this.inputSequence = [...new Array(this.inputGlyphCount - 1)].map(
13645        (_) => p22.uint16
13646      );
13647      this.lookaheadGlyphCount = p22.uint16;
13648      this.lookAheadSequence = [
13649        ...new Array(this.lookAheadGlyphCount)
13650      ].map((_) => p22.uint16);
13651      this.substitutionCount = p22.uint16;
13652      this.substLookupRecords = [
13653        ...new Array(this.substitutionCount)
13654      ].map((_) => new SequenceLookupRecord(p22));
13655    }
13656  };
13657  var SequenceLookupRecord = class extends ParsedData {
13658    constructor(p22) {
13659      super(p22);
13660      this.sequenceIndex = p22.uint16;
13661      this.lookupListIndex = p22.uint16;
13662    }
13663  };
13664  var LookupType7$1 = class extends ParsedData {
13665    constructor(p22) {
13666      super(p22);
13667      this.substFormat = p22.uint16;
13668      this.extensionLookupType = p22.uint16;
13669      this.extensionOffset = p22.Offset32;
13670    }
13671  };
13672  var LookupType8$1 = class extends LookupType$1 {
13673    constructor(p22) {
13674      super(p22);
13675      this.backtrackGlyphCount = p22.uint16;
13676      this.backtrackCoverageOffsets = [
13677        ...new Array(this.backtrackGlyphCount)
13678      ].map((_) => p22.Offset16);
13679      this.lookaheadGlyphCount = p22.uint16;
13680      this.lookaheadCoverageOffsets = [
13681        new Array(this.lookaheadGlyphCount)
13682      ].map((_) => p22.Offset16);
13683      this.glyphCount = p22.uint16;
13684      this.substituteGlyphIDs = [...new Array(this.glyphCount)].map(
13685        (_) => p22.uint16
13686      );
13687    }
13688  };
13689  var GSUBtables = {
13690    buildSubtable: function(type, p22) {
13691      const subtable = new [
13692        void 0,
13693        LookupType1$1,
13694        LookupType2$1,
13695        LookupType3$1,
13696        LookupType4$1,
13697        LookupType5$1,
13698        LookupType6$1,
13699        LookupType7$1,
13700        LookupType8$1
13701      ][type](p22);
13702      subtable.type = type;
13703      return subtable;
13704    }
13705  };
13706  var LookupType = class extends ParsedData {
13707    constructor(p22) {
13708      super(p22);
13709    }
13710  };
13711  var LookupType1 = class extends LookupType {
13712    constructor(p22) {
13713      super(p22);
13714      console.log(`lookup type 1`);
13715    }
13716  };
13717  var LookupType2 = class extends LookupType {
13718    constructor(p22) {
13719      super(p22);
13720      console.log(`lookup type 2`);
13721    }
13722  };
13723  var LookupType3 = class extends LookupType {
13724    constructor(p22) {
13725      super(p22);
13726      console.log(`lookup type 3`);
13727    }
13728  };
13729  var LookupType4 = class extends LookupType {
13730    constructor(p22) {
13731      super(p22);
13732      console.log(`lookup type 4`);
13733    }
13734  };
13735  var LookupType5 = class extends LookupType {
13736    constructor(p22) {
13737      super(p22);
13738      console.log(`lookup type 5`);
13739    }
13740  };
13741  var LookupType6 = class extends LookupType {
13742    constructor(p22) {
13743      super(p22);
13744      console.log(`lookup type 6`);
13745    }
13746  };
13747  var LookupType7 = class extends LookupType {
13748    constructor(p22) {
13749      super(p22);
13750      console.log(`lookup type 7`);
13751    }
13752  };
13753  var LookupType8 = class extends LookupType {
13754    constructor(p22) {
13755      super(p22);
13756      console.log(`lookup type 8`);
13757    }
13758  };
13759  var LookupType9 = class extends LookupType {
13760    constructor(p22) {
13761      super(p22);
13762      console.log(`lookup type 9`);
13763    }
13764  };
13765  var GPOStables = {
13766    buildSubtable: function(type, p22) {
13767      const subtable = new [
13768        void 0,
13769        LookupType1,
13770        LookupType2,
13771        LookupType3,
13772        LookupType4,
13773        LookupType5,
13774        LookupType6,
13775        LookupType7,
13776        LookupType8,
13777        LookupType9
13778      ][type](p22);
13779      subtable.type = type;
13780      return subtable;
13781    }
13782  };
13783  var LookupList = class extends ParsedData {
13784    static EMPTY = { lookupCount: 0, lookups: [] };
13785    constructor(p22) {
13786      super(p22);
13787      this.lookupCount = p22.uint16;
13788      this.lookups = [...new Array(this.lookupCount)].map(
13789        (_) => p22.Offset16
13790      );
13791    }
13792  };
13793  var LookupTable = class extends ParsedData {
13794    constructor(p22, type) {
13795      super(p22);
13796      this.ctType = type;
13797      this.lookupType = p22.uint16;
13798      this.lookupFlag = p22.uint16;
13799      this.subTableCount = p22.uint16;
13800      this.subtableOffsets = [...new Array(this.subTableCount)].map(
13801        (_) => p22.Offset16
13802      );
13803      this.markFilteringSet = p22.uint16;
13804    }
13805    get rightToLeft() {
13806      return this.lookupFlag & true;
13807    }
13808    get ignoreBaseGlyphs() {
13809      return this.lookupFlag & true;
13810    }
13811    get ignoreLigatures() {
13812      return this.lookupFlag & true;
13813    }
13814    get ignoreMarks() {
13815      return this.lookupFlag & true;
13816    }
13817    get useMarkFilteringSet() {
13818      return this.lookupFlag & true;
13819    }
13820    get markAttachmentType() {
13821      return this.lookupFlag & true;
13822    }
13823    getSubTable(index) {
13824      const builder = this.ctType === `GSUB` ? GSUBtables : GPOStables;
13825      this.parser.currentPosition = this.start + this.subtableOffsets[index];
13826      return builder.buildSubtable(this.lookupType, this.parser);
13827    }
13828  };
13829  var CommonLayoutTable = class extends SimpleTable {
13830    constructor(dict, dataview, name2) {
13831      const { p: p22, tableStart } = super(dict, dataview, name2);
13832      this.majorVersion = p22.uint16;
13833      this.minorVersion = p22.uint16;
13834      this.scriptListOffset = p22.Offset16;
13835      this.featureListOffset = p22.Offset16;
13836      this.lookupListOffset = p22.Offset16;
13837      if (this.majorVersion === 1 && this.minorVersion === 1) {
13838        this.featureVariationsOffset = p22.Offset32;
13839      }
13840      const no_content = !(this.scriptListOffset || this.featureListOffset || this.lookupListOffset);
13841      lazy$1(this, `scriptList`, () => {
13842        if (no_content) return ScriptList.EMPTY;
13843        p22.currentPosition = tableStart + this.scriptListOffset;
13844        return new ScriptList(p22);
13845      });
13846      lazy$1(this, `featureList`, () => {
13847        if (no_content) return FeatureList.EMPTY;
13848        p22.currentPosition = tableStart + this.featureListOffset;
13849        return new FeatureList(p22);
13850      });
13851      lazy$1(this, `lookupList`, () => {
13852        if (no_content) return LookupList.EMPTY;
13853        p22.currentPosition = tableStart + this.lookupListOffset;
13854        return new LookupList(p22);
13855      });
13856      if (this.featureVariationsOffset) {
13857        lazy$1(this, `featureVariations`, () => {
13858          if (no_content) return FeatureVariations.EMPTY;
13859          p22.currentPosition = tableStart + this.featureVariationsOffset;
13860          return new FeatureVariations(p22);
13861        });
13862      }
13863    }
13864    getSupportedScripts() {
13865      return this.scriptList.scriptRecords.map((r3) => r3.scriptTag);
13866    }
13867    getScriptTable(scriptTag) {
13868      let record = this.scriptList.scriptRecords.find(
13869        (r3) => r3.scriptTag === scriptTag
13870      );
13871      this.parser.currentPosition = this.scriptList.start + record.scriptOffset;
13872      let table = new ScriptTable(this.parser);
13873      table.scriptTag = scriptTag;
13874      return table;
13875    }
13876    ensureScriptTable(arg) {
13877      if (typeof arg === "string") {
13878        return this.getScriptTable(arg);
13879      }
13880      return arg;
13881    }
13882    getSupportedLangSys(scriptTable) {
13883      scriptTable = this.ensureScriptTable(scriptTable);
13884      const hasDefault = scriptTable.defaultLangSys !== 0;
13885      const supported = scriptTable.langSysRecords.map(
13886        (l2) => l2.langSysTag
13887      );
13888      if (hasDefault) supported.unshift(`dflt`);
13889      return supported;
13890    }
13891    getDefaultLangSysTable(scriptTable) {
13892      scriptTable = this.ensureScriptTable(scriptTable);
13893      let offset = scriptTable.defaultLangSys;
13894      if (offset !== 0) {
13895        this.parser.currentPosition = scriptTable.start + offset;
13896        let table = new LangSysTable(this.parser);
13897        table.langSysTag = ``;
13898        table.defaultForScript = scriptTable.scriptTag;
13899        return table;
13900      }
13901    }
13902    getLangSysTable(scriptTable, langSysTag = `dflt`) {
13903      if (langSysTag === `dflt`)
13904        return this.getDefaultLangSysTable(scriptTable);
13905      scriptTable = this.ensureScriptTable(scriptTable);
13906      let record = scriptTable.langSysRecords.find(
13907        (l2) => l2.langSysTag === langSysTag
13908      );
13909      this.parser.currentPosition = scriptTable.start + record.langSysOffset;
13910      let table = new LangSysTable(this.parser);
13911      table.langSysTag = langSysTag;
13912      return table;
13913    }
13914    getFeatures(langSysTable) {
13915      return langSysTable.featureIndices.map(
13916        (index) => this.getFeature(index)
13917      );
13918    }
13919    getFeature(indexOrTag) {
13920      let record;
13921      if (parseInt(indexOrTag) == indexOrTag) {
13922        record = this.featureList.featureRecords[indexOrTag];
13923      } else {
13924        record = this.featureList.featureRecords.find(
13925          (f2) => f2.featureTag === indexOrTag
13926        );
13927      }
13928      if (!record) return;
13929      this.parser.currentPosition = this.featureList.start + record.featureOffset;
13930      let table = new FeatureTable(this.parser);
13931      table.featureTag = record.featureTag;
13932      return table;
13933    }
13934    getLookups(featureTable) {
13935      return featureTable.lookupListIndices.map(
13936        (index) => this.getLookup(index)
13937      );
13938    }
13939    getLookup(lookupIndex, type) {
13940      let lookupOffset = this.lookupList.lookups[lookupIndex];
13941      this.parser.currentPosition = this.lookupList.start + lookupOffset;
13942      return new LookupTable(this.parser, type);
13943    }
13944  };
13945  var GSUB = class extends CommonLayoutTable {
13946    constructor(dict, dataview) {
13947      super(dict, dataview, `GSUB`);
13948    }
13949    getLookup(lookupIndex) {
13950      return super.getLookup(lookupIndex, `GSUB`);
13951    }
13952  };
13953  var GSUB$1 = Object.freeze({ __proto__: null, GSUB });
13954  var GPOS = class extends CommonLayoutTable {
13955    constructor(dict, dataview) {
13956      super(dict, dataview, `GPOS`);
13957    }
13958    getLookup(lookupIndex) {
13959      return super.getLookup(lookupIndex, `GPOS`);
13960    }
13961  };
13962  var GPOS$1 = Object.freeze({ __proto__: null, GPOS });
13963  var SVG6 = class extends SimpleTable {
13964    constructor(dict, dataview) {
13965      const { p: p22 } = super(dict, dataview);
13966      this.version = p22.uint16;
13967      this.offsetToSVGDocumentList = p22.Offset32;
13968      p22.currentPosition = this.tableStart + this.offsetToSVGDocumentList;
13969      this.documentList = new SVGDocumentList(p22);
13970    }
13971  };
13972  var SVGDocumentList = class extends ParsedData {
13973    constructor(p22) {
13974      super(p22);
13975      this.numEntries = p22.uint16;
13976      this.documentRecords = [...new Array(this.numEntries)].map(
13977        (_) => new SVGDocumentRecord(p22)
13978      );
13979    }
13980    getDocument(documentID) {
13981      let record = this.documentRecords[documentID];
13982      if (!record) return "";
13983      let offset = this.start + record.svgDocOffset;
13984      this.parser.currentPosition = offset;
13985      return this.parser.readBytes(record.svgDocLength);
13986    }
13987    getDocumentForGlyph(glyphID) {
13988      let id = this.documentRecords.findIndex(
13989        (d2) => d2.startGlyphID <= glyphID && glyphID <= d2.endGlyphID
13990      );
13991      if (id === -1) return "";
13992      return this.getDocument(id);
13993    }
13994  };
13995  var SVGDocumentRecord = class {
13996    constructor(p22) {
13997      this.startGlyphID = p22.uint16;
13998      this.endGlyphID = p22.uint16;
13999      this.svgDocOffset = p22.Offset32;
14000      this.svgDocLength = p22.uint32;
14001    }
14002  };
14003  var SVG$1 = Object.freeze({ __proto__: null, SVG: SVG6 });
14004  var fvar = class extends SimpleTable {
14005    constructor(dict, dataview) {
14006      const { p: p22 } = super(dict, dataview);
14007      this.majorVersion = p22.uint16;
14008      this.minorVersion = p22.uint16;
14009      this.axesArrayOffset = p22.Offset16;
14010      p22.uint16;
14011      this.axisCount = p22.uint16;
14012      this.axisSize = p22.uint16;
14013      this.instanceCount = p22.uint16;
14014      this.instanceSize = p22.uint16;
14015      const axisStart = this.tableStart + this.axesArrayOffset;
14016      lazy$1(this, `axes`, () => {
14017        p22.currentPosition = axisStart;
14018        return [...new Array(this.axisCount)].map(
14019          (_) => new VariationAxisRecord(p22)
14020        );
14021      });
14022      const instanceStart = axisStart + this.axisCount * this.axisSize;
14023      lazy$1(this, `instances`, () => {
14024        let instances = [];
14025        for (let i2 = 0; i2 < this.instanceCount; i2++) {
14026          p22.currentPosition = instanceStart + i2 * this.instanceSize;
14027          instances.push(
14028            new InstanceRecord(p22, this.axisCount, this.instanceSize)
14029          );
14030        }
14031        return instances;
14032      });
14033    }
14034    getSupportedAxes() {
14035      return this.axes.map((a2) => a2.tag);
14036    }
14037    getAxis(name2) {
14038      return this.axes.find((a2) => a2.tag === name2);
14039    }
14040  };
14041  var VariationAxisRecord = class {
14042    constructor(p22) {
14043      this.tag = p22.tag;
14044      this.minValue = p22.fixed;
14045      this.defaultValue = p22.fixed;
14046      this.maxValue = p22.fixed;
14047      this.flags = p22.flags(16);
14048      this.axisNameID = p22.uint16;
14049    }
14050  };
14051  var InstanceRecord = class {
14052    constructor(p22, axisCount, size) {
14053      let start = p22.currentPosition;
14054      this.subfamilyNameID = p22.uint16;
14055      p22.uint16;
14056      this.coordinates = [...new Array(axisCount)].map(
14057        (_) => p22.fixed
14058      );
14059      if (p22.currentPosition - start < size) {
14060        this.postScriptNameID = p22.uint16;
14061      }
14062    }
14063  };
14064  var fvar$1 = Object.freeze({ __proto__: null, fvar });
14065  var cvt = class extends SimpleTable {
14066    constructor(dict, dataview) {
14067      const { p: p22 } = super(dict, dataview);
14068      const n2 = dict.length / 2;
14069      lazy$1(
14070        this,
14071        `items`,
14072        () => [...new Array(n2)].map((_) => p22.fword)
14073      );
14074    }
14075  };
14076  var cvt$1 = Object.freeze({ __proto__: null, cvt });
14077  var fpgm = class extends SimpleTable {
14078    constructor(dict, dataview) {
14079      const { p: p22 } = super(dict, dataview);
14080      lazy$1(
14081        this,
14082        `instructions`,
14083        () => [...new Array(dict.length)].map((_) => p22.uint8)
14084      );
14085    }
14086  };
14087  var fpgm$1 = Object.freeze({ __proto__: null, fpgm });
14088  var gasp = class extends SimpleTable {
14089    constructor(dict, dataview) {
14090      const { p: p22 } = super(dict, dataview);
14091      this.version = p22.uint16;
14092      this.numRanges = p22.uint16;
14093      const getter = () => [...new Array(this.numRanges)].map(
14094        (_) => new GASPRange(p22)
14095      );
14096      lazy$1(this, `gaspRanges`, getter);
14097    }
14098  };
14099  var GASPRange = class {
14100    constructor(p22) {
14101      this.rangeMaxPPEM = p22.uint16;
14102      this.rangeGaspBehavior = p22.uint16;
14103    }
14104  };
14105  var gasp$1 = Object.freeze({ __proto__: null, gasp });
14106  var glyf = class extends SimpleTable {
14107    constructor(dict, dataview) {
14108      super(dict, dataview);
14109    }
14110    getGlyphData(offset, length) {
14111      this.parser.currentPosition = this.tableStart + offset;
14112      return this.parser.readBytes(length);
14113    }
14114  };
14115  var glyf$1 = Object.freeze({ __proto__: null, glyf });
14116  var loca = class extends SimpleTable {
14117    constructor(dict, dataview, tables) {
14118      const { p: p22 } = super(dict, dataview);
14119      const n2 = tables.maxp.numGlyphs + 1;
14120      if (tables.head.indexToLocFormat === 0) {
14121        this.x2 = true;
14122        lazy$1(
14123          this,
14124          `offsets`,
14125          () => [...new Array(n2)].map((_) => p22.Offset16)
14126        );
14127      } else {
14128        lazy$1(
14129          this,
14130          `offsets`,
14131          () => [...new Array(n2)].map((_) => p22.Offset32)
14132        );
14133      }
14134    }
14135    getGlyphDataOffsetAndLength(glyphID) {
14136      let offset = this.offsets[glyphID] * this.x2 ? 2 : 1;
14137      let nextOffset = this.offsets[glyphID + 1] * this.x2 ? 2 : 1;
14138      return { offset, length: nextOffset - offset };
14139    }
14140  };
14141  var loca$1 = Object.freeze({ __proto__: null, loca });
14142  var prep = class extends SimpleTable {
14143    constructor(dict, dataview) {
14144      const { p: p22 } = super(dict, dataview);
14145      lazy$1(
14146        this,
14147        `instructions`,
14148        () => [...new Array(dict.length)].map((_) => p22.uint8)
14149      );
14150    }
14151  };
14152  var prep$1 = Object.freeze({ __proto__: null, prep });
14153  var CFF = class extends SimpleTable {
14154    constructor(dict, dataview) {
14155      const { p: p22 } = super(dict, dataview);
14156      lazy$1(this, `data`, () => p22.readBytes());
14157    }
14158  };
14159  var CFF$1 = Object.freeze({ __proto__: null, CFF });
14160  var CFF2 = class extends SimpleTable {
14161    constructor(dict, dataview) {
14162      const { p: p22 } = super(dict, dataview);
14163      lazy$1(this, `data`, () => p22.readBytes());
14164    }
14165  };
14166  var CFF2$1 = Object.freeze({ __proto__: null, CFF2 });
14167  var VORG = class extends SimpleTable {
14168    constructor(dict, dataview) {
14169      const { p: p22 } = super(dict, dataview);
14170      this.majorVersion = p22.uint16;
14171      this.minorVersion = p22.uint16;
14172      this.defaultVertOriginY = p22.int16;
14173      this.numVertOriginYMetrics = p22.uint16;
14174      lazy$1(
14175        this,
14176        `vertORiginYMetrics`,
14177        () => [...new Array(this.numVertOriginYMetrics)].map(
14178          (_) => new VertOriginYMetric(p22)
14179        )
14180      );
14181    }
14182  };
14183  var VertOriginYMetric = class {
14184    constructor(p22) {
14185      this.glyphIndex = p22.uint16;
14186      this.vertOriginY = p22.int16;
14187    }
14188  };
14189  var VORG$1 = Object.freeze({ __proto__: null, VORG });
14190  var BitmapSize = class {
14191    constructor(p22) {
14192      this.indexSubTableArrayOffset = p22.Offset32;
14193      this.indexTablesSize = p22.uint32;
14194      this.numberofIndexSubTables = p22.uint32;
14195      this.colorRef = p22.uint32;
14196      this.hori = new SbitLineMetrics(p22);
14197      this.vert = new SbitLineMetrics(p22);
14198      this.startGlyphIndex = p22.uint16;
14199      this.endGlyphIndex = p22.uint16;
14200      this.ppemX = p22.uint8;
14201      this.ppemY = p22.uint8;
14202      this.bitDepth = p22.uint8;
14203      this.flags = p22.int8;
14204    }
14205  };
14206  var BitmapScale = class {
14207    constructor(p22) {
14208      this.hori = new SbitLineMetrics(p22);
14209      this.vert = new SbitLineMetrics(p22);
14210      this.ppemX = p22.uint8;
14211      this.ppemY = p22.uint8;
14212      this.substitutePpemX = p22.uint8;
14213      this.substitutePpemY = p22.uint8;
14214    }
14215  };
14216  var SbitLineMetrics = class {
14217    constructor(p22) {
14218      this.ascender = p22.int8;
14219      this.descender = p22.int8;
14220      this.widthMax = p22.uint8;
14221      this.caretSlopeNumerator = p22.int8;
14222      this.caretSlopeDenominator = p22.int8;
14223      this.caretOffset = p22.int8;
14224      this.minOriginSB = p22.int8;
14225      this.minAdvanceSB = p22.int8;
14226      this.maxBeforeBL = p22.int8;
14227      this.minAfterBL = p22.int8;
14228      this.pad1 = p22.int8;
14229      this.pad2 = p22.int8;
14230    }
14231  };
14232  var EBLC = class extends SimpleTable {
14233    constructor(dict, dataview, name2) {
14234      const { p: p22 } = super(dict, dataview, name2);
14235      this.majorVersion = p22.uint16;
14236      this.minorVersion = p22.uint16;
14237      this.numSizes = p22.uint32;
14238      lazy$1(
14239        this,
14240        `bitMapSizes`,
14241        () => [...new Array(this.numSizes)].map(
14242          (_) => new BitmapSize(p22)
14243        )
14244      );
14245    }
14246  };
14247  var EBLC$1 = Object.freeze({ __proto__: null, EBLC });
14248  var EBDT = class extends SimpleTable {
14249    constructor(dict, dataview, name2) {
14250      const { p: p22 } = super(dict, dataview, name2);
14251      this.majorVersion = p22.uint16;
14252      this.minorVersion = p22.uint16;
14253    }
14254  };
14255  var EBDT$1 = Object.freeze({ __proto__: null, EBDT });
14256  var EBSC = class extends SimpleTable {
14257    constructor(dict, dataview) {
14258      const { p: p22 } = super(dict, dataview);
14259      this.majorVersion = p22.uint16;
14260      this.minorVersion = p22.uint16;
14261      this.numSizes = p22.uint32;
14262      lazy$1(
14263        this,
14264        `bitmapScales`,
14265        () => [...new Array(this.numSizes)].map(
14266          (_) => new BitmapScale(p22)
14267        )
14268      );
14269    }
14270  };
14271  var EBSC$1 = Object.freeze({ __proto__: null, EBSC });
14272  var CBLC = class extends EBLC {
14273    constructor(dict, dataview) {
14274      super(dict, dataview, `CBLC`);
14275    }
14276  };
14277  var CBLC$1 = Object.freeze({ __proto__: null, CBLC });
14278  var CBDT = class extends EBDT {
14279    constructor(dict, dataview) {
14280      super(dict, dataview, `CBDT`);
14281    }
14282  };
14283  var CBDT$1 = Object.freeze({ __proto__: null, CBDT });
14284  var sbix = class extends SimpleTable {
14285    constructor(dict, dataview) {
14286      const { p: p22 } = super(dict, dataview);
14287      this.version = p22.uint16;
14288      this.flags = p22.flags(16);
14289      this.numStrikes = p22.uint32;
14290      lazy$1(
14291        this,
14292        `strikeOffsets`,
14293        () => [...new Array(this.numStrikes)].map((_) => p22.Offset32)
14294      );
14295    }
14296  };
14297  var sbix$1 = Object.freeze({ __proto__: null, sbix });
14298  var COLR = class extends SimpleTable {
14299    constructor(dict, dataview) {
14300      const { p: p22 } = super(dict, dataview);
14301      this.version = p22.uint16;
14302      this.numBaseGlyphRecords = p22.uint16;
14303      this.baseGlyphRecordsOffset = p22.Offset32;
14304      this.layerRecordsOffset = p22.Offset32;
14305      this.numLayerRecords = p22.uint16;
14306    }
14307    getBaseGlyphRecord(glyphID) {
14308      let start = this.tableStart + this.baseGlyphRecordsOffset;
14309      this.parser.currentPosition = start;
14310      let first = new BaseGlyphRecord(this.parser);
14311      let firstID = first.gID;
14312      let end = this.tableStart + this.layerRecordsOffset - 6;
14313      this.parser.currentPosition = end;
14314      let last = new BaseGlyphRecord(this.parser);
14315      let lastID = last.gID;
14316      if (firstID === glyphID) return first;
14317      if (lastID === glyphID) return last;
14318      while (true) {
14319        if (start === end) break;
14320        let mid = start + (end - start) / 12;
14321        this.parser.currentPosition = mid;
14322        let middle = new BaseGlyphRecord(this.parser);
14323        let midID = middle.gID;
14324        if (midID === glyphID) return middle;
14325        else if (midID > glyphID) {
14326          end = mid;
14327        } else if (midID < glyphID) {
14328          start = mid;
14329        }
14330      }
14331      return false;
14332    }
14333    getLayers(glyphID) {
14334      let record = this.getBaseGlyphRecord(glyphID);
14335      this.parser.currentPosition = this.tableStart + this.layerRecordsOffset + 4 * record.firstLayerIndex;
14336      return [...new Array(record.numLayers)].map(
14337        (_) => new LayerRecord(p)
14338      );
14339    }
14340  };
14341  var BaseGlyphRecord = class {
14342    constructor(p22) {
14343      this.gID = p22.uint16;
14344      this.firstLayerIndex = p22.uint16;
14345      this.numLayers = p22.uint16;
14346    }
14347  };
14348  var LayerRecord = class {
14349    constructor(p22) {
14350      this.gID = p22.uint16;
14351      this.paletteIndex = p22.uint16;
14352    }
14353  };
14354  var COLR$1 = Object.freeze({ __proto__: null, COLR });
14355  var CPAL = class extends SimpleTable {
14356    constructor(dict, dataview) {
14357      const { p: p22 } = super(dict, dataview);
14358      this.version = p22.uint16;
14359      this.numPaletteEntries = p22.uint16;
14360      const numPalettes = this.numPalettes = p22.uint16;
14361      this.numColorRecords = p22.uint16;
14362      this.offsetFirstColorRecord = p22.Offset32;
14363      this.colorRecordIndices = [...new Array(this.numPalettes)].map(
14364        (_) => p22.uint16
14365      );
14366      lazy$1(this, `colorRecords`, () => {
14367        p22.currentPosition = this.tableStart + this.offsetFirstColorRecord;
14368        return [...new Array(this.numColorRecords)].map(
14369          (_) => new ColorRecord(p22)
14370        );
14371      });
14372      if (this.version === 1) {
14373        this.offsetPaletteTypeArray = p22.Offset32;
14374        this.offsetPaletteLabelArray = p22.Offset32;
14375        this.offsetPaletteEntryLabelArray = p22.Offset32;
14376        lazy$1(this, `paletteTypeArray`, () => {
14377          p22.currentPosition = this.tableStart + this.offsetPaletteTypeArray;
14378          return new PaletteTypeArray(p22, numPalettes);
14379        });
14380        lazy$1(this, `paletteLabelArray`, () => {
14381          p22.currentPosition = this.tableStart + this.offsetPaletteLabelArray;
14382          return new PaletteLabelsArray(p22, numPalettes);
14383        });
14384        lazy$1(this, `paletteEntryLabelArray`, () => {
14385          p22.currentPosition = this.tableStart + this.offsetPaletteEntryLabelArray;
14386          return new PaletteEntryLabelArray(p22, numPalettes);
14387        });
14388      }
14389    }
14390  };
14391  var ColorRecord = class {
14392    constructor(p22) {
14393      this.blue = p22.uint8;
14394      this.green = p22.uint8;
14395      this.red = p22.uint8;
14396      this.alpha = p22.uint8;
14397    }
14398  };
14399  var PaletteTypeArray = class {
14400    constructor(p22, numPalettes) {
14401      this.paletteTypes = [...new Array(numPalettes)].map(
14402        (_) => p22.uint32
14403      );
14404    }
14405  };
14406  var PaletteLabelsArray = class {
14407    constructor(p22, numPalettes) {
14408      this.paletteLabels = [...new Array(numPalettes)].map(
14409        (_) => p22.uint16
14410      );
14411    }
14412  };
14413  var PaletteEntryLabelArray = class {
14414    constructor(p22, numPalettes) {
14415      this.paletteEntryLabels = [...new Array(numPalettes)].map(
14416        (_) => p22.uint16
14417      );
14418    }
14419  };
14420  var CPAL$1 = Object.freeze({ __proto__: null, CPAL });
14421  var DSIG = class extends SimpleTable {
14422    constructor(dict, dataview) {
14423      const { p: p22 } = super(dict, dataview);
14424      this.version = p22.uint32;
14425      this.numSignatures = p22.uint16;
14426      this.flags = p22.uint16;
14427      this.signatureRecords = [...new Array(this.numSignatures)].map(
14428        (_) => new SignatureRecord(p22)
14429      );
14430    }
14431    getData(signatureID) {
14432      const record = this.signatureRecords[signatureID];
14433      this.parser.currentPosition = this.tableStart + record.offset;
14434      return new SignatureBlockFormat1(this.parser);
14435    }
14436  };
14437  var SignatureRecord = class {
14438    constructor(p22) {
14439      this.format = p22.uint32;
14440      this.length = p22.uint32;
14441      this.offset = p22.Offset32;
14442    }
14443  };
14444  var SignatureBlockFormat1 = class {
14445    constructor(p22) {
14446      p22.uint16;
14447      p22.uint16;
14448      this.signatureLength = p22.uint32;
14449      this.signature = p22.readBytes(this.signatureLength);
14450    }
14451  };
14452  var DSIG$1 = Object.freeze({ __proto__: null, DSIG });
14453  var hdmx = class extends SimpleTable {
14454    constructor(dict, dataview, tables) {
14455      const { p: p22 } = super(dict, dataview);
14456      const numGlyphs = tables.hmtx.numGlyphs;
14457      this.version = p22.uint16;
14458      this.numRecords = p22.int16;
14459      this.sizeDeviceRecord = p22.int32;
14460      this.records = [...new Array(numRecords)].map(
14461        (_) => new DeviceRecord(p22, numGlyphs)
14462      );
14463    }
14464  };
14465  var DeviceRecord = class {
14466    constructor(p22, numGlyphs) {
14467      this.pixelSize = p22.uint8;
14468      this.maxWidth = p22.uint8;
14469      this.widths = p22.readBytes(numGlyphs);
14470    }
14471  };
14472  var hdmx$1 = Object.freeze({ __proto__: null, hdmx });
14473  var kern = class extends SimpleTable {
14474    constructor(dict, dataview) {
14475      const { p: p22 } = super(dict, dataview);
14476      this.version = p22.uint16;
14477      this.nTables = p22.uint16;
14478      lazy$1(this, `tables`, () => {
14479        let offset = this.tableStart + 4;
14480        const tables = [];
14481        for (let i2 = 0; i2 < this.nTables; i2++) {
14482          p22.currentPosition = offset;
14483          let subtable = new KernSubTable(p22);
14484          tables.push(subtable);
14485          offset += subtable;
14486        }
14487        return tables;
14488      });
14489    }
14490  };
14491  var KernSubTable = class {
14492    constructor(p22) {
14493      this.version = p22.uint16;
14494      this.length = p22.uint16;
14495      this.coverage = p22.flags(8);
14496      this.format = p22.uint8;
14497      if (this.format === 0) {
14498        this.nPairs = p22.uint16;
14499        this.searchRange = p22.uint16;
14500        this.entrySelector = p22.uint16;
14501        this.rangeShift = p22.uint16;
14502        lazy$1(
14503          this,
14504          `pairs`,
14505          () => [...new Array(this.nPairs)].map((_) => new Pair(p22))
14506        );
14507      }
14508      if (this.format === 2) {
14509        console.warn(
14510          `Kern subtable format 2 is not supported: this parser currently only parses universal table data.`
14511        );
14512      }
14513    }
14514    get horizontal() {
14515      return this.coverage[0];
14516    }
14517    get minimum() {
14518      return this.coverage[1];
14519    }
14520    get crossstream() {
14521      return this.coverage[2];
14522    }
14523    get override() {
14524      return this.coverage[3];
14525    }
14526  };
14527  var Pair = class {
14528    constructor(p22) {
14529      this.left = p22.uint16;
14530      this.right = p22.uint16;
14531      this.value = p22.fword;
14532    }
14533  };
14534  var kern$1 = Object.freeze({ __proto__: null, kern });
14535  var LTSH = class extends SimpleTable {
14536    constructor(dict, dataview) {
14537      const { p: p22 } = super(dict, dataview);
14538      this.version = p22.uint16;
14539      this.numGlyphs = p22.uint16;
14540      this.yPels = p22.readBytes(this.numGlyphs);
14541    }
14542  };
14543  var LTSH$1 = Object.freeze({ __proto__: null, LTSH });
14544  var MERG = class extends SimpleTable {
14545    constructor(dict, dataview) {
14546      const { p: p22 } = super(dict, dataview);
14547      this.version = p22.uint16;
14548      this.mergeClassCount = p22.uint16;
14549      this.mergeDataOffset = p22.Offset16;
14550      this.classDefCount = p22.uint16;
14551      this.offsetToClassDefOffsets = p22.Offset16;
14552      lazy$1(
14553        this,
14554        `mergeEntryMatrix`,
14555        () => [...new Array(this.mergeClassCount)].map(
14556          (_) => p22.readBytes(this.mergeClassCount)
14557        )
14558      );
14559      console.warn(`Full MERG parsing is currently not supported.`);
14560      console.warn(
14561        `If you need this table parsed, please file an issue, or better yet, a PR.`
14562      );
14563    }
14564  };
14565  var MERG$1 = Object.freeze({ __proto__: null, MERG });
14566  var meta = class extends SimpleTable {
14567    constructor(dict, dataview) {
14568      const { p: p22 } = super(dict, dataview);
14569      this.version = p22.uint32;
14570      this.flags = p22.uint32;
14571      p22.uint32;
14572      this.dataMapsCount = p22.uint32;
14573      this.dataMaps = [...new Array(this.dataMapsCount)].map(
14574        (_) => new DataMap(this.tableStart, p22)
14575      );
14576    }
14577  };
14578  var DataMap = class {
14579    constructor(tableStart, p22) {
14580      this.tableStart = tableStart;
14581      this.parser = p22;
14582      this.tag = p22.tag;
14583      this.dataOffset = p22.Offset32;
14584      this.dataLength = p22.uint32;
14585    }
14586    getData() {
14587      this.parser.currentField = this.tableStart + this.dataOffset;
14588      return this.parser.readBytes(this.dataLength);
14589    }
14590  };
14591  var meta$1 = Object.freeze({ __proto__: null, meta });
14592  var PCLT = class extends SimpleTable {
14593    constructor(dict, dataview) {
14594      super(dict, dataview);
14595      console.warn(
14596        `This font uses a PCLT table, which is currently not supported by this parser.`
14597      );
14598      console.warn(
14599        `If you need this table parsed, please file an issue, or better yet, a PR.`
14600      );
14601    }
14602  };
14603  var PCLT$1 = Object.freeze({ __proto__: null, PCLT });
14604  var VDMX = class extends SimpleTable {
14605    constructor(dict, dataview) {
14606      const { p: p22 } = super(dict, dataview);
14607      this.version = p22.uint16;
14608      this.numRecs = p22.uint16;
14609      this.numRatios = p22.uint16;
14610      this.ratRanges = [...new Array(this.numRatios)].map(
14611        (_) => new RatioRange(p22)
14612      );
14613      this.offsets = [...new Array(this.numRatios)].map(
14614        (_) => p22.Offset16
14615      );
14616      this.VDMXGroups = [...new Array(this.numRecs)].map(
14617        (_) => new VDMXGroup(p22)
14618      );
14619    }
14620  };
14621  var RatioRange = class {
14622    constructor(p22) {
14623      this.bCharSet = p22.uint8;
14624      this.xRatio = p22.uint8;
14625      this.yStartRatio = p22.uint8;
14626      this.yEndRatio = p22.uint8;
14627    }
14628  };
14629  var VDMXGroup = class {
14630    constructor(p22) {
14631      this.recs = p22.uint16;
14632      this.startsz = p22.uint8;
14633      this.endsz = p22.uint8;
14634      this.records = [...new Array(this.recs)].map(
14635        (_) => new vTable(p22)
14636      );
14637    }
14638  };
14639  var vTable = class {
14640    constructor(p22) {
14641      this.yPelHeight = p22.uint16;
14642      this.yMax = p22.int16;
14643      this.yMin = p22.int16;
14644    }
14645  };
14646  var VDMX$1 = Object.freeze({ __proto__: null, VDMX });
14647  var vhea = class extends SimpleTable {
14648    constructor(dict, dataview) {
14649      const { p: p22 } = super(dict, dataview);
14650      this.version = p22.fixed;
14651      this.ascent = this.vertTypoAscender = p22.int16;
14652      this.descent = this.vertTypoDescender = p22.int16;
14653      this.lineGap = this.vertTypoLineGap = p22.int16;
14654      this.advanceHeightMax = p22.int16;
14655      this.minTopSideBearing = p22.int16;
14656      this.minBottomSideBearing = p22.int16;
14657      this.yMaxExtent = p22.int16;
14658      this.caretSlopeRise = p22.int16;
14659      this.caretSlopeRun = p22.int16;
14660      this.caretOffset = p22.int16;
14661      this.reserved = p22.int16;
14662      this.reserved = p22.int16;
14663      this.reserved = p22.int16;
14664      this.reserved = p22.int16;
14665      this.metricDataFormat = p22.int16;
14666      this.numOfLongVerMetrics = p22.uint16;
14667      p22.verifyLength();
14668    }
14669  };
14670  var vhea$1 = Object.freeze({ __proto__: null, vhea });
14671  var vmtx = class extends SimpleTable {
14672    constructor(dict, dataview, tables) {
14673      super(dict, dataview);
14674      const numOfLongVerMetrics = tables.vhea.numOfLongVerMetrics;
14675      const numGlyphs = tables.maxp.numGlyphs;
14676      const metricsStart = p.currentPosition;
14677      lazy(this, `vMetrics`, () => {
14678        p.currentPosition = metricsStart;
14679        return [...new Array(numOfLongVerMetrics)].map(
14680          (_) => new LongVertMetric(p.uint16, p.int16)
14681        );
14682      });
14683      if (numOfLongVerMetrics < numGlyphs) {
14684        const tsbStart = metricsStart + numOfLongVerMetrics * 4;
14685        lazy(this, `topSideBearings`, () => {
14686          p.currentPosition = tsbStart;
14687          return [...new Array(numGlyphs - numOfLongVerMetrics)].map(
14688            (_) => p.int16
14689          );
14690        });
14691      }
14692    }
14693  };
14694  var LongVertMetric = class {
14695    constructor(h2, b2) {
14696      this.advanceHeight = h2;
14697      this.topSideBearing = b2;
14698    }
14699  };
14700  var vmtx$1 = Object.freeze({ __proto__: null, vmtx });
14701  
14702  // packages/global-styles-ui/build-module/font-library/utils/make-families-from-faces.mjs
14703  var import_components28 = __toESM(require_components(), 1);
14704  var { kebabCase: kebabCase2 } = unlock(import_components28.privateApis);
14705  function makeFamiliesFromFaces(fontFaces) {
14706    const fontFamiliesObject = fontFaces.reduce(
14707      (acc, item) => {
14708        if (!acc[item.fontFamily]) {
14709          acc[item.fontFamily] = {
14710            name: item.fontFamily,
14711            fontFamily: item.fontFamily,
14712            slug: kebabCase2(item.fontFamily.toLowerCase()),
14713            fontFace: []
14714          };
14715        }
14716        acc[item.fontFamily].fontFace.push(item);
14717        return acc;
14718      },
14719      {}
14720    );
14721    return Object.values(fontFamiliesObject);
14722  }
14723  
14724  // packages/global-styles-ui/build-module/font-library/upload-fonts.mjs
14725  var import_jsx_runtime37 = __toESM(require_jsx_runtime(), 1);
14726  function UploadFonts() {
14727    const { installFonts } = (0, import_element19.useContext)(FontLibraryContext);
14728    const [isUploading, setIsUploading] = (0, import_element19.useState)(false);
14729    const [notice, setNotice] = (0, import_element19.useState)(null);
14730    const handleDropZone = (files) => {
14731      handleFilesUpload(files);
14732    };
14733    const onFilesUpload = (event) => {
14734      handleFilesUpload(event.target.files);
14735    };
14736    const handleFilesUpload = async (files) => {
14737      if (!files) {
14738        return;
14739      }
14740      setNotice(null);
14741      setIsUploading(true);
14742      const uniqueFilenames = /* @__PURE__ */ new Set();
14743      const selectedFiles = [...files];
14744      let hasInvalidFiles = false;
14745      const checkFilesPromises = selectedFiles.map(async (file) => {
14746        const isFont = await isFontFile(file);
14747        if (!isFont) {
14748          hasInvalidFiles = true;
14749          return null;
14750        }
14751        if (uniqueFilenames.has(file.name)) {
14752          return null;
14753        }
14754        const fileExtension = (((file.name ?? "").split(".") ?? []).pop() ?? "").toLowerCase();
14755        if (ALLOWED_FILE_EXTENSIONS.includes(fileExtension)) {
14756          uniqueFilenames.add(file.name);
14757          return file;
14758        }
14759        return null;
14760      });
14761      const allowedFiles = (await Promise.all(checkFilesPromises)).filter((file) => null !== file);
14762      if (allowedFiles.length > 0) {
14763        loadFiles(allowedFiles);
14764      } else {
14765        const message = hasInvalidFiles ? (0, import_i18n16.__)("Sorry, you are not allowed to upload this file type.") : (0, import_i18n16.__)("No fonts found to install.");
14766        setNotice({
14767          type: "error",
14768          message
14769        });
14770        setIsUploading(false);
14771      }
14772    };
14773    const loadFiles = async (files) => {
14774      const fontFacesLoaded = await Promise.all(
14775        files.map(async (fontFile) => {
14776          const fontFaceData = await getFontFaceMetadata(fontFile);
14777          await loadFontFaceInBrowser(
14778            fontFaceData,
14779            fontFaceData.file,
14780            "all"
14781          );
14782          return fontFaceData;
14783        })
14784      );
14785      handleInstall(fontFacesLoaded);
14786    };
14787    async function isFontFile(file) {
14788      const font2 = new Font("Uploaded Font");
14789      try {
14790        const buffer = await readFileAsArrayBuffer(file);
14791        await font2.fromDataBuffer(buffer, "font");
14792        return true;
14793      } catch (error) {
14794        return false;
14795      }
14796    }
14797    async function readFileAsArrayBuffer(file) {
14798      return new Promise((resolve, reject) => {
14799        const reader = new window.FileReader();
14800        reader.readAsArrayBuffer(file);
14801        reader.onload = () => resolve(reader.result);
14802        reader.onerror = reject;
14803      });
14804    }
14805    const getFontFaceMetadata = async (fontFile) => {
14806      const buffer = await readFileAsArrayBuffer(fontFile);
14807      const fontObj = new Font("Uploaded Font");
14808      fontObj.fromDataBuffer(buffer, fontFile.name);
14809      const onloadEvent = await new Promise(
14810        (resolve) => fontObj.onload = resolve
14811      );
14812      const font2 = onloadEvent.detail.font;
14813      const { name: name2 } = font2.opentype.tables;
14814      const fontName = name2.get(16) || name2.get(1);
14815      const isItalic = name2.get(2).toLowerCase().includes("italic");
14816      const fontWeight = font2.opentype.tables["OS/2"].usWeightClass || "normal";
14817      const isVariable = !!font2.opentype.tables.fvar;
14818      const weightAxis = isVariable && font2.opentype.tables.fvar.axes.find(
14819        ({ tag }) => tag === "wght"
14820      );
14821      const weightRange = weightAxis ? `$weightAxis.minValue} $weightAxis.maxValue}` : null;
14822      return {
14823        file: fontFile,
14824        fontFamily: fontName,
14825        fontStyle: isItalic ? "italic" : "normal",
14826        fontWeight: weightRange || fontWeight
14827      };
14828    };
14829    const handleInstall = async (fontFaces) => {
14830      const fontFamilies = makeFamiliesFromFaces(fontFaces);
14831      try {
14832        await installFonts(fontFamilies);
14833        setNotice({
14834          type: "success",
14835          message: (0, import_i18n16.__)("Fonts were installed successfully.")
14836        });
14837      } catch (error) {
14838        const typedError = error;
14839        setNotice({
14840          type: "error",
14841          message: typedError.message,
14842          errors: typedError?.installationErrors
14843        });
14844      }
14845      setIsUploading(false);
14846    };
14847    return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { className: "font-library__tabpanel-layout", children: [
14848      /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.DropZone, { onFilesDrop: handleDropZone }),
14849      /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_components29.__experimentalVStack, { className: "font-library__local-fonts", justify: "start", children: [
14850        notice && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
14851          import_components29.Notice,
14852          {
14853            status: notice.type,
14854            __unstableHTML: true,
14855            onRemove: () => setNotice(null),
14856            children: [
14857              notice.message,
14858              notice.errors && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("ul", { children: notice.errors.map((error, index) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("li", { children: error }, index)) })
14859            ]
14860          }
14861        ),
14862        isUploading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.FlexItem, { children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "font-library__upload-area", children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.ProgressBar, {}) }) }),
14863        !isUploading && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
14864          import_components29.FormFileUpload,
14865          {
14866            accept: ALLOWED_FILE_EXTENSIONS.map(
14867              (ext) => `.$ext}`
14868            ).join(","),
14869            multiple: true,
14870            onChange: onFilesUpload,
14871            render: ({ openFileDialog }) => /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
14872              import_components29.Button,
14873              {
14874                __next40pxDefaultSize: true,
14875                className: "font-library__upload-area",
14876                onClick: openFileDialog,
14877                children: (0, import_i18n16.__)("Upload font")
14878              }
14879            )
14880          }
14881        ),
14882        /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_components29.__experimentalText, { className: "font-library__upload-area__text", children: (0, import_i18n16.__)(
14883          "Uploaded fonts appear in your library and can be used in your theme. Supported formats: .ttf, .otf, .woff, and .woff2."
14884        ) })
14885      ] })
14886    ] });
14887  }
14888  var upload_fonts_default = UploadFonts;
14889  
14890  // packages/global-styles-ui/build-module/font-library/modal.mjs
14891  var import_jsx_runtime38 = __toESM(require_jsx_runtime(), 1);
14892  var { Tabs } = unlock(import_components30.privateApis);
14893  var DEFAULT_TAB = {
14894    id: "installed-fonts",
14895    title: (0, import_i18n17._x)("Library", "Font library")
14896  };
14897  var UPLOAD_TAB = {
14898    id: "upload-fonts",
14899    title: (0, import_i18n17._x)("Upload", "noun")
14900  };
14901  
14902  // packages/global-styles-ui/build-module/font-family-item.mjs
14903  var import_i18n18 = __toESM(require_i18n(), 1);
14904  var import_components31 = __toESM(require_components(), 1);
14905  var import_element20 = __toESM(require_element(), 1);
14906  var import_jsx_runtime39 = __toESM(require_jsx_runtime(), 1);
14907  
14908  // packages/global-styles-ui/build-module/font-families.mjs
14909  var import_jsx_runtime40 = __toESM(require_jsx_runtime(), 1);
14910  
14911  // packages/global-styles-ui/build-module/font-sizes/font-sizes-count.mjs
14912  var import_i18n20 = __toESM(require_i18n(), 1);
14913  var import_components33 = __toESM(require_components(), 1);
14914  var import_jsx_runtime41 = __toESM(require_jsx_runtime(), 1);
14915  
14916  // packages/global-styles-ui/build-module/screen-typography.mjs
14917  var import_jsx_runtime42 = __toESM(require_jsx_runtime(), 1);
14918  
14919  // packages/global-styles-ui/build-module/screen-typography-element.mjs
14920  var import_i18n22 = __toESM(require_i18n(), 1);
14921  var import_components35 = __toESM(require_components(), 1);
14922  var import_element23 = __toESM(require_element(), 1);
14923  
14924  // packages/global-styles-ui/build-module/typography-panel.mjs
14925  var import_block_editor5 = __toESM(require_block_editor(), 1);
14926  var import_jsx_runtime43 = __toESM(require_jsx_runtime(), 1);
14927  var { useSettingsForBlockElement: useSettingsForBlockElement4, TypographyPanel: StylesTypographyPanel2 } = unlock(import_block_editor5.privateApis);
14928  
14929  // packages/global-styles-ui/build-module/typography-preview.mjs
14930  var import_jsx_runtime44 = __toESM(require_jsx_runtime(), 1);
14931  
14932  // packages/global-styles-ui/build-module/screen-typography-element.mjs
14933  var import_jsx_runtime45 = __toESM(require_jsx_runtime(), 1);
14934  var elements = {
14935    text: {
14936      description: (0, import_i18n22.__)("Manage the fonts used on the site."),
14937      title: (0, import_i18n22.__)("Text")
14938    },
14939    link: {
14940      description: (0, import_i18n22.__)("Manage the fonts and typography used on the links."),
14941      title: (0, import_i18n22.__)("Links")
14942    },
14943    heading: {
14944      description: (0, import_i18n22.__)("Manage the fonts and typography used on headings."),
14945      title: (0, import_i18n22.__)("Headings")
14946    },
14947    caption: {
14948      description: (0, import_i18n22.__)("Manage the fonts and typography used on captions."),
14949      title: (0, import_i18n22.__)("Captions")
14950    },
14951    button: {
14952      description: (0, import_i18n22.__)("Manage the fonts and typography used on buttons."),
14953      title: (0, import_i18n22.__)("Buttons")
14954    }
14955  };
14956  
14957  // packages/global-styles-ui/build-module/screen-colors.mjs
14958  var import_i18n24 = __toESM(require_i18n(), 1);
14959  var import_components38 = __toESM(require_components(), 1);
14960  var import_block_editor6 = __toESM(require_block_editor(), 1);
14961  
14962  // packages/global-styles-ui/build-module/palette.mjs
14963  var import_components37 = __toESM(require_components(), 1);
14964  var import_i18n23 = __toESM(require_i18n(), 1);
14965  var import_element24 = __toESM(require_element(), 1);
14966  
14967  // packages/global-styles-ui/build-module/color-indicator-wrapper.mjs
14968  var import_components36 = __toESM(require_components(), 1);
14969  var import_jsx_runtime46 = __toESM(require_jsx_runtime(), 1);
14970  
14971  // packages/global-styles-ui/build-module/palette.mjs
14972  var import_jsx_runtime47 = __toESM(require_jsx_runtime(), 1);
14973  
14974  // packages/global-styles-ui/build-module/screen-colors.mjs
14975  var import_jsx_runtime48 = __toESM(require_jsx_runtime(), 1);
14976  var { useSettingsForBlockElement: useSettingsForBlockElement5, ColorPanel: StylesColorPanel2 } = unlock(
14977    import_block_editor6.privateApis
14978  );
14979  
14980  // packages/global-styles-ui/build-module/screen-color-palette.mjs
14981  var import_i18n27 = __toESM(require_i18n(), 1);
14982  var import_components43 = __toESM(require_components(), 1);
14983  
14984  // packages/global-styles-ui/build-module/color-palette-panel.mjs
14985  var import_compose4 = __toESM(require_compose(), 1);
14986  var import_components41 = __toESM(require_components(), 1);
14987  var import_i18n25 = __toESM(require_i18n(), 1);
14988  
14989  // packages/global-styles-ui/build-module/variations/variations-color.mjs
14990  var import_components40 = __toESM(require_components(), 1);
14991  
14992  // packages/global-styles-ui/build-module/preview-colors.mjs
14993  var import_components39 = __toESM(require_components(), 1);
14994  
14995  // packages/global-styles-ui/build-module/preset-colors.mjs
14996  var import_jsx_runtime49 = __toESM(require_jsx_runtime(), 1);
14997  function PresetColors() {
14998    const { paletteColors } = useStylesPreviewColors();
14999    return paletteColors.slice(0, 4).map(({ slug, color }, index) => /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
15000      "div",
15001      {
15002        style: {
15003          flexGrow: 1,
15004          height: "100%",
15005          background: color
15006        }
15007      },
15008      `$slug}-$index}`
15009    ));
15010  }
15011  
15012  // packages/global-styles-ui/build-module/preview-colors.mjs
15013  var import_jsx_runtime50 = __toESM(require_jsx_runtime(), 1);
15014  var firstFrameVariants2 = {
15015    start: {
15016      scale: 1,
15017      opacity: 1
15018    },
15019    hover: {
15020      scale: 0,
15021      opacity: 0
15022    }
15023  };
15024  var StylesPreviewColors = ({
15025    label,
15026    isFocused,
15027    withHoverView
15028  }) => {
15029    return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
15030      preview_wrapper_default,
15031      {
15032        label,
15033        isFocused,
15034        withHoverView,
15035        children: ({ key }) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
15036          import_components39.__unstableMotion.div,
15037          {
15038            variants: firstFrameVariants2,
15039            style: {
15040              height: "100%",
15041              overflow: "hidden"
15042            },
15043            children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
15044              import_components39.__experimentalHStack,
15045              {
15046                spacing: 0,
15047                justify: "center",
15048                style: {
15049                  height: "100%",
15050                  overflow: "hidden"
15051                },
15052                children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PresetColors, {})
15053              }
15054            )
15055          },
15056          key
15057        )
15058      }
15059    );
15060  };
15061  var preview_colors_default = StylesPreviewColors;
15062  
15063  // packages/global-styles-ui/build-module/variations/variations-color.mjs
15064  var import_jsx_runtime51 = __toESM(require_jsx_runtime(), 1);
15065  var propertiesToFilter2 = ["color"];
15066  function ColorVariations({
15067    title,
15068    gap = 2
15069  }) {
15070    const colorVariations = useCurrentMergeThemeStyleVariationsWithUserConfig(propertiesToFilter2);
15071    if (colorVariations?.length <= 1) {
15072      return null;
15073    }
15074    return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_components40.__experimentalVStack, { spacing: 3, children: [
15075      title && /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Subtitle, { level: 3, children: title }),
15076      /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_components40.__experimentalGrid, { gap, children: colorVariations.map((variation, index) => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
15077        Variation,
15078        {
15079          variation,
15080          isPill: true,
15081          properties: propertiesToFilter2,
15082          showTooltip: true,
15083          children: () => /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(preview_colors_default, {})
15084        },
15085        index
15086      )) })
15087    ] });
15088  }
15089  
15090  // packages/global-styles-ui/build-module/color-palette-panel.mjs
15091  var import_jsx_runtime52 = __toESM(require_jsx_runtime(), 1);
15092  
15093  // packages/global-styles-ui/build-module/gradients-palette-panel.mjs
15094  var import_compose5 = __toESM(require_compose(), 1);
15095  var import_components42 = __toESM(require_components(), 1);
15096  var import_i18n26 = __toESM(require_i18n(), 1);
15097  var import_jsx_runtime53 = __toESM(require_jsx_runtime(), 1);
15098  
15099  // packages/global-styles-ui/build-module/screen-color-palette.mjs
15100  var import_jsx_runtime54 = __toESM(require_jsx_runtime(), 1);
15101  var { Tabs: Tabs2 } = unlock(import_components43.privateApis);
15102  
15103  // packages/global-styles-ui/build-module/screen-background.mjs
15104  var import_i18n28 = __toESM(require_i18n(), 1);
15105  var import_block_editor8 = __toESM(require_block_editor(), 1);
15106  var import_components44 = __toESM(require_components(), 1);
15107  
15108  // packages/global-styles-ui/build-module/background-panel.mjs
15109  var import_block_editor7 = __toESM(require_block_editor(), 1);
15110  var import_jsx_runtime55 = __toESM(require_jsx_runtime(), 1);
15111  var { BackgroundPanel: StylesBackgroundPanel2 } = unlock(
15112    import_block_editor7.privateApis
15113  );
15114  
15115  // packages/global-styles-ui/build-module/screen-background.mjs
15116  var import_jsx_runtime56 = __toESM(require_jsx_runtime(), 1);
15117  var { useHasBackgroundPanel: useHasBackgroundPanel3 } = unlock(import_block_editor8.privateApis);
15118  
15119  // packages/global-styles-ui/build-module/shadows-panel.mjs
15120  var import_components46 = __toESM(require_components(), 1);
15121  var import_i18n30 = __toESM(require_i18n(), 1);
15122  var import_element25 = __toESM(require_element(), 1);
15123  
15124  // packages/global-styles-ui/build-module/confirm-reset-shadow-dialog.mjs
15125  var import_components45 = __toESM(require_components(), 1);
15126  var import_i18n29 = __toESM(require_i18n(), 1);
15127  var import_jsx_runtime57 = __toESM(require_jsx_runtime(), 1);
15128  
15129  // packages/global-styles-ui/build-module/shadows-panel.mjs
15130  var import_jsx_runtime58 = __toESM(require_jsx_runtime(), 1);
15131  var { Menu } = unlock(import_components46.privateApis);
15132  
15133  // packages/global-styles-ui/build-module/shadows-edit-panel.mjs
15134  var import_components47 = __toESM(require_components(), 1);
15135  var import_i18n31 = __toESM(require_i18n(), 1);
15136  var import_element26 = __toESM(require_element(), 1);
15137  var import_jsx_runtime59 = __toESM(require_jsx_runtime(), 1);
15138  var { Menu: Menu2 } = unlock(import_components47.privateApis);
15139  var customShadowMenuItems = [
15140    {
15141      label: (0, import_i18n31.__)("Rename"),
15142      action: "rename"
15143    },
15144    {
15145      label: (0, import_i18n31.__)("Delete"),
15146      action: "delete"
15147    }
15148  ];
15149  var presetShadowMenuItems = [
15150    {
15151      label: (0, import_i18n31.__)("Reset"),
15152      action: "reset"
15153    }
15154  ];
15155  
15156  // packages/global-styles-ui/build-module/screen-shadows.mjs
15157  var import_jsx_runtime60 = __toESM(require_jsx_runtime(), 1);
15158  
15159  // packages/global-styles-ui/build-module/screen-layout.mjs
15160  var import_i18n32 = __toESM(require_i18n(), 1);
15161  var import_block_editor10 = __toESM(require_block_editor(), 1);
15162  
15163  // packages/global-styles-ui/build-module/dimensions-panel.mjs
15164  var import_block_editor9 = __toESM(require_block_editor(), 1);
15165  var import_element27 = __toESM(require_element(), 1);
15166  var import_jsx_runtime61 = __toESM(require_jsx_runtime(), 1);
15167  var { useSettingsForBlockElement: useSettingsForBlockElement6, DimensionsPanel: StylesDimensionsPanel2 } = unlock(import_block_editor9.privateApis);
15168  
15169  // packages/global-styles-ui/build-module/screen-layout.mjs
15170  var import_jsx_runtime62 = __toESM(require_jsx_runtime(), 1);
15171  var { useHasDimensionsPanel: useHasDimensionsPanel4, useSettingsForBlockElement: useSettingsForBlockElement7 } = unlock(
15172    import_block_editor10.privateApis
15173  );
15174  
15175  // packages/global-styles-ui/build-module/screen-style-variations.mjs
15176  var import_components50 = __toESM(require_components(), 1);
15177  var import_i18n35 = __toESM(require_i18n(), 1);
15178  
15179  // packages/global-styles-ui/build-module/style-variations-content.mjs
15180  var import_i18n34 = __toESM(require_i18n(), 1);
15181  var import_components49 = __toESM(require_components(), 1);
15182  
15183  // packages/global-styles-ui/build-module/style-variations-container.mjs
15184  var import_core_data9 = __toESM(require_core_data(), 1);
15185  var import_data9 = __toESM(require_data(), 1);
15186  var import_element28 = __toESM(require_element(), 1);
15187  var import_components48 = __toESM(require_components(), 1);
15188  var import_i18n33 = __toESM(require_i18n(), 1);
15189  var import_jsx_runtime63 = __toESM(require_jsx_runtime(), 1);
15190  function StyleVariationsContainer({
15191    gap = 2
15192  }) {
15193    const { user } = (0, import_element28.useContext)(GlobalStylesContext);
15194    const userStyles = user?.styles;
15195    const variations = (0, import_data9.useSelect)((select) => {
15196      const result = select(
15197        import_core_data9.store
15198      ).__experimentalGetCurrentThemeGlobalStylesVariations();
15199      return Array.isArray(result) ? result : void 0;
15200    }, []);
15201    const fullStyleVariations = variations?.filter(
15202      (variation) => {
15203        return !isVariationWithProperties(variation, ["color"]) && !isVariationWithProperties(variation, [
15204          "typography",
15205          "spacing"
15206        ]);
15207      }
15208    );
15209    const themeVariations = (0, import_element28.useMemo)(() => {
15210      const withEmptyVariation = [
15211        {
15212          title: (0, import_i18n33.__)("Default"),
15213          settings: {},
15214          styles: {}
15215        },
15216        ...fullStyleVariations ?? []
15217      ];
15218      return [
15219        ...withEmptyVariation.map((variation) => {
15220          const blockStyles = variation?.styles?.blocks ? { ...variation.styles.blocks } : {};
15221          if (userStyles?.blocks) {
15222            Object.keys(userStyles.blocks).forEach((blockName) => {
15223              if (userStyles.blocks?.[blockName]?.css) {
15224                const variationBlockStyles = blockStyles[blockName] || {};
15225                const customCSS = {
15226                  css: `$blockStyles[blockName]?.css || ""} $userStyles.blocks?.[blockName]?.css?.trim() || ""}`
15227                };
15228                blockStyles[blockName] = {
15229                  ...variationBlockStyles,
15230                  ...customCSS
15231                };
15232              }
15233            });
15234          }
15235          const css = userStyles?.css || variation.styles?.css ? {
15236            css: `$variation.styles?.css || ""} $userStyles?.css || ""}`
15237          } : {};
15238          const blocks = Object.keys(blockStyles).length > 0 ? { blocks: blockStyles } : {};
15239          const styles = {
15240            ...variation.styles,
15241            ...css,
15242            ...blocks
15243          };
15244          return {
15245            ...variation,
15246            settings: variation.settings ?? {},
15247            styles
15248          };
15249        })
15250      ];
15251    }, [fullStyleVariations, userStyles?.blocks, userStyles?.css]);
15252    if (!fullStyleVariations || fullStyleVariations.length < 1) {
15253      return null;
15254    }
15255    return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
15256      import_components48.__experimentalGrid,
15257      {
15258        columns: 2,
15259        className: "global-styles-ui-style-variations-container",
15260        gap,
15261        children: themeVariations.map(
15262          (variation, index) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Variation, { variation, children: (isFocused) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
15263            preview_styles_default,
15264            {
15265              label: variation?.title,
15266              withHoverView: true,
15267              isFocused,
15268              variation
15269            }
15270          ) }, index)
15271        )
15272      }
15273    );
15274  }
15275  var style_variations_container_default = StyleVariationsContainer;
15276  
15277  // packages/global-styles-ui/build-module/style-variations-content.mjs
15278  var import_jsx_runtime64 = __toESM(require_jsx_runtime(), 1);
15279  
15280  // packages/global-styles-ui/build-module/screen-style-variations.mjs
15281  var import_jsx_runtime65 = __toESM(require_jsx_runtime(), 1);
15282  
15283  // packages/global-styles-ui/build-module/screen-css.mjs
15284  var import_i18n36 = __toESM(require_i18n(), 1);
15285  var import_components51 = __toESM(require_components(), 1);
15286  var import_block_editor11 = __toESM(require_block_editor(), 1);
15287  var import_jsx_runtime66 = __toESM(require_jsx_runtime(), 1);
15288  var { AdvancedPanel: StylesAdvancedPanel2 } = unlock(import_block_editor11.privateApis);
15289  
15290  // packages/global-styles-ui/build-module/screen-revisions/index.mjs
15291  var import_i18n39 = __toESM(require_i18n(), 1);
15292  var import_components54 = __toESM(require_components(), 1);
15293  var import_element30 = __toESM(require_element(), 1);
15294  
15295  // packages/global-styles-ui/build-module/screen-revisions/use-global-styles-revisions.mjs
15296  var import_data10 = __toESM(require_data(), 1);
15297  var import_core_data10 = __toESM(require_core_data(), 1);
15298  var import_element29 = __toESM(require_element(), 1);
15299  
15300  // packages/global-styles-ui/build-module/screen-revisions/revisions-buttons.mjs
15301  var import_i18n37 = __toESM(require_i18n(), 1);
15302  var import_components52 = __toESM(require_components(), 1);
15303  var import_date = __toESM(require_date(), 1);
15304  var import_core_data11 = __toESM(require_core_data(), 1);
15305  var import_data11 = __toESM(require_data(), 1);
15306  var import_keycodes2 = __toESM(require_keycodes(), 1);
15307  var import_jsx_runtime67 = __toESM(require_jsx_runtime(), 1);
15308  var DAY_IN_MILLISECONDS = 60 * 60 * 1e3 * 24;
15309  
15310  // packages/global-styles-ui/build-module/pagination/index.mjs
15311  var import_components53 = __toESM(require_components(), 1);
15312  var import_i18n38 = __toESM(require_i18n(), 1);
15313  var import_jsx_runtime68 = __toESM(require_jsx_runtime(), 1);
15314  
15315  // packages/global-styles-ui/build-module/screen-revisions/index.mjs
15316  var import_jsx_runtime69 = __toESM(require_jsx_runtime(), 1);
15317  
15318  // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs
15319  var import_i18n41 = __toESM(require_i18n(), 1);
15320  var import_components56 = __toESM(require_components(), 1);
15321  var import_element31 = __toESM(require_element(), 1);
15322  
15323  // packages/global-styles-ui/build-module/font-sizes/confirm-reset-font-sizes-dialog.mjs
15324  var import_components55 = __toESM(require_components(), 1);
15325  var import_i18n40 = __toESM(require_i18n(), 1);
15326  var import_jsx_runtime70 = __toESM(require_jsx_runtime(), 1);
15327  
15328  // packages/global-styles-ui/build-module/font-sizes/font-sizes.mjs
15329  var import_jsx_runtime71 = __toESM(require_jsx_runtime(), 1);
15330  var { Menu: Menu3 } = unlock(import_components56.privateApis);
15331  
15332  // packages/global-styles-ui/build-module/font-sizes/font-size.mjs
15333  var import_i18n45 = __toESM(require_i18n(), 1);
15334  var import_components60 = __toESM(require_components(), 1);
15335  var import_element33 = __toESM(require_element(), 1);
15336  
15337  // packages/global-styles-ui/build-module/font-sizes/font-size-preview.mjs
15338  var import_block_editor12 = __toESM(require_block_editor(), 1);
15339  var import_i18n42 = __toESM(require_i18n(), 1);
15340  var import_jsx_runtime72 = __toESM(require_jsx_runtime(), 1);
15341  
15342  // packages/global-styles-ui/build-module/font-sizes/confirm-delete-font-size-dialog.mjs
15343  var import_components57 = __toESM(require_components(), 1);
15344  var import_i18n43 = __toESM(require_i18n(), 1);
15345  var import_jsx_runtime73 = __toESM(require_jsx_runtime(), 1);
15346  
15347  // packages/global-styles-ui/build-module/font-sizes/rename-font-size-dialog.mjs
15348  var import_components58 = __toESM(require_components(), 1);
15349  var import_i18n44 = __toESM(require_i18n(), 1);
15350  var import_element32 = __toESM(require_element(), 1);
15351  var import_jsx_runtime74 = __toESM(require_jsx_runtime(), 1);
15352  
15353  // packages/global-styles-ui/build-module/size-control/index.mjs
15354  var import_components59 = __toESM(require_components(), 1);
15355  var import_jsx_runtime75 = __toESM(require_jsx_runtime(), 1);
15356  
15357  // packages/global-styles-ui/build-module/font-sizes/font-size.mjs
15358  var import_jsx_runtime76 = __toESM(require_jsx_runtime(), 1);
15359  var { Menu: Menu4 } = unlock(import_components60.privateApis);
15360  
15361  // packages/global-styles-ui/build-module/global-styles-ui.mjs
15362  var import_jsx_runtime77 = __toESM(require_jsx_runtime(), 1);
15363  
15364  // packages/global-styles-ui/build-module/with-global-styles-provider.mjs
15365  var import_jsx_runtime78 = __toESM(require_jsx_runtime(), 1);
15366  function withGlobalStylesProvider(Component) {
15367    return function WrappedComponent({
15368      value,
15369      baseValue,
15370      onChange,
15371      ...props
15372    }) {
15373      return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
15374        GlobalStylesProvider,
15375        {
15376          value,
15377          baseValue,
15378          onChange,
15379          children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Component, { ...props })
15380        }
15381      );
15382    };
15383  }
15384  
15385  // packages/global-styles-ui/build-module/style-variations.mjs
15386  var StyleVariations = withGlobalStylesProvider(style_variations_container_default);
15387  
15388  // packages/global-styles-ui/build-module/color-variations.mjs
15389  var ColorVariations2 = withGlobalStylesProvider(ColorVariations);
15390  
15391  // packages/global-styles-ui/build-module/typography-variations.mjs
15392  var TypographyVariations2 = withGlobalStylesProvider(TypographyVariations);
15393  
15394  // packages/global-styles-ui/build-module/font-library/font-library.mjs
15395  var import_jsx_runtime79 = __toESM(require_jsx_runtime(), 1);
15396  function FontLibrary({
15397    value,
15398    baseValue,
15399    onChange,
15400    activeTab = "installed-fonts"
15401  }) {
15402    let content;
15403    switch (activeTab) {
15404      case "upload-fonts":
15405        content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(upload_fonts_default, {});
15406        break;
15407      case "installed-fonts":
15408        content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(installed_fonts_default, {});
15409        break;
15410      default:
15411        content = /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(font_collection_default, { slug: activeTab });
15412    }
15413    return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
15414      GlobalStylesProvider,
15415      {
15416        value,
15417        baseValue,
15418        onChange,
15419        children: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(context_default, { children: content })
15420      }
15421    );
15422  }
15423  
15424  // routes/font-list/lock-unlock.ts
15425  var import_private_apis2 = __toESM(require_private_apis());
15426  var { unlock: unlock2 } = (0, import_private_apis2.__dangerousOptInToUnstableAPIsOnlyForCoreModules)(
15427    "I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.",
15428    "@wordpress/font-list-route"
15429  );
15430  
15431  // routes/font-list/style.scss
15432  if (typeof document !== "undefined" && !document.head.querySelector("style[data-wp-hash='4bbd4c3e39']")) {
15433    const style = document.createElement("style");
15434    style.setAttribute("data-wp-hash", "4bbd4c3e39");
15435    style.appendChild(document.createTextNode('@media (min-width:782px){.font-library-modal.font-library-modal{width:65vw}}.font-library-modal .components-modal__header{border-bottom:none}.font-library-modal .components-modal__content{margin-bottom:90px;padding:0}.font-library-modal .font-library__subtitle{font-size:11px;font-weight:499;text-transform:uppercase}.font-library-modal__tab-panel{height:calc(100% - 50px)}.font-library__tabpanel-layout{display:flex;flex-direction:column;height:100%}.font-library__tabpanel-layout>div{flex-grow:1}.font-library__tabpanel-layout .font-library__loading{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;left:0;padding-top:124px;position:absolute;top:0;width:100%}.font-library__footer,.font-library__tabpanel-layout .components-navigator-screen{padding:24px;width:100%}.font-library__footer{background-color:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;flex-grow:0!important;flex-shrink:0;height:90px;position:absolute}.font-library__page-selection{font-size:11px;font-weight:499;text-transform:uppercase}@media (min-width:600px){.font-library__page-selection .font-library__page-selection-trigger{font-size:11px!important;font-weight:499}}.font-library__fonts-title{font-size:11px;font-weight:600;margin-bottom:0;margin-top:0;text-transform:uppercase}.font-library__fonts-list{list-style:none;margin-bottom:0;margin-top:0;padding:0}.font-library__fonts-list-item{margin-bottom:0}.font-library__font-card{border:1px solid #ddd;box-sizing:border-box;height:auto!important;margin-top:-1px;padding:16px;width:100%}.font-library__font-card:hover{background-color:#f0f0f0}.font-library__font-card:focus{position:relative}.font-library__font-card .font-library__font-card__name{font-weight:700}.font-library__font-card .font-library__font-card__count{color:#757575}.font-library__font-card .font-library__font-variant_demo-image{display:block;height:24px;width:auto}.font-library__font-card .font-library__font-variant_demo-text{flex-shrink:0;white-space:nowrap}@media not (prefers-reduced-motion){.font-library__font-card .font-library__font-variant_demo-text{transition:opacity .3s ease-in-out}}.font-library-modal__tablist-container{background:#fff;border-bottom:1px solid #ddd;position:sticky;top:0;z-index:1}.font-library__upload-area{align-items:center;display:flex;height:256px!important;justify-content:center;width:100%}button.font-library__upload-area{background-color:#f0f0f0}.font-library__local-fonts{margin:24px auto;width:80%}.font-library__local-fonts .font-library__upload-area__text{color:#757575}.font-library__google-fonts-confirm{align-items:center;display:flex;justify-content:center;margin-top:64px}.font-library__google-fonts-confirm p{line-height:1.4}.font-library__google-fonts-confirm h2{font-size:1.2rem;font-weight:400}.font-library__google-fonts-confirm .components-card{padding:16px;width:400px}.font-library__google-fonts-confirm .components-button{justify-content:center;width:100%}.font-library__select-all{padding:16px 16px 16px 17px}.font-library__select-all .components-checkbox-control__label{padding-left:16px}.global-styles-ui-pagination .components-button.is-tertiary{height:32px;justify-content:center;width:32px}.global-styles-ui-screen-revisions__revisions-list{flex-grow:1;list-style:none;margin:0 16px 16px}.global-styles-ui-screen-revisions__revisions-list li{margin-bottom:0}.global-styles-ui-screen-revisions__revision-item{cursor:pointer;display:flex;flex-direction:column;position:relative}.global-styles-ui-screen-revisions__revision-item[role=option]:active,.global-styles-ui-screen-revisions__revision-item[role=option]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid #0000}.global-styles-ui-screen-revisions__revision-item:hover{background:rgba(var(--wp-admin-theme-color--rgb),.04)}.global-styles-ui-screen-revisions__revision-item:hover .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item:after,.global-styles-ui-screen-revisions__revision-item:before{content:"\\a";display:block;position:absolute}.global-styles-ui-screen-revisions__revision-item:before{background:#ddd;border:4px solid #0000;border-radius:50%;height:8px;left:17px;top:18px;transform:translate(-50%,-50%);width:8px;z-index:1}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]{background:rgba(var(--wp-admin-theme-color--rgb),.04);border-radius:2px;color:var(--wp-admin-theme-color);outline:3px solid #0000;outline-offset:-2px}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__date{color:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true]:before{background:var(--wp-admin-theme-color)}.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__changes>li,.global-styles-ui-screen-revisions__revision-item[aria-selected=true] .global-styles-ui-screen-revisions__meta{color:#1e1e1e}.global-styles-ui-screen-revisions__revision-item:after{border:.5px solid #ddd;height:100%;left:16px;top:0;width:0}.global-styles-ui-screen-revisions__revision-item:first-child:after{top:18px}.global-styles-ui-screen-revisions__revision-item:last-child:after{height:18px}.global-styles-ui-screen-revisions__revision-item-wrapper{display:block;padding:12px 12px 4px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__apply-button.is-primary{align-self:flex-start;margin:4px 12px 12px 40px}.global-styles-ui-screen-revisions__applied-text,.global-styles-ui-screen-revisions__changes,.global-styles-ui-screen-revisions__meta{color:#757575;font-size:12px}.global-styles-ui-screen-revisions__description{align-items:flex-start;display:flex;flex-direction:column;gap:8px}.global-styles-ui-screen-revisions__description .global-styles-ui-screen-revisions__date{font-size:12px;font-weight:600;text-transform:uppercase}.global-styles-ui-screen-revisions__meta{align-items:flex-start;display:flex;justify-content:start;margin-bottom:4px;text-align:left;width:100%}.global-styles-ui-screen-revisions__meta img{border-radius:100%;height:16px;margin-right:8px;width:16px}.global-styles-ui-screen-revisions__loading{margin:24px auto!important}.global-styles-ui-screen-revisions__changes{line-height:1.4;list-style:disc;margin-left:12px;text-align:left}.global-styles-ui-screen-revisions__changes li{margin-bottom:4px}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination{gap:2px;justify-content:space-between}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .edit-site-pagination__total{height:1px;left:-1000px;margin:-1px;overflow:hidden;position:absolute}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-text{font-size:12px;will-change:opacity}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary{color:#1e1e1e}.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary:disabled,.global-styles-ui-screen-revisions__pagination.global-styles-ui-screen-revisions__pagination .components-button.is-tertiary[aria-disabled=true]{color:#949494}.global-styles-ui-screen-revisions__footer{background:#fff;border-top:1px solid #ddd;bottom:0;box-sizing:border-box;height:56px;min-width:100%;padding:12px;position:sticky;z-index:1}.global-styles-ui-variations_item{box-sizing:border-box;cursor:pointer}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{border-radius:2px;outline:1px solid #0000001a;outline-offset:-1px;overflow:hidden;position:relative}@media not (prefers-reduced-motion){.global-styles-ui-variations_item .global-styles-ui-variations_item-preview{transition:outline .1s linear}}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill{height:32px}.global-styles-ui-variations_item .global-styles-ui-variations_item-preview.is-pill .block-editor-iframe__scale-container{overflow:hidden}.global-styles-ui-variations_item:not(.is-active):hover .global-styles-ui-variations_item-preview{outline-color:#0000004d}.global-styles-ui-variations_item.is-active .global-styles-ui-variations_item-preview,.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:#1e1e1e;outline-offset:1px;outline-width:var(--wp-admin-border-width-focus)}.global-styles-ui-variations_item:focus-visible .global-styles-ui-variations_item-preview{outline-color:var(--wp-admin-theme-color)}.global-styles-ui-preview{align-items:center;cursor:pointer;display:flex;justify-content:center;line-height:1}.global-styles-ui-preview__wrapper{display:block;max-width:100%;width:100%}.global-styles-ui-typography-preview{align-items:center;background:#f0f0f0;border-radius:2px;display:flex;justify-content:center;margin-bottom:20px;min-height:100px;overflow:hidden}.global-styles-ui-font-size__item{line-break:anywhere;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.global-styles-ui-font-size__item-value{color:#757575}.global-styles-ui-screen-typography__indicator{align-items:center;border-radius:2px;display:flex!important;font-size:14px;height:24px;justify-content:center;width:24px}.global-styles-ui-block-types-search{margin-bottom:10px;padding:0 16px}.global-styles-ui-screen-typography__font-variants-count{color:#757575}.global-styles-ui-font-families__manage-fonts{justify-content:center}.global-styles-ui-screen .color-block-support-panel{border-top:none;padding-left:0;padding-right:0;padding-top:0;row-gap:12px}.global-styles-ui-header{margin-bottom:0!important}.global-styles-ui-subtitle{font-size:11px!important;font-weight:499!important;margin-bottom:0!important;text-transform:uppercase}.global-styles-ui-section-title{color:#2f2f2f;font-weight:600;line-height:1.2;margin:0;padding:16px 16px 0}.global-styles-ui-icon-with-current-color{fill:currentColor}.global-styles-ui__color-indicator-wrapper{flex-shrink:0;height:24px}.global-styles-ui__shadows-panel__options-container,.global-styles-ui__typography-panel__options-container{height:24px}.global-styles-ui__block-preview-panel{border:1px solid #ddd;border-radius:2px;overflow:hidden;position:relative;width:100%}.global-styles-ui__shadow-preview-panel{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,#0000 0,#0000 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,8px 8px;background-size:16px 16px;border:1px solid #ddd;border-radius:2px;height:144px;overflow:auto}.global-styles-ui__shadow-preview-panel .global-styles-ui__shadow-preview-block{background-color:#fff;border:1px solid #ddd;border-radius:2px;height:60px;width:60%}.global-styles-ui__shadow-editor__dropdown-content{width:280px}.global-styles-ui__shadow-editor-panel{margin-bottom:4px}.global-styles-ui__shadow-editor__dropdown{position:relative;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle{border-radius:inherit;height:auto;padding-bottom:8px;padding-top:8px;text-align:left;width:100%}.global-styles-ui__shadow-editor__dropdown-toggle.is-open{background:#f0f0f0;color:var(--wp-admin-theme-color)}.global-styles-ui__shadow-editor__remove-button{opacity:0;position:absolute;right:8px;top:8px}.global-styles-ui__shadow-editor__remove-button.global-styles-ui__shadow-editor__remove-button{border:none}.global-styles-ui__shadow-editor__dropdown-toggle:hover+.global-styles-ui__shadow-editor__remove-button,.global-styles-ui__shadow-editor__remove-button:focus,.global-styles-ui__shadow-editor__remove-button:hover{opacity:1}@media (hover:none){.global-styles-ui__shadow-editor__remove-button{opacity:1}}.global-styles-ui-screen-css{display:flex;flex:1 1 auto;flex-direction:column;margin:16px}.global-styles-ui-screen-css .components-v-stack{flex:1 1 auto}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input,.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field{display:flex;flex:1 1 auto;flex-direction:column}.global-styles-ui-screen-css .components-v-stack .block-editor-global-styles-advanced-panel__custom-css-input .components-base-control__field .components-textarea-control__input{direction:ltr;flex:1 1 auto}.global-styles-ui-screen-css-help-link{display:inline-block;margin-top:8px}.global-styles-ui-screen-variations{border-top:1px solid #ddd;margin-top:16px}.global-styles-ui-screen-variations>*{margin:24px 16px}.global-styles-ui-sidebar__navigator-provider{height:100%}.global-styles-ui-sidebar__navigator-screen{display:flex;flex-direction:column;height:100%}.global-styles-ui-sidebar__navigator-screen .single-column{grid-column:span 1}.global-styles-ui-screen-root.global-styles-ui-screen-root,.global-styles-ui-screen-style-variations.global-styles-ui-screen-style-variations{background:unset;color:inherit}.global-styles-ui-sidebar__panel .block-editor-block-icon svg{fill:currentColor}.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile,.global-styles-ui-screen-root__active-style-tile.global-styles-ui-screen-root__active-style-tile .global-styles-ui-screen-root__active-style-tile-preview{border-radius:2px}.global-styles-ui-screen-root__active-style-tile-preview{clip-path:border-box}.global-styles-ui-color-palette-panel,.global-styles-ui-gradient-palette-panel{padding:16px}.font-library-page__tablist{border-bottom:1px solid #f0f0f0;padding:0 24px}.font-library-page__tab-panel{flex-grow:1;max-height:calc(100% - 110px);overflow:auto}.admin-ui-page:has(.font-library__footer) .font-library-page__tab-panel{max-height:calc(100% - 198px)}'));
15436    document.head.appendChild(style);
15437  }
15438  
15439  // routes/font-list/stage.tsx
15440  var { Tabs: Tabs3 } = unlock2(import_components62.privateApis);
15441  var { useGlobalStyles } = unlock2(import_editor.privateApis);
15442  function FontLibraryPage() {
15443    const { records: collections = [] } = (0, import_core_data12.useEntityRecords)("root", "fontCollection", {
15444      _fields: "slug,name,description"
15445    });
15446    const [activeTab, setActiveTab] = (0, import_element35.useState)("installed-fonts");
15447    const { base, user, setUser, isReady } = useGlobalStyles();
15448    const canUserCreate = (0, import_data13.useSelect)((select) => {
15449      return select(import_core_data12.store).canUser("create", {
15450        kind: "postType",
15451        name: "wp_font_family"
15452      });
15453    }, []);
15454    if (!isReady) {
15455      return null;
15456    }
15457    const tabs = [
15458      {
15459        id: "installed-fonts",
15460        title: (0, import_i18n46.__)("Library")
15461      }
15462    ];
15463    if (canUserCreate) {
15464      tabs.push({
15465        id: "upload-fonts",
15466        title: (0, import_i18n46.__)("Upload")
15467      });
15468      tabs.push(
15469        ...(collections || []).map(({ slug, name: name2 }) => ({
15470          id: slug,
15471          title: collections && collections.length === 1 && slug === "google-fonts" ? (0, import_i18n46.__)("Install Fonts") : name2
15472        }))
15473      );
15474    }
15475    return /* @__PURE__ */ React.createElement(page_default, { title: (0, import_i18n46.__)("Fonts") }, /* @__PURE__ */ React.createElement(
15476      Tabs3,
15477      {
15478        selectedTabId: activeTab,
15479        onSelect: (tabId) => setActiveTab(tabId)
15480      },
15481      /* @__PURE__ */ React.createElement("div", { className: "font-library-page__tablist" }, /* @__PURE__ */ React.createElement(Tabs3.TabList, null, tabs.map(({ id, title }) => /* @__PURE__ */ React.createElement(Tabs3.Tab, { key: id, tabId: id }, title)))),
15482      tabs.map(({ id }) => /* @__PURE__ */ React.createElement(
15483        Tabs3.TabPanel,
15484        {
15485          key: id,
15486          tabId: id,
15487          focusable: false,
15488          className: "font-library-page__tab-panel"
15489        },
15490        /* @__PURE__ */ React.createElement(
15491          FontLibrary,
15492          {
15493            value: user,
15494            baseValue: base,
15495            onChange: setUser,
15496            activeTab: id
15497          }
15498        )
15499      ))
15500    ));
15501  }
15502  function Stage() {
15503    return /* @__PURE__ */ React.createElement(FontLibraryPage, null);
15504  }
15505  var stage = Stage;
15506  export {
15507    stage
15508  };
15509  /*! Bundled license information:
15510  
15511  is-plain-object/dist/is-plain-object.mjs:
15512    (*!
15513     * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
15514     *
15515     * Copyright (c) 2014-2017, Jon Schlinkert.
15516     * Released under the MIT License.
15517     *)
15518  */


Generated : Sun Jun 14 08:20:09 2026 Cross-referenced by PHPXref