x-print-designer 0.4.44 → 0.4.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -150,9 +150,9 @@ function normalizeClass(value) {
150
150
  }
151
151
  }
152
152
  } else if (isObject$3(value)) {
153
- for (const name2 in value) {
154
- if (value[name2]) {
155
- res += name2 + " ";
153
+ for (const name in value) {
154
+ if (value[name]) {
155
+ res += name + " ";
156
156
  }
157
157
  }
158
158
  }
@@ -2632,9 +2632,9 @@ function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {
2632
2632
  renderFnWithContext._d = true;
2633
2633
  return renderFnWithContext;
2634
2634
  }
2635
- function validateDirectiveName(name2) {
2636
- if (isBuiltInDirective(name2)) {
2637
- warn$1("Do not use built-in directive ids as custom directive id: " + name2);
2635
+ function validateDirectiveName(name) {
2636
+ if (isBuiltInDirective(name)) {
2637
+ warn$1("Do not use built-in directive ids as custom directive id: " + name);
2638
2638
  }
2639
2639
  }
2640
2640
  function withDirectives(vnode, directives) {
@@ -2668,7 +2668,7 @@ function withDirectives(vnode, directives) {
2668
2668
  }
2669
2669
  return vnode;
2670
2670
  }
2671
- function invokeDirectiveHook(vnode, prevVNode, instance, name2) {
2671
+ function invokeDirectiveHook(vnode, prevVNode, instance, name) {
2672
2672
  const bindings = vnode.dirs;
2673
2673
  const oldBindings = prevVNode && prevVNode.dirs;
2674
2674
  for (let i = 0; i < bindings.length; i++) {
@@ -2676,7 +2676,7 @@ function invokeDirectiveHook(vnode, prevVNode, instance, name2) {
2676
2676
  if (oldBindings) {
2677
2677
  binding.oldValue = oldBindings[i].value;
2678
2678
  }
2679
- let hook = binding.dir[name2];
2679
+ let hook = binding.dir[name];
2680
2680
  if (hook) {
2681
2681
  pauseTracking();
2682
2682
  callWithAsyncErrorHandling(hook, instance, 8, [
@@ -3807,8 +3807,8 @@ function onErrorCaptured(hook, target = currentInstance) {
3807
3807
  injectHook("ec", hook, target);
3808
3808
  }
3809
3809
  const COMPONENTS = "components";
3810
- function resolveComponent(name2, maybeSelfReference) {
3811
- return resolveAsset(COMPONENTS, name2, true, maybeSelfReference) || name2;
3810
+ function resolveComponent(name, maybeSelfReference) {
3811
+ return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;
3812
3812
  }
3813
3813
  const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc");
3814
3814
  function resolveDynamicComponent(component) {
@@ -3818,7 +3818,7 @@ function resolveDynamicComponent(component) {
3818
3818
  return component || NULL_DYNAMIC_COMPONENT;
3819
3819
  }
3820
3820
  }
3821
- function resolveAsset(type, name2, warnMissing = true, maybeSelfReference = false) {
3821
+ function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {
3822
3822
  const instance = currentRenderingInstance || currentInstance;
3823
3823
  if (instance) {
3824
3824
  const Component = instance.type;
@@ -3827,15 +3827,15 @@ function resolveAsset(type, name2, warnMissing = true, maybeSelfReference = fals
3827
3827
  Component,
3828
3828
  false
3829
3829
  );
3830
- if (selfName && (selfName === name2 || selfName === camelize(name2) || selfName === capitalize$1(camelize(name2)))) {
3830
+ if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize$1(camelize(name)))) {
3831
3831
  return Component;
3832
3832
  }
3833
3833
  }
3834
3834
  const res = (
3835
3835
  // local registration
3836
3836
  // check instance[type] first which is resolved for options API
3837
- resolve(instance[type] || Component[type], name2) || // global registration
3838
- resolve(instance.appContext[type], name2)
3837
+ resolve(instance[type] || Component[type], name) || // global registration
3838
+ resolve(instance.appContext[type], name)
3839
3839
  );
3840
3840
  if (!res && maybeSelfReference) {
3841
3841
  return Component;
@@ -3843,7 +3843,7 @@ function resolveAsset(type, name2, warnMissing = true, maybeSelfReference = fals
3843
3843
  if (!!(process.env.NODE_ENV !== "production") && warnMissing && !res) {
3844
3844
  const extra = `
3845
3845
  If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.`;
3846
- warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name2}${extra}`);
3846
+ warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);
3847
3847
  }
3848
3848
  return res;
3849
3849
  } else if (!!(process.env.NODE_ENV !== "production")) {
@@ -3852,8 +3852,8 @@ If this is a native custom element, make sure to exclude it from component resol
3852
3852
  );
3853
3853
  }
3854
3854
  }
3855
- function resolve(registry, name2) {
3856
- return registry && (registry[name2] || registry[camelize(name2)] || registry[capitalize$1(camelize(name2))]);
3855
+ function resolve(registry, name) {
3856
+ return registry && (registry[name] || registry[camelize(name)] || registry[capitalize$1(camelize(name))]);
3857
3857
  }
3858
3858
  function renderList(source, renderItem, cache2, index2) {
3859
3859
  let ret;
@@ -3905,9 +3905,9 @@ function renderList(source, renderItem, cache2, index2) {
3905
3905
  }
3906
3906
  return ret;
3907
3907
  }
3908
- function renderSlot(slots, name2, props = {}, fallback, noSlotted) {
3908
+ function renderSlot(slots, name, props = {}, fallback, noSlotted) {
3909
3909
  if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {
3910
- if (name2 !== "default") props.name = name2;
3910
+ if (name !== "default") props.name = name;
3911
3911
  return openBlock(), createBlock(
3912
3912
  Fragment,
3913
3913
  null,
@@ -3915,7 +3915,7 @@ function renderSlot(slots, name2, props = {}, fallback, noSlotted) {
3915
3915
  64
3916
3916
  );
3917
3917
  }
3918
- let slot = slots[name2];
3918
+ let slot = slots[name];
3919
3919
  if (!!(process.env.NODE_ENV !== "production") && slot && slot.length > 1) {
3920
3920
  warn$1(
3921
3921
  `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.`
@@ -3933,7 +3933,7 @@ function renderSlot(slots, name2, props = {}, fallback, noSlotted) {
3933
3933
  const rendered = createBlock(
3934
3934
  Fragment,
3935
3935
  {
3936
- key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name2}`) + // #7256 force differentiate fallback content from actual content
3936
+ key: (slotKey && !isSymbol(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content
3937
3937
  (!validSlotContent && fallback ? "_fb" : "")
3938
3938
  },
3939
3939
  validSlotContent || (fallback ? fallback() : []),
@@ -4685,30 +4685,30 @@ function createAppAPI(render2, hydrate) {
4685
4685
  }
4686
4686
  return app;
4687
4687
  },
4688
- component(name2, component) {
4688
+ component(name, component) {
4689
4689
  if (!!(process.env.NODE_ENV !== "production")) {
4690
- validateComponentName(name2, context.config);
4690
+ validateComponentName(name, context.config);
4691
4691
  }
4692
4692
  if (!component) {
4693
- return context.components[name2];
4693
+ return context.components[name];
4694
4694
  }
4695
- if (!!(process.env.NODE_ENV !== "production") && context.components[name2]) {
4696
- warn$1(`Component "${name2}" has already been registered in target app.`);
4695
+ if (!!(process.env.NODE_ENV !== "production") && context.components[name]) {
4696
+ warn$1(`Component "${name}" has already been registered in target app.`);
4697
4697
  }
4698
- context.components[name2] = component;
4698
+ context.components[name] = component;
4699
4699
  return app;
4700
4700
  },
4701
- directive(name2, directive) {
4701
+ directive(name, directive) {
4702
4702
  if (!!(process.env.NODE_ENV !== "production")) {
4703
- validateDirectiveName(name2);
4703
+ validateDirectiveName(name);
4704
4704
  }
4705
4705
  if (!directive) {
4706
- return context.directives[name2];
4706
+ return context.directives[name];
4707
4707
  }
4708
- if (!!(process.env.NODE_ENV !== "production") && context.directives[name2]) {
4709
- warn$1(`Directive "${name2}" has already been registered in target app.`);
4708
+ if (!!(process.env.NODE_ENV !== "production") && context.directives[name]) {
4709
+ warn$1(`Directive "${name}" has already been registered in target app.`);
4710
4710
  }
4711
- context.directives[name2] = directive;
4711
+ context.directives[name] = directive;
4712
4712
  return app;
4713
4713
  },
4714
4714
  mount(rootContainer, isHydrate, namespace) {
@@ -5146,8 +5146,8 @@ function getType(ctor) {
5146
5146
  if (typeof ctor === "function") {
5147
5147
  return ctor.name || "";
5148
5148
  } else if (typeof ctor === "object") {
5149
- const name2 = ctor.constructor && ctor.constructor.name;
5150
- return name2 || "";
5149
+ const name = ctor.constructor && ctor.constructor.name;
5150
+ return name || "";
5151
5151
  }
5152
5152
  return "";
5153
5153
  }
@@ -5167,10 +5167,10 @@ function validateProps(rawProps, props, instance) {
5167
5167
  );
5168
5168
  }
5169
5169
  }
5170
- function validateProp(name2, value, prop, props, isAbsent) {
5170
+ function validateProp(name, value, prop, props, isAbsent) {
5171
5171
  const { type, required, validator, skipCheck } = prop;
5172
5172
  if (required && isAbsent) {
5173
- warn$1('Missing required prop: "' + name2 + '"');
5173
+ warn$1('Missing required prop: "' + name + '"');
5174
5174
  return;
5175
5175
  }
5176
5176
  if (value == null && !required) {
@@ -5186,12 +5186,12 @@ function validateProp(name2, value, prop, props, isAbsent) {
5186
5186
  isValid = valid;
5187
5187
  }
5188
5188
  if (!isValid) {
5189
- warn$1(getInvalidTypeMessage(name2, value, expectedTypes));
5189
+ warn$1(getInvalidTypeMessage(name, value, expectedTypes));
5190
5190
  return;
5191
5191
  }
5192
5192
  }
5193
5193
  if (validator && !validator(value, props)) {
5194
- warn$1('Invalid prop: custom validator check failed for prop "' + name2 + '".');
5194
+ warn$1('Invalid prop: custom validator check failed for prop "' + name + '".');
5195
5195
  }
5196
5196
  }
5197
5197
  const isSimpleType = /* @__PURE__ */ makeMap(
@@ -5220,11 +5220,11 @@ function assertType(value, type) {
5220
5220
  expectedType
5221
5221
  };
5222
5222
  }
5223
- function getInvalidTypeMessage(name2, value, expectedTypes) {
5223
+ function getInvalidTypeMessage(name, value, expectedTypes) {
5224
5224
  if (expectedTypes.length === 0) {
5225
- return `Prop type [] for prop "${name2}" won't match anything. Did you mean to use type Array instead?`;
5225
+ return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`;
5226
5226
  }
5227
- let message = `Invalid prop: type check failed for prop "${name2}". Expected ${expectedTypes.map(capitalize$1).join(" | ")}`;
5227
+ let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(capitalize$1).join(" | ")}`;
5228
5228
  const expectedType = expectedTypes[0];
5229
5229
  const receivedType = toRawType(value);
5230
5230
  const expectedValue = styleValue(value, expectedType);
@@ -7926,10 +7926,10 @@ const unsetCurrentInstance = () => {
7926
7926
  internalSetCurrentInstance(null);
7927
7927
  };
7928
7928
  const isBuiltInTag = /* @__PURE__ */ makeMap("slot,component");
7929
- function validateComponentName(name2, { isNativeTag }) {
7930
- if (isBuiltInTag(name2) || isNativeTag(name2)) {
7929
+ function validateComponentName(name, { isNativeTag }) {
7930
+ if (isBuiltInTag(name) || isNativeTag(name)) {
7931
7931
  warn$1(
7932
- "Do not use built-in or reserved HTML elements as component id: " + name2
7932
+ "Do not use built-in or reserved HTML elements as component id: " + name
7933
7933
  );
7934
7934
  }
7935
7935
  }
@@ -8008,9 +8008,9 @@ function setupStatefulComponent(instance, isSSR) {
8008
8008
  } else {
8009
8009
  instance.asyncDep = setupResult;
8010
8010
  if (!!(process.env.NODE_ENV !== "production") && !instance.suspense) {
8011
- const name2 = (_a2 = Component.name) != null ? _a2 : "Anonymous";
8011
+ const name = (_a2 = Component.name) != null ? _a2 : "Anonymous";
8012
8012
  warn$1(
8013
- `Component <${name2}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`
8013
+ `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.`
8014
8014
  );
8015
8015
  }
8016
8016
  }
@@ -8174,14 +8174,14 @@ function getComponentName(Component, includeInferred = true) {
8174
8174
  return isFunction$2(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
8175
8175
  }
8176
8176
  function formatComponentName(instance, Component, isRoot = false) {
8177
- let name2 = getComponentName(Component);
8178
- if (!name2 && Component.__file) {
8177
+ let name = getComponentName(Component);
8178
+ if (!name && Component.__file) {
8179
8179
  const match = Component.__file.match(/([^/\\]+)\.\w+$/);
8180
8180
  if (match) {
8181
- name2 = match[1];
8181
+ name = match[1];
8182
8182
  }
8183
8183
  }
8184
- if (!name2 && instance && instance.parent) {
8184
+ if (!name && instance && instance.parent) {
8185
8185
  const inferFromRegistry = (registry) => {
8186
8186
  for (const key in registry) {
8187
8187
  if (registry[key] === Component) {
@@ -8189,11 +8189,11 @@ function formatComponentName(instance, Component, isRoot = false) {
8189
8189
  }
8190
8190
  }
8191
8191
  };
8192
- name2 = inferFromRegistry(
8192
+ name = inferFromRegistry(
8193
8193
  instance.components || instance.parent.type.components
8194
8194
  ) || inferFromRegistry(instance.appContext.components);
8195
8195
  }
8196
- return name2 ? classify(name2) : isRoot ? `App` : `Anonymous`;
8196
+ return name ? classify(name) : isRoot ? `App` : `Anonymous`;
8197
8197
  }
8198
8198
  function isClassComponent(value) {
8199
8199
  return isFunction$2(value) && "__vccOpts" in value;
@@ -8549,18 +8549,18 @@ function resolveTransitionProps(rawProps) {
8549
8549
  return baseProps;
8550
8550
  }
8551
8551
  const {
8552
- name: name2 = "v",
8552
+ name = "v",
8553
8553
  type,
8554
8554
  duration,
8555
- enterFromClass = `${name2}-enter-from`,
8556
- enterActiveClass = `${name2}-enter-active`,
8557
- enterToClass = `${name2}-enter-to`,
8555
+ enterFromClass = `${name}-enter-from`,
8556
+ enterActiveClass = `${name}-enter-active`,
8557
+ enterToClass = `${name}-enter-to`,
8558
8558
  appearFromClass = enterFromClass,
8559
8559
  appearActiveClass = enterActiveClass,
8560
8560
  appearToClass = enterToClass,
8561
- leaveFromClass = `${name2}-leave-from`,
8562
- leaveActiveClass = `${name2}-leave-active`,
8563
- leaveToClass = `${name2}-leave-to`
8561
+ leaveFromClass = `${name}-leave-from`,
8562
+ leaveActiveClass = `${name}-leave-active`,
8563
+ leaveToClass = `${name}-leave-to`
8564
8564
  } = rawProps;
8565
8565
  const durations = normalizeDuration(duration);
8566
8566
  const enterDuration = durations && durations[0];
@@ -8881,22 +8881,22 @@ function patchStyle(el2, prev, next) {
8881
8881
  }
8882
8882
  const semicolonRE = /[^\\];\s*$/;
8883
8883
  const importantRE = /\s*!important$/;
8884
- function setStyle(style, name2, val) {
8884
+ function setStyle(style, name, val) {
8885
8885
  if (isArray$1(val)) {
8886
- val.forEach((v) => setStyle(style, name2, v));
8886
+ val.forEach((v) => setStyle(style, name, v));
8887
8887
  } else {
8888
8888
  if (val == null) val = "";
8889
8889
  if (!!(process.env.NODE_ENV !== "production")) {
8890
8890
  if (semicolonRE.test(val)) {
8891
8891
  warn$2(
8892
- `Unexpected semicolon at the end of '${name2}' style value: '${val}'`
8892
+ `Unexpected semicolon at the end of '${name}' style value: '${val}'`
8893
8893
  );
8894
8894
  }
8895
8895
  }
8896
- if (name2.startsWith("--")) {
8897
- style.setProperty(name2, val);
8896
+ if (name.startsWith("--")) {
8897
+ style.setProperty(name, val);
8898
8898
  } else {
8899
- const prefixed = autoPrefix(style, name2);
8899
+ const prefixed = autoPrefix(style, name);
8900
8900
  if (importantRE.test(val)) {
8901
8901
  style.setProperty(
8902
8902
  hyphenate(prefixed),
@@ -8916,13 +8916,13 @@ function autoPrefix(style, rawName) {
8916
8916
  if (cached) {
8917
8917
  return cached;
8918
8918
  }
8919
- let name2 = camelize(rawName);
8920
- if (name2 !== "filter" && name2 in style) {
8921
- return prefixCache[rawName] = name2;
8919
+ let name = camelize(rawName);
8920
+ if (name !== "filter" && name in style) {
8921
+ return prefixCache[rawName] = name;
8922
8922
  }
8923
- name2 = capitalize$1(name2);
8923
+ name = capitalize$1(name);
8924
8924
  for (let i = 0; i < prefixes.length; i++) {
8925
- const prefixed = prefixes[i] + name2;
8925
+ const prefixed = prefixes[i] + name;
8926
8926
  if (prefixed in style) {
8927
8927
  return prefixCache[rawName] = prefixed;
8928
8928
  }
@@ -9011,31 +9011,31 @@ function patchEvent(el2, rawName, prevValue, nextValue, instance = null) {
9011
9011
  if (nextValue && existingInvoker) {
9012
9012
  existingInvoker.value = !!(process.env.NODE_ENV !== "production") ? sanitizeEventValue(nextValue, rawName) : nextValue;
9013
9013
  } else {
9014
- const [name2, options] = parseName(rawName);
9014
+ const [name, options] = parseName(rawName);
9015
9015
  if (nextValue) {
9016
9016
  const invoker = invokers[rawName] = createInvoker(
9017
9017
  !!(process.env.NODE_ENV !== "production") ? sanitizeEventValue(nextValue, rawName) : nextValue,
9018
9018
  instance
9019
9019
  );
9020
- addEventListener(el2, name2, invoker, options);
9020
+ addEventListener(el2, name, invoker, options);
9021
9021
  } else if (existingInvoker) {
9022
- removeEventListener(el2, name2, existingInvoker, options);
9022
+ removeEventListener(el2, name, existingInvoker, options);
9023
9023
  invokers[rawName] = void 0;
9024
9024
  }
9025
9025
  }
9026
9026
  }
9027
9027
  const optionsModifierRE = /(?:Once|Passive|Capture)$/;
9028
- function parseName(name2) {
9028
+ function parseName(name) {
9029
9029
  let options;
9030
- if (optionsModifierRE.test(name2)) {
9030
+ if (optionsModifierRE.test(name)) {
9031
9031
  options = {};
9032
9032
  let m;
9033
- while (m = name2.match(optionsModifierRE)) {
9034
- name2 = name2.slice(0, name2.length - m[0].length);
9033
+ while (m = name.match(optionsModifierRE)) {
9034
+ name = name.slice(0, name.length - m[0].length);
9035
9035
  options[m[0].toLowerCase()] = true;
9036
9036
  }
9037
9037
  }
9038
- const event = name2[2] === ":" ? name2.slice(3) : hyphenate(name2.slice(2));
9038
+ const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
9039
9039
  return [event, options];
9040
9040
  }
9041
9041
  let cachedNow = 0;
@@ -9639,12 +9639,12 @@ function bom(blob, { autoBom = false } = {}) {
9639
9639
  }
9640
9640
  return blob;
9641
9641
  }
9642
- function download(url, name2, opts) {
9642
+ function download(url, name, opts) {
9643
9643
  const xhr = new XMLHttpRequest();
9644
9644
  xhr.open("GET", url);
9645
9645
  xhr.responseType = "blob";
9646
9646
  xhr.onload = function() {
9647
- saveAs(xhr.response, name2, opts);
9647
+ saveAs(xhr.response, name, opts);
9648
9648
  };
9649
9649
  xhr.onerror = function() {
9650
9650
  console.error("could not download file");
@@ -9682,15 +9682,15 @@ const saveAs = !IS_CLIENT ? () => {
9682
9682
  )
9683
9683
  )
9684
9684
  );
9685
- function downloadSaveAs(blob, name2 = "download", opts) {
9685
+ function downloadSaveAs(blob, name = "download", opts) {
9686
9686
  const a = document.createElement("a");
9687
- a.download = name2;
9687
+ a.download = name;
9688
9688
  a.rel = "noopener";
9689
9689
  if (typeof blob === "string") {
9690
9690
  a.href = blob;
9691
9691
  if (a.origin !== location.origin) {
9692
9692
  if (corsEnabled(a.href)) {
9693
- download(blob, name2, opts);
9693
+ download(blob, name, opts);
9694
9694
  } else {
9695
9695
  a.target = "_blank";
9696
9696
  click(a);
@@ -9708,10 +9708,10 @@ function downloadSaveAs(blob, name2 = "download", opts) {
9708
9708
  }, 0);
9709
9709
  }
9710
9710
  }
9711
- function msSaveAs(blob, name2 = "download", opts) {
9711
+ function msSaveAs(blob, name = "download", opts) {
9712
9712
  if (typeof blob === "string") {
9713
9713
  if (corsEnabled(blob)) {
9714
- download(blob, name2, opts);
9714
+ download(blob, name, opts);
9715
9715
  } else {
9716
9716
  const a = document.createElement("a");
9717
9717
  a.href = blob;
@@ -9721,16 +9721,16 @@ function msSaveAs(blob, name2 = "download", opts) {
9721
9721
  });
9722
9722
  }
9723
9723
  } else {
9724
- navigator.msSaveOrOpenBlob(bom(blob, opts), name2);
9724
+ navigator.msSaveOrOpenBlob(bom(blob, opts), name);
9725
9725
  }
9726
9726
  }
9727
- function fileSaverSaveAs(blob, name2, opts, popup) {
9727
+ function fileSaverSaveAs(blob, name, opts, popup) {
9728
9728
  popup = popup || open("", "_blank");
9729
9729
  if (popup) {
9730
9730
  popup.document.title = popup.document.body.innerText = "downloading...";
9731
9731
  }
9732
9732
  if (typeof blob === "string")
9733
- return download(blob, name2, opts);
9733
+ return download(blob, name, opts);
9734
9734
  const force = blob.type === "application/octet-stream";
9735
9735
  const isSafari = /constructor/i.test(String(_global.HTMLElement)) || "safari" in _global;
9736
9736
  const isChromeIOS = /CriOS\/[\d]+/.test(navigator.userAgent);
@@ -10192,17 +10192,17 @@ function addStoreToDevtools(app, store) {
10192
10192
  }
10193
10193
  }, (api) => {
10194
10194
  const now2 = typeof api.now === "function" ? api.now.bind(api) : Date.now;
10195
- store.$onAction(({ after, onError, name: name2, args }) => {
10195
+ store.$onAction(({ after, onError, name, args }) => {
10196
10196
  const groupId = runningActionId++;
10197
10197
  api.addTimelineEvent({
10198
10198
  layerId: MUTATIONS_LAYER_ID,
10199
10199
  event: {
10200
10200
  time: now2(),
10201
- title: "🛫 " + name2,
10201
+ title: "🛫 " + name,
10202
10202
  subtitle: "start",
10203
10203
  data: {
10204
10204
  store: formatDisplay(store.$id),
10205
- action: formatDisplay(name2),
10205
+ action: formatDisplay(name),
10206
10206
  args
10207
10207
  },
10208
10208
  groupId
@@ -10214,11 +10214,11 @@ function addStoreToDevtools(app, store) {
10214
10214
  layerId: MUTATIONS_LAYER_ID,
10215
10215
  event: {
10216
10216
  time: now2(),
10217
- title: "🛬 " + name2,
10217
+ title: "🛬 " + name,
10218
10218
  subtitle: "end",
10219
10219
  data: {
10220
10220
  store: formatDisplay(store.$id),
10221
- action: formatDisplay(name2),
10221
+ action: formatDisplay(name),
10222
10222
  args,
10223
10223
  result
10224
10224
  },
@@ -10233,11 +10233,11 @@ function addStoreToDevtools(app, store) {
10233
10233
  event: {
10234
10234
  time: now2(),
10235
10235
  logType: "error",
10236
- title: "💥 " + name2,
10236
+ title: "💥 " + name,
10237
10237
  subtitle: "end",
10238
10238
  data: {
10239
10239
  store: formatDisplay(store.$id),
10240
- action: formatDisplay(name2),
10240
+ action: formatDisplay(name),
10241
10241
  args,
10242
10242
  error
10243
10243
  },
@@ -10246,8 +10246,8 @@ function addStoreToDevtools(app, store) {
10246
10246
  });
10247
10247
  });
10248
10248
  }, true);
10249
- store._customProperties.forEach((name2) => {
10250
- watch(() => unref(store[name2]), (newValue, oldValue) => {
10249
+ store._customProperties.forEach((name) => {
10250
+ watch(() => unref(store[name]), (newValue, oldValue) => {
10251
10251
  api.notifyComponentUpdate();
10252
10252
  api.sendInspectorState(INSPECTOR_ID);
10253
10253
  if (isTimelineActive) {
@@ -10256,7 +10256,7 @@ function addStoreToDevtools(app, store) {
10256
10256
  event: {
10257
10257
  time: now2(),
10258
10258
  title: "Change",
10259
- subtitle: name2,
10259
+ subtitle: name,
10260
10260
  data: {
10261
10261
  newValue,
10262
10262
  oldValue
@@ -10504,14 +10504,14 @@ function createOptionsStore(id, options, pinia, hot) {
10504
10504
  // use ref() to unwrap refs inside state TODO: check if this is still necessary
10505
10505
  toRefs(ref(state2 ? state2() : {}).value)
10506
10506
  ) : toRefs(pinia.state.value[id]);
10507
- return assign$2(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name2) => {
10508
- if (process.env.NODE_ENV !== "production" && name2 in localState) {
10509
- console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with "${name2}" in store "${id}".`);
10507
+ return assign$2(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {
10508
+ if (process.env.NODE_ENV !== "production" && name in localState) {
10509
+ console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with "${name}" in store "${id}".`);
10510
10510
  }
10511
- computedGetters[name2] = markRaw(computed(() => {
10511
+ computedGetters[name] = markRaw(computed(() => {
10512
10512
  setActivePinia(pinia);
10513
10513
  const store2 = pinia._s.get(id);
10514
- return getters[name2].call(store2, store2);
10514
+ return getters[name].call(store2, store2);
10515
10515
  }));
10516
10516
  return computedGetters;
10517
10517
  }, {}));
@@ -10601,9 +10601,9 @@ function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore)
10601
10601
  actionSubscriptions = [];
10602
10602
  pinia._s.delete($id);
10603
10603
  }
10604
- const action = (fn, name2 = "") => {
10604
+ const action = (fn, name = "") => {
10605
10605
  if (ACTION_MARKER in fn) {
10606
- fn[ACTION_NAME] = name2;
10606
+ fn[ACTION_NAME] = name;
10607
10607
  return fn;
10608
10608
  }
10609
10609
  const wrappedAction = function() {
@@ -10644,7 +10644,7 @@ function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore)
10644
10644
  return ret;
10645
10645
  };
10646
10646
  wrappedAction[ACTION_MARKER] = true;
10647
- wrappedAction[ACTION_NAME] = name2;
10647
+ wrappedAction[ACTION_NAME] = name;
10648
10648
  return wrappedAction;
10649
10649
  };
10650
10650
  const _hmrPayload = /* @__PURE__ */ markRaw({
@@ -10936,8 +10936,8 @@ if (process.env.NODE_ENV !== "production") {
10936
10936
  mark = (tag) => {
10937
10937
  perf2.mark(tag);
10938
10938
  };
10939
- measure = (name2, startTag, endTag) => {
10940
- perf2.measure(name2, startTag, endTag);
10939
+ measure = (name, startTag, endTag) => {
10940
+ perf2.measure(name, startTag, endTag);
10941
10941
  perf2.clearMarks(startTag);
10942
10942
  perf2.clearMarks(endTag);
10943
10943
  };
@@ -10955,7 +10955,7 @@ function format$1(message, ...args) {
10955
10955
  return args.hasOwnProperty(identifier) ? args[identifier] : "";
10956
10956
  });
10957
10957
  }
10958
- const makeSymbol = (name2, shareable = false) => !shareable ? Symbol(name2) : Symbol.for(name2);
10958
+ const makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);
10959
10959
  const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });
10960
10960
  const friendlyJSONstringify = (json) => JSON.stringify(json).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/\u0027/g, "\\u0027");
10961
10961
  const isNumber = (val) => typeof val === "number" && isFinite(val);
@@ -11532,20 +11532,20 @@ function createTokenizer(source, options = {}) {
11532
11532
  function readNamedIdentifier(scnr) {
11533
11533
  skipSpaces(scnr);
11534
11534
  let ch = "";
11535
- let name2 = "";
11535
+ let name = "";
11536
11536
  while (ch = takeNamedIdentifierChar(scnr)) {
11537
- name2 += ch;
11537
+ name += ch;
11538
11538
  }
11539
11539
  const currentChar = scnr.currentChar();
11540
11540
  if (currentChar && currentChar !== "}" && currentChar !== EOF && currentChar !== CHAR_SP && currentChar !== CHAR_LF && currentChar !== " ") {
11541
11541
  const invalidPart = readInvalidIdentifier(scnr);
11542
- emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, name2 + invalidPart);
11543
- return name2 + invalidPart;
11542
+ emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, name + invalidPart);
11543
+ return name + invalidPart;
11544
11544
  }
11545
11545
  if (scnr.currentChar() === EOF) {
11546
11546
  emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
11547
11547
  }
11548
- return name2;
11548
+ return name;
11549
11549
  }
11550
11550
  function readListIdentifier(scnr) {
11551
11551
  skipSpaces(scnr);
@@ -11631,11 +11631,11 @@ function createTokenizer(source, options = {}) {
11631
11631
  }
11632
11632
  function readLinkedModifier(scnr) {
11633
11633
  let ch = "";
11634
- let name2 = "";
11634
+ let name = "";
11635
11635
  while (ch = takeIdentifierChar(scnr)) {
11636
- name2 += ch;
11636
+ name += ch;
11637
11637
  }
11638
- return name2;
11638
+ return name;
11639
11639
  }
11640
11640
  function readLinkedRefer(scnr) {
11641
11641
  const fn = (buf) => {
@@ -12159,8 +12159,8 @@ function getTokenCaption(token) {
12159
12159
  if (token.type === 13) {
12160
12160
  return "EOF";
12161
12161
  }
12162
- const name2 = (token.value || "").replace(/\r?\n/gu, "\\n");
12163
- return name2.length > 10 ? name2.slice(0, 9) + "…" : name2;
12162
+ const name = (token.value || "").replace(/\r?\n/gu, "\\n");
12163
+ return name.length > 10 ? name.slice(0, 9) + "…" : name;
12164
12164
  }
12165
12165
  function createTransformer(ast, options = {}) {
12166
12166
  const _context = {
@@ -12168,9 +12168,9 @@ function createTransformer(ast, options = {}) {
12168
12168
  helpers: /* @__PURE__ */ new Set()
12169
12169
  };
12170
12170
  const context = () => _context;
12171
- const helper = (name2) => {
12172
- _context.helpers.add(name2);
12173
- return name2;
12171
+ const helper = (name) => {
12172
+ _context.helpers.add(name);
12173
+ return name;
12174
12174
  };
12175
12175
  return { context, helper };
12176
12176
  }
@@ -13863,7 +13863,7 @@ function createMessageContext(options = {}) {
13863
13863
  const msg = isFunction$1(options.messages) ? options.messages(key, !!useLinked) : isObject$2(options.messages) ? options.messages[key] : false;
13864
13864
  return !msg ? options.parent ? options.parent.message(key) : DEFAULT_MESSAGE : msg;
13865
13865
  }
13866
- const _modifier = (name2) => options.modifiers ? options.modifiers[name2] : DEFAULT_MODIFIER;
13866
+ const _modifier = (name) => options.modifiers ? options.modifiers[name] : DEFAULT_MODIFIER;
13867
13867
  const normalize = isPlainObject$1(options.processor) && isFunction$1(options.processor.normalize) ? options.processor.normalize : DEFAULT_NORMALIZE;
13868
13868
  const interpolate = isPlainObject$1(options.processor) && isFunction$1(options.processor.interpolate) ? options.processor.interpolate : DEFAULT_INTERPOLATE;
13869
13869
  const type = isPlainObject$1(options.processor) && isString(options.processor.type) ? options.processor.type : DEFAULT_MESSAGE_DATA_TYPE;
@@ -15706,7 +15706,7 @@ const en = {
15706
15706
  rotate: "Rotate",
15707
15707
  lock: "Lock",
15708
15708
  unlock: "Unlock",
15709
- appTitle: "Print Designer",
15709
+ appTitle: "Report Template Editor",
15710
15710
  testData: "Test Data",
15711
15711
  invalidJson: "Invalid JSON. Changes were not saved.",
15712
15712
  testDataKeyChanged: "Test data keys cannot be changed. Please only edit values.",
@@ -15789,7 +15789,7 @@ const en = {
15789
15789
  close: "Close"
15790
15790
  },
15791
15791
  onboarding: {
15792
- title: "Welcome to Print Designer",
15792
+ title: "Welcome to Report Template Editor",
15793
15793
  skip: "Skip",
15794
15794
  next: "Next",
15795
15795
  prev: "Back",
@@ -15797,7 +15797,7 @@ const en = {
15797
15797
  where: "Where: ",
15798
15798
  waiting: "Complete the action to continue automatically…",
15799
15799
  dropHere: "Drop here",
15800
- step1Title: "Welcome to Print Designer",
15800
+ step1Title: "Welcome to Report Template Editor",
15801
15801
  step1Desc: "You will be guided to drag out text and table elements, then bind data fields to each. Every step requires hands-on action and auto-advances when done.",
15802
15802
  step1Hint: "",
15803
15803
  step2Title: "Drag out a Text Element",
@@ -16851,7 +16851,7 @@ const zh = {
16851
16851
  rotate: "旋转",
16852
16852
  lock: "锁定",
16853
16853
  unlock: "解锁",
16854
- appTitle: "打印设计器",
16854
+ appTitle: "报告模板编辑器",
16855
16855
  testData: "测试数据",
16856
16856
  invalidJson: "JSON 无效,未保存更改。",
16857
16857
  testDataKeyChanged: "测试数据的键不允许修改,请仅编辑值。",
@@ -16934,7 +16934,7 @@ const zh = {
16934
16934
  close: "关闭"
16935
16935
  },
16936
16936
  onboarding: {
16937
- title: "欢迎使用打印设计器",
16937
+ title: "欢迎使用报告模板编辑器",
16938
16938
  skip: "跳过",
16939
16939
  next: "下一步",
16940
16940
  prev: "上一步",
@@ -16942,7 +16942,7 @@ const zh = {
16942
16942
  where: "位置:",
16943
16943
  waiting: "请完成操作后自动继续…",
16944
16944
  dropHere: "拖到此处",
16945
- step1Title: "欢迎使用打印设计器",
16945
+ step1Title: "欢迎使用报告模板编辑器",
16946
16946
  step1Desc: "接下来将引导你拖出文本与表格两大元素,并完成字段绑定。每一步都需要你亲手操作,完成后自动进入下一步。",
16947
16947
  step1Hint: "",
16948
16948
  step2Title: "拖出文本元素",
@@ -21237,29 +21237,181 @@ function collapseLoopPages(currentPages, originalTemplatePages) {
21237
21237
  }
21238
21238
  const REPORT_MATERIALIZE_OVERFLOW_PAGE_PREFIX = "report-custom-table-";
21239
21239
  const REPORT_MATERIALIZE_ELEMENT_ID_SEGMENT = "-report-custom-table-";
21240
+ const REPORT_MATERIALIZE_AFTER_TABLE_GAP = 10;
21240
21241
  const isReportMaterializeOverflowPage = (page2) => typeof (page2 == null ? void 0 : page2.id) === "string" && page2.id.startsWith(REPORT_MATERIALIZE_OVERFLOW_PAGE_PREFIX);
21241
21242
  const isReportMaterializedCustomTable = (element) => (element == null ? void 0 : element.type) === ElementType.CUSTOM_TABLE && typeof (element == null ? void 0 : element.id) === "string" && element.id.includes(REPORT_MATERIALIZE_ELEMENT_ID_SEGMENT);
21243
+ const materializedElementStyle = (table) => {
21244
+ const style = (table == null ? void 0 : table.style) && typeof table.style === "object" ? table.style : {};
21245
+ return {
21246
+ ...style,
21247
+ backgroundColor: style.backgroundColor || "transparent",
21248
+ color: style.color || "#000000",
21249
+ fontSize: style.fontSize || 14,
21250
+ textAlign: style.textAlign || "left"
21251
+ };
21252
+ };
21253
+ const diffStyle = (current, base) => {
21254
+ const diff = {};
21255
+ if (!current || typeof current !== "object") return diff;
21256
+ const baseObj = base && typeof base === "object" ? base : {};
21257
+ for (const key of Object.keys(current)) {
21258
+ const value = current[key];
21259
+ if (value === void 0) continue;
21260
+ if (Object.prototype.hasOwnProperty.call(baseObj, key) && baseObj[key] === value) continue;
21261
+ diff[key] = value;
21262
+ }
21263
+ return diff;
21264
+ };
21242
21265
  function unmaterializeReportTables(currentPages, originalTemplatePages) {
21266
+ var _a2, _b, _c, _d, _e;
21243
21267
  if (!Array.isArray(currentPages) || !Array.isArray(originalTemplatePages)) {
21244
21268
  return currentPages;
21245
21269
  }
21246
21270
  const originalTableIdsByPage = /* @__PURE__ */ new Map();
21271
+ const allOriginalTableIds = /* @__PURE__ */ new Set();
21272
+ const originalPageById = /* @__PURE__ */ new Map();
21247
21273
  for (const originalPage of originalTemplatePages) {
21274
+ if (!originalPage || typeof originalPage !== "object") continue;
21248
21275
  const id = originalPage == null ? void 0 : originalPage.id;
21249
- if (typeof id !== "string") continue;
21276
+ if (typeof id === "string") {
21277
+ originalPageById.set(id, originalPage);
21278
+ }
21250
21279
  const tableIds = /* @__PURE__ */ new Set();
21251
21280
  for (const element of (originalPage == null ? void 0 : originalPage.elements) || []) {
21252
21281
  if ((element == null ? void 0 : element.type) === ElementType.TABLE && typeof element.id === "string") {
21253
21282
  tableIds.add(element.id);
21283
+ allOriginalTableIds.add(element.id);
21254
21284
  }
21255
21285
  }
21256
- if (tableIds.size > 0) {
21286
+ if (tableIds.size > 0 && typeof id === "string") {
21257
21287
  originalTableIdsByPage.set(id, tableIds);
21258
21288
  }
21259
21289
  }
21260
21290
  if (originalTableIdsByPage.size === 0) {
21261
21291
  return currentPages;
21262
21292
  }
21293
+ const editsByTableId = /* @__PURE__ */ new Map();
21294
+ const getOrCreateEdits = (tableId) => {
21295
+ let edits = editsByTableId.get(tableId);
21296
+ if (!edits) {
21297
+ edits = { style: {}, cellOverrides: [], colWidths: [], layout: {} };
21298
+ editsByTableId.set(tableId, edits);
21299
+ }
21300
+ return edits;
21301
+ };
21302
+ for (const page2 of currentPages) {
21303
+ if (!page2 || typeof page2 !== "object") continue;
21304
+ const elements = Array.isArray(page2.elements) ? page2.elements : [];
21305
+ for (const element of elements) {
21306
+ if (!element || element.type !== ElementType.CUSTOM_TABLE || typeof element.id !== "string") continue;
21307
+ const baseId = element.id.split(REPORT_MATERIALIZE_ELEMENT_ID_SEGMENT)[0];
21308
+ if (!baseId || !allOriginalTableIds.has(baseId)) continue;
21309
+ let originalTable = null;
21310
+ if (element.id === baseId && typeof page2.id === "string") {
21311
+ const pageTableIds = originalTableIdsByPage.get(page2.id);
21312
+ if (pageTableIds && pageTableIds.has(baseId)) {
21313
+ originalTable = ((_b = (_a2 = originalPageById.get(page2.id)) == null ? void 0 : _a2.elements) == null ? void 0 : _b.find(
21314
+ (el2) => (el2 == null ? void 0 : el2.type) === ElementType.TABLE && el2.id === baseId
21315
+ )) ?? null;
21316
+ }
21317
+ } else {
21318
+ for (const originalPage of originalTemplatePages) {
21319
+ const found = (_c = originalPage == null ? void 0 : originalPage.elements) == null ? void 0 : _c.find(
21320
+ (el2) => (el2 == null ? void 0 : el2.type) === ElementType.TABLE && el2.id === baseId
21321
+ );
21322
+ if (found) {
21323
+ originalTable = found;
21324
+ break;
21325
+ }
21326
+ }
21327
+ }
21328
+ if (!originalTable) continue;
21329
+ const edits = getOrCreateEdits(baseId);
21330
+ Object.assign(edits.style, diffStyle(element.style, materializedElementStyle(originalTable)));
21331
+ const baseStyleByKey = /* @__PURE__ */ new Map();
21332
+ if (Array.isArray(element.reportCellBaseStyles)) {
21333
+ for (const entry of element.reportCellBaseStyles) {
21334
+ if (entry && typeof entry === "object" && Number.isFinite(entry.row) && Number.isFinite(entry.col) && entry.style && typeof entry.style === "object") {
21335
+ baseStyleByKey.set(`${entry.row}:${entry.col}`, entry.style);
21336
+ }
21337
+ }
21338
+ }
21339
+ const chunkDataStart = Number.isFinite(element.reportChunkDataStart) ? element.reportChunkDataStart : 0;
21340
+ if (baseStyleByKey.size > 0 && Array.isArray(element.customTableCells)) {
21341
+ for (const cell of element.customTableCells) {
21342
+ if (!cell || typeof cell !== "object" || !Number.isFinite(cell.row) || !Number.isFinite(cell.col)) continue;
21343
+ const base = baseStyleByKey.get(`${cell.row}:${cell.col}`) || {};
21344
+ const diff = diffStyle(cell.style, base);
21345
+ if (Object.keys(diff).length > 0) {
21346
+ edits.cellOverrides.push({ row: chunkDataStart + cell.row, col: cell.col, style: diff });
21347
+ }
21348
+ }
21349
+ }
21350
+ if (Array.isArray(element.customTableColWidths) && Array.isArray(originalTable.columns)) {
21351
+ const widths = element.customTableColWidths;
21352
+ const columns = originalTable.columns;
21353
+ const count = Math.min(widths.length, columns.length);
21354
+ for (let i = 0; i < count; i += 1) {
21355
+ const originalWidth = Number((_d = columns[i]) == null ? void 0 : _d.width);
21356
+ const currentWidth = Number(widths[i]);
21357
+ const fallbackWidth = Math.max(
21358
+ 60,
21359
+ Math.floor((Number(originalTable.width) > 0 ? Number(originalTable.width) : 100) / Math.max(1, columns.length))
21360
+ );
21361
+ const baselineWidth = Number.isFinite(originalWidth) && originalWidth > 0 ? originalWidth : fallbackWidth;
21362
+ if (Number.isFinite(currentWidth) && currentWidth !== baselineWidth) {
21363
+ edits.colWidths[i] = currentWidth;
21364
+ }
21365
+ }
21366
+ }
21367
+ if (element.id === baseId && originalTable) {
21368
+ const layout = edits.layout;
21369
+ if (typeof element.x === "number" && element.x !== originalTable.x) layout.x = element.x;
21370
+ if (typeof element.y === "number" && element.y !== originalTable.y) layout.y = element.y;
21371
+ if (typeof element.width === "number" && element.width !== originalTable.width) layout.width = element.width;
21372
+ if (element.cellTextMode !== void 0 && element.cellTextMode !== originalTable.cellTextMode) {
21373
+ layout.cellTextMode = element.cellTextMode;
21374
+ }
21375
+ }
21376
+ }
21377
+ }
21378
+ const afterElementsByPageId = /* @__PURE__ */ new Map();
21379
+ for (const page2 of currentPages) {
21380
+ if (!isReportMaterializeOverflowPage(page2)) continue;
21381
+ const overflowElements = Array.isArray(page2.elements) ? page2.elements : [];
21382
+ const nonChunkElements = overflowElements.filter((element) => !isReportMaterializedCustomTable(element));
21383
+ if (nonChunkElements.length === 0) continue;
21384
+ const chunkElement = overflowElements.find((element) => isReportMaterializedCustomTable(element));
21385
+ let targetPageId = null;
21386
+ let originalTable = null;
21387
+ if (chunkElement && typeof chunkElement.id === "string") {
21388
+ const baseId = chunkElement.id.split(REPORT_MATERIALIZE_ELEMENT_ID_SEGMENT)[0];
21389
+ for (const originalPage of originalTemplatePages) {
21390
+ const found = (_e = originalPage == null ? void 0 : originalPage.elements) == null ? void 0 : _e.find(
21391
+ (el2) => (el2 == null ? void 0 : el2.type) === ElementType.TABLE && el2.id === baseId
21392
+ );
21393
+ if (found) {
21394
+ targetPageId = originalPage.id ?? null;
21395
+ originalTable = found;
21396
+ break;
21397
+ }
21398
+ }
21399
+ }
21400
+ if (!targetPageId || !originalTable || !chunkElement) {
21401
+ continue;
21402
+ }
21403
+ const afterStartY = (chunkElement.y ?? 0) + (chunkElement.height ?? 0) + REPORT_MATERIALIZE_AFTER_TABLE_GAP;
21404
+ const tableBottom = (originalTable.y ?? 0) + (originalTable.height ?? 0);
21405
+ const restoredList = afterElementsByPageId.get(targetPageId) ?? [];
21406
+ for (const element of nonChunkElements) {
21407
+ const restored = cloneDeep$1(element);
21408
+ if (typeof restored.y === "number" && Number.isFinite(restored.y)) {
21409
+ restored.y = Math.max(0, restored.y - afterStartY + tableBottom);
21410
+ }
21411
+ restoredList.push(restored);
21412
+ }
21413
+ afterElementsByPageId.set(targetPageId, restoredList);
21414
+ }
21263
21415
  const result = [];
21264
21416
  for (const page2 of currentPages) {
21265
21417
  if (isReportMaterializeOverflowPage(page2)) {
@@ -21287,7 +21439,26 @@ function unmaterializeReportTables(currentPages, originalTemplatePages) {
21287
21439
  if (originalPage && Array.isArray(originalPage.elements)) {
21288
21440
  for (const element of originalPage.elements) {
21289
21441
  if ((element == null ? void 0 : element.type) === ElementType.TABLE && materializedIds.has(element.id)) {
21290
- originalTables.push(cloneDeep$1(element));
21442
+ const restored = cloneDeep$1(element);
21443
+ const edits = editsByTableId.get(element.id);
21444
+ if (edits) {
21445
+ if (Object.keys(edits.style).length > 0) {
21446
+ restored.style = { ...restored.style || {}, ...edits.style };
21447
+ }
21448
+ if (edits.cellOverrides.length > 0) {
21449
+ restored.cellStyleOverrides = edits.cellOverrides;
21450
+ }
21451
+ if (edits.colWidths.length > 0 && Array.isArray(restored.columns)) {
21452
+ restored.columns = restored.columns.map((column, index2) => {
21453
+ const width = edits.colWidths[index2];
21454
+ return width !== void 0 ? { ...column, width } : column;
21455
+ });
21456
+ }
21457
+ if (Object.keys(edits.layout).length > 0) {
21458
+ Object.assign(restored, edits.layout);
21459
+ }
21460
+ }
21461
+ originalTables.push(restored);
21291
21462
  }
21292
21463
  }
21293
21464
  }
@@ -21308,6 +21479,10 @@ function unmaterializeReportTables(currentPages, originalTemplatePages) {
21308
21479
  if (!originalTablesInserted && originalTables.length > 0) {
21309
21480
  nextElements.push(...originalTables);
21310
21481
  }
21482
+ const restoredAfter = afterElementsByPageId.get(String(page2.id));
21483
+ if (restoredAfter && restoredAfter.length > 0) {
21484
+ nextElements.push(...restoredAfter);
21485
+ }
21311
21486
  result.push({ ...page2, elements: nextElements });
21312
21487
  }
21313
21488
  return result;
@@ -22475,18 +22650,18 @@ const useTemplateStore = /* @__PURE__ */ defineStore("templates", {
22475
22650
  if (mode === "remote") return;
22476
22651
  localStorage.setItem("print-designer-templates", JSON.stringify(this.templates));
22477
22652
  },
22478
- buildSavePayload(name2) {
22653
+ buildSavePayload(name) {
22479
22654
  const designerStore = useDesignerStore();
22480
22655
  const targetId = this.currentTemplateId;
22481
22656
  const data = buildPersistedTemplateData(designerStore);
22482
22657
  return {
22483
22658
  id: targetId,
22484
- name: name2,
22659
+ name,
22485
22660
  data,
22486
22661
  isNew: !targetId
22487
22662
  };
22488
22663
  },
22489
- async saveCurrentTemplate(name2, isAutoSave = false) {
22664
+ async saveCurrentTemplate(name, isAutoSave = false) {
22490
22665
  var _a2, _b, _c;
22491
22666
  const { mode, endpoints, headers, fetcher } = getCrudConfig();
22492
22667
  const designerStore = useDesignerStore();
@@ -22502,7 +22677,7 @@ const useTemplateStore = /* @__PURE__ */ defineStore("templates", {
22502
22677
  if (targetId && existingTemplate) {
22503
22678
  const oldData = sanitizeTemplateData(existingTemplate.data || {});
22504
22679
  const newData = sanitizeTemplateData(data);
22505
- if (existingTemplate.name === name2 && isEqual(oldData, newData)) {
22680
+ if (existingTemplate.name === name && isEqual(oldData, newData)) {
22506
22681
  return;
22507
22682
  }
22508
22683
  }
@@ -22516,7 +22691,7 @@ const useTemplateStore = /* @__PURE__ */ defineStore("templates", {
22516
22691
  const upsertBase = targetId ? this.templateDetailCache[targetId] || existingTemplate || {} : {};
22517
22692
  const payloadBase = {
22518
22693
  id: targetId || v4(),
22519
- name: name2,
22694
+ name,
22520
22695
  // 只落盘白名单 data,不再合并 upsertBase.data(避免 imageBundle/fieldMapping
22521
22696
  // 等历史遗留字段与旧画布配置回流到模板 JSON)
22522
22697
  data,
@@ -22559,14 +22734,14 @@ const useTemplateStore = /* @__PURE__ */ defineStore("templates", {
22559
22734
  if (idx >= 0) {
22560
22735
  this.templates[idx] = normalizeEntityConstraints({
22561
22736
  ...this.templates[idx],
22562
- name: name2,
22737
+ name,
22563
22738
  data,
22564
22739
  updatedAt: Date.now(),
22565
22740
  ext: withExtAvailableVariables((_c = this.templates[idx]) == null ? void 0 : _c.ext, designerStore.availableVariables)
22566
22741
  });
22567
22742
  }
22568
22743
  } else {
22569
- this.createTemplate(name2, data);
22744
+ this.createTemplate(name, data);
22570
22745
  }
22571
22746
  this.saveToLocalStorage();
22572
22747
  } finally {
@@ -22622,7 +22797,7 @@ const useTemplateStore = /* @__PURE__ */ defineStore("templates", {
22622
22797
  this.saveToLocalStorage();
22623
22798
  }
22624
22799
  },
22625
- async createTemplate(name2, data, extraValues, templateMode = "create") {
22800
+ async createTemplate(name, data, extraValues, templateMode = "create") {
22626
22801
  var _a2, _b;
22627
22802
  const { mode, endpoints, headers, fetcher } = getCrudConfig();
22628
22803
  const designerStore = useDesignerStore();
@@ -22630,7 +22805,7 @@ const useTemplateStore = /* @__PURE__ */ defineStore("templates", {
22630
22805
  const newData = sanitizeTemplateData(nextData);
22631
22806
  const templateBase = applyModalExtraValues({
22632
22807
  id: v4(),
22633
- name: name2,
22808
+ name,
22634
22809
  data: newData,
22635
22810
  updatedAt: Date.now(),
22636
22811
  ext: withExtAvailableVariables(void 0, designerStore.availableVariables)
@@ -23482,10 +23657,17 @@ const buildCustomTableForChunk = (table, processed, chunk, chunkIndex) => {
23482
23657
  ...footerRowHeights
23483
23658
  ].map((height2) => Math.ceil(toPositiveNumber(height2, getTableRowHeight(table))));
23484
23659
  const cells = [];
23660
+ const baseStyles2 = [];
23485
23661
  const columns = processed.columns;
23662
+ const recordBaseStyle = (cell) => {
23663
+ if (!cell) return;
23664
+ baseStyles2.push({ row: cell.row, col: cell.col, style: { ...cell.style } });
23665
+ };
23486
23666
  if (includeHeader) {
23487
23667
  columns.forEach((column, colIndex) => {
23488
- cells.push(buildHeaderCell(table, column, colIndex));
23668
+ const cell = buildHeaderCell(table, column, colIndex);
23669
+ cells.push(cell);
23670
+ recordBaseStyle(cell);
23489
23671
  });
23490
23672
  }
23491
23673
  const dataRowOffset = includeHeader ? 1 : 0;
@@ -23500,7 +23682,10 @@ const buildCustomTableForChunk = (table, processed, chunk, chunkIndex) => {
23500
23682
  dataRows.length - rowOffset,
23501
23683
  columns.length - colIndex
23502
23684
  );
23503
- if (cell) cells.push(cell);
23685
+ if (cell) {
23686
+ cells.push(cell);
23687
+ recordBaseStyle(cell);
23688
+ }
23504
23689
  });
23505
23690
  });
23506
23691
  if (includeFooter) {
@@ -23516,10 +23701,29 @@ const buildCustomTableForChunk = (table, processed, chunk, chunkIndex) => {
23516
23701
  processed.footerData.length - rowOffset,
23517
23702
  columns.length - colIndex
23518
23703
  );
23519
- if (cell) cells.push(cell);
23704
+ if (cell) {
23705
+ cells.push(cell);
23706
+ recordBaseStyle(cell);
23707
+ }
23520
23708
  });
23521
23709
  });
23522
23710
  }
23711
+ if (Array.isArray(table.cellStyleOverrides) && table.cellStyleOverrides.length > 0) {
23712
+ const overrideByKey = /* @__PURE__ */ new Map();
23713
+ for (const override of table.cellStyleOverrides) {
23714
+ if (override && typeof override === "object" && Number.isFinite(override.row) && Number.isFinite(override.col) && override.style && typeof override.style === "object") {
23715
+ overrideByKey.set(`${override.row}:${override.col}`, override.style);
23716
+ }
23717
+ }
23718
+ if (overrideByKey.size > 0) {
23719
+ for (const cell of cells) {
23720
+ const override = overrideByKey.get(`${chunk.start + cell.row}:${cell.col}`);
23721
+ if (override) {
23722
+ cell.style = { ...cell.style, ...override };
23723
+ }
23724
+ }
23725
+ }
23726
+ }
23523
23727
  const contentHeight = rowHeights.reduce((total, value) => total + value, 0);
23524
23728
  const height = Math.max(1, contentHeight + CUSTOM_TABLE_HEIGHT_BUFFER);
23525
23729
  return {
@@ -23543,6 +23747,10 @@ const buildCustomTableForChunk = (table, processed, chunk, chunkIndex) => {
23543
23747
  customTableColWidths: columns.map((column) => toPositiveNumber(column.width, DEFAULT_COLUMN_WIDTH)),
23544
23748
  customTableRowHeights: rowHeights,
23545
23749
  customTableCells: cells,
23750
+ // 物化块内部元数据(仅内存中,不随模板保存):供 unmaterializeReportTables
23751
+ // 在保存时把用户编辑按绝对坐标 diff 回原始 TABLE
23752
+ reportChunkDataStart: chunk.start,
23753
+ reportCellBaseStyles: baseStyles2,
23546
23754
  style: {
23547
23755
  ...cloneDeep$1(table.style),
23548
23756
  backgroundColor: table.style.backgroundColor || "transparent",
@@ -24428,11 +24636,11 @@ const useDesignerStore = /* @__PURE__ */ defineStore("designer", {
24428
24636
  }
24429
24637
  return true;
24430
24638
  },
24431
- saveCustomElementEditAs(name2) {
24639
+ saveCustomElementEditAs(name) {
24432
24640
  var _a2;
24433
24641
  const element = this.selectedElement || ((_a2 = this.pages[0]) == null ? void 0 : _a2.elements[0]);
24434
24642
  if (!element) return false;
24435
- this.addCustomElement(name2, element);
24643
+ this.addCustomElement(name, element);
24436
24644
  return true;
24437
24645
  },
24438
24646
  copyPage(index2) {
@@ -26381,13 +26589,13 @@ const useDesignerStore = /* @__PURE__ */ defineStore("designer", {
26381
26589
  this.saveCustomElements();
26382
26590
  }
26383
26591
  },
26384
- async addCustomElement(name2, element, extraValues) {
26592
+ async addCustomElement(name, element, extraValues) {
26385
26593
  var _a2, _b;
26386
26594
  const { mode, endpoints, headers, fetcher } = getCrudConfig();
26387
26595
  const template = applyModalExtraValues(
26388
26596
  {
26389
26597
  id: v4(),
26390
- name: name2,
26598
+ name,
26391
26599
  element: cloneDeep$1(element),
26392
26600
  ext: {}
26393
26601
  },
@@ -35210,7 +35418,7 @@ const _sfc_main$P = /* @__PURE__ */ defineComponent({
35210
35418
  const renderBarcode = async () => {
35211
35419
  if (!barcodeRef.value) return;
35212
35420
  try {
35213
- const jsBarcodeModule = await import("./JsBarcode-CUSWbmPW.js").then((n) => n.JsBarcode);
35421
+ const jsBarcodeModule = await import("./JsBarcode-BO87HgIp.js").then((n) => n.JsBarcode);
35214
35422
  const JsBarcode = (jsBarcodeModule == null ? void 0 : jsBarcodeModule.default) || jsBarcodeModule;
35215
35423
  const content = resolvedContent.value;
35216
35424
  if (!content) return;
@@ -35365,7 +35573,7 @@ const _sfc_main$O = /* @__PURE__ */ defineComponent({
35365
35573
  });
35366
35574
  const renderQR = async () => {
35367
35575
  try {
35368
- const qrcodeModule = await import("./browser-hdgt6jOx.js").then((n) => n.browser);
35576
+ const qrcodeModule = await import("./browser-Ck0N2Y2e.js").then((n) => n.browser);
35369
35577
  const QRCode = (qrcodeModule == null ? void 0 : qrcodeModule.default) || qrcodeModule;
35370
35578
  const content = resolvedContent.value;
35371
35579
  if (!content) {
@@ -36101,7 +36309,7 @@ const _sfc_main$K = /* @__PURE__ */ defineComponent({
36101
36309
  return {
36102
36310
  ...base,
36103
36311
  radar: {
36104
- indicator: indicatorNames.map((name2, i) => ({ name: name2, max: indicatorMax[i] })),
36312
+ indicator: indicatorNames.map((name, i) => ({ name, max: indicatorMax[i] })),
36105
36313
  shape: radarShape,
36106
36314
  center: ["50%", "55%"],
36107
36315
  radius: "65%",
@@ -38736,7 +38944,7 @@ const usePrint = () => {
38736
38944
  const svgToCanvas = async (root) => {
38737
38945
  const svgs = root.querySelectorAll("svg");
38738
38946
  if (svgs.length === 0) return;
38739
- const { Canvg } = await import("./index.es-DRUO_g4b.js");
38947
+ const { Canvg } = await import("./index.es-CZXhHw-0.js");
38740
38948
  svgs.forEach((svg) => {
38741
38949
  const parent = svg.parentElement;
38742
38950
  if (!parent) return;
@@ -39324,7 +39532,7 @@ const usePrint = () => {
39324
39532
  }
39325
39533
  try {
39326
39534
  const generatePageImage = async (page2) => {
39327
- const domToImageModule = await import("./dom-to-image-more.min-DxrDS65t.js").then((n) => n.domToImageMore_min);
39535
+ const domToImageModule = await import("./dom-to-image-more.min-Ce2c21tO.js").then((n) => n.domToImageMore_min);
39328
39536
  const domtoimage = (domToImageModule == null ? void 0 : domToImageModule.default) || domToImageModule;
39329
39537
  const canvas = await domtoimage.toCanvas(page2, {
39330
39538
  filter: (node) => {
@@ -39382,7 +39590,7 @@ const usePrint = () => {
39382
39590
  cleanup = source.cleanup;
39383
39591
  const { container, tempWrapper: wrapper } = await processContentForImage(source.content, width, height, true, source.getComputedStyleFn);
39384
39592
  tempWrapper = wrapper;
39385
- const jsPdfModule = await import("./jspdf.es.min-De5r7mEj.js");
39593
+ const jsPdfModule = await import("./jspdf.es.min-D9h_LgKD.js");
39386
39594
  const jsPDF = (jsPdfModule == null ? void 0 : jsPdfModule.default) || (jsPdfModule == null ? void 0 : jsPdfModule.jsPDF) || jsPdfModule;
39387
39595
  const pdf = new jsPDF({
39388
39596
  orientation: width > height ? "l" : "p",
@@ -39794,7 +40002,7 @@ const usePrint = () => {
39794
40002
  link.click();
39795
40003
  document.body.removeChild(link);
39796
40004
  } else {
39797
- const jsZipModule = await import("./jszip.min-C2EJyYJw.js").then((n) => n.jszip_min);
40005
+ const jsZipModule = await import("./jszip.min-C3xLIq13.js").then((n) => n.jszip_min);
39798
40006
  const JSZip = (jsZipModule == null ? void 0 : jsZipModule.default) || jsZipModule;
39799
40007
  const zip = new JSZip();
39800
40008
  await Promise.all(pageImages.map(async (dataUrl, index2) => {
@@ -40603,7 +40811,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
40603
40811
  },
40604
40812
  emits: ["update:visible", "update:value", "close"],
40605
40813
  setup(__props, { emit: __emit }) {
40606
- const Editor = /* @__PURE__ */ defineAsyncComponent(() => import("./index-CFwMsAjW.js").then((m) => m.Editor));
40814
+ const Editor = /* @__PURE__ */ defineAsyncComponent(() => import("./index-sJJEP3Bf.js").then((m) => m.Editor));
40607
40815
  const { t } = useI18n();
40608
40816
  const { isDark: isDark2 } = useTheme();
40609
40817
  const modalContainer = inject("modal-container", ref(null));
@@ -40745,14 +40953,14 @@ const el = (type, x, y, overrides = {}) => {
40745
40953
  }
40746
40954
  };
40747
40955
  };
40748
- const buildWizardTemplateData = (name2, inference, testData) => {
40956
+ const buildWizardTemplateData = (name, inference, testData) => {
40749
40957
  const { width: pageWidth, height: pageHeight } = PAPER_SIZES.A4;
40750
40958
  const elements = [];
40751
40959
  elements.push(
40752
40960
  el(ElementType.LONG_TEXT, 120, 30, {
40753
40961
  width: pageWidth - 240,
40754
40962
  height: 60,
40755
- content: name2,
40963
+ content: name,
40756
40964
  style: { fontSize: 28, color: "#111827", textAlign: "center", autoHeight: false }
40757
40965
  })
40758
40966
  );
@@ -40841,7 +41049,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
40841
41049
  const designerStore = useDesignerStore();
40842
41050
  const templateStore = useTemplateStore();
40843
41051
  const modalContainer = inject("modal-container", "body");
40844
- const name2 = ref("");
41052
+ const name = ref("");
40845
41053
  const jsonText = ref("");
40846
41054
  const parseError = ref("");
40847
41055
  const generating = ref(false);
@@ -40885,7 +41093,7 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
40885
41093
  };
40886
41094
  const loadSample = () => {
40887
41095
  jsonText.value = SAMPLE_JSON;
40888
- name2.value = t("examples.inspection.name");
41096
+ name.value = t("examples.inspection.name");
40889
41097
  parseData();
40890
41098
  };
40891
41099
  const inferredLabel = computed(() => {
@@ -40895,13 +41103,13 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
40895
41103
  tables: inference.value.tables.length
40896
41104
  });
40897
41105
  });
40898
- const canGenerate = computed(() => Boolean(inference.value && name2.value.trim() && !generating.value));
41106
+ const canGenerate = computed(() => Boolean(inference.value && name.value.trim() && !generating.value));
40899
41107
  const handleGenerate = async () => {
40900
41108
  if (!canGenerate.value) return;
40901
41109
  const rawData = parseData();
40902
41110
  if (!rawData || !inference.value) return;
40903
41111
  const normalizedData = Array.isArray(rawData) ? { list: rawData } : rawData;
40904
- const templateName = name2.value.trim();
41112
+ const templateName = name.value.trim();
40905
41113
  generating.value = true;
40906
41114
  try {
40907
41115
  const templateData = buildWizardTemplateData(templateName, inference.value, normalizedData);
@@ -40960,13 +41168,13 @@ const _sfc_main$u = /* @__PURE__ */ defineComponent({
40960
41168
  createBaseVNode("div", _hoisted_6$o, [
40961
41169
  createBaseVNode("label", _hoisted_7$m, toDisplayString$1(unref(t)("dataWizard.nameLabel")), 1),
40962
41170
  withDirectives(createBaseVNode("input", {
40963
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => name2.value = $event),
41171
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => name.value = $event),
40964
41172
  type: "text",
40965
41173
  class: "w-full px-3 py-2 border border-gray-300 dark:border-gray-700 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
40966
41174
  placeholder: unref(t)("dataWizard.namePlaceholder"),
40967
41175
  onKeydown: _cache[2] || (_cache[2] = withKeys(($event) => emit2("close"), ["esc"]))
40968
41176
  }, null, 40, _hoisted_8$k), [
40969
- [vModelText, name2.value]
41177
+ [vModelText, name.value]
40970
41178
  ])
40971
41179
  ]),
40972
41180
  createBaseVNode("div", _hoisted_9$i, [
@@ -41170,7 +41378,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
41170
41378
  delete finalValues.templateModalForm;
41171
41379
  return finalValues;
41172
41380
  };
41173
- const buildModalInitialValues = (name2, mode, templateId = null) => {
41381
+ const buildModalInitialValues = (name, mode, templateId = null) => {
41174
41382
  const configItem = getModalConfigItem(mode);
41175
41383
  const configInitialValues = (configItem == null ? void 0 : configItem.initialValues) && typeof configItem.initialValues === "object" ? { ...configItem.initialValues } : {};
41176
41384
  const savedValues = getTemplateModalSavedValues(templateId, mode);
@@ -41179,7 +41387,7 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
41179
41387
  ...savedValues
41180
41388
  };
41181
41389
  if (!Object.prototype.hasOwnProperty.call(initialValues, "name")) {
41182
- initialValues.name = name2;
41390
+ initialValues.name = name;
41183
41391
  }
41184
41392
  return initialValues;
41185
41393
  };
@@ -41554,9 +41762,9 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
41554
41762
  }
41555
41763
  };
41556
41764
  const handleModalSave = (payload) => {
41557
- const name2 = resolveModalName(payload);
41765
+ const name = resolveModalName(payload);
41558
41766
  const extraValues = resolveModalExtraValues(payload);
41559
- if (!name2) return;
41767
+ if (!name) return;
41560
41768
  if (modalMode.value === "create") {
41561
41769
  if (store.currentTemplateId) {
41562
41770
  const currentTemplate2 = store.templates.find((tpl) => tpl.id === store.currentTemplateId);
@@ -41568,11 +41776,11 @@ const _sfc_main$t = /* @__PURE__ */ defineComponent({
41568
41776
  if (!targetTemplateId.value) {
41569
41777
  designerStore2.resetCanvas();
41570
41778
  }
41571
- store.createTemplate(name2, void 0, extraValues);
41779
+ store.createTemplate(name, void 0, extraValues);
41572
41780
  } else if (modalMode.value === "edit" && targetTemplateId.value) {
41573
- store.editTemplate(targetTemplateId.value, name2, extraValues);
41781
+ store.editTemplate(targetTemplateId.value, name, extraValues);
41574
41782
  } else if (modalMode.value === "copy" && targetTemplateId.value) {
41575
- store.copyTemplate(targetTemplateId.value, name2, extraValues);
41783
+ store.copyTemplate(targetTemplateId.value, name, extraValues);
41576
41784
  }
41577
41785
  };
41578
41786
  const modalTitle = computed(() => {
@@ -43154,522 +43362,6 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
43154
43362
  const PreviewModal = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-97a5fbbf"]]);
43155
43363
  const _imports_0 = "data:image/png;base64,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";
43156
43364
  const _imports_1 = "data:image/x-icon;base64,AAABAAEAUFAAAAEAIADoZwAAFgAAACgAAABQAAAAoAAAAAEAIAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVL/UANDu7AD///gArePmCtzw8Drn9fOB7/j3w/X7+eX5/Pr3/P78+fz+/fn8/vz5/P78+fz++/n8/fr5+/z6+fr9+/n7/fv5+v37+fr++/n8/vv6/P77+v3++/r8/fr6/Pz6+fz8+/n8/fv6/f78+v3+/Pr8/vv5+/76+fz+/Pr9/vz5/f/9+fz//Pn7/vz5/P78+f3+/Pn9//35/f/9+fz+/fn8/v35/f78+f3+/Pn9//35+/79+fr+/Pn7/vz5/P37+fz8+vn9/Pr5/f37+fz9+/n7/vv5/P77+fz+/Pn6/fz59vv6+PT6+OXw+fe95vbzh+D18D/F6ukO///+ANbx7QCBztQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK/i4AD2/PYAyOvoC+f3807w+fet9vr56fn8+/77/f3//P79//z9/f/8/f3/+/39//3+/f/+/v3//f79//3+/f/9/vz//f79//3+/f/9/vz//P79//7+/f/+/v3//v79//79/P/9/fz//f38//7+/P/+/f3//f39//39/f/8/f3//f79//7//f/+//7//v7+//7//f/9/v7//v7+/////v///////v7+//7//v/+//3//v/+/////v/+/v7//f79//7+/f///v3//vz8//79/P/+/v3//v79//39/f/9/f3//v79//z9/f/5/fz/+f38//n9/P/4/Pr+9/v56/P6+Lnp9/Niz+7rFv//+wC86ecAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADP7+8A////AOT28jfy+ves+Pz69Pj7+//4+/v/+fz8//z9/f/9/f3//f39//z9/f/7/f3//P39//39/f/8/f3//f79//7+/f/+//3//v/9//7+/f/+/v3//v/9//7//f/9/v3//f39//39/f/9/v3//f39//z9/f/9/f3//f79//3+/f/9/v7//v79//7+/f/+//7//v/9//7+/v/+/v7//v79//7+/v/+/v7//v79//7+/f/+/v3//f79//3+/f/9/f3//v38//3+/f/9/f3//v79//7+/f/9/v3//f79//3+/f/+/v3//f79//v9/P/6/Pz/+fz8//j8/P/4/Pz/+vz8//n8+/v0+vjC5PbxT5ne2wXX8u8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3/TzALro6Abp9/Ro9vz64fj8/P/5/Pz/+Pz8//j8/P/8/f3//f39//39/f/+/fz//f39//z9/f/9/f3//f79//z+/v/9/v3//P79//3+/P/9/fz//P39//z9/f/9/v3//v79//7+/f/9/f3//f39//39/f/9/f3//f39//39/P/9/v3//P39//z9/f/9/v3//v79//7+/f/+//3//v79//z9/f/8/f3//f79//7+/f/+/v3//v79//39/f/8/f3/+fz9//n8/f/8/fz//P39//39/f/9/v3//f39//z9/f/9/v3//f79//3+/f/9/v3//P38//v9/P/7/Pz/+vz9//n8/f/6/Pz/+/z8//v9/P/4/Prw6/f0hcjs6g/l9fEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANfx8QDT7+4J8fv5ffn9/PX4/fz/+Pz7//n8/P/6/Pz/+/38//3+/f/9/f3//f39//79/P/+/fz//v79//7+/f/9/v3//f7+//39/f/8/f3//P38//z9/P/7/fz//P38//v9/P/8/f3//f39//39/P/8/fz//f38//39/P/+/fz//f39//z9/f/8/f3/+/39//z9/f/9/v3//v79//3+/f/9/fz//f38//v9/f/8/f3//v79//7+/f/9/f3//v38//39/f/6/fz/+v38//z9/f/8/fz//P38//z9/f/6/fz/+v38//z9/f/+/v3//v79//3+/f/9/f3//f38//z8/P/9/f3//f39//z9/f/8/f3/+/39//v8/P/5/Pv88fr3mdry7RHa8+4AAAAAAAAAAAAAAAAAAAAAAAAAAACx4eUAx+rsB/H7+n75/v33+f39//n8/P/6/Pz/+vz8//v8/P/8/fz//f39//z9/f/9/f3//v79//79/P/9/f3//f79//z9/f/8/f3/+/z9//z9/f/9/v3//f38//z8+//6/Pz/+vz8//v9/f/8/f3//P39//v9/P/8/fz//Pz8//39/P/9/f3//P39//z9/f/8/f3//P39//3+/f/9/v7//f39//v8/P/6/Pz/+/38//v9/P/8/f3//f39//v8/P/8/Pz//P38//z9/f/8/f3/+/38//r8/P/6/Pz/+/39//v9/P/6/Pz//f79//3+/f/9/v3//v79//39/f/8/f3/+/z8//z9/f/9/v7//P39//39/f/9/f3/+/39//r8/P/5/fv88vr2l8vu6g3E6egAAAAAAAAAAAAAAAAALKC8AH/K1ALn9vZs+P799fn9/f/7/f3/+/39//r8/P/7/Pz/+/z8//r8/P/7/Pz/+/z8//z8/P/9/f3//P39//z9/P/8/f3/+/39//r8/P/7/Pz//f39//39/f/8/fz/+vz8//r8/P/8/fz//P38//3+/P/9/v3//Pz8//v8/P/7/Pz/+vz8//v8/P/7/f3//f39//3+/f/9/v3//f79//z+/v/8/f3/+/39//z9/f/8/fz/+v38//z9/f/8/fz//Pz7//z8/P/8/f3//P38//39/f/7/P3/+vz8//r8/P/8/f3/+/38//r9/P/8/fz//P79//3+/f/9/f3//f39//z9/f/7/Pz//Pz9//39/f/9/v3//f79//3+/f/8/f3/+/38//v9/P/6/fv67fj1e6fd3gNKv8AAAAAAAAAAAADg9/QA4vX1Ovb9/OX6/f3/+vz8//v9/f/7/f3/+/z8//v8/P/7/Pz/+/z8//v8/P/8/Pz//fz8//z9/P/8/f3//f39//3+/f/8/f3/+/z8//39/f/9/v3//v79//39/f/6/Pz/+vz8//z8/P/8/f3//f79//7+/f/8/f3/+/38//v8/P/7+/v/+/z8//39/f/+/v3//v/9//7+/f/8/f3//P39//z9/f/9/v3//f7+//3+/f/7/f3//P38//39/P/9/fz//f39//39/f/8/fz/+/38//v9/f/8/f3/+/39//39/f/9/v3//P39//v9/f/7/f3//P39//z9/f/8/f3/+/39//v8/f/9/f3//v79//7//f/+/v3//f79//z+/f/8/f3//P39//z9/P/5/Prr6Pf0RP///wAAAAAARsnWAMPr7A3x+vmw+f38//v9/P/9/f3//f39//z9/f/7/f3//P39//39/f/9/fz//P38//39/P/9/f3//f39//z9/f/7/f3//P39//z9/f/8/f3//v79//7+/f/9/v3//P38//r8/P/7/Pz//f39//7+/f///v3//v79//7+/f/+/v3//f79//79/P/9/f3//v79//7+/f/+//3//v79//z9/f/7/f3//f39//7//f/+/v3//v/9//7+/f/+/v3//v79//7//f/+/v3//f79//39/f/7/fz/+/z8//z8/P/8/Pz//P39//3+/f/8/f3//P39//3+/f/+/v3//f78//z9/f/7/f3/+/z9//3+/f/+/vz//v78//7+/f/9/v3//f79//7+/f/9/f3/+/39//z9/P/0+/i6yu3sEUDAzwD///wA4fb1Vff8/Pb6/Pz/+/38//z9/f/8/f3//P39//z9/f/9/v3////////////9//7//f79//7+/f/+/v3//f39//z9/f/8/f3//P7+/////////////f79//7+/f/9/v3/+/39//////////////////7//v///////////////v///v3//v79//////////////////7+/f/9/v3//P7+//7//////////////////v////////////////////////////////////7//f39//r8/P/7/Pz//P39//v9/P/8/fz//v///////////////////////v/7/fz/+vz8//r8/P/7/fz//v///////////////v/+//7//f/+//3//v/9//z9/f/8/f3//P38//n8+/jo9/Vb////ALbq7Qvw+vqx+f38//v8/P/8/f3//P39//z9/f/6/Pz//P39//T19P+2trX/q6yr/9vd3f/+/v7//v79//7+/f/9/v3//f39//7+/v/l5uX/q6up/6+urf/s7u3//v7+//7+/f/z9PT/tra1/6ysq//g4+P/8PPy/7Ozsv+trav/6Ojn//7//v/7/Pr/vb69/6Oko//Mzcz//f7+//z+/v/h4+L/pqen/5GSkv/AwcD/+/v7/8PEw/+srav/q6yr/6qrqf+trav/vb68/9/g3v/7+/v//P7+//v8/P/8/f3//P78//r7+v/Q0tH/np+e/5GSkP+xsrD/5ujn//v+/v/6/Pz/+/z8//n6+v/Kysn/np2c/6Ghn//h4+P//v/+//3//f/8/f3/+/39//v9/f/6/fz/+f78//P7+bPG7esM3PX1Off8/On6/Pz//f38//7+/v/9/v3//f39//v8/f/9/v7/4uTj/ycoKP8DAwP/lJaW///////+/v3//v79//7+/P/9/v3//////7i5uf8JCgn/GBgX/9LT0v/////////+/+Xm5v8pKir/BQUE/6yvrv/b3t7/Gxwc/wsMC/+/v7////////b29v9GRkf/AQEB/3l6ev/+////1NbW/zg5OP8DAwP/AAAA/09PTv/z8/T/SUpJ/wMDA/8CAwP/AAEB/wACAf8HCQj/IyQj/3Jycv/g4uP//v////3+/f/29/b/iYqJ/xoaGv8AAAD/AAAA/wUGBf87PDv/wcPD//3+/v/9/v7/oKKi/xcYF/8AAAD/AgIB/6qrq////////P79//v9/f/7/f3//P39//39/f/6/f3/+f376uX49T7o+vl5+P39/Pv9/f/+/v3//v7+//7+/v/9/v7//P39//7//v/j5eT/JSYm/wAAAP+Sk5P///////7+/P/9/fz//v38//z9/P//////tbe3/wYHB/8VFRT/0NLS//////////7/5Obl/yYnJ/8CAgH/q66u/9rd3f8YGRn/CQkJ/76+v///////9fb2/0VGR/8AAAD/ent7//////+HiIn/AAAA/xcXF/9wcnL/nJ2d//P08/9GRkf/AAAA/xwcHP9GR0f/QkNC/yQlJP8AAAD/AAAA/0hJSP/f4uH//v///5iZmv8JCQn/BgYG/1RWVf92dnX/KSop/wAAAP8yMjL/3N7e//T39v9BQ0P/AAAA/z4/P/+AgID/y8vL/////v/9/v3/+/39//39/f/8/f3//f79//v9/f/5/fz+7/n2gu37+rL5/f3/+/39//7+/f/+/v7//v7+//7+/v/8/f3//v/+/+Xm5f8mKCj/AAAA/5SVlv/////////9/////v////3//f37//////+2t7f/BgcH/xUVFP/Q0dH//////////v/j5eX/Jicn/wICAf+rrq7/19zc/xgYGP8JCQj/vL2+///////19/b/R0hI/wAAAP95e3r//////3Fycv8AAAD/VFRU//v9/f/+////9fb1/0RFRf8AAAD/ZWVl//j4+P/29vX/39/f/3R0dP8ICAj/AAAA/3Bycf/t8fH/PT9A/wAAAP9aW1v/8/T0///////GxsX/Gxsb/wEBAf+QkZH/7O/v/y0uLv8AAAD/np+f///////+/v3//v79//7+/f/+/v3//v79//z+/f/8/f3//P39//n9/P/y+ve88vz51Pj9/P/7/f3//f79//7+/v/+/v3//f79//z9/f////7/5ubl/yYoKP8AAAD/P0BA/2lpaP9sbWv/iIiH/8jIx//6+vn//////7i4uP8GBwf/FRUU/9HT0//////////+/+Tm5v8mJyf/AgIA/6utrf/X29v/FxgX/wkJCf+9vsD///////b4+P9JSUn/AAAA/3p8e///////bXBw/wAAAP9YWFj/+vz8//z9/P/09fT/Q0VE/wAAAP9paWn//v////7+/f//////9vb1/2BgX/8AAAD/JiYl/8PExP8jJSX/AAEA/52goP/+/////f/9//j59/9GRkb/AAAA/3Jzcv/r7e3/LC0t/wABAP+lp6b///////7+/f/+/v3//v79//7+/v/9/v7//v79//7+/f/9/v3/+/38//b7+Nj2/Prm+f39//z9/f/+/v7//v/9//7+/f/9/f3//Pz8//7//v/l5uX/Jicn/wAAAP8AAAD/AAAA/wAAAP8AAAD/GBgY/4+QkP/7+/v/urq6/wgJCP8NDQz/vL2+////////////5ufm/yYnJ/8CAQD/rK6t/9Xa2v8WFxb/CAgI/7i6u///////+Pr4/0ZHR/8AAAD/enx8//////9vcnL/AAAA/1dXV//7/fz//P79//P19P9DRkX/AAAA/2doZ//9//7//v79//39/f//////tLW0/wcHBv8PDw7/r66u/ywsLP8AAAD/ioyM//3/////////8PHw/zg4Of8AAAD/f4CA/+/x8f8uMDD/AAAA/6Wop////////v79//7+/f/9/v3//f7+//7+/v/+/v7//f78//3+/f/8/fz/9/z65/P8+vf7/fz//P39//3+/f/+/v3//v78//39/P/7/Pz//f7+/+Tl5P8mJyf/AAAA/11eXv+fn5//lJSU/09PT/8DBAP/EBAQ/76+vv/AwMD/CQsK/wABAP84OTj/l5iX/8DAv//k5eX/Jygo/wICAf+tsLD/1NnZ/xUXFv8BAQD/W1xc/9fY2P+ys7P/Gxsb/wAAAP+Jior/6uvr/15gYP8AAAD/TU1N/9HU0//g4+L/9Pb1/0VGRv8AAAD/Zmdm//3//v/9/v3//P38///////DxMP/DAwL/wsLCv/Av7//Y2Nj/wAAAP8vMC//vsLC/+Hi4f+IiIj/CQkJ/wkJCf+wsbH/0dPS/ycoKP8AAAD/jY+O/9ra2v/w8vL//f79//7+/f/+/v3//v79//7+/f/9/v3//v79//z9/f/3/Pv38/v5+fv9/P/7/Pz/+/z8//z9/f/9/f3//P38//v9+//+//7/4+Xl/yYnJ/8AAAD/l5ma////////////6uvq/zc3N/8AAAD/dnZ2/8DAwP8GCAf/CQoJ/xQVFP8AAAD/SkpJ/+Dh4f8lJib/AAAA/62vr//T2Nj/ERMT/wABAf8NDg3/FxgY/w0NDf8AAAD/FhYW/8fIyP99f3//CQkJ/wABAP8ICgj/FBQU/2lqaf/19vb/RUZG/wAAAP9mZ2b//P/+//3+/f/8/fz//////5udnf8DAwP/FBQT/9PU1P/MzMv/Jign/wAAAP8REhH/ISEg/wMDAv8EBQT/bnBv/+Hj4v89Pj7/BAQE/wAAAP8ODg7/HBwb/7u9vP///////v79//7+/f/+/v3//v79//3+/v/+/v3/+/39//f9/Pjz+/n6+vz7//r8/P/8/f3//f39//3+/f/9/fz//P38//7//v/j5uX/JSco/wAAAP+XmJr////////////09PT/Pj8//wAAAP9sa2z/y8vL/0JDQv9YWFj/q6ur/1FSUv9qa2n/5ubm/15eXv9CQkH/w8PD/9zf3/9KSkr/SElI/5aXlv9ISUj/KCko/z9AP/+lqKf/+/z8/5KUlP8dHR3/AQEA/xYWFf89PDz/hoWF//b39/9ERkb/AAAA/2ZoZ//////////////////b3Nv/OTk6/wAAAP8+Pz//7vDw/////v/MzMz/YmNi/y0uLf8iIyP/P0A//5OVlP/x8/L/8fLx/2JkY/8ODg7/AQEA/yssLP9FRUX/x8jH/////v/+/v3///79//7+/f/+/v3//v7+//z9/f/7/f3/9/z8+PP7+fr6+/v/+vv7//z8/P/9/fz//f38//z9/P/9/fz////+/+Tm5f8lKCf/AAAA/3Fycv+9vb3/tra2/3Jycf8KCgr/AgMC/5mbm//7+/v/8fLy//P19f/9////9/j3//Hx8f/6+vn/vb28/6qqqf/x8fH//Pz8//Pz8//z8/P//v79//X19P/o5+b/8fDv///////+/v3/+vr6/25vb/8AAAD/UVFS//Hy8v/4+Pf/9vf2/0VGRv8AAAD/R0dG/6+wr/+traz/iYmI/zQ0M/8AAAD/DxAP/6mrq//+//7//P38//7////7+/v/6erq/+Pk5P/y8/L//v////7//v/+/v7/6erq/y8xMf8AAAD/paal//b39//7+/r//v79//7+/f/+/v3//v7+//7+/v/9/v7//P39//v9/f/3/Pv38/z6+vr8/P/5+/v/+/z8//z9/P/9/fz//f38//39+/////7/4+Tj/yEkI/8AAAD/AgMC/wUHBf8DBQP/AAAA/wECAf9MTU3/5efn//3+/v/9/f3//f7+//3+/f/9/f3//////9ra2v8jIyP/CQoJ/6qsrP///////v/+///+/f/+/v3///79//7+/f/9/fz//f78//7+/f//////gYKC/x0dHf9paGn/+/z8//7//v/39/b/REVF/wAAAP8AAAD/AQEA/wAAAP8AAAD/AAAA/x8gH/+am5r/+fr5//39/P/9/f3//f79//7+/f////7//////////v/8/v3//f79/////v/w8fD/S01N/x8gH/+ztLP///////7+/f///v3///79//7+/v/+/v3//v79//3+/f/7/P3/+vz8//j8+/j0+/r6+vz8//n8/P/6/Pz//Pz8//z9/P/9/fz//f38/////v/q6+v/YWFh/0dGR/9HSEf/R0dH/0ZHRv9WV1b/k5WU/+fo5/////7//v/9//3+/f/+/v3//f78//z9/P/+//7/29va/ykpKf8UFRX/tri4///////+/v3///78///+/f/+/v3//f78//z+/P/9/vz//f79//3+/f/r7Ov/3N7e/+bo6P/9/v3//v/9//n6+f99fXz/SEdI/0lISP9JSUn/SkpK/1dYWP+Gh4b/0tPS//3+/f/+/fz//f39//7+/f/+/v3//v/9//7//f/+/v3//v/9//7//f/+/v3//v79//z8+//l5ub/3d/f//Lz8//+/v3///79//7+/f/+/v3//v79//7+/f/9/v3//P39//z9/f/6/Pz/9/z6+fP7+fn7/Pz/+vz8//v8/P/8/Pz//Pz8//39/f/9/fz//v79//39/f/4+Pj/9/j3//j49//4+Pj/+Pj3//v8+//////////+//7+/f/+/v3//v79//7+/f/+/vz//P39//v9/f/7/Pz/0dLR/8nKyf/6+vr//v7+//7+/f/+/vz//v79//7+/f/+/v3//f78//7+/P/9/vz//P39/////v///////v////7+/f/+//3//v/9//r6+v/4+Pj/+fn5//n5+f/5+fn//Pz8/////////////v79///+/f///v3//v79//3+/v/+/v3//f79//7+/f/+/v3//v79//7//f/+/v3//v79/////////////v/+//7+/f///v3//v79//7+/v/+/v3//v38//39/f/8/f3//P39//v9/f/3/Pv58vv5+fz9/P/7/Pz//Pz8//z8/P/8/f3//f39//3+/P/+/v3//f39//3+/f/+/v3//v/9//7//f/+//3//v79//7+/f///v3///79//7+/f/+//3//f79//3+/f/9/f3//f39//z9/f/////////////+/f/+/v3//v79//3+/f/9/v3//f39//39/f/9/f3///38//7+/f/9/v3//f78//7+/f/+//3///79//7+/f/+//3////9/////v////7////+/////v/+//3//v79//7//f/+/v3//v79//7+/f/+/v3//f39//39/f/7/f3//P39//7+/f/+/v3//v79//3+/f/+/v3//v/9//7+/f/+//3//f79//7//f/+/v3//v7+//7+/f/9/f3//f39//z9/f/8/f3/+/39//f9+/jy+/r5+/z8//v8/P/9/fz//f38//39/f/9/f3//f79//7+/f/9/fz//f37//z9/P/9/vz//f78//79/P///vz//v79//7+/f/+/vz//f79//3+/f/9/vz//v79//3+/f/8/f3/+/z8//z9/P/+/v3///79///+/f///v3///79//7+/f/+/v3//v79///+/f///vz//v78//7+/f/+/vz//v78//7+/f///v3//v79///+/f///v3///79///+/f/+/v3///79///+/f///v3///79//7+/f///v3//v39//39/f/9/v3//P39//v8/f/8/f3//f39//79/f/9/v3//f79//7//f/+/v3//v79//7//f/+/v3//v/9//3//f/8/v3//f39//39/f/+/v3//f39//r8/P/7/Pz/+P38+fL7+ff6/Pz/+/z8//z9/P/9/v3//f79//7+/f/+/v3//f79//3+/f/+/f3//f39//z9/P/9/f3//f39//79/f/9/f3//v79//3+/f/9/f3/+/38//z8/P/9/f3//P39//n8/P/6/Pz//P39///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+///9/f/+/fz//f39//3+/f/9/f3/+/z8//z9/P/9/fz//v79//7+/f/+/v3//v79//7+/f/+/v3//v79//3+/f/9/f3//f39//39/f/9/v3//f39//39/f/9/f3/+/z8//r8/P/4/Pv48/v59vz8/P/7/Pz/+/38//39/f/9/f3//v38//79/P/9/v3//f39//79/f/9/f3//v79//7+/f/+/v3//v79//79/f/9/v3//f79//z+/f/7/Pz//Pz8//z9/f/7/fz/+vz8//n8/P/2+fj/xMXE/6usq/+srKv/rKyq/6qpqP+np6b/qKem/6qqqP+rqqn/qqmo/6mpp/+qqqj/qqup/6urqv+rq6r/q6uq/6qqqf+rq6r/q6up/6urqf+rq6r/rKyq/6ysq/+qqqn/qKin/7i4t//y8vL//v79//79/P/9/fz//f38//39/P/8/Pz//f38//39/P/+/fz//v79//7+/f/9/v3//v79//79/f/9/fz//Pz8//z9/P/9/f3//v79///+/f/+/v3//f79//39/f/8/fz/+/39//f8+/j0+/r4/P39//r8/P/7/Pz//Pz8//39/P/8/Pz//P38//39/f/9/f3//f39//7+/f/+/v3//v79//7+/f/+/v3//f79//39/P/9/f3//f39//z8/P/9/fz//f39//z9/f/8/fz//P7+/8TGxv8ZGxv/AQIB/wACAP8AAgD/AAIA/wABAP8AAQD/AAIA/wACAP8AAgD/AAIA/wACAf8AAgH/AAIB/wACAf8AAgH/AAEA/wABAP8AAQD/AAEA/wABAP8AAgH/AAIB/wABAP8AAQD/CwsK/6Gio////////f38//z9/P/8/fz//P38//z9/f/9/f3//P39//39/f/9/f3//v79//3+/f/9/f3//P38//z9/P/8/fv//Pz7//39/P/+/v3///79//7+/f/+/v3//f79//z8/P/7/fz/9vz7+PX8+/j7/f3/+vz8//z9/P/8/fz//Pz8//z8+//8/fz//v38//79/f/+/v3//v79//3+/f/8/f3//f79//7//f/9/v3//f38//7+/f/9/v3//f39//39/P/+/f3//f39//39/P//////pqem/wACAv8+P0D/dnZ2/3R2df9zdnX/cnV0/3J2dP9zdnX/dHd1/3R2df91d3b/dXd2/3R2df9zdnT/dHZ1/3R2df91dnb/dnd2/3Z3dv90dnX/cnV0/3F1dP9xdXT/dHZ1/0hKSv8AAAD/g4OD///////9/vz//P38//z9/f/8/f3//P39//39/f/9/v3//f39//39/f/9/v3//f79//z9/P/7/Pz/+/38//z9/P/9/Pv//v38//7+/f/+/v3//v79//7+/f/8/f3/+/z8//r8/P/3/Pv39f37+fv9/f/8/f3//v38//39/P/8/fz//f38//78/P/+/fz//v78//79/P/+/vz//v79//z9/f/8/f3//v79//7+/f/+/v3//v/9//7+/f/9/f3//P38//39/f/8/f3//P38//////+mpqX/AAEB/4qLjP////////////////////////////////////////////////////////////////////////////////////////////////////////////7/////////nZ+f/wAAAP+Dg4T///////7+/f/8/fz//P38//39/P/9/v3//v79//3+/f/9/f3//f39//79/f/+/fz//f38//z8/P/7/Pz/+/z8//38+//9/fz//v79//7+/f/+/v3//f79//z9/f/7/Pz/+/z8//f8+/b1/fz5+/39//v9/f/9/f3//f39//z9+//9/fz//v38//79/f/+/fz//v38//7+/P/+/v3//f79//3+/P/+/v3//v79//79/f/9/f3//v79//3+/f/9/v3//f79//3+/f/9/fz//////6enpv8BAAD/iYqL//////////7/+Pj3/+Pk4v/h4eD/4eHg/+Hh4P/h4eD/4eHg/+Hh4P/h4eD/4ODf/9/g3v/g4N7/3+De/+Dg3//f4N7/3t/e/97e3f/x8/P//P38//////+doKD/AAAA/4SEhf///////f79//z9/f/9/fz//v78//7+/f/+//3//f79//z8/P/8/fz//P38//z8/P/7/Pz//P38//z9/P/8/f3//v39//7+/f/+/v3//v79//7+/f/+/v3//P39//r8/P/6/Pz/+P389/X9/Pn9/v7//f39//39/f/9/fz//P37//39+//9/fz//f39//79/P///fz//v38//3+/P/8/f3//v79//7+/f/9/v3//v79//7+/f/+/v3//v/9//7//f////7//v/+//z9/f//////pqem/wAAAP+IiIn///////////+tra7/JCQl/x0eHf8cHhz/HR8d/x0fHf8cHh3/HB4c/xweHP8bHRz/Gxwb/xsdG/8bHRv/Gx0b/xsdG/8bHBv/HBwc/5GUk//+/////////56hof8AAAD/goOE//7////+//7//f79//7+/P///vv//v38//7+/f/9/f3/+/z8//z8/P/7/Pz/+/z8//v8/P/9/fz//f39//39/f/9/f3//f79//7+/f///v3//v79//3+/f/8/f3/+vz8//n9/P/4/fz39f38+P7+/v/9/v3//f39//39/P/8/fz//Pz8//z9/P/8/fz//v38//79/P/9/vz//f38//z9/P/9/fz//f78//39/f/+//3//v/9//7+/f//////+vz7//Pz8f/w8e//7u/u//Ly8v+en5//AQEA/4iIif/////////+/9XV1P98e3r/c3Rz/3R2df90d3b/dHd2/3V4dv91eXf/dXh3/3Z5d/92eHj/dnp4/3Z5d/91eHf/dnl4/3Z5eP95e3r/xsfG//7//v//////n6Gh/wAAAP97e3v/8vPz//Hx8P/x8fD/8fLv//f39f///v3//v78//7+/f/8/f3/+/z7//v8+//6+/v/+vz8//z8+//9/fz//P39//v9/P/8/fz///79///+/f///v3//f79//39/f/7/Pz/+f38//f8+/b0/Pv4/v/9//3+/f/9/f3//f39//z8/P/8/Pz//P39//v9/f/9/f3//f79//3+/f/9/vz//f39//3+/f/9/v3//f39//3+/f/8/f3//f7+/8/Qz/9jY2P/PDw7/zk6OP85OTj/OTo5/yUlJf8AAAD/hoiJ///////+//3//////////////////////////////////////////////////////////////////////////////////////////////////v79//////+goqL/AQEB/x8fHv88PDv/Ozs5/zs7Ov87PDv/TU1M/6anp//5+vn///78//39/f/8/Pz//Pz8//z8+//7/Pv//P38//z9+//7/Pz//P38//3+/f/+/fz///38//7+/P/+/v3//f39//z8/P/6/Pz/9vz78/P8+vn+/v3//v79//39/f/9/f3/+/z8//v8/P/7/f3//P39//39/f/9/v3//f79//z9/f/9/v3//v79//7+/f/9/f3//f79//3+/v/U1tb/Li8v/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP+Fh4j//v////7//v/Iycj/YmJh/11dXP9eXlz/Xl5c/15eXf9eXl3/XV1c/15eXf9dXl3/XF1c/11dXP9dXVz/Xl9d/11eXf9cXFv/XV1d/7u7uv////7//////5+iof8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/EBAR/6iqqv/+/v7//f38//z9/P/8/Pz//Pz8//z9/P/9/fz//P39//v8/P/9/vz//v79//39/P/9/fz//f38//39/P/9/f3//Pz7//r8+//2+/r08/36+f39/f/8/f3/+/39//z8/P/8/fz//Pz8//39/f/9/v3//v79//7+/f/+/vz//v79//7+/f/+/v3//f79//3+/f/+//3//////4WHh/8AAAD/AAAA/wAAAP8AAAD/AAEA/wABAP8AAQD/AAAA/4SGhv/+/////////66urv8yMjL/Ly8v/y4vL/8tLy7/LS8u/y0uLv8tLy7/LS8u/y4wLv8uLy7/LjAv/y8xMP8vMS//Li8v/y0vLf8tLS3/oKKh////////////n6Ki/wABAP8AAAD/AAAA/wAAAP8BAQH/AAAA/wAAAP8AAAD/R0hH//L09P/8/fz/+/z8//39/f/9/fz//f38//39/P/7/Pz//P39//3+/f/9/v3//f39//3+/f/+/v3//f38//39/P/7/Pv/+fz7//b7+fTz/Pr5/P38//z9/f/9/f3//f39//z9/f/9/fz//v79//7+/f/+/vz//v78//39/f/+/v3//v79//3+/f/9/v7//v79//7//f//////a2xs/wAAAP8AAAD/AAAA/wABAf8AAQH/AAEB/wIEA/8TExP/kJGR//7////9/v3/+vv6/+/v7v/t7u3/7e7t/+zt7P/s7ez/7O7t/+zu7v/s7u7/7e7u/+3u7f/t7u3/7e7u/+3v7v/t7+7/7e7t/+3u7f/6+/r//v/9//////+oqqr/FhYW/wYGBv8AAAD/AQEB/wABAP8AAAD/AAAA/wAAAP8vLy//6Ovq//3+/f/8/f3//f79//39/f/8/fz//Pz8//r8/P/8/Pz//f39//39/P/9/fz//v38//7+/P/9/fz//f38//v8+//4/Pv/9vv58vP7+vn8/Pv//f38//39/f/9/vz/+/39//z9/f/+/v3//v79//39/P/8/fv//P38//39/f/+/v3//f7+//7+/v/+/v3//v79//////9sbGz/AAAA/wEBAf8AAQD/AAEB/wABAf8AAAD/FhcW/7e5uP/u7u7//////////////////////////////////////////////////////////////////////////v////////////////////////////////////////////Hx8P/Ozs3/NDQz/wAAAP8AAQH/AAEA/wABAP8AAAD/AAAA/y8wL//n6+r//f79//39/f/8/f3/+/39//z8/P/9/fz//f39//79/f/+/v3//f38//38/P/8/Pz//f38//39/P/8/Pv/+/z7//n8+//2+/ny8/z6+fv8/P/7/Pz//P39//z9/f/8/f3//v38//7+/f/9/v3//P39//39/P/9/fz//f38//7+/P/9/v3//f79//7+/f/+/v3//////2xsbP8AAAD/AQEB/wABAP8AAQD/AAEB/wABAP8ODw7/YmNi/3BxcP9vcG//bm9u/25vbv9ubm3/bGxs/2xsbP9sbGz/bGxr/21tbP9sbWz/a2xr/2tsa/9ra2r/ampp/2pqaf9ra2r/a2xr/2tsa/9sbGv/bW5t/25ubf9tbm3/b29v/21tbf8cHBz/AAEA/wABAf8AAQH/AAEB/wABAf8AAAD/MDEw/+fr6//8/v3//f39//39/f/8/f3//f39//39/f/9/v3//f39//39/P/9/fz//P38//v8+//8/fz/+/38//r8/P/7/Pz/+vz7//b7+fTz/Pr5+/38//v8/P/8/f3//f79//79/f/9/vz//v79//z9/f/8/f3//P38//z8/P/9/fv//f78//7+/f/+//3//v/9//7//f//////a2xs/wAAAP8BAQH/AAEB/wABAf8AAQD/AAEB/wABAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAQH/AAEB/wABAf8AAQH/AAEB/wAAAP8xMTD/6Ozr//7+/v/9/f3//v39//3+/f/9/vz//f78//3+/P/8/f3//P39//39/f/7/fz//P38//z9/P/8/fz/+/38//v8/P/6/Pz/9fz69fX9/Pr8/f3//P39//39/f/+/v3//v79//39/f/9/f3//f78//39/f/9/f3//f38//39/P/8/f3//P79//3+/v/+//3//v/9//////9sbm7/AAAA/wEBAf8BAQH/AAAA/wABAP8AAQH/AAAA/wABAP8AAQD/AAEA/wABAf8AAQH/AAEA/wAAAP8AAQD/AAAA/wAAAP8AAAD/AAAA/wABAP8AAQD/AAEB/wABAf8AAQH/AAEB/wABAf8AAQH/AAEB/wABAf8AAQH/AAEA/wAAAP8AAQH/AAEA/wABAP8AAgD/AAIA/wACAf8AAQH/AAAA/zEyMf/p7Ov//v/+//7+/f/+/f3//v79//3+/P/+/vz//v38//79/P/9/v3//v79//7+/f/+/fz//v38//7+/f/9/v3//P39//r8/P/2/Pv29P38+vv9/P/9/f3//v79//7+/f/9/v3//f39//39/f/9/v3//P39//z9/P/8/fz/+/z8//r8/P/6/f3//P7+//7//v/+//3////+/2tsbP8AAAD/AAAA/wABAP8AAAD/AAAA/wABAP8AAQD/AAEA/wABAP8AAQD/AAEA/wABAf8AAQH/AAEA/wABAP8AAQD/AAEA/wABAP8BAQH/AAEB/wACAf8AAgH/AAEB/wABAf8AAQH/AAEB/wACAf8AAgH/AAEB/wABAf8AAQH/AAEA/wABAP8AAQD/AAAA/wAAAP8AAAD/AAEB/wABAf8AAAD/MDEw/+jr6/////7//v79//3+/f/9/v3//P38//z9+//9/fz//P38//z9/P/9/v3//v39//79/P/+/vz//v79//3+/f/+/v3/+/39//b8+/Tz/fv6+f38//v9/f/9/v3//v79//7+/f/+/v3//f39//39/f/8/f3//P38//39/f/9/f3//P39//3+/f/+/v7//f7+//3+/f////7/amtr/wAAAP8AAQD/AAEA/wABAP8AAQD/AAEA/wABAP8AAQD/AAEA/wABAP8AAQD/AAEA/wABAP8AAQH/AAEB/wACAP8AAQD/AAEB/wACAf8AAgH/AAIB/wACAf8AAgH/AAEB/wABAf8AAgH/AAIB/wACAf8AAgL/AAIB/wACAf8AAQD/AAAA/wAAAP8SExL/R0dH/yMjI/8AAQH/AAEA/wAAAP8uLy//5urq//7//v/+/v3//v39//z9/f/8/fz/+/38//z9/P/7/f3//P39//7+/f/+/v3//f79//7+/f/+/v3//v79//7//f/8/f3/9/z68/P9+/r6/fz/+/38//z9/f/8/v3//P79//z9/f/7/P3/+vz9//v9/f/7/f3/+/39//39/f/9/f3//P39//3+/f/9/v3//f79//////9rbGz/AAAA/wABAP8AAQH/AAEA/wABAP8AAQH/AAEB/wABAP8AAQD/AAEA/wABAf8AAQH/AAIB/wABAf8AAgH/AAIB/wACAv8AAgH/AAIC/wACAv8AAgH/AAIB/wABAf8AAQD/AAEB/wACAf8AAgH/AAEB/wACAf8AAgL/AAIB/wABAP8AAAD/CgsK/52fn//39/f/ysrK/yMjI/8AAAD/AAAA/y4vL//m6+v//v/+//3+/f/8/f3/+/z8//r8/P/6/Pz/+/z8//z9/P/9/f3//f79//3+/f/8/f3//P39//3+/f/+/v3//v79//z9/f/4/Pvy9Pz7+fv9/f/8/f3//f38//39/P/8/f3//Pz8//v8/P/8/Pz//f38//z9/P/7/f3//f39//39/f/9/f3//f79//7+/f/+/v3//////2pra/8AAAD/AAEA/wABAf8AAQH/AAEB/wABAf8AAgH/AAIB/wABAP8AAQD/AAEB/wABAf8AAQH/AAEA/wACAf8AAgL/AAEB/wACAf8AAgL/AAIB/wACAf8AAgH/AAEB/wABAf8AAgH/AAIB/wACAf8AAgD/AAEB/wABAf8AAQH/AAEA/wAAAP8YGBf/1dfX///////3+Pf/P0BA/wAAAP8AAAD/Li8u/+br6//+//7//f79//z8/P/8/Pz/+vz8//n7/P/7/Pv//fz7//79/P/+/v3//v79//3+/f/9/v3//f79//7//f/9/v3//P39//j8+/D1/Pv4/P39//z9/f/7/f3/+vz8//z9/f/9/f3//Pz8//z9/P/+/vz//f39//39/P/9/f3//f39//3+/f/+/v3//v79//7+/f/+////Z2pq/wAAAP8AAQD/AAEB/wABAP8AAgH/AAIB/wACAf8AAgH/AAIB/wABAf8AAQH/AAEB/wABAf8AAQH/AAEB/wACAf8AAQH/AAEB/wABAf8AAQH/AAEB/wABAf8AAgH/AAIB/wACAf8AAgH/AAIB/wABAP8AAQH/AAIB/wABAP8AAQD/AAAA/wMEA/9kZWT/x8jH/5GRkP8PDw//AAAA/wAAAP8uLy7/5uvr//z+/v/9/f3//f39//z9/P/7/Pv/+/z7//v8/P/8/Pz//v79//7+/f/+/v3//P39//3+/f/+//3//f79//39/f/8/f3/+Pz78PX8+/f9/v3//P39//r8/f/6/Pz/+/z8//z9/P/9/fz//f38//7//f/9/v3//f78//39/P/+/fz//f79//3+/v/+/v3//v79//////9wcnH/AAAA/wABAf8AAQD/AAEA/wABAP8AAQH/AAEB/wABAf8AAQH/AAEB/wABAf8AAQH/AAEB/wABAP8AAQH/AAEB/wACAf8AAQH/AAEB/wABAf8AAQH/AAEB/wABAP8AAQH/AAEB/wABAP8AAQD/AAEA/wABAf8AAgD/AAEA/wEBAf8AAAD/AAAA/wEBAf8PDw//BQUF/wAAAP8AAAD/AAAA/zk6Of/s8PH//P7+//3+/f/7/f3//P39//z9/P/8/Pz//Pz8//v8/P/9/v3//f79//3+/f/8/v7//P7+//3+/f/7/Pz/+vz8//r9/P/3/Prx8/z6+P3+/f/9/v3//P39//v8/P/8/fz//f38//38/P/+/fz//v/9//7+/f/9/fz//v38//7+/f///v3//v79//7+/v/+/v3//////7CxsP8LDgz/AAEA/wABAP8AAAD/AAEA/wAAAP8AAQD/AAEA/wABAP8AAQD/AAEA/wABAP8AAQD/AAIA/wACAP8AAgH/AAEA/wACAP8AAQD/AAEA/wACAP8AAQD/AAEA/wABAP8AAQH/AAEA/wABAP8AAQD/AAEA/wABAP8AAQD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/fX9///n9/f/8/fz//v79//z+/f/8/f3//f39//z9+//8/Pv//Pz8//z9/f/8/fz//f78//7+/f/+/v3//f39//v9/f/5/Pz/+fz8//b8+fP0+/r5/v7+//3+/f/8/f3//f39//z9/f/9/fz//f37//79/P/+/fz//v78//79/P/9/f3//v79///+/f/+/v3//f79//39/f/+/v7/+Pj4/4uMi/8gIiD/CgsK/wkKCf8JCgn/CAoJ/wgKCf8JCQn/CAoJ/wkKCv8ICwn/CAsK/wkMCv8JDAr/CAsK/wgLCv8JCwv/CQsK/wkLCv8JDAr/CQsK/wkLCv8JCgr/CQoJ/wkLCv8JDAr/CQsJ/wkKCf8JCgn/CQoJ/wkJCf8JCAj/CQgI/wgICP8IBwf/CAgI/wgICP8ICAj/FBUV/2JjY//m6Oj//P7+//z9/f/+/v3//v79//3+/f/9/f3//Pz7//z8+//8/fz//P39//z8/P/9/fz//f38//39/P/9/v3//P39//r8/P/5/Pz/9/z68/X7+vn+/v7//v79//39/f/9/f3//f39//79/P/+/fv//f38//3+/f/+/fz///38//7+/f/+/v3//f79//3+/f/8/f3//f39//3+/f/+/v7//f38/9rb2/+9vr7/u7y8/7y+vf+8vb3/vL28/7y9vf+9vr7/vb69/7u8vP+7vLz/u7y8/7u8u/+7u7r/u7u6/7q8u/+7vLz/u728/7u9vP+7vbz/vL28/7u8vP+7u7v/vLy8/7u9vP+7vLv/u7y7/7y8vP+8vr3/vL29/7y7u/+8u7v/urq6/7m5uf+5urr/urq6/7m5uP/Nzs3/9vb2//7//v/+//3//v/9//7+/f/+/v3//v79///9/P/+/Pz//fz7//78+//9/f3//f79//3+/f/8/f3//P39//3+/f/8/f3/+vz8//v8+//3/Pr19Pv6+f3+/f/9/v3//f39//39/P/8/Pv//fz7//39/P/9/v3//v79//79/P/+/fz//v38//7+/P/9/f3//P39//v9/f/9/v3//v79//7+/f/+//3/////////////////3d/e/21ubf9naGf/aWtq/2hpaP9paWn/0NHR/////////////////////////////////////////////////////////////////////////////////////////////////+3t7f94eXn/ZmZm/2doaP9naGf/ZGVk/8DBwf/////////////////9/v3//v79//7//f/+/v3//v/9//7+/f/+/v3//v38//39/P/+/Pv//fz7//39/f/+//3//v79//3+/f/8/f3//f39//v9/f/6+/v/+/z7//f7+vT0+/n6/f38//3+/f/9/f3/+/z8//v8+//8/Pv//P38//39/f/+/v3//f38//z9+//9/fz//f39//39/f/9/fz/+/38//z9/P/+/v3//v79//7+/f/+/v3//v79///////FyMf/CgsL/wAAAP8AAAD/AAAA/wICAf+wsbH////////9/P///v3//v79//7+/f/+/v3//v79//7+/f/+/v3///79//7+/f/+/v3///79///+/P/+/v3//v79//7+/f//////29vb/xcZGf8AAAD/AAAA/wAAAP8AAAD/lZaW///////+/vz//f39//3+/f/9/v3//f79//7+/f/+/v3//f79//7+/f/9/f3//f79//79/P/9/fz//f39//7+/f///v3//f79//39/f/9/f3/+vz8//n7+//5/Pv/9/v68/P6+fn7/fz//f79//39/f/7/Pz//Pz7//z8/P/8/fz//P38//3+/f/9/f3//P38//v9/P/+/fz//f38//z8/P/6/Pz/+/z8//3+/f/+/v7//f79//3+/f/+/v3//////8/Qz/8SExP/AAAA/wAAAP8AAAD/BgYG/7Cysv///////v39//7+/f/9/v3//f79//z9/f/9/v3////9///////////////+//7//f/+/v3//f38//z9/f/9/f3//f78///////a29r/Ghwc/wAAAP8AAAD/AAAA/wICAf+jpaX///////7+/P/9/f3//f39//v9/f/9/v3//v79//3+/f/9/v7//f79//3+/f/9/v3//v78//3+/P/9/f3//v79///+/f/+/f3//P39//39/f/7/Pz/+vv7//n7+//2+/r18/v5+fv8/P/8/f3//f39//39/P/7/Pz//Pz8//z8+//8/fz//P39//39/f/9/fz//P38//39/f/9/Pz//Pz8//v8/P/8/fv//f39//3+/f/8/f3//f79//7+/f////7/8fHw/09PTv8AAAD/AAAA/wAAAP8GBgX/sLGy///////+/v3//f79//z9/f/6/Pz/+vz8//3+/f/4+ff/yMnH/7e4tv/k5eP//v/9//39/f/8/fz/+/z8//z9/f/9/fz//////9ja2f8aGxv/AAAA/wAAAP8AAAD/KCko/9fY2P////7//v79//7+/f/9/f3//f79//3+/f/9/v3//P79//7+/f/+//3//f79//3+/f/+/vz//f78//39/f/9/f3//v38//39/P/9/f3//f39//v9/P/7+/v/+vv7//b7+vT0+/n5/P38//39/f/+/fz//f38//v8/P/8/f3//P38//v8/P/7/fz//f38//3+/P/9/vz/+/z8//v8+//8/Pv/+/z8//z9+//9/fz//f39//39/P/9/vz//f78//7//f////7/3d3c/4GCgv9xcnH/QkND/wYGBf+ytLT///////39/f/9/f3/+/z9//r8/P/6/fz/8vb1/3p8fP8TFBP/CAkI/zY2Nv/Kysr//v7+//39/P/9/f3//f79//3+/f//////19ra/xcZGf8nJyf/b3Fw/3l6ev/Fx8b//f79//7+/f/+/v3//v79//3+/f/9/v3//f/9//3+/f/+/v3//v/9//3+/f/+/fz//f38//39/P/9/fz//Pz8//z8/P/8/fv//P38//39/P/+/fz//Pz8//r7+//5+/v/9vv69PP8+vn8/f3//f39//79/f/9/f3//P39//z9/f/8/fz/+/z7//r8/P/7/fz//f78//39/f/9/fz//Pz7//38/P/8/f3/+/z8//z9/P/9/f3//f38//3+/f/+/v3//f79//39/f////////////////+PkZH/BgUF/7S2tv///////f39//z9/f/7/f3/+vz8//3////EyMj/DxER/wAAAP8AAQH/AAAA/2VmZv/5+/v//P38//7+/f/9/v3//v79///////Z2tr/FRcW/1dYV//8//7////////////+/v3//v79//3+/f/9/v3//P39//39/f/+/v3//v79//7+/f/+/v3//f78//79/P/9/fz//f38//39/P/8/fz//P38//z9/P/7/fz//f38//79/f/8/f3/+vz8//r7+//3+/n29Pz7+fv9/f/7/Pz//P38//39/P/9/f3//f39//v8/P/8/Pv/+/z8//r9/P/8/fz//f39//39/P/8/Pv//fz7//38/P/8/Pz//f38//39/f/9/vz//v79//7+/v/9/f3//f38//3+/f/+/v3//////4qMjP8FBQT/srW2///////9/f3//P39//39/f/8/fz//////7y+vf8ICgr/AAEA/wEBAf8AAAD/UlNS//b5+P/8/fz//v79//7//f/+//3//////9rb2/8WFxf/VFVU//n8+//+/v3//v/9//7+/f/9/v3//f78//39/f/7/f3//P39//7+/f/+/v3//v79//7+/f/9/fz//f38//7+/P/+/fz//f79//3+/P/9/fz//f38//39/P/9/f3//f39//z9/f/6/Pz/+vz8//j7+vb0/Pr5+/z8//r8/P/7/f3//P38//39/f/8/Pz/+/z8//z8/P/7/fz//P38//38/P/+/fz//v38//39+//+/fv//v38//39/P/9/fz//P39//z9/P/9/fz//f39//39/f/9/v3//v79//7//f//////iYqK/wUEBP+ztrb///////7+/v/9/f3//f39//39/f/+//7/6uvq/0ZGRv8AAAD/AAAA/w8REP+ho6L//f7+//7+/P/+//3////9//7//f//////2tvb/xYXF/9VVVX/+vz7//79/P/+/v3//f38//z9/f/9/fz//f79//z9/f/9/f3//v79//7+/f/+/v3//f39//39/P/9/fz//f38//3+/P/+/v3//f79//z9/P/9/fz//f38//39/P/8/fz/+/z8//v8/P/6/Pz/9/v69vX7+vn6/Pz/+vz8//v8/P/9/fz//f39//39/f/8/Pz//Pz8//z8/P/8/Pz//fz7//79+//+/fz//v38//79/P/+/fz//v38//39/P/8/f3//f38//39/f/8/fz//f39//7+/v/+/v3//v79//////+Ki4v/BQQE/7K0tP/8/Pz/+fr4//j5+P/4+fj/+Pn5//v9/P////7/3d3d/4WGhf9zc3L/sbSy//j5+P/+/fz//Pv5//r6+P/6+vn/+fr5//v7+//Y2Nj/FxgX/1VUVP/6+/r//f38//39/f/8/f3//P39//3+/P/+/v3//P39//39/f///v3//v79//7+/f/9/v3//v79//7+/f/9/fz//f38//7+/f/9/fz//f38//39/f/9/fz//f39//z9/P/7/Pz/+vv7//r8+//2/Pr19fv6+fn8/P/5/Pz/+/38//z9/P/+/v3//f79//z8/P/7/Pz/+/z8//z8/P/8/Pv//fz7//79/P/+/fz//v38//38+//9/Pv//f38//z9/P/8/fz//f39//39/f/+/v3//v79//7+/f/+/v3//////4eIiP8AAAD/OTo5/1FSUf9RUlD/UFBP/05OTf9iYmH/5Obm//7//v///////////////////////v38///+/v+jo6P/TU1M/09PTv9OTk3/TU5N/0NEQ/8FBgX/VFVU//n7+v/9/fz//v79//39/f/8/f3//f79//3+/f/9/f3//v39//7+/f/9/v3//f7+//3+/f/+/v3//v79//7+/f/+/v3///78///9/P///vz//v79//39/f/8/f3//f39//39/f/7/Pv/+fz7//b9+/b1/Pr5+fz8//r8/P/9/f3//f38//39/f/7/f3/+/z8//n8/P/7/Pz//Pz8//z9/P/8/Pz/+/z8//38+//9/Pv//P37//z9/P/9/fz//P38//v8/P/8/f3//f79//7+/f/9/v7//v79//7+/f//////sbGx/ywtLP8iJCP/ISMi/yAiIf8hISH/ISAg/zo4Of/f4OH//f////3+/f/d3Nv/srCv/8vKyf/4+Pf//////5CRkv8iISL/IiMj/yIiIv8iIiL/IyMj/ygnJ/+MjIz//f79//3+/f/+/v3//f39//39/f/9/f3//Pz8//z8/P/9/f3//v79//3+/f/9/v3//f79//7+/f/+/v3//v79//7+/f/+/v3///38//3+/P/9/f3//v79//3+/f/9/v3//f39//z9/P/7/fz/9/z7+PT8+vn5/fz/+vz8//39/f/8/fz//P38//39/P/8/f3/+/z8//z9/P/9/fz//Pz8//v8/P/6/Pv/+vz7//v8/P/9/fz//P39//39/f/9/f3//P38//z9/f/8/f3//v79//7+/f/+/v3//v79//7+/f/7+/v/6Ono/+Tl5f/l5eX/5OTk/+Tk4//k4+P/5uXm//j5+f/9/v7/t7i4/yorKv8FBgX/FhcW/4eIiP/4+vn/8vLx/+Xl5f/m5eT/5eXk/+bl5f/m5eT/5ubl//f4+P/+//7//f7+//7+/f/9/f3//v79//3+/f/9/Pz//f38//39/f/9/v3//v78//3+/f/9/f3//f39//39/f/9/v3//f79//79/f/+/vz//f38//39/P/+/v3//v/9//7+/f/9/f3//f39//z9/f/2/Pv39Pz69fj9/P/6/Pz/+/z8//z8+//9/Pz//f38//39/P/9/f3//f79//39/P/8/fz//P37//z9+//8/fv//P38//z9/P/9/fz//v38//39/f/8/f3//f39//z9/f/9/v3//f79//z9/f/9/f3//f79//7+/f////7////////////////////+//7+/v/9/v3//P39/+3v7/8+Pz//AAAA/wAAAP8AAAD/FhYW/83Pz////////////////////////////////////////v/+//7//f/9/v7//f7+//7+/f///v3//v78//39/P/9/Pz//v79//7+/f/9/v3//f39//7+/f/9/f3//f39//3+/f/9/v3//v79//3+/f/9/fz//f79//7+/f///v3///79//7+/f/9/v3//P39//b8+vf0+/rr+P37//r8/P/8/Pv//Pz7//z9/P/8/fz//f38//39/P/+/v3//f38//z9+//7/Pv//Pz7//39/P/9/fz//P38//39/P/9/fz//f38//38+//9/fv//f38//z9/f/8/f3/+/z9//39/f/9/f3//v79///+/f///v3//v79//3+/f/6/Pz/+vz8//v8/P/9/v3/5OXl/yUnJ/8AAAD/AQEA/wAAAP8HBwb/t7e3///////+/v3//f79//7//f/+/v3//v79//7+/f/+/v3//v79//39/f/8/f3//f38//7+/f/+/vz//P38//v8/P/9/f3//v79//39/f/+/vz//f38//z9/P/+/v3//v79//3//f/+/v3//f78//39/P/9/f3//v79//7+/f/+/v3//v79//3+/f/7/f3/9fv68fT8+t/4/fz/+vz8//z8/P/9/P3//f7+//39/f/+/fz//v37//79+//+/Pv//Pz7//v8+//8/Pv//fz7//39/P/9/f3//f39//3+/f/9/fz//vz7//z8+//9/fz/+/38//z9/f/9/v3//f79//7+/f/+/v3//v79//7+/f/9/v3//P39//v9/P/7/f3//P38//z9/f/4+fj/ZGRj/wAAAP8AAAD/AAAA/y8wMP/g4eH//v7+//7+/f/+//7//v/9//7+/f/8/f3//f79//7+/f/+/v3//P38//z8/P/8/fz//f38//3+/P/9/v3//f39//79/f/+/v3//v79//7+/f/9/fz//f39//7+/f/+//3//v/9//7+/f/9/fz//fz7//z9/P/9/v3//v/9//7+/f/9/v3//f39//v9/f/2/Prf8vz6xfj9/P/6/fz/+/z8//z9/f/9/v3//f38//78+//+/Pv//vz6//38+v/9/Pv//fz7//39/P/9/fv//f38//3+/f/9/v3//v79//79/P/+/Pv//P38//3+/f/9/v3//f79//7//f/+/v3//v79//7+/f/+/v3//f79//3+/v/9/v7//f79//3+/f/9/f3//f78//7//v/h4eD/bm5t/zU1NP9RUlL/w8TE//3+/v////7/8vPy/+np5//5+fj//v/+//3+/f/+/v3//v79//39/f/8/f3//f39//39/P/9/fz//P38//3+/f/9/v3//v39//7+/f/+/v3//v79//7+/f/9/fz//f39//7+/f/+/fz//f38//38+//+/Pv//Pz8//39/P/9/v3//f38//39/P/7/Pz/+f38//T7+Mvv+/mZ9/37//n9/P/6/Pz/+/z8//39/f/9/fz//fz7//38+//9+/r//fz7//39/P/9/fz//f78//7+/P/+/v3//v79//7+/f/+/v3//v39//38/P/9/f3//f39//7+/f/9/v3//v/9//7+/P/+/fz//v38//79/f/+/v3//v7+//3+/f/+/v7//f39//3+/f/9/vz//f78/////v/9/Pv/7u7u//b39////////P38/7u7u/9ISEj/LCws/2RlZf/d3t7//v/+//7+/f/+/v3//P39//z9/P/+/v3//f78//z9/f/7/f3//f39//39/f/9/f3//v79//7+/f/+//3//v79//39/P/9/f3//f38//z8+//9/Pz//fz7//38+//8/Pz//P38//z+/P/9/vz//f38//r8/P/4/Pz/7fj3pen59ln2/Pr2+P38//n8/f/7/P3//f39//z9/P/9/Pv//vz7//37+v/9/fz//f38//39/f/9/f3//f38//39/P///f3///38//79/f/9/f3//f38//z9/P/9/f3//f39//39/f/9/v3//f79//3+/P/9/fz//f39//7+/f/9/v7//f7+//7+/f/9/v7//v78//39/P/9/vz//f79//7+/f/+/v7//P79//7+/v/d3t3/Kior/wAAAP8AAAD/AAAA/2FhYf/29/b//f78//z9/f/7/f3//f38//79/f/+/fz//f38//79/P/+/v3//f39//39/f/+/v3//v79//7+/f/+/v3//P38//39/f/8/fz/+/z8//v8+//8/fv/+/z8//z9/P/9/fz//v39//7+/P/9/v3/+vz8//b7+/nn9/Zk2vXyHfT8+tD4/Pz/+vz8//r8/f/7/Pz//P38//39/P/8/Pz//Pz7//39/P/9/f3//f79//39/f/9/fz//f38//79/P/9/fz//f38//39/f/8/fz/+/z8//z8/P/9/fz//f79//3+/f/9/vz//v38//79/P///vz//v79//39/f/9/v3//v79//7+/f/+/vz//v78//7+/f/+/v7//v79//7+/f/+/v3//////7m6uv8HCAj/AAAA/wAAAP8AAAD/ISIh/97g4P/8/v3/+/z8//v8/P/9/fz//f39//39/P/9/fv//f38//39/f/9/f3//v79//7+/f/+/v3//v/9//7+/f/9/fz//Pz8//z8/P/8/fz//Pz8//v8/P/8/f3//P39//z9/f/9/fz//f38//3+/f/7/fz/9fv52OD08yON4eEB8fv4g/n9/P77/f3/+/39//z9/f/9/f3//P39//r8/P/6/Pz//P38//3+/f/9/v3//f79//3+/f/9/fz//f38//39/P/9/fz//f38//z8/P/7/Pv/+/z8//39/f/9/fz//P39//39/P/9/Pz//f38///9/P/9/f3//f39//3+/f/+/v3//v39//7+/f/9/f3//v79//3+/v/+/v3//v79//7//f//////1tfW/xscHP8AAAD/AAAA/wAAAP81NTX/6evq//v9/P/7/Pz//P39//z9/f/8/fz//P37//z9+//9/fz//P38//z8/P/9/v3//v79//7+/f/+/v3//v79//7+/f/8/fz//Pz8//z9+//8/Pz//P39//39/f/7/f3//P39//39/f/8/f3//P39//n8+//y+vePtOjmA63q6ADo+fUr9vz74Pr9/f/7/f3/+/79//z9/f/8/f3/+/38//r8/P/8/fz//f39//z9/f/8/f3//P38//z8/P/9/f3//f39//39/P/8/f3/+/z8//r8+//7/Pz//f38//79/f/9/f3//f38//z9/P/9/fz//f79//7+/f/9/v3//f78//3+/f/9/v3//f79//7+/f/9/v3//f39//7+/f/9/v3//v79//7+/f/7/Pv/lJST/xwdHP8ICgn/Jicm/6yurv/8/v3/+vz7//z9/P/8/f3//P39//z8/P/7/Pz/+/z8//z9/P/8/fz//f38//3+/f/+/v3//v78//7+/f/+/v3//v79//z9/f/8/Pz//Pz8//z8/P/9/v3//f39//z8/P/7/f3//P39//z9/f/7/fz/9vv55ur39TLD7esAAAAAALHu5ALy+/d4+P37/Pr9/f/7/v3/+/39//v8/P/7/Pz//P39//39/P/9/f3//f39//39/f/8/f3//f39//39/f/8/f3//P38//v8/P/7/Pz/+vz8//z8/P/+/fz//v79//v9/f/7/fz//P38//v9/P/8/fz//f38//39/P/7/fz/+v38//v9/f/8/f3//v38//3+/f/8/f3//f79//3+/f/9/v3//v/9//7//v/8/Pv/1NXU/7q7u//b3d3//P79//z9/P/8/fz//f39//z9/f/8/f3//P39//v8/P/8/Pz//f78//3+/f/9/f3//f79//3+/P/9/fz//v38//39/P/8/fv//Pz8//z8+//7/Pz/+/39//3+/f/9/f3//P39//v8/P/6/Pz/+/38//n8+v3z+vaFxe3pAwAAAAAAAAAAyfPsAOb38RP2/Pmw+f38//r9/f/6/f3/+vz8//v8/P/8/f3//f38//79/P/9/f3//P79//3+/v/+/v7//P39//z9/f/9/f3//P39//r8/P/6/Pz//Pz8//3+/f/+/v3/+/39//r8/P/7/Pz/+/39//v9/f/8/f3/+v39//n8/P/5/Pz/+vz8//r8/P/8/fz//f39//v9/P/9/v3//f79//7+/f/+//3//f79//z9/f/////////////////8/f3//f39//3+/f/9/f3//P39//z9/f/7/P3/+vz8//v8+//9/v3//f79//39/f/9/f3//f39//z8/P/8/fv//Pz8//38+//9/Pv//Pz8//z9/P/9/fz//f38//z8/P/8/f3//f79//r9/f/5/Pv/9vr3wun18RnU8e0AAAAAAAAAAAAAAAAA9/z2APD69i34/PrW+fz8//n8/P/6/Pz/+/38//v8/P/8/fz//f38//v9/f/7/f3//P39//3+/f/9/v3//v79//39/f/7/Pz/+vz8//n8/P/6/Pz/+/z8//3+/f/9/f3/+/z8//v8/P/9/f3//f39//39/f/8/f3/+/39//r8/P/7/Pz/+/z8//z9/f/9/f3//P39//3+/f/9/v7//f7+//3+/f/8/f3/+/z8//z9/f/+/v3//v79//7+/f/+/v3//P39//z9/f/9/f3//v79//z9/f/8/fz//P39//3+/f/9/v3//f39//39/f/9/f3/+/z8//z8+//7/Pz//Pz8//z9/P/8/fz//P38//z8/P/7/Pz/+/z8//z9/f/9/vz/+f38//X7+N7t9/Q8/f3zAAAAAAAAAAAAAAAAAAAAAABf1dIA////APT79kL4+/jb+Pv7//n8+//5/Pv/+vz8//v9/P/8/f3/+vz8//n8/P/6/f3//P39//39/f/9/f3/+/39//v8/f/6/Pz/+Pz8//n8/P/7/fz//f39//7+/f/8/fz//P38//39/f/8/f3//f39//3+/f/8/f3/+/z8//z9/P/8/fz//P38//z9/f/7/f3//f39//z9/f/9/v3//f79//z9/f/8/f3//f39//79/f/9/v3//v79//7+/f/9/v3//f79//3+/f/9/fz//Pz8//z9/P/9/f3//f39//39/f/8/f3//f39//3+/f/8/Pz//Pz7//v8/P/8/f3//P38//z9/P/7/Pz/+vz8//r8/P/6/Pz/+/z8//r8+//2+/jn7fbzUAAAAADD5+0AAAAAAAAAAAAAAAAAAAAAAAAAAADU9uwA////APT59EL1+vjV+Pv7//n8+//6/Pz/+vz8//r8/f/7/P3/+/39//v9/f/8/f3//f39//z9/f/7/f3//P39//z9/f/7/Pz//P39//39/f/8/f3//f38//39/P/9/vz//f38//z9/P/9/fz//f38//z9/P/8/Pz//Pz8//39/f/9/f3//f39//z9/f/7/f3/+vz8//z9/f/9/f3//v39//79/f/9/f3//f38//3+/f/+/v3//f79//3+/f/9/v3//f79//39/f/8/Pz//Pz8//39/f/9/f3//Pz8//r8/P/8/fz//f39//z8/P/7/Pz/+vz8//r8/P/7/Pz//f39//39/f/8/P3/+/z8//r8+//3+/r/9fr33+z28VOW29kB1O3rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADk9/AA////APH48i74+/iy+Pz6/fn9/P/6/f3/+/39//v9/f/9/v3//f79//z+/f/8/f3/+/38//v8/P/8/f3//P38//z9/f/9/v3//f39//v9/f/7/f3//P39//z9/f/9/f3/+/z8//v8/P/7/Pz/+/z8//z9/f/8/f3//f39//39/f/9/f3//P39//z9/f/6/Pz/+/z8//v9/f/8/f3//f39//z9/f/7/fz//f38//39/f/9/f3//f39//z9/f/9/v3//f79//39/f/7/Pz/+/z8//39/f/8/fz/+vz8//v8/f/8/f3/+/z9//v8/P/6/Pz/+vz8//v8/f/9/v3//P39//v9/f/5/Pz/9/r5/vL49cbr9fI/////ANDu6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADR7ukA9Pn0AO/48RT0+/Z49vv53fj8+//6/fz/+/39//3+/f/+/v3//f79//z9/f/6/Pz/+vv7//r8/P/8/Pz/+/39//3+/f/7/f3/+v38//r9/P/7/f3/+/39//r8/P/6/Pz/+/z8//r8/P/6/Pz/+/39//z9/f/8/f3/+/z8//v9/P/7/fz/+/z8//r8/P/6/Pz/+/39//z9/P/8/fz//P39//z9/f/8/fz/+/38//z9/f/7/f3/+v39//v9/f/7/f3/+v39//n9/P/7/f3//f39//39/P/7/Pz/+/z9//z9/f/9/f3//P39//v8/P/7/Pz//P39//z9/f/7/f3/+vz8//b7+eXv+PWE4fLvG//99gDG7OsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ8uQA8/nyAP///wDt9/Mr8/v3gfj8+s35/Pv0+fz7//v9/P/8/fz/+/38//v8/P/6/Pv/+fz7//r8/P/9/fz//f38//r8/P/6/fz/+v38//n9/P/5/Pz/+Pz7//r8/P/7/fz/+/z7//v8+//6/Pv/+vz8//v9+//6/Pv/+fz7//n8/P/6/Pv/+vz8//r8/P/7/Pz/+/z8//r8/P/5/Pv/+fz7//n8+//5/Pz/+fz7//n8+//4/fv/+P38//n9/P/5/Pz/+fz8//v9/P/8/Pz/+/z8//r8/P/6/Pz/+/z8//v8/P/7/Pz/+fz7//n7+//6/Pv/+fz69/f8+dby+fiL6Pb1M43Z5gLo8/AAouXtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2/TvAPP59QD///8A7PjzGvH49VLz+faU9vr3wvX799/1+/fx9fr4+PP6+fby+vnz8vr59fT7+ff2/Pry9vv58PT7+vb0+/r58/v6+PH6+vfx+vn38vv6+PT7+/j0+vn38fr49/D6+Pfz+vj49Pr5+fP6+fjx+vn38vv6+PT7+vjz+vn38/r59vX7+ff0+/n48/r5+fL6+Pnx+vj48fr4+PL6+fby+vn28fr59/L7+vjy+/r18vv69fP7+vXz+/r38vv69/P7+vb0+vn18/r48fP7+fLz+/n18/r48fT79+T0+vfc8vr3xPH59prr9/Ze4PT0IQCiywHx+PYAyuzxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8AAAAAAAAAD/wAA/wAAAAAAAAAA/wAA/gAAAAAAAAAAPwAA+AAAAAAAAAAAHwAA8AAAAAAAAAAADwAA4AAAAAAAAAAABwAAwAAAAAAAAAAAAwAAwAAAAAAAAAAAAwAAgAAAAAAAAAAAAQAAgAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAQAAgAAAAAAAAAAAAQAAwAAAAAAAAAAAAwAA4AAAAAAAAAAABwAA8AAAAAAAAAAADwAA+AAAAAAAAAAADwAA/AAAAAAAAAAAPwAA/gAAAAAAAAAAfwAA/4AAAAAAAAAA/wAA/+AAAAAAAAAD/wAA";
43157
- var _arrayReduce;
43158
- var hasRequired_arrayReduce;
43159
- function require_arrayReduce() {
43160
- if (hasRequired_arrayReduce) return _arrayReduce;
43161
- hasRequired_arrayReduce = 1;
43162
- function arrayReduce(array, iteratee, accumulator, initAccum) {
43163
- var index2 = -1, length = array == null ? 0 : array.length;
43164
- if (initAccum && length) {
43165
- accumulator = array[++index2];
43166
- }
43167
- while (++index2 < length) {
43168
- accumulator = iteratee(accumulator, array[index2], index2, array);
43169
- }
43170
- return accumulator;
43171
- }
43172
- _arrayReduce = arrayReduce;
43173
- return _arrayReduce;
43174
- }
43175
- var _basePropertyOf;
43176
- var hasRequired_basePropertyOf;
43177
- function require_basePropertyOf() {
43178
- if (hasRequired_basePropertyOf) return _basePropertyOf;
43179
- hasRequired_basePropertyOf = 1;
43180
- function basePropertyOf(object) {
43181
- return function(key) {
43182
- return object == null ? void 0 : object[key];
43183
- };
43184
- }
43185
- _basePropertyOf = basePropertyOf;
43186
- return _basePropertyOf;
43187
- }
43188
- var _deburrLetter;
43189
- var hasRequired_deburrLetter;
43190
- function require_deburrLetter() {
43191
- if (hasRequired_deburrLetter) return _deburrLetter;
43192
- hasRequired_deburrLetter = 1;
43193
- var basePropertyOf = require_basePropertyOf();
43194
- var deburredLetters = {
43195
- // Latin-1 Supplement block.
43196
- "À": "A",
43197
- "Á": "A",
43198
- "Â": "A",
43199
- "Ã": "A",
43200
- "Ä": "A",
43201
- "Å": "A",
43202
- "à": "a",
43203
- "á": "a",
43204
- "â": "a",
43205
- "ã": "a",
43206
- "ä": "a",
43207
- "å": "a",
43208
- "Ç": "C",
43209
- "ç": "c",
43210
- "Ð": "D",
43211
- "ð": "d",
43212
- "È": "E",
43213
- "É": "E",
43214
- "Ê": "E",
43215
- "Ë": "E",
43216
- "è": "e",
43217
- "é": "e",
43218
- "ê": "e",
43219
- "ë": "e",
43220
- "Ì": "I",
43221
- "Í": "I",
43222
- "Î": "I",
43223
- "Ï": "I",
43224
- "ì": "i",
43225
- "í": "i",
43226
- "î": "i",
43227
- "ï": "i",
43228
- "Ñ": "N",
43229
- "ñ": "n",
43230
- "Ò": "O",
43231
- "Ó": "O",
43232
- "Ô": "O",
43233
- "Õ": "O",
43234
- "Ö": "O",
43235
- "Ø": "O",
43236
- "ò": "o",
43237
- "ó": "o",
43238
- "ô": "o",
43239
- "õ": "o",
43240
- "ö": "o",
43241
- "ø": "o",
43242
- "Ù": "U",
43243
- "Ú": "U",
43244
- "Û": "U",
43245
- "Ü": "U",
43246
- "ù": "u",
43247
- "ú": "u",
43248
- "û": "u",
43249
- "ü": "u",
43250
- "Ý": "Y",
43251
- "ý": "y",
43252
- "ÿ": "y",
43253
- "Æ": "Ae",
43254
- "æ": "ae",
43255
- "Þ": "Th",
43256
- "þ": "th",
43257
- "ß": "ss",
43258
- // Latin Extended-A block.
43259
- "Ā": "A",
43260
- "Ă": "A",
43261
- "Ą": "A",
43262
- "ā": "a",
43263
- "ă": "a",
43264
- "ą": "a",
43265
- "Ć": "C",
43266
- "Ĉ": "C",
43267
- "Ċ": "C",
43268
- "Č": "C",
43269
- "ć": "c",
43270
- "ĉ": "c",
43271
- "ċ": "c",
43272
- "č": "c",
43273
- "Ď": "D",
43274
- "Đ": "D",
43275
- "ď": "d",
43276
- "đ": "d",
43277
- "Ē": "E",
43278
- "Ĕ": "E",
43279
- "Ė": "E",
43280
- "Ę": "E",
43281
- "Ě": "E",
43282
- "ē": "e",
43283
- "ĕ": "e",
43284
- "ė": "e",
43285
- "ę": "e",
43286
- "ě": "e",
43287
- "Ĝ": "G",
43288
- "Ğ": "G",
43289
- "Ġ": "G",
43290
- "Ģ": "G",
43291
- "ĝ": "g",
43292
- "ğ": "g",
43293
- "ġ": "g",
43294
- "ģ": "g",
43295
- "Ĥ": "H",
43296
- "Ħ": "H",
43297
- "ĥ": "h",
43298
- "ħ": "h",
43299
- "Ĩ": "I",
43300
- "Ī": "I",
43301
- "Ĭ": "I",
43302
- "Į": "I",
43303
- "İ": "I",
43304
- "ĩ": "i",
43305
- "ī": "i",
43306
- "ĭ": "i",
43307
- "į": "i",
43308
- "ı": "i",
43309
- "Ĵ": "J",
43310
- "ĵ": "j",
43311
- "Ķ": "K",
43312
- "ķ": "k",
43313
- "ĸ": "k",
43314
- "Ĺ": "L",
43315
- "Ļ": "L",
43316
- "Ľ": "L",
43317
- "Ŀ": "L",
43318
- "Ł": "L",
43319
- "ĺ": "l",
43320
- "ļ": "l",
43321
- "ľ": "l",
43322
- "ŀ": "l",
43323
- "ł": "l",
43324
- "Ń": "N",
43325
- "Ņ": "N",
43326
- "Ň": "N",
43327
- "Ŋ": "N",
43328
- "ń": "n",
43329
- "ņ": "n",
43330
- "ň": "n",
43331
- "ŋ": "n",
43332
- "Ō": "O",
43333
- "Ŏ": "O",
43334
- "Ő": "O",
43335
- "ō": "o",
43336
- "ŏ": "o",
43337
- "ő": "o",
43338
- "Ŕ": "R",
43339
- "Ŗ": "R",
43340
- "Ř": "R",
43341
- "ŕ": "r",
43342
- "ŗ": "r",
43343
- "ř": "r",
43344
- "Ś": "S",
43345
- "Ŝ": "S",
43346
- "Ş": "S",
43347
- "Š": "S",
43348
- "ś": "s",
43349
- "ŝ": "s",
43350
- "ş": "s",
43351
- "š": "s",
43352
- "Ţ": "T",
43353
- "Ť": "T",
43354
- "Ŧ": "T",
43355
- "ţ": "t",
43356
- "ť": "t",
43357
- "ŧ": "t",
43358
- "Ũ": "U",
43359
- "Ū": "U",
43360
- "Ŭ": "U",
43361
- "Ů": "U",
43362
- "Ű": "U",
43363
- "Ų": "U",
43364
- "ũ": "u",
43365
- "ū": "u",
43366
- "ŭ": "u",
43367
- "ů": "u",
43368
- "ű": "u",
43369
- "ų": "u",
43370
- "Ŵ": "W",
43371
- "ŵ": "w",
43372
- "Ŷ": "Y",
43373
- "ŷ": "y",
43374
- "Ÿ": "Y",
43375
- "Ź": "Z",
43376
- "Ż": "Z",
43377
- "Ž": "Z",
43378
- "ź": "z",
43379
- "ż": "z",
43380
- "ž": "z",
43381
- "IJ": "IJ",
43382
- "ij": "ij",
43383
- "Œ": "Oe",
43384
- "œ": "oe",
43385
- "ʼn": "'n",
43386
- "ſ": "s"
43387
- };
43388
- var deburrLetter = basePropertyOf(deburredLetters);
43389
- _deburrLetter = deburrLetter;
43390
- return _deburrLetter;
43391
- }
43392
- var _arrayMap;
43393
- var hasRequired_arrayMap;
43394
- function require_arrayMap() {
43395
- if (hasRequired_arrayMap) return _arrayMap;
43396
- hasRequired_arrayMap = 1;
43397
- function arrayMap(array, iteratee) {
43398
- var index2 = -1, length = array == null ? 0 : array.length, result = Array(length);
43399
- while (++index2 < length) {
43400
- result[index2] = iteratee(array[index2], index2, array);
43401
- }
43402
- return result;
43403
- }
43404
- _arrayMap = arrayMap;
43405
- return _arrayMap;
43406
- }
43407
- var _baseToString;
43408
- var hasRequired_baseToString;
43409
- function require_baseToString() {
43410
- if (hasRequired_baseToString) return _baseToString;
43411
- hasRequired_baseToString = 1;
43412
- var Symbol2 = require_Symbol(), arrayMap = require_arrayMap(), isArray2 = requireIsArray(), isSymbol2 = requireIsSymbol();
43413
- var symbolProto = Symbol2 ? Symbol2.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;
43414
- function baseToString(value) {
43415
- if (typeof value == "string") {
43416
- return value;
43417
- }
43418
- if (isArray2(value)) {
43419
- return arrayMap(value, baseToString) + "";
43420
- }
43421
- if (isSymbol2(value)) {
43422
- return symbolToString ? symbolToString.call(value) : "";
43423
- }
43424
- var result = value + "";
43425
- return result == "0" && 1 / value == -Infinity ? "-0" : result;
43426
- }
43427
- _baseToString = baseToString;
43428
- return _baseToString;
43429
- }
43430
- var toString_1;
43431
- var hasRequiredToString;
43432
- function requireToString() {
43433
- if (hasRequiredToString) return toString_1;
43434
- hasRequiredToString = 1;
43435
- var baseToString = require_baseToString();
43436
- function toString(value) {
43437
- return value == null ? "" : baseToString(value);
43438
- }
43439
- toString_1 = toString;
43440
- return toString_1;
43441
- }
43442
- var deburr_1;
43443
- var hasRequiredDeburr;
43444
- function requireDeburr() {
43445
- if (hasRequiredDeburr) return deburr_1;
43446
- hasRequiredDeburr = 1;
43447
- var deburrLetter = require_deburrLetter(), toString = requireToString();
43448
- var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g;
43449
- var rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;
43450
- var rsCombo = "[" + rsComboRange + "]";
43451
- var reComboMark = RegExp(rsCombo, "g");
43452
- function deburr(string) {
43453
- string = toString(string);
43454
- return string && string.replace(reLatin, deburrLetter).replace(reComboMark, "");
43455
- }
43456
- deburr_1 = deburr;
43457
- return deburr_1;
43458
- }
43459
- var _asciiWords;
43460
- var hasRequired_asciiWords;
43461
- function require_asciiWords() {
43462
- if (hasRequired_asciiWords) return _asciiWords;
43463
- hasRequired_asciiWords = 1;
43464
- var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;
43465
- function asciiWords(string) {
43466
- return string.match(reAsciiWord) || [];
43467
- }
43468
- _asciiWords = asciiWords;
43469
- return _asciiWords;
43470
- }
43471
- var _hasUnicodeWord;
43472
- var hasRequired_hasUnicodeWord;
43473
- function require_hasUnicodeWord() {
43474
- if (hasRequired_hasUnicodeWord) return _hasUnicodeWord;
43475
- hasRequired_hasUnicodeWord = 1;
43476
- var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;
43477
- function hasUnicodeWord(string) {
43478
- return reHasUnicodeWord.test(string);
43479
- }
43480
- _hasUnicodeWord = hasUnicodeWord;
43481
- return _hasUnicodeWord;
43482
- }
43483
- var _unicodeWords;
43484
- var hasRequired_unicodeWords;
43485
- function require_unicodeWords() {
43486
- if (hasRequired_unicodeWords) return _unicodeWords;
43487
- hasRequired_unicodeWords = 1;
43488
- var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsDingbatRange = "\\u2700-\\u27bf", rsLowerRange = "a-z\\xdf-\\xf6\\xf8-\\xff", rsMathOpRange = "\\xac\\xb1\\xd7\\xf7", rsNonCharRange = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", rsPunctuationRange = "\\u2000-\\u206f", rsSpaceRange = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", rsUpperRange = "A-Z\\xc0-\\xd6\\xd8-\\xde", rsVarRange = "\\ufe0e\\ufe0f", rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
43489
- var rsApos = "['’]", rsBreak = "[" + rsBreakRange + "]", rsCombo = "[" + rsComboRange + "]", rsDigits = "\\d+", rsDingbat = "[" + rsDingbatRange + "]", rsLower = "[" + rsLowerRange + "]", rsMisc = "[^" + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsUpper = "[" + rsUpperRange + "]", rsZWJ = "\\u200d";
43490
- var rsMiscLower = "(?:" + rsLower + "|" + rsMisc + ")", rsMiscUpper = "(?:" + rsUpper + "|" + rsMisc + ")", rsOptContrLower = "(?:" + rsApos + "(?:d|ll|m|re|s|t|ve))?", rsOptContrUpper = "(?:" + rsApos + "(?:D|LL|M|RE|S|T|VE))?", reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsOrdLower = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", rsOrdUpper = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsEmoji = "(?:" + [rsDingbat, rsRegional, rsSurrPair].join("|") + ")" + rsSeq;
43491
- var reUnicodeWord = RegExp([
43492
- rsUpper + "?" + rsLower + "+" + rsOptContrLower + "(?=" + [rsBreak, rsUpper, "$"].join("|") + ")",
43493
- rsMiscUpper + "+" + rsOptContrUpper + "(?=" + [rsBreak, rsUpper + rsMiscLower, "$"].join("|") + ")",
43494
- rsUpper + "?" + rsMiscLower + "+" + rsOptContrLower,
43495
- rsUpper + "+" + rsOptContrUpper,
43496
- rsOrdUpper,
43497
- rsOrdLower,
43498
- rsDigits,
43499
- rsEmoji
43500
- ].join("|"), "g");
43501
- function unicodeWords(string) {
43502
- return string.match(reUnicodeWord) || [];
43503
- }
43504
- _unicodeWords = unicodeWords;
43505
- return _unicodeWords;
43506
- }
43507
- var words_1;
43508
- var hasRequiredWords;
43509
- function requireWords() {
43510
- if (hasRequiredWords) return words_1;
43511
- hasRequiredWords = 1;
43512
- var asciiWords = require_asciiWords(), hasUnicodeWord = require_hasUnicodeWord(), toString = requireToString(), unicodeWords = require_unicodeWords();
43513
- function words(string, pattern, guard) {
43514
- string = toString(string);
43515
- pattern = guard ? void 0 : pattern;
43516
- if (pattern === void 0) {
43517
- return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);
43518
- }
43519
- return string.match(pattern) || [];
43520
- }
43521
- words_1 = words;
43522
- return words_1;
43523
- }
43524
- var _createCompounder;
43525
- var hasRequired_createCompounder;
43526
- function require_createCompounder() {
43527
- if (hasRequired_createCompounder) return _createCompounder;
43528
- hasRequired_createCompounder = 1;
43529
- var arrayReduce = require_arrayReduce(), deburr = requireDeburr(), words = requireWords();
43530
- var rsApos = "['’]";
43531
- var reApos = RegExp(rsApos, "g");
43532
- function createCompounder(callback) {
43533
- return function(string) {
43534
- return arrayReduce(words(deburr(string).replace(reApos, "")), callback, "");
43535
- };
43536
- }
43537
- _createCompounder = createCompounder;
43538
- return _createCompounder;
43539
- }
43540
- var _baseSlice;
43541
- var hasRequired_baseSlice;
43542
- function require_baseSlice() {
43543
- if (hasRequired_baseSlice) return _baseSlice;
43544
- hasRequired_baseSlice = 1;
43545
- function baseSlice(array, start, end) {
43546
- var index2 = -1, length = array.length;
43547
- if (start < 0) {
43548
- start = -start > length ? 0 : length + start;
43549
- }
43550
- end = end > length ? length : end;
43551
- if (end < 0) {
43552
- end += length;
43553
- }
43554
- length = start > end ? 0 : end - start >>> 0;
43555
- start >>>= 0;
43556
- var result = Array(length);
43557
- while (++index2 < length) {
43558
- result[index2] = array[index2 + start];
43559
- }
43560
- return result;
43561
- }
43562
- _baseSlice = baseSlice;
43563
- return _baseSlice;
43564
- }
43565
- var _castSlice;
43566
- var hasRequired_castSlice;
43567
- function require_castSlice() {
43568
- if (hasRequired_castSlice) return _castSlice;
43569
- hasRequired_castSlice = 1;
43570
- var baseSlice = require_baseSlice();
43571
- function castSlice(array, start, end) {
43572
- var length = array.length;
43573
- end = end === void 0 ? length : end;
43574
- return !start && end >= length ? array : baseSlice(array, start, end);
43575
- }
43576
- _castSlice = castSlice;
43577
- return _castSlice;
43578
- }
43579
- var _hasUnicode;
43580
- var hasRequired_hasUnicode;
43581
- function require_hasUnicode() {
43582
- if (hasRequired_hasUnicode) return _hasUnicode;
43583
- hasRequired_hasUnicode = 1;
43584
- var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsVarRange = "\\ufe0e\\ufe0f";
43585
- var rsZWJ = "\\u200d";
43586
- var reHasUnicode = RegExp("[" + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + "]");
43587
- function hasUnicode(string) {
43588
- return reHasUnicode.test(string);
43589
- }
43590
- _hasUnicode = hasUnicode;
43591
- return _hasUnicode;
43592
- }
43593
- var _asciiToArray;
43594
- var hasRequired_asciiToArray;
43595
- function require_asciiToArray() {
43596
- if (hasRequired_asciiToArray) return _asciiToArray;
43597
- hasRequired_asciiToArray = 1;
43598
- function asciiToArray(string) {
43599
- return string.split("");
43600
- }
43601
- _asciiToArray = asciiToArray;
43602
- return _asciiToArray;
43603
- }
43604
- var _unicodeToArray;
43605
- var hasRequired_unicodeToArray;
43606
- function require_unicodeToArray() {
43607
- if (hasRequired_unicodeToArray) return _unicodeToArray;
43608
- hasRequired_unicodeToArray = 1;
43609
- var rsAstralRange = "\\ud800-\\udfff", rsComboMarksRange = "\\u0300-\\u036f", reComboHalfMarksRange = "\\ufe20-\\ufe2f", rsComboSymbolsRange = "\\u20d0-\\u20ff", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsVarRange = "\\ufe0e\\ufe0f";
43610
- var rsAstral = "[" + rsAstralRange + "]", rsCombo = "[" + rsComboRange + "]", rsFitz = "\\ud83c[\\udffb-\\udfff]", rsModifier = "(?:" + rsCombo + "|" + rsFitz + ")", rsNonAstral = "[^" + rsAstralRange + "]", rsRegional = "(?:\\ud83c[\\udde6-\\uddff]){2}", rsSurrPair = "[\\ud800-\\udbff][\\udc00-\\udfff]", rsZWJ = "\\u200d";
43611
- var reOptMod = rsModifier + "?", rsOptVar = "[" + rsVarRange + "]?", rsOptJoin = "(?:" + rsZWJ + "(?:" + [rsNonAstral, rsRegional, rsSurrPair].join("|") + ")" + rsOptVar + reOptMod + ")*", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsSymbol = "(?:" + [rsNonAstral + rsCombo + "?", rsCombo, rsRegional, rsSurrPair, rsAstral].join("|") + ")";
43612
- var reUnicode = RegExp(rsFitz + "(?=" + rsFitz + ")|" + rsSymbol + rsSeq, "g");
43613
- function unicodeToArray(string) {
43614
- return string.match(reUnicode) || [];
43615
- }
43616
- _unicodeToArray = unicodeToArray;
43617
- return _unicodeToArray;
43618
- }
43619
- var _stringToArray;
43620
- var hasRequired_stringToArray;
43621
- function require_stringToArray() {
43622
- if (hasRequired_stringToArray) return _stringToArray;
43623
- hasRequired_stringToArray = 1;
43624
- var asciiToArray = require_asciiToArray(), hasUnicode = require_hasUnicode(), unicodeToArray = require_unicodeToArray();
43625
- function stringToArray(string) {
43626
- return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);
43627
- }
43628
- _stringToArray = stringToArray;
43629
- return _stringToArray;
43630
- }
43631
- var _createCaseFirst;
43632
- var hasRequired_createCaseFirst;
43633
- function require_createCaseFirst() {
43634
- if (hasRequired_createCaseFirst) return _createCaseFirst;
43635
- hasRequired_createCaseFirst = 1;
43636
- var castSlice = require_castSlice(), hasUnicode = require_hasUnicode(), stringToArray = require_stringToArray(), toString = requireToString();
43637
- function createCaseFirst(methodName) {
43638
- return function(string) {
43639
- string = toString(string);
43640
- var strSymbols = hasUnicode(string) ? stringToArray(string) : void 0;
43641
- var chr = strSymbols ? strSymbols[0] : string.charAt(0);
43642
- var trailing = strSymbols ? castSlice(strSymbols, 1).join("") : string.slice(1);
43643
- return chr[methodName]() + trailing;
43644
- };
43645
- }
43646
- _createCaseFirst = createCaseFirst;
43647
- return _createCaseFirst;
43648
- }
43649
- var upperFirst_1;
43650
- var hasRequiredUpperFirst;
43651
- function requireUpperFirst() {
43652
- if (hasRequiredUpperFirst) return upperFirst_1;
43653
- hasRequiredUpperFirst = 1;
43654
- var createCaseFirst = require_createCaseFirst();
43655
- var upperFirst = createCaseFirst("toUpperCase");
43656
- upperFirst_1 = upperFirst;
43657
- return upperFirst_1;
43658
- }
43659
- var startCase_1;
43660
- var hasRequiredStartCase;
43661
- function requireStartCase() {
43662
- if (hasRequiredStartCase) return startCase_1;
43663
- hasRequiredStartCase = 1;
43664
- var createCompounder = require_createCompounder(), upperFirst = requireUpperFirst();
43665
- var startCase2 = createCompounder(function(result, word, index2) {
43666
- return result + (index2 ? " " : "") + upperFirst(word);
43667
- });
43668
- startCase_1 = startCase2;
43669
- return startCase_1;
43670
- }
43671
- var startCaseExports = requireStartCase();
43672
- const startCase = /* @__PURE__ */ getDefaultExportFromCjs(startCaseExports);
43673
43365
  const _hoisted_1$16 = {
43674
43366
  viewBox: "0 0 24 24",
43675
43367
  width: "1.2em",
@@ -43698,12 +43390,10 @@ function render$K(_ctx, _cache) {
43698
43390
  ])]);
43699
43391
  }
43700
43392
  const InfoIcon = markRaw({ name: "material-symbols-info", render: render$K });
43701
- const name = "x-print-designer";
43702
- const version = "0.4.44";
43393
+ const version = "0.4.45";
43703
43394
  const dependencies = { "@guolao/vue-monaco-editor": "^1.6.0", "canvg": "^3.0.11", "dom-to-image-more": "^3.7.2", "echarts": "^6.0.0", "jsbarcode": "^3.12.3", "jspdf": "4.2", "jszip": "^3.10.1", "lodash": "^4.17.21", "qrcode": "^1.5.4", "uuid": "^11.0.3" };
43704
43395
  const devDependencies = { "@iconify-json/material-symbols": "^1.2.53", "@types/jsbarcode": "^3.11.4", "@types/lodash": "^4.17.13", "@types/node": "^22.10.2", "@types/qrcode": "^1.5.6", "@types/uuid": "^10.0.0", "@vitejs/plugin-vue": "^5.2.1", "@vue/tsconfig": "^0.7.0", "autoprefixer": "^10.4.20", "postcss": "^8.4.49", "pinia": "2.3.0", "rollup-plugin-visualizer": "^7.0.1", "sharp": "^0.34.5", "tailwindcss": "^3.4.17", "terser": "^5.46.1", "typescript": "~5.6.2", "unplugin-icons": "^23.0.1", "vite": "^6.0.1", "vue": "3.5.13", "vue-i18n": "11.2.8", "vue-tsc": "^2.1.10" };
43705
43396
  const pkg = {
43706
- name,
43707
43397
  version,
43708
43398
  dependencies,
43709
43399
  devDependencies
@@ -43787,25 +43477,26 @@ const _hoisted_72$1 = {
43787
43477
  class: "space-y-6"
43788
43478
  };
43789
43479
  const _hoisted_73$1 = { class: "text-center mb-8" };
43790
- const _hoisted_74$1 = { class: "text-xl font-bold text-gray-800" };
43791
- const _hoisted_75$1 = { class: "mt-1 text-xs text-gray-500" };
43792
- const _hoisted_76$1 = { class: "mt-4 mx-auto max-w-md text-left" };
43793
- const _hoisted_77$1 = { class: "font-medium text-gray-900 mb-2 border-b pb-1" };
43794
- const _hoisted_78$1 = { class: "space-y-2" };
43795
- const _hoisted_79$1 = { class: "flex items-center justify-between rounded-md border border-gray-200 bg-gray-50 px-3 py-2 text-xs" };
43796
- const _hoisted_80$1 = { class: "inline-flex items-center gap-1.5 text-gray-500" };
43797
- const _hoisted_81$1 = { class: "flex items-center justify-between rounded-md border border-gray-200 bg-gray-50 px-3 py-2 text-xs" };
43798
- const _hoisted_82$1 = { class: "inline-flex items-center gap-1.5 text-gray-500" };
43799
- const _hoisted_83$1 = { class: "font-medium text-gray-900 mb-3 border-b pb-1" };
43800
- const _hoisted_84$1 = { class: "bg-gray-50 rounded-lg border border-gray-200 overflow-hidden" };
43801
- const _hoisted_85$1 = { class: "w-full text-xs text-left" };
43802
- const _hoisted_86$1 = { class: "bg-gray-100 text-gray-700 font-medium" };
43803
- const _hoisted_87$1 = { class: "px-4 py-2 border-b" };
43480
+ const _hoisted_74$1 = ["alt"];
43481
+ const _hoisted_75$1 = { class: "text-xl font-bold text-gray-800" };
43482
+ const _hoisted_76$1 = { class: "mt-1 text-xs text-gray-500" };
43483
+ const _hoisted_77$1 = { class: "mt-4 mx-auto max-w-md text-left" };
43484
+ const _hoisted_78$1 = { class: "font-medium text-gray-900 mb-2 border-b pb-1" };
43485
+ const _hoisted_79$1 = { class: "space-y-2" };
43486
+ const _hoisted_80$1 = { class: "flex items-center justify-between rounded-md border border-gray-200 bg-gray-50 px-3 py-2 text-xs" };
43487
+ const _hoisted_81$1 = { class: "inline-flex items-center gap-1.5 text-gray-500" };
43488
+ const _hoisted_82$1 = { class: "flex items-center justify-between rounded-md border border-gray-200 bg-gray-50 px-3 py-2 text-xs" };
43489
+ const _hoisted_83$1 = { class: "inline-flex items-center gap-1.5 text-gray-500" };
43490
+ const _hoisted_84$1 = { class: "font-medium text-gray-900 mb-3 border-b pb-1" };
43491
+ const _hoisted_85$1 = { class: "bg-gray-50 rounded-lg border border-gray-200 overflow-hidden" };
43492
+ const _hoisted_86$1 = { class: "w-full text-xs text-left" };
43493
+ const _hoisted_87$1 = { class: "bg-gray-100 text-gray-700 font-medium" };
43804
43494
  const _hoisted_88$1 = { class: "px-4 py-2 border-b" };
43805
- const _hoisted_89$1 = { class: "divide-y divide-gray-200" };
43806
- const _hoisted_90$1 = { class: "px-4 py-1 text-gray-700 font-mono text-[11px]" };
43807
- const _hoisted_91$1 = ["href", "title"];
43808
- const _hoisted_92$1 = { class: "px-4 py-1 text-gray-500 text-[11px]" };
43495
+ const _hoisted_89$1 = { class: "px-4 py-2 border-b" };
43496
+ const _hoisted_90$1 = { class: "divide-y divide-gray-200" };
43497
+ const _hoisted_91$1 = { class: "px-4 py-1 text-gray-700 font-mono text-[11px]" };
43498
+ const _hoisted_92$1 = ["href", "title"];
43499
+ const _hoisted_93$1 = { class: "px-4 py-1 text-gray-500 text-[11px]" };
43809
43500
  const _sfc_main$p = /* @__PURE__ */ defineComponent({
43810
43501
  __name: "HelpModal",
43811
43502
  props: {
@@ -43844,13 +43535,13 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
43844
43535
  const dependencies2 = [
43845
43536
  ...Object.entries(pkg.dependencies || {}),
43846
43537
  ...Object.entries(pkg.devDependencies || {})
43847
- ].map(([name2, version22]) => ({
43848
- name: name2,
43538
+ ].map(([name, version22]) => ({
43539
+ name,
43849
43540
  version: version22,
43850
- url: `https://www.npmjs.com/package/${encodeURIComponent(name2)}`
43541
+ url: `https://www.npmjs.com/package/${encodeURIComponent(name)}`
43851
43542
  }));
43852
43543
  const version2 = pkg.version;
43853
- const projectName = startCase(pkg.name);
43544
+ const projectName = computed(() => t("common.appTitle"));
43854
43545
  return (_ctx, _cache) => {
43855
43546
  return openBlock(), createBlock(Teleport, {
43856
43547
  to: unref(modalContainer) || "body"
@@ -43884,7 +43575,7 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
43884
43575
  ]),
43885
43576
  createBaseVNode("div", _hoisted_6$j, [
43886
43577
  createBaseVNode("div", _hoisted_7$h, [
43887
- createBaseVNode("h3", _hoisted_8$f, toDisplayString$1(activeTab.value === "shortcuts" ? unref(t)("shortcuts.keyboardShortcuts") : unref(t)("help.aboutProject", { name: unref(projectName) })), 1),
43578
+ createBaseVNode("h3", _hoisted_8$f, toDisplayString$1(activeTab.value === "shortcuts" ? unref(t)("shortcuts.keyboardShortcuts") : unref(t)("help.aboutProject", { name: projectName.value })), 1),
43888
43579
  createBaseVNode("button", {
43889
43580
  onClick: close,
43890
43581
  class: "p-1 hover:bg-gray-100 rounded-full transition-colors text-gray-500"
@@ -44049,18 +43740,18 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
44049
43740
  ])) : createCommentVNode("", true),
44050
43741
  activeTab.value === "about" ? (openBlock(), createElementBlock("div", _hoisted_72$1, [
44051
43742
  createBaseVNode("div", _hoisted_73$1, [
44052
- _cache[33] || (_cache[33] = createBaseVNode("img", {
43743
+ createBaseVNode("img", {
44053
43744
  src: _imports_0,
44054
- alt: "Vue Print Designer",
43745
+ alt: unref(t)("common.appTitle"),
44055
43746
  class: "w-12 h-12 mx-auto mb-2"
44056
- }, null, -1)),
44057
- createBaseVNode("h2", _hoisted_74$1, toDisplayString$1(unref(projectName)), 1),
44058
- createBaseVNode("div", _hoisted_75$1, toDisplayString$1(unref(t)("help.version")) + " " + toDisplayString$1(unref(version2)), 1),
44059
- createBaseVNode("div", _hoisted_76$1, [
44060
- createBaseVNode("h4", _hoisted_77$1, toDisplayString$1(unref(t)("help.links")), 1),
44061
- createBaseVNode("div", _hoisted_78$1, [
44062
- createBaseVNode("div", _hoisted_79$1, [
44063
- createBaseVNode("span", _hoisted_80$1, [
43747
+ }, null, 8, _hoisted_74$1),
43748
+ createBaseVNode("h2", _hoisted_75$1, toDisplayString$1(projectName.value), 1),
43749
+ createBaseVNode("div", _hoisted_76$1, toDisplayString$1(unref(t)("help.version")) + " " + toDisplayString$1(unref(version2)), 1),
43750
+ createBaseVNode("div", _hoisted_77$1, [
43751
+ createBaseVNode("h4", _hoisted_78$1, toDisplayString$1(unref(t)("help.links")), 1),
43752
+ createBaseVNode("div", _hoisted_79$1, [
43753
+ createBaseVNode("div", _hoisted_80$1, [
43754
+ createBaseVNode("span", _hoisted_81$1, [
44064
43755
  _cache[29] || (_cache[29] = createBaseVNode("img", {
44065
43756
  src: _imports_1,
44066
43757
  alt: "Website",
@@ -44076,8 +43767,8 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
44076
43767
  title: "https://printdot.cc"
44077
43768
  }, "https://printdot.cc", -1))
44078
43769
  ]),
44079
- createBaseVNode("div", _hoisted_81$1, [
44080
- createBaseVNode("span", _hoisted_82$1, [
43770
+ createBaseVNode("div", _hoisted_82$1, [
43771
+ createBaseVNode("span", _hoisted_83$1, [
44081
43772
  _cache[31] || (_cache[31] = createBaseVNode("svg", {
44082
43773
  viewBox: "0 0 16 16",
44083
43774
  "aria-hidden": "true",
@@ -44102,31 +43793,31 @@ const _sfc_main$p = /* @__PURE__ */ defineComponent({
44102
43793
  ])
44103
43794
  ]),
44104
43795
  createBaseVNode("div", null, [
44105
- createBaseVNode("h4", _hoisted_83$1, toDisplayString$1(unref(t)("help.dependencies")), 1),
44106
- createBaseVNode("div", _hoisted_84$1, [
44107
- createBaseVNode("table", _hoisted_85$1, [
44108
- createBaseVNode("thead", _hoisted_86$1, [
43796
+ createBaseVNode("h4", _hoisted_84$1, toDisplayString$1(unref(t)("help.dependencies")), 1),
43797
+ createBaseVNode("div", _hoisted_85$1, [
43798
+ createBaseVNode("table", _hoisted_86$1, [
43799
+ createBaseVNode("thead", _hoisted_87$1, [
44109
43800
  createBaseVNode("tr", null, [
44110
- createBaseVNode("th", _hoisted_87$1, toDisplayString$1(unref(t)("help.package")), 1),
44111
- createBaseVNode("th", _hoisted_88$1, toDisplayString$1(unref(t)("help.version")), 1)
43801
+ createBaseVNode("th", _hoisted_88$1, toDisplayString$1(unref(t)("help.package")), 1),
43802
+ createBaseVNode("th", _hoisted_89$1, toDisplayString$1(unref(t)("help.version")), 1)
44112
43803
  ])
44113
43804
  ]),
44114
- createBaseVNode("tbody", _hoisted_89$1, [
43805
+ createBaseVNode("tbody", _hoisted_90$1, [
44115
43806
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(dependencies2), (dep) => {
44116
43807
  return openBlock(), createElementBlock("tr", {
44117
43808
  key: dep.name,
44118
43809
  class: "hover:bg-gray-50"
44119
43810
  }, [
44120
- createBaseVNode("td", _hoisted_90$1, [
43811
+ createBaseVNode("td", _hoisted_91$1, [
44121
43812
  createBaseVNode("a", {
44122
43813
  href: dep.url,
44123
43814
  target: "_blank",
44124
43815
  rel: "noopener noreferrer",
44125
43816
  title: dep.url,
44126
43817
  class: "hover:underline hover:decoration-blue-600 hover:text-blue-600 transition-colors"
44127
- }, toDisplayString$1(dep.name), 9, _hoisted_91$1)
43818
+ }, toDisplayString$1(dep.name), 9, _hoisted_92$1)
44128
43819
  ]),
44129
- createBaseVNode("td", _hoisted_92$1, toDisplayString$1(dep.version), 1)
43820
+ createBaseVNode("td", _hoisted_93$1, toDisplayString$1(dep.version), 1)
44130
43821
  ]);
44131
43822
  }), 128))
44132
43823
  ])
@@ -45921,7 +45612,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
45921
45612
  newName = payload;
45922
45613
  } else {
45923
45614
  newName = payload.name;
45924
- const { name: name2, ...rest } = payload;
45615
+ const { name, ...rest } = payload;
45925
45616
  if (Object.keys(rest).length > 0) {
45926
45617
  extraValues = rest;
45927
45618
  }
@@ -46454,7 +46145,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
46454
46145
  },
46455
46146
  emits: ["update:value"],
46456
46147
  setup(__props, { emit: __emit }) {
46457
- const Editor = /* @__PURE__ */ defineAsyncComponent(() => import("./index-CFwMsAjW.js").then((m) => m.Editor));
46148
+ const Editor = /* @__PURE__ */ defineAsyncComponent(() => import("./index-sJJEP3Bf.js").then((m) => m.Editor));
46458
46149
  const emit2 = __emit;
46459
46150
  useDesignerStore();
46460
46151
  const { isDark: isDark2 } = useTheme();
@@ -48475,6 +48166,21 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
48475
48166
  var _a2, _b;
48476
48167
  return ((_b = (_a2 = element.value) == null ? void 0 : _a2.children) == null ? void 0 : _b.length) || 0;
48477
48168
  });
48169
+ const cellSelectionActive = computed(() => {
48170
+ const el2 = element.value;
48171
+ if (!el2) return false;
48172
+ if (el2.type === ElementType.CUSTOM_TABLE) {
48173
+ return !!store.customTableSelection && store.customTableSelection.elementId === el2.id;
48174
+ }
48175
+ if (el2.type === ElementType.TABLE) {
48176
+ return !!store.tableSelection && store.tableSelection.elementId === el2.id;
48177
+ }
48178
+ return false;
48179
+ });
48180
+ const selectedCellStyle = computed(() => {
48181
+ if (!cellSelectionActive.value || !element.value) return null;
48182
+ return element.value.type === ElementType.CUSTOM_TABLE ? store.customTableSelectionStyle : store.tableSelectionStyle;
48183
+ });
48478
48184
  const showCustomElementModal = ref(false);
48479
48185
  const customElementInitialName = ref("");
48480
48186
  const isSelfStyled = computed(() => {
@@ -48753,19 +48459,19 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
48753
48459
  });
48754
48460
  const onSaveCustomElement = (payload) => {
48755
48461
  if (element.value) {
48756
- let name2 = "";
48462
+ let name = "";
48757
48463
  let extraValues = void 0;
48758
48464
  if (typeof payload === "string") {
48759
- name2 = payload;
48465
+ name = payload;
48760
48466
  } else {
48761
- name2 = payload.name;
48467
+ name = payload.name;
48762
48468
  const { name: _, ...rest } = payload;
48763
48469
  if (Object.keys(rest).length > 0) {
48764
48470
  extraValues = rest;
48765
48471
  }
48766
48472
  }
48767
- if (name2) {
48768
- store.addCustomElement(name2, element.value, extraValues);
48473
+ if (name) {
48474
+ store.addCustomElement(name, element.value, extraValues);
48769
48475
  }
48770
48476
  }
48771
48477
  };
@@ -48783,11 +48489,20 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
48783
48489
  }
48784
48490
  };
48785
48491
  const handleStyleChange = (key, value) => {
48786
- if (element.value) {
48787
- store.updateElement(element.value.id, {
48788
- style: { ...element.value.style, [key]: value }
48789
- });
48492
+ if (!element.value) return;
48493
+ if (cellSelectionActive.value) {
48494
+ if (element.value.type === ElementType.CUSTOM_TABLE) {
48495
+ store.updateCustomTableSelectionStyle({ [key]: value });
48496
+ return;
48497
+ }
48498
+ if (element.value.type === ElementType.TABLE) {
48499
+ store.updateTableSelectionStyle({ [key]: value });
48500
+ return;
48501
+ }
48790
48502
  }
48503
+ store.updateElement(element.value.id, {
48504
+ style: { ...element.value.style, [key]: value }
48505
+ });
48791
48506
  };
48792
48507
  const handleDataJsonChange = (fieldKey, e) => {
48793
48508
  try {
@@ -48913,6 +48628,10 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
48913
48628
  };
48914
48629
  const getFieldValue = (field) => {
48915
48630
  if (!element.value) return field.defaultValue;
48631
+ if (field.target === "style" && field.key && selectedCellStyle.value) {
48632
+ const value2 = selectedCellStyle.value[field.key];
48633
+ return value2 ?? field.defaultValue;
48634
+ }
48916
48635
  const target = field.target === "style" ? element.value.style : element.value;
48917
48636
  const value = target[field.key];
48918
48637
  return value ?? field.defaultValue;
@@ -49602,7 +49321,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
49602
49321
  };
49603
49322
  }
49604
49323
  });
49605
- const PropertiesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-48e451d6"]]);
49324
+ const PropertiesPanel = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-ce99fe2e"]]);
49606
49325
  const _sfc_main$9 = /* @__PURE__ */ defineComponent({
49607
49326
  __name: "Ruler",
49608
49327
  props: {
@@ -51243,7 +50962,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
51243
50962
  };
51244
50963
  const renderBarcodeDataUrl = async (element) => {
51245
50964
  try {
51246
- const jsBarcodeModule = await import("./JsBarcode-CUSWbmPW.js").then((n) => n.JsBarcode);
50965
+ const jsBarcodeModule = await import("./JsBarcode-BO87HgIp.js").then((n) => n.JsBarcode);
51247
50966
  const JsBarcode = (jsBarcodeModule == null ? void 0 : jsBarcodeModule.default) || jsBarcodeModule;
51248
50967
  const canvas = document.createElement("canvas");
51249
50968
  const style = element.style || {};
@@ -51270,7 +50989,7 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
51270
50989
  const renderQrDataUrl = async (element) => {
51271
50990
  var _a2, _b;
51272
50991
  try {
51273
- const qrcodeModule = await import("./browser-hdgt6jOx.js").then((n) => n.browser);
50992
+ const qrcodeModule = await import("./browser-Ck0N2Y2e.js").then((n) => n.browser);
51274
50993
  const QRCode = (qrcodeModule == null ? void 0 : qrcodeModule.default) || qrcodeModule;
51275
50994
  return await QRCode.toDataURL(getResolvedContent(element), {
51276
50995
  margin: 0,
@@ -52806,6 +52525,7 @@ const _hoisted_19 = {
52806
52525
  key: 1,
52807
52526
  class: "fixed inset-0 bg-black/20 dark:bg-black/40 flex items-center justify-center z-[10000] pointer-events-auto transition-opacity duration-300"
52808
52527
  };
52528
+ const ONBOARDING_AUTO_START_SETTLE_MS = 800;
52809
52529
  const CRASH_KEY = "print-designer-crash-recovery";
52810
52530
  const PAGE_GAP_Y = 20;
52811
52531
  const _sfc_main$2 = /* @__PURE__ */ defineComponent({
@@ -52840,6 +52560,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
52840
52560
  const showRenderLoading = ref(false);
52841
52561
  let renderLoadingTimer = null;
52842
52562
  const isGlobalLoading = computed(() => templateStore.isLoading || store.isDataLoading || store.isExternalDataLoading || showRenderLoading.value);
52563
+ const onboardingAutoEligible = computed(() => store.mode === "template" && store.pages.every((page2) => !page2.elements || page2.elements.length === 0) && !isGlobalLoading.value);
52843
52564
  const startRenderTask = () => {
52844
52565
  pendingRenderCount.value += 1;
52845
52566
  if (renderLoadingTimer === null && !showRenderLoading.value) {
@@ -52988,7 +52709,13 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
52988
52709
  onMounted(() => {
52989
52710
  store.setIsExporting(false);
52990
52711
  if (!props.headless) {
52991
- nextTick(() => onboarding.init());
52712
+ const tryStartOnboarding = debounce(() => {
52713
+ if (onboardingAutoEligible.value) onboarding.init();
52714
+ }, ONBOARDING_AUTO_START_SETTLE_MS);
52715
+ watch(onboardingAutoEligible, (eligible) => {
52716
+ if (eligible) tryStartOnboarding();
52717
+ else tryStartOnboarding.cancel();
52718
+ }, { immediate: true });
52992
52719
  }
52993
52720
  nextTick(() => {
52994
52721
  updateOffset();
@@ -53167,9 +52894,9 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
53167
52894
  }
53168
52895
  store.cancelCustomElementEdit();
53169
52896
  };
53170
- const handleSaveCustomEditAs = (name2) => {
52897
+ const handleSaveCustomEditAs = (name) => {
53171
52898
  if (isGlobalLoading.value) return;
53172
- const trimmed = name2.trim();
52899
+ const trimmed = name.trim();
53173
52900
  if (!trimmed) return;
53174
52901
  const ok = store.saveCustomElementEditAs(trimmed);
53175
52902
  if (!ok) {
@@ -58757,7 +58484,7 @@ function requireLodash() {
58757
58484
  }
58758
58485
  return string.split(separator, limit);
58759
58486
  }
58760
- var startCase2 = createCompounder(function(result2, word, index2) {
58487
+ var startCase = createCompounder(function(result2, word, index2) {
58761
58488
  return result2 + (index2 ? " " : "") + upperFirst(word);
58762
58489
  });
58763
58490
  function startsWith(string, target, position) {
@@ -59401,7 +59128,7 @@ function requireLodash() {
59401
59128
  lodash2.sortedLastIndex = sortedLastIndex;
59402
59129
  lodash2.sortedLastIndexBy = sortedLastIndexBy;
59403
59130
  lodash2.sortedLastIndexOf = sortedLastIndexOf;
59404
- lodash2.startCase = startCase2;
59131
+ lodash2.startCase = startCase;
59405
59132
  lodash2.startsWith = startsWith;
59406
59133
  lodash2.subtract = subtract;
59407
59134
  lodash2.sum = sum;
@@ -60252,23 +59979,23 @@ class PrintDesignerElement extends HTMLElementBase {
60252
59979
  static get observedAttributes() {
60253
59980
  return ["lang", "headless", "mode", "view-mode", "ui-mode", "config"];
60254
59981
  }
60255
- attributeChangedCallback(name2, oldValue, newValue) {
60256
- if (name2 === "lang" && newValue !== oldValue) {
59982
+ attributeChangedCallback(name, oldValue, newValue) {
59983
+ if (name === "lang" && newValue !== oldValue) {
60257
59984
  this.setLanguage(newValue);
60258
59985
  }
60259
- if (name2 === "headless" && newValue !== oldValue) {
59986
+ if (name === "headless" && newValue !== oldValue) {
60260
59987
  this._headless.value = newValue === "true" || newValue === "";
60261
59988
  }
60262
- if (name2 === "mode" && newValue !== oldValue) {
59989
+ if (name === "mode" && newValue !== oldValue) {
60263
59990
  this.setMode(newValue === "report" ? "report" : "template");
60264
59991
  }
60265
- if (name2 === "view-mode" && newValue !== oldValue) {
59992
+ if (name === "view-mode" && newValue !== oldValue) {
60266
59993
  this.setViewMode(newValue === "preview" ? "preview" : "edit");
60267
59994
  }
60268
- if (name2 === "ui-mode" && newValue !== oldValue) {
59995
+ if (name === "ui-mode" && newValue !== oldValue) {
60269
59996
  this.setUIMode(newValue === "expert" ? "expert" : "beginner");
60270
59997
  }
60271
- if (name2 === "config" && newValue !== oldValue) {
59998
+ if (name === "config" && newValue !== oldValue) {
60272
59999
  try {
60273
60000
  const parsed = JSON.parse(newValue);
60274
60001
  this.init(parsed);
@@ -61527,13 +61254,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
61527
61254
  onMounted(() => {
61528
61255
  const el2 = elRef.value;
61529
61256
  if (!el2) return;
61530
- const forward = (name2, cb) => {
61257
+ const forward = (name, cb) => {
61531
61258
  const listener = (e) => {
61532
61259
  if (cb) cb(e.detail);
61533
- else emit2(name2, e.detail);
61260
+ else emit2(name, e.detail);
61534
61261
  };
61535
- listenerMap.set(name2, listener);
61536
- el2.addEventListener(name2, listener);
61262
+ listenerMap.set(name, listener);
61263
+ el2.addEventListener(name, listener);
61537
61264
  };
61538
61265
  forward("ready", () => {
61539
61266
  emit2("ready");
@@ -61553,8 +61280,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
61553
61280
  onBeforeUnmount(() => {
61554
61281
  const el2 = elRef.value;
61555
61282
  if (!el2) return;
61556
- listenerMap.forEach((listener, name2) => {
61557
- el2.removeEventListener(name2, listener);
61283
+ listenerMap.forEach((listener, name) => {
61284
+ el2.removeEventListener(name, listener);
61558
61285
  });
61559
61286
  listenerMap.clear();
61560
61287
  });
@@ -61600,8 +61327,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
61600
61327
  function matchRoute(url, pattern) {
61601
61328
  const urlPath = url.split("?")[0];
61602
61329
  const paramNames = [];
61603
- const regexPattern = pattern.replace(/:(\w+)/g, (_, name2) => {
61604
- paramNames.push(name2);
61330
+ const regexPattern = pattern.replace(/:(\w+)/g, (_, name) => {
61331
+ paramNames.push(name);
61605
61332
  return "([^/]+)";
61606
61333
  });
61607
61334
  const regex = new RegExp(`^${regexPattern}$`);
@@ -61610,8 +61337,8 @@ function matchRoute(url, pattern) {
61610
61337
  return { matched: false, params: {} };
61611
61338
  }
61612
61339
  const params = {};
61613
- paramNames.forEach((name2, index2) => {
61614
- params[name2] = match[index2 + 1];
61340
+ paramNames.forEach((name, index2) => {
61341
+ params[name] = match[index2 + 1];
61615
61342
  });
61616
61343
  return { matched: true, params };
61617
61344
  }
@@ -61942,8 +61669,8 @@ const presets = {
61942
61669
  /** 通用报告场景 */
61943
61670
  generalReport
61944
61671
  };
61945
- function getPreset(name2) {
61946
- return presets[name2];
61672
+ function getPreset(name) {
61673
+ return presets[name];
61947
61674
  }
61948
61675
  function mergePreset(preset, custom) {
61949
61676
  return {