Greasy Fork

来自缓存

Greasy Fork is available in English.

Gemini NanoBanana 图片水印移除

自动移除 Gemini AI 生成图像中的水印

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Gemini NanoBanana Watermark Remover
// @name:zh-CN   Gemini NanoBanana 图片水印移除
// @namespace    https://github.com/GargantuaX
// @version      1.0.14
// @description  Automatically removes watermarks from Gemini AI generated images
// @description:zh-CN 自动移除 Gemini AI 生成图像中的水印
// @icon         https://www.google.com/s2/favicons?domain=gemini.google.com
// @author       GargantuaX
// @license      MIT
// @match        https://gemini.google.com/app
// @match        https://gemini.google.com/app/*
// @match        https://gemini.google.com/*
// @match        https://business.gemini.google/app
// @match        https://business.gemini.google/app/*
// @match        https://business.gemini.google/*
// @connect      googleusercontent.com
// @grant        unsafeWindow
// @grant        GM_xmlhttpRequest
// @run-at       document-start
// ==/UserScript==

(() => {
  // src/shared/actionContextCompat.js
  function resolveCompatibleActionContext(actionContext = null) {
    return actionContext && typeof actionContext === "object" ? actionContext : null;
  }
  function resolveCompatibleActionContextFromPayload(payload = null) {
    if (!payload || typeof payload !== "object") {
      return null;
    }
    return resolveCompatibleActionContext(payload.actionContext);
  }
  function createActionContextProvider({
    getActionContext = null
  } = {}) {
    return (...args) => resolveActionContextFromProviders({
      getActionContext,
      args
    });
  }
  function resolveActionContextFromProviders({
    getActionContext = null,
    args = []
  } = {}) {
    return typeof getActionContext === "function" ? getActionContext(...args) : null;
  }
  function appendCompatibleActionContext(payload = {}, actionContext = null) {
    if (!actionContext || typeof actionContext !== "object") {
      return { ...payload };
    }
    return {
      ...payload,
      actionContext
    };
  }
  function getActionContextFromIntentGate(intentGate = null, candidate = null) {
    if (!intentGate || typeof intentGate !== "object") {
      return null;
    }
    if (typeof intentGate.getRecentActionContext === "function") {
      return intentGate.getRecentActionContext(candidate);
    }
    return null;
  }

  // src/core/canvasBlob.js
  async function canvasToBlob(canvas, type = "image/png", {
    unavailableMessage = "Canvas blob export API is unavailable",
    nullBlobMessage = "Failed to encode image blob"
  } = {}) {
    if (typeof canvas?.convertToBlob === "function") {
      return await canvas.convertToBlob({ type });
    }
    if (typeof canvas?.toBlob === "function") {
      return await new Promise((resolve, reject) => {
        canvas.toBlob((blob) => {
          if (blob) {
            resolve(blob);
          } else {
            reject(new Error(nullBlobMessage));
          }
        }, type);
      });
    }
    throw new Error(unavailableMessage);
  }

  // src/core/watermarkDecisionPolicy.js
  var STANDARD_DIRECT_MATCH_MIN_SPATIAL_SCORE = 0.3;
  var STANDARD_DIRECT_MATCH_MIN_GRADIENT_SCORE = 0.12;
  var STANDARD_STRONG_GRADIENT_DIRECT_MATCH_MIN_SPATIAL_SCORE = 0.295;
  var STANDARD_STRONG_GRADIENT_DIRECT_MATCH_MIN_GRADIENT_SCORE = 0.45;
  var ADAPTIVE_DIRECT_MATCH_MIN_CONFIDENCE = 0.5;
  var ADAPTIVE_DIRECT_MATCH_MIN_SPATIAL_SCORE = 0.45;
  var ADAPTIVE_DIRECT_MATCH_MIN_GRADIENT_SCORE = 0.12;
  var ADAPTIVE_DIRECT_MATCH_MIN_SIZE = 40;
  var ADAPTIVE_DIRECT_MATCH_MAX_SIZE = 192;
  var ATTRIBUTION_MIN_SIZE = 24;
  var ATTRIBUTION_MAX_SIZE = 192;
  var ATTRIBUTION_MAX_RESIDUAL_SCORE = 0.2;
  var ATTRIBUTION_MIN_SUPPRESSION_GAIN = 0.25;
  var ATTRIBUTION_MIN_SPATIAL_SCORE = 0.22;
  var ATTRIBUTION_MIN_VALIDATED_SPATIAL_SCORE = 0.2;
  var ATTRIBUTION_MIN_VALIDATED_SUPPRESSION_GAIN = 0.3;
  var ATTRIBUTION_MIN_ADAPTIVE_CONFIDENCE = 0.35;
  var ATTRIBUTION_MIN_ADAPTIVE_SUPPRESSION_GAIN = 0.16;
  function toFiniteNumber(value) {
    return typeof value === "number" && Number.isFinite(value) ? value : null;
  }
  function isPositionSized(position) {
    const width = toFiniteNumber(position?.width);
    const height = toFiniteNumber(position?.height);
    return width !== null && height !== null;
  }
  function classifyStandardWatermarkSignal({ spatialScore, gradientScore }) {
    const spatial = toFiniteNumber(spatialScore);
    const gradient = toFiniteNumber(gradientScore);
    if (spatial === null || gradient === null) {
      return { tier: "insufficient" };
    }
    if (spatial >= STANDARD_DIRECT_MATCH_MIN_SPATIAL_SCORE && gradient >= STANDARD_DIRECT_MATCH_MIN_GRADIENT_SCORE || spatial >= STANDARD_STRONG_GRADIENT_DIRECT_MATCH_MIN_SPATIAL_SCORE && gradient >= STANDARD_STRONG_GRADIENT_DIRECT_MATCH_MIN_GRADIENT_SCORE) {
      return { tier: "direct-match" };
    }
    if (spatial > 0 || gradient > 0) {
      return { tier: "needs-validation" };
    }
    return { tier: "insufficient" };
  }
  function classifyAdaptiveWatermarkSignal(adaptiveResult) {
    if (!adaptiveResult || adaptiveResult.found !== true) {
      return { tier: "insufficient" };
    }
    const confidence = toFiniteNumber(adaptiveResult.confidence);
    const spatial = toFiniteNumber(adaptiveResult.spatialScore);
    const gradient = toFiniteNumber(adaptiveResult.gradientScore);
    const size = toFiniteNumber(adaptiveResult?.region?.size);
    if (confidence === null || spatial === null || gradient === null || size === null) {
      return { tier: "insufficient" };
    }
    if (confidence >= ADAPTIVE_DIRECT_MATCH_MIN_CONFIDENCE && spatial >= ADAPTIVE_DIRECT_MATCH_MIN_SPATIAL_SCORE && gradient >= ADAPTIVE_DIRECT_MATCH_MIN_GRADIENT_SCORE && size >= ADAPTIVE_DIRECT_MATCH_MIN_SIZE && size <= ADAPTIVE_DIRECT_MATCH_MAX_SIZE) {
      return { tier: "direct-match" };
    }
    if (size >= ADAPTIVE_DIRECT_MATCH_MIN_SIZE && size <= ADAPTIVE_DIRECT_MATCH_MAX_SIZE && gradient >= ADAPTIVE_DIRECT_MATCH_MIN_GRADIENT_SCORE && (confidence > 0 || spatial > 0)) {
      return { tier: "needs-validation" };
    }
    return { tier: "insufficient" };
  }
  function classifyGeminiAttributionFromWatermarkMeta(watermarkMeta) {
    if (!watermarkMeta || typeof watermarkMeta !== "object") {
      return { tier: "insufficient" };
    }
    if (watermarkMeta.applied === false) {
      return { tier: "insufficient" };
    }
    const size = toFiniteNumber(watermarkMeta.size);
    if (size === null || size < ATTRIBUTION_MIN_SIZE || size > ATTRIBUTION_MAX_SIZE) {
      return { tier: "insufficient" };
    }
    if (!isPositionSized(watermarkMeta.position)) {
      return { tier: "insufficient" };
    }
    const detection = watermarkMeta.detection || {};
    const adaptiveConfidence = toFiniteNumber(detection.adaptiveConfidence);
    const originalSpatialScore = toFiniteNumber(detection.originalSpatialScore);
    const processedSpatialScore = toFiniteNumber(detection.processedSpatialScore);
    const suppressionGain = toFiniteNumber(detection.suppressionGain);
    const source = typeof watermarkMeta.source === "string" ? watermarkMeta.source : "";
    if (adaptiveConfidence !== null && suppressionGain !== null && adaptiveConfidence >= ATTRIBUTION_MIN_ADAPTIVE_CONFIDENCE && suppressionGain >= ATTRIBUTION_MIN_ADAPTIVE_SUPPRESSION_GAIN) {
      return { tier: "adaptive-match" };
    }
    if (source.includes("validated") && originalSpatialScore !== null && processedSpatialScore !== null && suppressionGain !== null && originalSpatialScore >= ATTRIBUTION_MIN_VALIDATED_SPATIAL_SCORE && processedSpatialScore <= ATTRIBUTION_MAX_RESIDUAL_SCORE && suppressionGain >= ATTRIBUTION_MIN_VALIDATED_SUPPRESSION_GAIN) {
      return { tier: "validated-match" };
    }
    if (originalSpatialScore !== null && processedSpatialScore !== null && suppressionGain !== null && originalSpatialScore >= ATTRIBUTION_MIN_SPATIAL_SCORE && processedSpatialScore <= ATTRIBUTION_MAX_RESIDUAL_SCORE && suppressionGain >= ATTRIBUTION_MIN_SUPPRESSION_GAIN) {
      return { tier: "safe-removal" };
    }
    return { tier: "insufficient" };
  }

  // src/userscript/urlUtils.js
  function isGoogleusercontentHost(hostname) {
    return hostname === "googleusercontent.com" || hostname.endsWith(".googleusercontent.com");
  }
  function hasNativeDownloadTokenAtTail(pathname) {
    return /=(?:d|d-I)$/i.test(String(pathname || ""));
  }
  function classifyGeminiAssetPath(pathname) {
    if (typeof pathname !== "string" || pathname.length === 0) return null;
    const firstSegment = pathname.split("/").filter(Boolean)[0] || "";
    if (!firstSegment) return null;
    if (firstSegment.startsWith("rd-")) {
      const variant = firstSegment.slice(3);
      return {
        family: "rd",
        variant: variant.endsWith("-dl") ? variant.slice(0, -3) : variant,
        isPreview: false,
        isDownload: variant.endsWith("-dl")
      };
    }
    if (firstSegment === "gg") {
      return {
        family: "gg",
        variant: "",
        isPreview: true,
        isDownload: false
      };
    }
    if (!firstSegment.startsWith("gg-")) {
      return null;
    }
    const ggVariant = firstSegment.slice(3);
    const isDownload = ggVariant === "dl" || ggVariant.endsWith("-dl");
    const normalizedVariant = isDownload ? ggVariant === "dl" ? "" : ggVariant.slice(0, -3) : ggVariant;
    return {
      family: "gg",
      variant: normalizedVariant,
      isPreview: !isDownload,
      isDownload
    };
  }
  function hasGeminiAssetPath(pathname) {
    return classifyGeminiAssetPath(pathname) !== null;
  }
  function classifyGeminiAssetUrl(url) {
    if (typeof url !== "string" || url.length === 0) return null;
    try {
      const parsed = new URL(url);
      if (!isGoogleusercontentHost(parsed.hostname)) {
        return null;
      }
      return classifyGeminiAssetPath(parsed.pathname);
    } catch {
      return null;
    }
  }
  function isGeminiGeneratedAssetUrl(url) {
    return classifyGeminiAssetUrl(url) !== null;
  }
  function isGeminiPreviewAssetUrl(url) {
    return classifyGeminiAssetUrl(url)?.isPreview === true;
  }
  function isGeminiDisplayPreviewAssetUrl(url) {
    if (typeof url !== "string" || url.length === 0) return false;
    try {
      const parsed = new URL(url);
      if (!isGoogleusercontentHost(parsed.hostname)) {
        return false;
      }
      const classification = classifyGeminiAssetPath(parsed.pathname);
      if (!classification || classification.family !== "gg") {
        return false;
      }
      if (classification.isPreview === true) {
        return hasNativeDownloadTokenAtTail(parsed.pathname) === false;
      }
      if (hasNativeDownloadTokenAtTail(parsed.pathname)) {
        return false;
      }
      return classification.isDownload === true && /-rj$/i.test(parsed.pathname) && hasNativeDownloadTokenAtTail(parsed.pathname) === false;
    } catch {
      return false;
    }
  }
  function isGeminiOriginalAssetUrl(url) {
    if (typeof url !== "string" || url.length === 0) return false;
    try {
      const parsed = new URL(url);
      if (!isGoogleusercontentHost(parsed.hostname)) {
        return false;
      }
      const classification = classifyGeminiAssetPath(parsed.pathname);
      if (!classification) {
        return false;
      }
      return classification.isPreview === false || hasNativeDownloadTokenAtTail(parsed.pathname);
    } catch {
      return false;
    }
  }
  function normalizeGoogleusercontentImageUrl(url) {
    if (!isGeminiGeneratedAssetUrl(url)) return url;
    try {
      const parsed = new URL(url);
      if (!hasGeminiAssetPath(parsed.pathname)) {
        return url;
      }
      const path = parsed.pathname;
      const dimensionPairAtTail = /=w\d+-h\d+([^/]*)$/i;
      if (dimensionPairAtTail.test(path)) {
        parsed.pathname = path.replace(dimensionPairAtTail, "=s0$1");
        return parsed.toString();
      }
      if (hasNativeDownloadTokenAtTail(path)) {
        parsed.pathname = path.replace(/=(?:d|d-I)$/i, (match) => `=s0-${match.slice(1)}`);
        return parsed.toString();
      }
      const sizeTransformAtTail = /=(?:s|w|h)\d+([^/]*)$/i;
      if (sizeTransformAtTail.test(path)) {
        parsed.pathname = path.replace(sizeTransformAtTail, "=s0$1");
        return parsed.toString();
      }
      parsed.pathname = `${path}=s0`;
      return parsed.toString();
    } catch {
      return url;
    }
  }

  // src/shared/errorUtils.js
  function stringifyErrorPayload(value) {
    try {
      return JSON.stringify(value);
    } catch {
      return "";
    }
  }
  function normalizeErrorMessage(error, fallback = "Unknown error") {
    if (error instanceof Error) {
      return error.message || fallback;
    }
    if (typeof error === "string") {
      return error.trim() || fallback;
    }
    if (error && typeof error === "object") {
      if (typeof error.message === "string" && error.message.trim()) {
        return error.message.trim();
      }
      if (typeof error.error === "string" && error.error.trim()) {
        return error.error.trim();
      }
      const status = Number.isFinite(error.status) ? String(error.status) : "";
      const statusText = typeof error.statusText === "string" ? error.statusText.trim() : "";
      const combinedStatus = `${status} ${statusText}`.trim();
      if (combinedStatus) {
        return combinedStatus;
      }
      const serialized = stringifyErrorPayload(error);
      if (serialized && serialized !== "{}") {
        return serialized;
      }
    }
    return fallback;
  }

  // src/shared/imageSessionStore.js
  function normalizeAssetId(value, prefix) {
    if (typeof value !== "string") {
      return "";
    }
    const trimmed = value.trim();
    if (!trimmed.startsWith(prefix) || trimmed.length <= prefix.length) {
      return "";
    }
    return trimmed;
  }
  function normalizeImageSessionAssetIds(assetIds = null) {
    const normalized = {
      responseId: normalizeAssetId(assetIds?.responseId, "r_"),
      draftId: normalizeAssetId(assetIds?.draftId, "rc_"),
      conversationId: normalizeAssetId(assetIds?.conversationId, "c_")
    };
    if (!normalized.responseId && !normalized.draftId && !normalized.conversationId) {
      return null;
    }
    return normalized;
  }
  function buildImageSessionKey(assetIds = null) {
    const normalizedAssetIds = normalizeImageSessionAssetIds(assetIds);
    if (!normalizedAssetIds) {
      return "";
    }
    if (normalizedAssetIds.draftId) {
      return `draft:${normalizedAssetIds.draftId}`;
    }
    if (normalizedAssetIds.responseId && normalizedAssetIds.conversationId) {
      return `response:${normalizedAssetIds.responseId}|conversation:${normalizedAssetIds.conversationId}`;
    }
    return "";
  }
  function createEmptySurfaceCollection() {
    return {
      preview: /* @__PURE__ */ new Set(),
      fullscreen: /* @__PURE__ */ new Set(),
      unknown: /* @__PURE__ */ new Set()
    };
  }
  function createEmptyProcessedResourceRecord() {
    return {
      objectUrl: "",
      blob: null,
      blobType: "",
      processedMeta: null,
      processedFrom: ""
    };
  }
  function createEmptyProcessedResourceSlots() {
    return {
      preview: createEmptyProcessedResourceRecord(),
      full: createEmptyProcessedResourceRecord()
    };
  }
  function createSessionRecord(sessionKey, assetIds, now = Date.now()) {
    return {
      sessionKey,
      assetIds: normalizeImageSessionAssetIds(assetIds),
      sources: {
        originalUrl: "",
        previewUrl: "",
        currentBlobUrl: ""
      },
      derived: {
        processedBlobUrl: "",
        processedBlobType: "",
        processedMeta: null,
        processedFrom: "",
        processedSlots: createEmptyProcessedResourceSlots()
      },
      state: {
        preview: "idle",
        fullscreen: "idle",
        unknown: "idle",
        lastError: ""
      },
      surfaces: createEmptySurfaceCollection(),
      timestamps: {
        createdAt: Number(now) || Date.now(),
        updatedAt: Number(now) || Date.now(),
        lastProcessedAt: 0
      }
    };
  }
  function touchSession(session, now = Date.now()) {
    session.timestamps.updatedAt = Number(now) || Date.now();
    return session;
  }
  function normalizeSurfaceType(surface = "") {
    const normalizedSurface = typeof surface === "string" ? surface.trim().toLowerCase() : "";
    if (normalizedSurface === "preview" || normalizedSurface === "fullscreen") {
      return normalizedSurface;
    }
    return "unknown";
  }
  function normalizeProcessedResourceSlot(slot = "") {
    const normalizedSlot = typeof slot === "string" ? slot.trim().toLowerCase() : "";
    if (normalizedSlot === "full") {
      return "full";
    }
    return "preview";
  }
  function readElementProcessedObjectUrl(element) {
    const objectUrl = typeof element?.dataset?.gwrWatermarkObjectUrl === "string" ? element.dataset.gwrWatermarkObjectUrl.trim() : "";
    return objectUrl || "";
  }
  function isUsableSurfaceElement(element) {
    if (!element || typeof element !== "object") {
      return false;
    }
    if ("isConnected" in element) {
      return Boolean(element.isConnected);
    }
    return true;
  }
  function findPreferredSurfaceElement(elements, preferredProcessedUrl = "") {
    let processedMatch = null;
    let processedFallback = null;
    let plainFallback = null;
    for (const element of elements) {
      if (!isUsableSurfaceElement(element)) {
        continue;
      }
      const processedObjectUrl = readElementProcessedObjectUrl(element);
      if (processedObjectUrl && preferredProcessedUrl && processedObjectUrl === preferredProcessedUrl) {
        return element;
      }
      if (processedObjectUrl) {
        processedFallback ||= element;
        continue;
      }
      plainFallback ||= element;
    }
    processedMatch ||= processedFallback;
    return processedMatch || plainFallback || null;
  }
  function readProcessedSlotResource(session, slot) {
    const normalizedSlot = normalizeProcessedResourceSlot(slot);
    const resource = session?.derived?.processedSlots?.[normalizedSlot] || null;
    if (!resource?.objectUrl) {
      return null;
    }
    return {
      kind: "processed",
      url: resource.objectUrl,
      ...resource.blob ? { blob: resource.blob } : {},
      mimeType: resource.blobType || "image/png",
      processedMeta: resource.processedMeta,
      source: resource.processedFrom || "processed",
      slot: normalizedSlot
    };
  }
  function syncLegacyProcessedFields(session) {
    const previewResource = readProcessedSlotResource(session, "preview");
    const fullResource = readProcessedSlotResource(session, "full");
    const preferredResource = previewResource || fullResource;
    session.derived.processedBlobUrl = preferredResource?.url || "";
    session.derived.processedBlobType = preferredResource?.mimeType || "";
    session.derived.processedMeta = preferredResource?.processedMeta ?? null;
    session.derived.processedFrom = preferredResource?.source || "";
  }
  function buildOriginalResource(session) {
    if (!session?.sources?.originalUrl) {
      return null;
    }
    return {
      kind: "original",
      url: session.sources.originalUrl,
      mimeType: "",
      processedMeta: null,
      source: "original"
    };
  }
  function isFullQualityAction(action = "") {
    return action === "clipboard" || action === "download";
  }
  function createImageSessionStore({
    now = () => Date.now()
  } = {}) {
    const sessions = /* @__PURE__ */ new Map();
    const elementBindings = /* @__PURE__ */ new WeakMap();
    function getSession(sessionKey = "") {
      if (!sessionKey) {
        return null;
      }
      return sessions.get(sessionKey) || null;
    }
    function getOrCreateByAssetIds(assetIds = null) {
      const normalizedAssetIds = normalizeImageSessionAssetIds(assetIds);
      const sessionKey = buildImageSessionKey(normalizedAssetIds);
      if (!sessionKey) {
        return "";
      }
      let session = sessions.get(sessionKey);
      if (!session) {
        session = createSessionRecord(sessionKey, normalizedAssetIds, now());
        sessions.set(sessionKey, session);
        return sessionKey;
      }
      if (!session.assetIds) {
        session.assetIds = normalizedAssetIds;
      } else {
        session.assetIds = {
          responseId: session.assetIds.responseId || normalizedAssetIds.responseId,
          draftId: session.assetIds.draftId || normalizedAssetIds.draftId,
          conversationId: session.assetIds.conversationId || normalizedAssetIds.conversationId
        };
      }
      touchSession(session, now());
      return sessionKey;
    }
    function getByAssetIds(assetIds = null) {
      const sessionKey = buildImageSessionKey(assetIds);
      return sessionKey ? sessions.get(sessionKey) || null : null;
    }
    function attachElement(sessionKey, surface, element) {
      const session = getSession(sessionKey);
      if (!session || !element || typeof element !== "object") {
        return false;
      }
      detachElement(element);
      const normalizedSurface = normalizeSurfaceType(surface);
      session.surfaces[normalizedSurface].add(element);
      elementBindings.set(element, {
        sessionKey,
        surface: normalizedSurface
      });
      touchSession(session, now());
      return true;
    }
    function detachElement(element) {
      const binding = elementBindings.get(element);
      if (!binding) {
        return false;
      }
      const session = getSession(binding.sessionKey);
      if (session) {
        session.surfaces[binding.surface]?.delete(element);
        touchSession(session, now());
      }
      elementBindings.delete(element);
      return true;
    }
    function updateOriginalSource(sessionKey, sourceUrl = "") {
      const session = getSession(sessionKey);
      const normalizedUrl = typeof sourceUrl === "string" ? sourceUrl.trim() : "";
      if (!session || !normalizedUrl) {
        return false;
      }
      session.sources.originalUrl = normalizedUrl;
      touchSession(session, now());
      return true;
    }
    function updateSourceSnapshot(sessionKey, {
      sourceUrl = "",
      isPreviewSource = false
    } = {}) {
      const session = getSession(sessionKey);
      const normalizedUrl = typeof sourceUrl === "string" ? sourceUrl.trim() : "";
      if (!session || !normalizedUrl) {
        return false;
      }
      if (normalizedUrl.startsWith("blob:") || normalizedUrl.startsWith("data:")) {
        session.sources.currentBlobUrl = normalizedUrl;
      } else if (isPreviewSource) {
        session.sources.previewUrl = normalizedUrl;
      } else {
        session.sources.originalUrl ||= normalizedUrl;
      }
      touchSession(session, now());
      return true;
    }
    function updateProcessedResult(sessionKey, {
      slot = "preview",
      objectUrl = "",
      blob = null,
      blobType = "",
      processedMeta = null,
      processedFrom = ""
    } = {}) {
      const session = getSession(sessionKey);
      const normalizedObjectUrl = typeof objectUrl === "string" ? objectUrl.trim() : "";
      if (!session || !normalizedObjectUrl) {
        return false;
      }
      const normalizedSlot = normalizeProcessedResourceSlot(slot);
      if (!session.derived.processedSlots) {
        session.derived.processedSlots = createEmptyProcessedResourceSlots();
      }
      session.derived.processedSlots[normalizedSlot] = {
        objectUrl: normalizedObjectUrl,
        blob: blob instanceof Blob ? blob : null,
        blobType: typeof blobType === "string" ? blobType.trim() : "",
        processedMeta: processedMeta ?? null,
        processedFrom: typeof processedFrom === "string" ? processedFrom.trim() : ""
      };
      syncLegacyProcessedFields(session);
      const timestamp = Number(now()) || Date.now();
      touchSession(session, timestamp);
      session.timestamps.lastProcessedAt = timestamp;
      return true;
    }
    function markProcessing(sessionKey, surface, status, error = "") {
      const session = getSession(sessionKey);
      if (!session) {
        return false;
      }
      const normalizedSurface = normalizeSurfaceType(surface);
      session.state[normalizedSurface] = typeof status === "string" ? status : "idle";
      session.state.lastError = typeof error === "string" ? error : "";
      touchSession(session, now());
      return true;
    }
    function getBestResource(sessionKey, action = "display") {
      const session = getSession(sessionKey);
      if (!session) {
        return null;
      }
      const fullProcessedResource = readProcessedSlotResource(session, "full");
      const previewProcessedResource = readProcessedSlotResource(session, "preview");
      if (isFullQualityAction(action)) {
        if (fullProcessedResource) {
          return fullProcessedResource;
        }
        const originalResource2 = buildOriginalResource(session);
        if (originalResource2) {
          return originalResource2;
        }
      } else {
        if (previewProcessedResource) {
          return previewProcessedResource;
        }
        if (fullProcessedResource) {
          return fullProcessedResource;
        }
      }
      const originalResource = buildOriginalResource(session);
      if (originalResource) {
        return originalResource;
      }
      if (session.sources.previewUrl) {
        return {
          kind: "preview",
          url: session.sources.previewUrl,
          mimeType: "",
          processedMeta: null,
          source: "preview"
        };
      }
      if (session.sources.currentBlobUrl) {
        return {
          kind: "blob",
          url: session.sources.currentBlobUrl,
          mimeType: "",
          processedMeta: null,
          source: "blob"
        };
      }
      return null;
    }
    function getPreferredElement(sessionKey, action = "display") {
      const session = getSession(sessionKey);
      if (!session) {
        return null;
      }
      const preferredResource = getBestResource(sessionKey, action);
      const preferredProcessedUrl = preferredResource?.kind === "processed" ? preferredResource.url || "" : "";
      const orderedSurfaces = ["preview", "fullscreen", "unknown"];
      for (const surface of orderedSurfaces) {
        const preferredElement = findPreferredSurfaceElement(
          session.surfaces?.[surface] || [],
          preferredProcessedUrl
        );
        if (preferredElement) {
          return preferredElement;
        }
      }
      return null;
    }
    function getSnapshot(sessionKey) {
      const session = getSession(sessionKey);
      if (!session) {
        return null;
      }
      return {
        sessionKey: session.sessionKey,
        assetIds: session.assetIds ? { ...session.assetIds } : null,
        sources: { ...session.sources },
        derived: {
          ...session.derived,
          processedSlots: {
            preview: {
              ...session.derived.processedSlots.preview,
              blob: session.derived.processedSlots.preview.blob || null
            },
            full: {
              ...session.derived.processedSlots.full,
              blob: session.derived.processedSlots.full.blob || null
            }
          }
        },
        state: { ...session.state },
        surfaces: {
          previewCount: session.surfaces.preview.size,
          fullscreenCount: session.surfaces.fullscreen.size,
          unknownCount: session.surfaces.unknown.size
        },
        timestamps: { ...session.timestamps }
      };
    }
    return {
      buildSessionKey: buildImageSessionKey,
      getOrCreateByAssetIds,
      getByAssetIds,
      getSnapshot,
      getBestResource,
      getPreferredElement,
      attachElement,
      detachElement,
      updateOriginalSource,
      updateSourceSnapshot,
      updateProcessedResult,
      markProcessing
    };
  }
  var defaultImageSessionStore = createImageSessionStore();
  function getDefaultImageSessionStore() {
    return defaultImageSessionStore;
  }

  // src/shared/originalBlob.js
  function shouldFetchBlobDirectly(sourceUrl) {
    return typeof sourceUrl === "string" && (sourceUrl.startsWith("blob:") || sourceUrl.startsWith("data:"));
  }
  function isRuntimeBlobUrl(sourceUrl) {
    return typeof sourceUrl === "string" && sourceUrl.startsWith("blob:");
  }
  function shouldPreferRenderedCapture(sourceUrl) {
    return isGeminiPreviewAssetUrl(sourceUrl);
  }
  async function captureRenderedBlob({
    image,
    captureRenderedImageBlob
  }) {
    if (typeof captureRenderedImageBlob !== "function") {
      throw new Error("Rendered capture unavailable");
    }
    return captureRenderedImageBlob(image);
  }
  async function acquireOriginalBlob({
    sourceUrl,
    image,
    fetchBlobFromBackground: fetchBlobFromBackground2,
    fetchBlobDirect: fetchBlobDirect2,
    captureRenderedImageBlob,
    validateBlob,
    preferRenderedCaptureForPreview = true,
    preferRenderedCaptureForBlobUrl = false,
    allowRenderedCaptureFallbackOnValidationFailure = true
  }) {
    const normalizedSourceUrl = typeof sourceUrl === "string" ? sourceUrl.trim() : "";
    if (preferRenderedCaptureForPreview && shouldPreferRenderedCapture(normalizedSourceUrl)) {
      return captureRenderedBlob({
        image,
        captureRenderedImageBlob
      });
    }
    if (preferRenderedCaptureForBlobUrl && isRuntimeBlobUrl(normalizedSourceUrl)) {
      return captureRenderedBlob({
        image,
        captureRenderedImageBlob
      });
    }
    if (isGeminiGeneratedAssetUrl(normalizedSourceUrl)) {
      const blob = await fetchBlobFromBackground2(normalizedSourceUrl);
      if (typeof validateBlob === "function") {
        try {
          await validateBlob(blob);
        } catch (error) {
          if (!allowRenderedCaptureFallbackOnValidationFailure) {
            throw error;
          }
          return captureRenderedBlob({
            image,
            captureRenderedImageBlob
          });
        }
      }
      return blob;
    }
    if (shouldFetchBlobDirectly(normalizedSourceUrl)) {
      return fetchBlobDirect2(normalizedSourceUrl);
    }
    return captureRenderedBlob({
      image,
      captureRenderedImageBlob
    });
  }

  // src/shared/domAdapter.js
  var GEMINI_IMAGE_CONTAINER_SELECTOR = "generated-image,.generated-image-container";
  var GEMINI_FULLSCREEN_CONTAINER_SELECTOR = 'expansion-dialog,[role="dialog"],.image-expansion-dialog-panel,.cdk-overlay-pane';
  var GEMINI_UPLOADER_PREVIEW_SELECTOR = '[data-test-id="image-preview"],uploader-file-preview,uploader-file-preview-container,.attachment-preview-wrapper,.file-preview-container';
  var MIN_GEMINI_IMAGE_EDGE = 128;
  var MAX_CONTAINER_SEARCH_DEPTH = 4;
  var MIN_ACTION_BUTTONS = 3;
  var GEMINI_DRAFT_ID_ATTRIBUTE = "data-test-draft-id";
  function normalizeGeminiAssetId(value, prefix) {
    if (typeof value !== "string") return null;
    const trimmed = value.trim();
    if (!trimmed.startsWith(prefix) || trimmed.length <= prefix.length) {
      return null;
    }
    return trimmed;
  }
  function parseGeminiAssetIdsFromJslog(jslog = "") {
    if (typeof jslog !== "string" || jslog.length === 0) {
      return null;
    }
    const responseId = normalizeGeminiAssetId(jslog.match(/"((?:r|resp)_[^"]+)"/)?.[1] || null, "r_");
    const conversationId = normalizeGeminiAssetId(jslog.match(/"((?:c|conv)_[^"]+)"/)?.[1] || null, "c_");
    const draftId = normalizeGeminiAssetId(jslog.match(/"((?:rc|draft)_[^"]+)"/)?.[1] || null, "rc_");
    if (!responseId && !conversationId && !draftId) {
      return null;
    }
    return {
      responseId,
      draftId,
      conversationId
    };
  }
  function getAttributeValue(element, attributeName) {
    if (!element || typeof element.getAttribute !== "function") {
      return "";
    }
    return String(element.getAttribute(attributeName) || "").trim();
  }
  function getClosestElement(element, selector) {
    if (!element || typeof element.closest !== "function") {
      return null;
    }
    return element.closest(selector);
  }
  function collectGeminiMetadataElements(img) {
    const elements = [];
    const seen = /* @__PURE__ */ new Set();
    const pushElement = (element) => {
      if (!element || typeof element !== "object" || seen.has(element)) return;
      seen.add(element);
      elements.push(element);
    };
    pushElement(img);
    pushElement(getClosestElement(img, "single-image"));
    pushElement(getClosestElement(img, `[${GEMINI_DRAFT_ID_ATTRIBUTE}]`));
    pushElement(getClosestElement(img, GEMINI_IMAGE_CONTAINER_SELECTOR));
    let current = img?.parentElement || null;
    let depth = 0;
    while (current && depth < MAX_CONTAINER_SEARCH_DEPTH) {
      pushElement(current);
      current = current.parentElement || null;
      depth += 1;
    }
    return elements;
  }
  function getMediaEdgeSize(element) {
    const naturalWidth = Number(element?.naturalWidth) || 0;
    const naturalHeight = Number(element?.naturalHeight) || 0;
    const width = Number(element?.width) || 0;
    const height = Number(element?.height) || 0;
    const clientWidth = Number(element?.clientWidth) || 0;
    const clientHeight = Number(element?.clientHeight) || 0;
    return {
      width: Math.max(naturalWidth, width, clientWidth),
      height: Math.max(naturalHeight, height, clientHeight)
    };
  }
  function hasAnyGeminiAssetIds(assetIds) {
    return Boolean(assetIds?.responseId || assetIds?.draftId || assetIds?.conversationId);
  }
  function isBlobOrDataImageSource(sourceUrl) {
    return sourceUrl.startsWith("blob:") || sourceUrl.startsWith("data:");
  }
  function isInsideGeminiFullscreenContainer(img) {
    return Boolean(getClosestElement(img, GEMINI_FULLSCREEN_CONTAINER_SELECTOR));
  }
  function isGeminiUploaderPreviewImage(img) {
    return Boolean(getClosestElement(img, GEMINI_UPLOADER_PREVIEW_SELECTOR));
  }
  function resolveCandidateImageUrl(img) {
    if (!img || typeof img !== "object") return "";
    if (img?.dataset?.gwrPreviewImage === "true") return "";
    const explicitSource = typeof img?.dataset?.gwrSourceUrl === "string" ? img.dataset.gwrSourceUrl.trim() : "";
    if (explicitSource) return explicitSource;
    const stableSource = typeof img?.dataset?.gwrStableSource === "string" ? img.dataset.gwrStableSource.trim() : "";
    if (stableSource) {
      const currentSrc2 = typeof img?.currentSrc === "string" ? img.currentSrc.trim() : "";
      const src2 = typeof img?.src === "string" ? img.src.trim() : "";
      if (currentSrc2.startsWith("blob:") || currentSrc2.startsWith("data:") || src2.startsWith("blob:") || src2.startsWith("data:")) {
        return stableSource;
      }
    }
    const currentSrc = typeof img?.currentSrc === "string" ? img.currentSrc.trim() : "";
    if (currentSrc) return currentSrc;
    const src = typeof img?.src === "string" ? img.src.trim() : "";
    return src;
  }
  function isProcessableGeminiImageElement(img) {
    if (!img || typeof img.closest !== "function") return false;
    if (img?.dataset?.gwrPreviewImage === "true") return false;
    if (isGeminiUploaderPreviewImage(img)) return false;
    const knownContainer = img.closest(GEMINI_IMAGE_CONTAINER_SELECTOR);
    const sourceUrl = resolveCandidateImageUrl(img);
    if (isGeminiGeneratedAssetUrl(sourceUrl)) {
      if (knownContainer) return true;
      return hasMeaningfulGeminiImageSize(img);
    }
    if (knownContainer && isBlobOrDataImageSource(sourceUrl)) {
      if (isInsideGeminiFullscreenContainer(img)) {
        return true;
      }
      if (hasAnyGeminiAssetIds(extractGeminiImageAssetIds(img))) {
        return true;
      }
    }
    return shouldUseRenderedImageFallback(img);
  }
  function getGeminiImageContainerSelector() {
    return GEMINI_IMAGE_CONTAINER_SELECTOR;
  }
  function getGeminiImageQuerySelector() {
    return GEMINI_IMAGE_CONTAINER_SELECTOR.split(",").map((selector) => `${selector.trim()} img`).join(",");
  }
  function hasMeaningfulGeminiImageSize(img) {
    const { width, height } = getMediaEdgeSize(img);
    return width >= MIN_GEMINI_IMAGE_EDGE || height >= MIN_GEMINI_IMAGE_EDGE;
  }
  function getPreferredGeminiImageContainer(img) {
    if (!img || typeof img !== "object") return null;
    const knownContainer = typeof img.closest === "function" ? img.closest(GEMINI_IMAGE_CONTAINER_SELECTOR) : null;
    if (knownContainer) return knownContainer;
    let current = img.parentElement || null;
    let depth = 0;
    while (current && depth < MAX_CONTAINER_SEARCH_DEPTH) {
      if (current.tagName && current.tagName !== "IMG") {
        return current;
      }
      current = current.parentElement || null;
      depth += 1;
    }
    return img.parentElement || null;
  }
  function extractGeminiImageAssetIds(img) {
    const assetIds = {
      responseId: null,
      draftId: null,
      conversationId: null
    };
    if (!img || typeof img !== "object") {
      return assetIds;
    }
    const responseIdFromDataset = normalizeGeminiAssetId(
      typeof img?.dataset?.gwrResponseId === "string" ? img.dataset.gwrResponseId : null,
      "r_"
    );
    if (responseIdFromDataset) {
      assetIds.responseId = responseIdFromDataset;
    }
    const draftIdFromDataset = normalizeGeminiAssetId(
      typeof img?.dataset?.gwrDraftId === "string" ? img.dataset.gwrDraftId : null,
      "rc_"
    );
    if (draftIdFromDataset) {
      assetIds.draftId = draftIdFromDataset;
    }
    const conversationIdFromDataset = normalizeGeminiAssetId(
      typeof img?.dataset?.gwrConversationId === "string" ? img.dataset.gwrConversationId : null,
      "c_"
    );
    if (conversationIdFromDataset) {
      assetIds.conversationId = conversationIdFromDataset;
    }
    for (const element of collectGeminiMetadataElements(img)) {
      if (!assetIds.draftId) {
        assetIds.draftId = normalizeGeminiAssetId(
          getAttributeValue(element, GEMINI_DRAFT_ID_ATTRIBUTE),
          "rc_"
        );
      }
      const parsed = parseGeminiAssetIdsFromJslog(getAttributeValue(element, "jslog"));
      if (!parsed) continue;
      assetIds.responseId ||= parsed.responseId;
      assetIds.draftId ||= parsed.draftId;
      assetIds.conversationId ||= parsed.conversationId;
      if (assetIds.responseId && assetIds.draftId && assetIds.conversationId) {
        break;
      }
    }
    return assetIds;
  }
  function hasNearbyActionCluster(img) {
    let current = img?.parentElement || null;
    let depth = 0;
    while (current && depth < MAX_CONTAINER_SEARCH_DEPTH) {
      const buttons = typeof current.querySelectorAll === "function" ? current.querySelectorAll('button,[role="button"]') : [];
      if ((buttons?.length || 0) >= MIN_ACTION_BUTTONS) {
        return true;
      }
      current = current.parentElement || null;
      depth += 1;
    }
    return false;
  }
  function shouldUseRenderedImageFallback(img) {
    return hasMeaningfulGeminiImageSize(img) && hasNearbyActionCluster(img);
  }

  // src/core/embeddedAlphaMaps.js
  var EMBEDDED_ALPHA_MAP_LENGTHS = {
    48: 48 * 48,
    96: 96 * 96
  };
  var EMBEDDED_ALPHA_MAP_BASE64 = {
    48: "gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAADj4uI+4eDgPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDvBwEA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4WEBD6BgAA/gYAAP4GAAD4AAAAAgYAAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8wcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYAAPIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO5GQkD6BgAA/gYAAP5GQkD4AAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADwAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAO+Hg4D6BgAA/gYAAP/Hw8D4AAAAAgYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPoGAAD+BgAA/gYAAP4GAAD+BgAA+AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAADwAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7AAAAAAAAAACBgIA7oaCgPoGAAD+BgAA/gYAAP4GAAD/BwMA+AAAAAAAAAACBgIA7AAAAAIGAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAwcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADwAAAAAAAAAAIGAADyJiIg9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgIA7AAAAAAAAAAAAAAAAgYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAADwAAAAAgYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO8HAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/o6KiPoGAgDuBgAA8AAAAAIGAgDuBgIA7gYCAO8HAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPAAAAAAAAAAAgYCAO4GAADyBgIA7gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAADyBgAA8gYCAO4mIiD2BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD6BgAA8gYCAO4GAADwAAAAAgYCAO4GAADyBgIA7wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7AAAAAIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO+Hg4D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDsAAAAAAAAAAIGAgDuBgAA8AAAAAIGAgDuBgIA7AAAAAAAAAAAAAAAAgYAAPIGAgDuBgIA7gYAAPAAAAACBgIA7gYCAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4GA+AAAAAAAAAACBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAACBgIA7gYCAO8HAQDwAAAAAgYCAO4GAADwAAAAAgYAAPAAAAACBgAA8gYCAOwAAAACBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+wcDAPYGAgDuBgAA8wcBAPIGAADyBgAA8gYAAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAACBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7AAAAAMHAQDyBgAA8gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAAD2BgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAOwAAAACBgIA7AAAAAAAAAACBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO9PS0j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPIGAgDuBgIA7o6KiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+hoKA+gYCAOwAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPgAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAADwAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPcHAwD6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgIA9gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgIA7gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAADBwMA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+iYiIPYGAgDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAOHgYD7x8PA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4WEhD6BgIA7gYCAO4GAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAgDsAAAAAgYAAPIGAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAgDuBgAA+wcDAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAPYGAADzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6GgoD6BgIA9gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4WEBD7BwMA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAAD6BgIA7gYAAPIGAgDuBgIA7AAAAAIGAAD6RkJA+8fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+kZCQPoGAAD6BgIA84eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAO4GAAD6RkJA+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+kZCQPoGAAD6BgIA7gYCAO8HAQDwAAAAAgYCAO4GAAD6hoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/wcDAPoGAAD6BgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA7AAAAAAAAAACBgAA8gYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6Oioj6JiIg9gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO4GAADyBgIA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/BwMA+gYAAPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/8/LyPuXkZD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAAAAAAAAAAAAgYAAPAAAAACBgIA94+LiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+wcDAPYGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPdHQ0D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgAA9gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgIA7gYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/oaCgPsHAQDzBwEA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7gYCAO4GAADyBgIA7oaCgPoGAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8PCwj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgAA8gYAAPMHAQDzBwEA8gYCAOwAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYCAO6GgID3j4uI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAgD2BgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYCAPMHAQDwAAAAAgYCAO8HAQDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8AAAAAAAAAACBgAA8wcBAPIGAADzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADzJyMg98fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgAA8wcBAPIGAADyBgIA7AAAAAAAAAACBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA84eBgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYCAO4GAgDvBwEA8gYAAPIGAgDsAAAAAgYCAO4GAgDvBwEA8wcBAPIGAgDuBgAA8gYCAOwAAAAAAAAAAAAAAAIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYAAPIGAADyBgAA8AAAAAMHAwD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgAA8gYCAO4GAAD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAgD2BgIA7gYCAOwAAAACBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAOwAAAACBgAA8gYAAPIGAADyBgIA7gYCAOwAAAAChoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPYGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAw8LCPoKBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDuBgIA7gYAAPMHAQDyBgIA7gYAAPoKBAT+BgAA/gYAAP4GAAD+BgAA+gYCAO4GAADyBgAA8AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPAAAAAAAAAAAgYAAPIGAADyBgIA7gYCAO/Py8j6BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAADzBwEA8gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO5OSkj6BgAA/gYAAP5OSkj6BgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADyBgIA7AAAAAIGAgDvBwEA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYAAPIGAAD6BgAA/gYAAP4WEBD6BgIA7gYCAO4GAADyBgAA8gYAAPIGAADwAAAAAgYCAOwAAAACBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8gYAAPIGAgDvh4OA+4eDgPoGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7",
    96: "gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDwAAAAAwcBAPMHAQDyBgIA8wcBAPIGAADyhoKA8gYAAPIGAADyBgAA8AAAAAIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAADzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPOXkZD7z8vI+4+LiPu3sbD6BgIA7wcBAPAAAAACBgAA8gYCAO4GAADyBgIA8gYCAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAO8HAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8oaCgPIGAgDyBgIA8wcBAPIGAgDyBgAA8wcBAPIGAgDvBwEA8wcBAPIGAgDyBgAA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAADzBwEA8wcBAPIGAgDvBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPYGAAD+BgAA/goEBP4KBAT+RkBA9gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYAAPAAAAACBgAA8AAAAAIGAgDuBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcDAPKGgoDyBgIA8oaCgPIGAgDyhoKA8gYCAOwAAAACBgAA8gYCAO4GAADyBgIA8wcBAPIGAADwAAAAAgYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8AAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAADyBgAA8paQkPoGAAD+BgAA/goEBP4GAAD/FxEQ+AAAAAAAAAACBgIA7gYAAPIGAgDsAAAAAAAAAAIGAgDuBgIA7gYAAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYAAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPKGgoDzBwEA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDyBgIA8gYCAPMHAQDzBwEA8AAAAAIGAgDuBgIA7gYAAPIGAADyhoKA8gYAAPMHAQDwAAAAAgYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAADyBgIA7gYCAOwAAAACBgIA7gYCAPMHAQDyBgAA8gYCAPIGAgDuBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPIGAADzBwEA8paSkPoGAAD+BgAA/goEBP4KBAT+hoKA+gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAAAAAAIGAgDuBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8oaCgPIGAgDyBgAA8gYCAO8HAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPMHAQDyhoKA8gYCAPMHAQDzBwEA8AAAAAAAAAACBgIA7wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAADBwEA8gYCAO8HAQDzBwEA8AAAAAIGAADyBgIA7gYCAOwAAAACBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgIA8wcBAPAAAAACBgIA7AAAAAIGAgDvBwEA85eTkPoGAAD+BgAA/gYAAP4GAAD/z8vI+gYAAPMHAQDyBgIA7gYAAPMHAQDyBgIA7gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYCAO8HAQDyBgIA8oaCgPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDsAAAAAwcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPKGgoDyBgIA8oaCgPIGAgDzBwEA8gYCAOwAAAADBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAgDyBgIA8AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDuBgIA8oaCgPIGAADyBgIA8AAAAAIGAADyBgIA8gYAAPIGAADyFhAQ+goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/iYgIPoGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAADyBgIA7gYCAO4GAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAADyBgIA7gYCAPIGAADyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADylpKQ+goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/k5KSPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADzBwEA8wcBAPKGgoDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwMA8oaCgPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA8gYCAO4GAgDsAAAAAgYAAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDvj4uI+goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/8/LyPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYCAO8HAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDzBwEA8oaCgPKGgoDyBgIA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA8gYCAO4GAgDuBgAA8wcBAPIGAgDyBgIA7gYAAPIGAADyBgAA8gYAAPAAAAACBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPKmoKD6BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4WEBD7BwEA8gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgIA8gYAAPIGAgDsAAAAAgYCAO4GAgDuBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgIA8oaCgPIGAgDyBgAA8gYAAPIGAgDyBgIA8oaCgPIGAgDyBgIA8gYCAO8HAQDyBgIA7gYCAOwAAAACBgIA7wcBAPIGAADyBgIA7wcBAPIGAgDuBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPLOysj6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP8PCwj6BgAA8AAAAAIGAgDvBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDsAAAAAgYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYCAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyhoKA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcDAPIGAgDyBgIA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO8HAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4GAADyBgIA8iYiIPYGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+JiIg9gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAgDsAAAAAgYAAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAADzBwEA8oaCgPoGAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+FhIQ+gYAAPIGAADyBgIA7AAAAAIGAADyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA7wcBAPIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8gYCAO4GAgDuBgIA7gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8AAAAAAAAAACBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgAA8gYCAOwAAAADBwEA8wcBAPMHAQDwAAAAAAAAAAIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADyBgIA7gYAAPAAAAAAAAAAAgYAAPAAAAACJiIg9goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD/z8vI+gYAAPYGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAOwAAAADBwEA8gYAAPIGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPMHAwDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAADwAAAAAgYAAPIGAgDsAAAAAgYAAPMHAQDyBgAA8gYCAOwAAAACBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8wcBAPAAAAAAAAAAAgYCAO4GAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7gYAAPMHAQDyDgoI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4KCPoGAADyBgAA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPKGgoDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDvBwEA8gYCAPAAAAAAAAAAAgYCAO4GAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDwAAAAAgYCAOwAAAACBgIA7AAAAAAAAAACBgIA8gYCAPJGQkD3j4uI+goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/8/LyPpGQED2BgAA8oaCgPIGAgDyBgIA8wcBAPIGAADyBgIA8gYCAPIGAADzBwEA8gYAAPIGAgDyBgIA7wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYCAPKGgoDzBwMA8gYCAPIGAADyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8wcBAPIGAgDuBgAA8gYCAO4GAgDsAAAAAgYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAO4GAADyBgIA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYCAPKWkpD6CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP4KBAT+CgQE/goEBP4WEhD7BwEA8gYCAO8HAQDyBgIA8gYAAPMHAQDzBwMA8wcBAPIGAADyBgIA7gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAwDzBwEA8gYCAPIGAADyhoKA8wcBAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgAA8gYAAPAAAAACBgIA7gYAAPIGAgDuBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP/Py8j6JiIg9wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAO4GAADzBwEA8gYCAOwAAAACBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8paSkPoKBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+zsrI+gYCAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYCAO8HAQDyBgIA8gYCAOwAAAADBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA8gYAAPIGAgDuBgIA7AAAAAIGAADzBwEA8oaCgPIGAgDzBwEA8gYCAO8HAQDyBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDylpCQ+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4SDAz+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/iYgIPoGAgDuBgIA7gYAAPIGAgDyBgAA8gYCAO4GAADyBgAA8AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDyBgIA8gYAAPIGAgDzBwEA8gYAAPMHAQDyhoKA8oaCgPIGAgDyBgAA8gYCAOwAAAADBwEA8gYCAPIGAgDzBwEA8gYCAO4GAADyBgAA8gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYCAPIGAADyBgAA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzj4uI+goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/gYAAP4GAAD+CgQE/4+LiPpGQED3BwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYAAPIGAgDvBwEA8gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8gYCAPIWEhD6BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP5OSkj6BgAA8wcBAPMHAQDyBgAA8gYCAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgIA8gYCAPIGAADyBgIA8oaCgPIGAgDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8oaCgPIGAADyBgAA8gYCAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8AAAAAMHAQDyBgIA82djYPYKBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+DggI/goEBP4GAAD+FhAQ+wcBAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDsAAAAAAAAAAAAAAAChoKA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDyBgAA8gYCAPMHAQDyBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDwAAAAAgYCAO4GAADyJiIg95eTkPoKBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD/j4uI+sbAwPYGAgDyhoKA8oaCgPMHAQDyBgAA8AAAAAIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8oaCgPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAIGAgDvBwEA8gYCAPIGAADyBgIA7gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyjoqI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPsHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAADyBgIA8wcBAPKGgoDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgAA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgAA8wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA8wcBAPIWEhD6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+XkZD6BgAA8gYCAO4GAgDyBgIA8gYCAO8HAQDyBgIA8gYAAPMHAQDyBgIA7gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPIGAADzBwEA8gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDsAAAAAwcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8jYwMPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgIA8gYCAO4GAADyhoKA8wcBAPIGAgDyBgIA8gYCAO4GAgDyBgIA8gYCAPIGAgDyBgAA8oaCgPIGAgDzBwEA8gYCAPKGgoDzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYCAO4GAADyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAADzBwEA8gYAAPIGAgDsAAAAAwcBAPIGAADyJiIg98/LyPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD/x8PA+kZCQPYGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPIGAgDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAO8HAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPKGgoDzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgDvBwEA8wcBAPMHAQDwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/4+LiPomIiD3BwEA8gYCAO4GAgDuBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDyBgIA7gYAAPMHAQDyBgIA8oaCgPMHAQDzBwEA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgIA8gYAAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDzBwEA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgIA7wcBAPIGAgDsAAAAAgYCAO4GAADzBwEA8kZCQPePi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP+Pi4j6BgIA9gYCAO4GAgDuhoKA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDwAAAAAgYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADyxsDA94+LiPoKBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/T0tI+gYAAPcHAQDyBgAA8gYCAPIGAgDsAAAAAgYCAO8HAQDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDyBgAA8gYCAPMHAQDyBgAA8gYCAO8HAQDwAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAOwAAAACBgAA8gYCAO4GAgDuBgAA8gYAAPJmYmD3V1NQ+gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/4+LiPqGgoD2BgIA8wcDAPIGAADyBgAA8gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA7gYCAPIGAgDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDyhoKA8oaCgPMHAQDzBwEA8gYCAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYCAO8HAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA7kZCQPeXk5D6CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4OCAj+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+BgAA/gYAAP+Pi4j6JiIg9gYAAPAAAAAAAAAAAwcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgIA7wcBAPIGAADyBgIA7gYAAPIGAgDzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADyRkJA95eTkPoKBAT+CgQE/g4ICP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD/j4uI+gYCAPYGAgDuBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDzBwEA8wcBAPKGgoDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA7AAAAAMHAQDzBwEA8gYCAO4GAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgIA7AAAAAIGAADyBgAA8oaCgPMHAQDyBgIA7gYCAO4mICD7z8vI+gYAAP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/8fDwPoWEBD6BgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcDAPKGgoDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgIA8wcBAPMHAQDyBgIA75eRkPoKBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgAA8wcBAPMHAwDyhoKA8gYCAPMHAQDwAAAAAgYCAO4GAgDyBgIA8gYAAPIGAADyBgIA7gYCAPIGAADyBgIA7wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8wcBAPIGAAD2xsLA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/o6KiPpGQkD3BwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADzBwEA8iYgIPuHg4D6BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP+Pi4j7R0NA9wcBAPIGAgDuBgIA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAOwAAAACBgAA8wcBAPMHAQDyBgIA7gYAAPIGAgDyhoKA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAAD2TkpI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/hYSEPsHAQDyBgAA8gYCAO4GAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYCAPKGgoDzBwEA8gYCAOwAAAADBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8iYgIPuPi4j6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Xk5D6pqCg+gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPIGAADyBgIA8wcBAPImIiD2zsrI+gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4ICP4KBAT+DggI/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/paSkPomIiD3BwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADzBwEA8wcDAPIGAgDzBwEA8gYCAPIGAgDuBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA9g4KCPvPy8j6CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+lpKQ+kZCQPYGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgAA8wcBAPIGAADyBgAA8kZAQPYWEhD7z8vI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/4+LiPoWEhD6ZmJg9gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA7AAAAAIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgD2FhIQ+8/LyPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/o6KiPomIiD2BgAA8gYCAPIGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAADyFhAQ+w8LCPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4SDAz+BgAA/g4ICP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+xsLA+paQkPsHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA+kZCQPvPy8j6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/g4ICP+Pi4j6joqI+kZAQPoGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPKGgID3FxEQ+o6KiPvPy8j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4OCAj+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP+Xk5D6lpKQ+rawsPpGQkD2BgAA86ehoPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/p6Gg+4+LiPoKBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT/z8vI+8/LyPoKBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT/l5OQ+6ehoPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT/t7Gw+wcBAPKmoqD2hoCA+paSkPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP/X09D6joqI+xcREPpGQED2BgAA8wcBAPIGAgDzBwEA8wcBAPIGAADyFhAQ+oaCgPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP/Py8j6VlJQ+iYgIPoGAgDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADylpCQ+tbS0PoGAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT/DwsI+iYgIPoGAgDyhoKA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgD2joqI+gYAAP4GAAD+BgAA/g4ICP4OCAj+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/z8vI+hYSEPpmYmD3BwEA8wcBAPMHAwDzBwMA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8kZCQPYWEhD7j4uI+goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/8/LyPoOCgj6RkBA9gYAAPIGAADyBgAA8gYCAPIGAgDyhoKA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgAA8gYCAPIGAADzBwEA8gYCAPKGgoDyBgIA8gYAAPMHAQDyhoKA8oaCgPIGAADzBwEA8gYAAPIGAgDyBgIA9o6KiPoKBAT+BgAA/gYAAP4KBAT+DggI/g4ICP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP/X09D6FhIQ+oaAgPYGAgDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgAA8gYAAPIGAADwAAAAAgYAAPImIiD2npqY+gYAAP4KBAT+DggI/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPpGQkD2BgIA8wcBAPMHAQDyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAgDuBgIA7gYCAO4GAADwAAAAAgYCAO8HAQDzBwEA8oaAgPuHg4D6BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP+Xk5D6JiAg+gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPKGgoDyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADyBgAA8AAAAAIGAADyDgoI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/lZSUPrGwMD3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDzBwEA8gYCAO8HAQDyBgIA7gYAAPIGAgDuBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDwAAAAAgYAAPAAAAACBgAA8gYCAO4GAgDsAAAAAwcDAPePi4j6CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP+Pi4j6JiAg+wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPKGgoDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgAA8AAAAAAAAAADBwEA8gYCAO4mIiD2joqI+goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/s7KyPqGgID3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA8gYAAPIGAgDuBgIA8hYSEPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/l5GQ+wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYAAPImICD7z8vI+goEBP4GAAD+CgQE/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/8fDwPomICD7BwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAADzBwEA8gYCAPMHAQDyZmJg94+LiPoGAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD/j4uI+iYiIPcHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8kZCQPePi4j6CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYAAPIGAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA8oaCgPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA8gYAAPIGAADyBgIA7gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYAAPMHAQDzBwEA8wcBAPJGQkD3j4uI+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4OCAj+CgQE/g4ICP4OCAj+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/09LSPpGQkD3BwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8oaCgPMHAQDyBgIA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyhoCA909LSPoKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT/j4uI+sbAwPYGAgDyBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDyhoKA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYAAPIGAgDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8mZiYPeXk5D6CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+DggI/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgIA7wcBAPMHAQDzBwEA8wcBAPJGQkD3j4uI+g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4GAAD+DggI/4+LiPpGQkD2BgAA8gYAAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyJiIg98/LyPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT/19PQ+kZCQPYGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPKGgoDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA7hYQEPoKBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4KBAT+NjAw+oaCgPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPKGgoDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8gYCAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYAAPOXkZD6BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCgj6BgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPKGgoDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAwDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDyhoKA8oaCgPKGgoDyBgIA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADyBgAA8gYCAO8HAQDyzsrI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPMHAQDyBgAA8gYCAO4GAADyBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDuhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPMHAQDwAAAAAwcBAPMHAQDyBgAA8gYCAPIGAgDyhoKA8oaCgPKGgoDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYAAPMHAQDyBgIA7gYAAPMHAQDyBgAA94eDgPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+kZCQPYGAADyBgIA7wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA7wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDvBwEA8gYAAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAPMHAQDyBgIA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT/R0NA9gYCAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPJOSkj6BgAA/gYAAP4KBAT+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4WEhD6BgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYAAPIGAgDyBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgAA8gYAAPMHAQDyBgIA7wcBAPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8oaCgPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAO5GQED3j4uI+gYAAP4OCAj+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/5eTkPoGAgDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDyhoKA8gYCAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA8gYAAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyJiAg+goEBP4KBAT+DggI/goEBP4OCAj+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/qagoPoGAADyBgAA8gYAAPIGAADyBgIA8gYCAPIGAADyBgIA8gYCAO8HAQDyBgAA8wcBAPIGAADyBgAA8gYCAPIGAADyBgIA7gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA7wcBAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDvBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADzBwEA8wcBAPAAAAACBgAA8gYCAO4GAADyBgIA7s7KyPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+lpKQ+gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA8wcBAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyBgAA8iYiIPfHw8D6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+JiIg9wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDyhoKA8wcBAPMHAQDyBgAA8gYCAPMHAQDyhoKA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDvBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIOCgj6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP6WkpD6BgIA8gYCAPIGAgDzBwEA8wcBAPKGgoDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgIA8wcBAPIGAgDyBgAA8gYCAPIGAADyBgAA8AAAAAIGAADyBgAA8wcBAPIGAADyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYCAPJGQED3z8vI+gYAAP4GAAD+DggI/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+CgQE/4+LiPpmYmD3BwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8gYAAPKGgoDzBwEA8gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8AAAAAMHAQDzBwEA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyDgoI+goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/g4KCPsHAQDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPKGgoDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAADyBgAA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAADyBgAA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8oaCgPIGAgDzBwEA8gYCAPIGAADyhoCA98/LyPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/mZiYPYGAADyBgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDvBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8hYSEPoKBAT+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+lpKQ+gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAgDuBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDzBwMA8wcBAPMHAQDzBwEA8AAAAAIGAADzBwEA8AAAAAIGAADyBgIA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPMHAQDyBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+RkJA9wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8wcBAPKGgoDzBwEA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgIA8gYAAPIGAADyBgIA7gYCAO4GAgDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDvBwEA8gYAAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDyBgAA8AAAAAIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMPCwj6BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP7Oysj6BgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8oaCgPKGgoDyBgIA8gYCAPIGAgDvBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDvBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAAD6BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP6WkJD7BwEA8wcBAPIGAADyBgAA8gYCAPKGgoDyBgIA7wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAgDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgIA8oaCgPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyhoKA8wcBAPMHAQDzz8vI+goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/4+LiPoGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDyBgAA8gYCAPIGAgDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADyBgAA8wcBAPAAAAADBwEA8wcBAPIGAgDuBgIA7gYAAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyVlJQ+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/paSkPoGAgDyBgIA8wcBAPMHAQDyhoKA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYCAPIGAADzBwEA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA8wcBAPIGAADwAAAAAgYAAPIGAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyJiAg+goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/iYgIPoGAADyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADyhoKA8gYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYAAPAAAAACBgAA8gYCAO4GAgDvBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDyhoKA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgAA8AAAAAIGAgDuBgIA8wcBAPAAAAACBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA8gYCAO8HAQDyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA88/LyPoGAAD+CgQE/goEBP4KBAT/j4uI+gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPKGgoDyBgIA8gYCAPIGAgDyBgIA7gYCAO8HAQDyBgAA8gYAAPIGAADyBgIA7gYAAPIGAgDsAAAAAAAAAAMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPKGgoDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgAA8paSkPoKBAT+CgQE/goEBP4KBAT+hoKA+gYAAPMHAQDyhoKA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgIA8oaCgPIGAADyBgAA8gYAAPMHAQDzBwEA8oaCgPIGAgDyBgIA7gYCAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPIGAADyhoKA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8gYAAPIGAgDyBgIA8wcBAPMHAQDwAAAAAgYCAO8HAQDyBgAA8gYCAOwAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8xcREPoKBAT+CgQE/goEBP4KBAT+pqCg+wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8kZAQPYGAAD+CgQE/goEBP4KBAT+JiIg9gYCAPIGAgDyBgIA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDyBgIA7gYAAPAAAAACBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPKGgoDyBgAA8wcBAPIGAADzBwEA8AAAAAIGAADyBgIA7gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPOXkZD7h4OA+8/LyPunoaD7BwEA8gYCAPIGAgDzBwEA8gYAAPIGAgDvBwEA8wcBAPIGAADyBgIA8wcBAPIGAADyBgIA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAPMHAQDyBgIA7gYAAPIGAADyBgAA8"
  };
  var decodedAlphaMaps = /* @__PURE__ */ new Map();
  function decodeBase64(base64) {
    if (typeof Buffer !== "undefined") {
      return Uint8Array.from(Buffer.from(base64, "base64"));
    }
    if (typeof atob !== "undefined") {
      const binary = atob(base64);
      const bytes = new Uint8Array(binary.length);
      for (let i = 0; i < binary.length; i++) {
        bytes[i] = binary.charCodeAt(i);
      }
      return bytes;
    }
    throw new Error("No base64 decoder available in current runtime");
  }
  function getEmbeddedAlphaMap(size) {
    const knownSize = Number(size);
    if (!(knownSize in EMBEDDED_ALPHA_MAP_BASE64)) {
      return null;
    }
    if (!decodedAlphaMaps.has(knownSize)) {
      const bytes = decodeBase64(EMBEDDED_ALPHA_MAP_BASE64[knownSize]);
      const expectedLength = EMBEDDED_ALPHA_MAP_LENGTHS[knownSize];
      const view = new Float32Array(bytes.buffer, bytes.byteOffset, expectedLength);
      decodedAlphaMaps.set(knownSize, new Float32Array(view));
    }
    return new Float32Array(decodedAlphaMaps.get(knownSize));
  }

  // src/core/blendModes.js
  var ALPHA_NOISE_FLOOR = 3 / 255;
  var ALPHA_THRESHOLD = 2e-3;
  var MAX_ALPHA = 0.99;
  var LOGO_VALUE = 255;
  function removeWatermark(imageData, alphaMap, position, options = {}) {
    const { x, y, width, height } = position;
    const alphaGain = Number.isFinite(options.alphaGain) && options.alphaGain > 0 ? options.alphaGain : 1;
    for (let row = 0; row < height; row++) {
      for (let col = 0; col < width; col++) {
        const imgIdx = ((y + row) * imageData.width + (x + col)) * 4;
        const alphaIdx = row * width + col;
        const rawAlpha = alphaMap[alphaIdx];
        const signalAlpha = Math.max(0, rawAlpha - ALPHA_NOISE_FLOOR) * alphaGain;
        if (signalAlpha < ALPHA_THRESHOLD) {
          continue;
        }
        const alpha = Math.min(rawAlpha * alphaGain, MAX_ALPHA);
        const oneMinusAlpha = 1 - alpha;
        for (let c = 0; c < 3; c++) {
          const watermarked = imageData.data[imgIdx + c];
          const original = (watermarked - alpha * LOGO_VALUE) / oneMinusAlpha;
          imageData.data[imgIdx + c] = Math.max(0, Math.min(255, Math.round(original)));
        }
      }
    }
  }

  // src/core/geminiSizeCatalog.js
  var WATERMARK_CONFIG_BY_TIER = Object.freeze({
    "0.5k": Object.freeze({ logoSize: 48, marginRight: 32, marginBottom: 32 }),
    "1k": Object.freeze({ logoSize: 96, marginRight: 64, marginBottom: 64 }),
    "2k": Object.freeze({ logoSize: 96, marginRight: 64, marginBottom: 64 }),
    "4k": Object.freeze({ logoSize: 96, marginRight: 64, marginBottom: 64 })
  });
  function createEntries(modelFamily, resolutionTier, rows) {
    return rows.map(([aspectRatio, width, height]) => ({
      modelFamily,
      resolutionTier,
      aspectRatio,
      width,
      height
    }));
  }
  var OFFICIAL_GEMINI_IMAGE_SIZES = Object.freeze([
    ...createEntries("gemini-3.x-image", "0.5k", [
      ["1:1", 512, 512],
      ["1:4", 256, 1024],
      ["1:8", 192, 1536],
      ["2:3", 424, 632],
      ["3:2", 632, 424],
      ["3:4", 448, 600],
      ["4:1", 1024, 256],
      ["4:3", 600, 448],
      ["4:5", 464, 576],
      ["5:4", 576, 464],
      ["8:1", 1536, 192],
      ["9:16", 384, 688],
      ["16:9", 688, 384],
      ["21:9", 792, 168]
    ]),
    ...createEntries("gemini-3.x-image", "1k", [
      ["1:1", 1024, 1024],
      ["1:4", 512, 2064],
      ["1:8", 352, 2928],
      ["2:3", 848, 1264],
      ["3:2", 1264, 848],
      ["3:4", 896, 1200],
      ["4:1", 2064, 512],
      ["4:3", 1200, 896],
      ["4:5", 928, 1152],
      ["5:4", 1152, 928],
      ["8:1", 2928, 352],
      ["9:16", 768, 1376],
      ["16:9", 1376, 768],
      ["16:9", 1408, 768],
      ["21:9", 1584, 672]
    ]),
    ...createEntries("gemini-3.x-image", "2k", [
      ["1:1", 2048, 2048],
      ["1:4", 512, 2048],
      ["1:8", 384, 3072],
      ["2:3", 1696, 2528],
      ["3:2", 2528, 1696],
      ["3:4", 1792, 2400],
      ["4:1", 2048, 512],
      ["4:3", 2400, 1792],
      ["4:5", 1856, 2304],
      ["5:4", 2304, 1856],
      ["8:1", 3072, 384],
      ["9:16", 1536, 2752],
      ["16:9", 2752, 1536],
      ["21:9", 3168, 1344]
    ]),
    ...createEntries("gemini-3.x-image", "4k", [
      ["1:1", 4096, 4096],
      ["1:4", 2048, 8192],
      ["1:8", 1536, 12288],
      ["2:3", 3392, 5056],
      ["3:2", 5056, 3392],
      ["3:4", 3584, 4800],
      ["4:1", 8192, 2048],
      ["4:3", 4800, 3584],
      ["4:5", 3712, 4608],
      ["5:4", 4608, 3712],
      ["8:1", 12288, 1536],
      ["9:16", 3072, 5504],
      ["16:9", 5504, 3072],
      ["21:9", 6336, 2688]
    ]),
    ...createEntries("gemini-2.5-flash-image", "1k", [
      ["1:1", 1024, 1024],
      ["2:3", 832, 1248],
      ["3:2", 1248, 832],
      ["3:4", 864, 1184],
      ["4:3", 1184, 864],
      ["4:5", 896, 1152],
      ["5:4", 1152, 896],
      ["9:16", 768, 1344],
      ["16:9", 1344, 768],
      ["21:9", 1536, 672]
    ])
  ]);
  var OFFICIAL_GEMINI_IMAGE_SIZE_INDEX = new Map(
    OFFICIAL_GEMINI_IMAGE_SIZES.map((entry) => [`${entry.width}x${entry.height}`, entry])
  );
  function normalizeDimension(value) {
    const numeric = Number(value);
    if (!Number.isFinite(numeric)) return null;
    const rounded = Math.round(numeric);
    return rounded > 0 ? rounded : null;
  }
  function clamp(value, min, max) {
    return Math.max(min, Math.min(max, value));
  }
  function getEntryConfig(entry) {
    return WATERMARK_CONFIG_BY_TIER[entry.resolutionTier] ?? null;
  }
  function buildConfigKey(config) {
    return `${config.logoSize}:${config.marginRight}:${config.marginBottom}`;
  }
  function matchOfficialGeminiImageSize(width, height) {
    const normalizedWidth = normalizeDimension(width);
    const normalizedHeight = normalizeDimension(height);
    if (!normalizedWidth || !normalizedHeight) return null;
    return OFFICIAL_GEMINI_IMAGE_SIZE_INDEX.get(`${normalizedWidth}x${normalizedHeight}`) ?? null;
  }
  function resolveOfficialGeminiWatermarkConfig(width, height) {
    const match = matchOfficialGeminiImageSize(width, height);
    if (!match) return null;
    return getEntryConfig(match);
  }
  function resolveOfficialGeminiSearchConfigs(width, height, {
    maxRelativeAspectRatioDelta = 0.02,
    maxScaleMismatchRatio = 0.12,
    minLogoSize = 24,
    maxLogoSize = 192,
    limit = 3
  } = {}) {
    const normalizedWidth = normalizeDimension(width);
    const normalizedHeight = normalizeDimension(height);
    if (!normalizedWidth || !normalizedHeight) return [];
    const exactOfficialConfig = resolveOfficialGeminiWatermarkConfig(
      normalizedWidth,
      normalizedHeight
    );
    if (exactOfficialConfig) {
      return [{ ...exactOfficialConfig }];
    }
    const targetAspectRatio = normalizedWidth / normalizedHeight;
    const candidates = OFFICIAL_GEMINI_IMAGE_SIZES.map((entry) => {
      const baseConfig = getEntryConfig(entry);
      if (!baseConfig) return null;
      const scaleX = normalizedWidth / entry.width;
      const scaleY = normalizedHeight / entry.height;
      const scale = (scaleX + scaleY) / 2;
      const entryAspectRatio = entry.width / entry.height;
      const relativeAspectRatioDelta = Math.abs(targetAspectRatio - entryAspectRatio) / entryAspectRatio;
      const scaleMismatchRatio = Math.abs(scaleX - scaleY) / Math.max(scaleX, scaleY);
      if (relativeAspectRatioDelta > maxRelativeAspectRatioDelta) return null;
      if (scaleMismatchRatio > maxScaleMismatchRatio) return null;
      const config = {
        logoSize: clamp(Math.round(baseConfig.logoSize * scale), minLogoSize, maxLogoSize),
        marginRight: Math.max(8, Math.round(baseConfig.marginRight * scaleX)),
        marginBottom: Math.max(8, Math.round(baseConfig.marginBottom * scaleY))
      };
      const x = normalizedWidth - config.marginRight - config.logoSize;
      const y = normalizedHeight - config.marginBottom - config.logoSize;
      if (x < 0 || y < 0) return null;
      return {
        config,
        score: relativeAspectRatioDelta * 100 + scaleMismatchRatio * 20 + Math.abs(Math.log2(Math.max(scale, 1e-6)))
      };
    }).filter(Boolean).sort((a, b) => a.score - b.score);
    const deduped = [];
    const seen = /* @__PURE__ */ new Set();
    for (const candidate of candidates) {
      const key = `${candidate.config.logoSize}:${candidate.config.marginRight}:${candidate.config.marginBottom}`;
      if (seen.has(key)) continue;
      seen.add(key);
      deduped.push(candidate.config);
      if (deduped.length >= limit) break;
    }
    return deduped;
  }
  function resolveGeminiWatermarkSearchConfigs(width, height, defaultConfig) {
    const configs = [];
    if (defaultConfig) {
      configs.push(defaultConfig);
    }
    configs.push(...resolveOfficialGeminiSearchConfigs(width, height));
    const deduped = [];
    const seen = /* @__PURE__ */ new Set();
    for (const config of configs) {
      if (!config) continue;
      const key = buildConfigKey(config);
      if (seen.has(key)) continue;
      seen.add(key);
      deduped.push(config);
    }
    return deduped;
  }

  // src/core/adaptiveDetector.js
  var DEFAULT_THRESHOLD = 0.35;
  var EPSILON = 1e-8;
  var clamp2 = (v, min, max) => Math.max(min, Math.min(max, v));
  function meanAndVariance(values) {
    let sum = 0;
    for (let i = 0; i < values.length; i++) sum += values[i];
    const mean = sum / values.length;
    let sq = 0;
    for (let i = 0; i < values.length; i++) {
      const d = values[i] - mean;
      sq += d * d;
    }
    return { mean, variance: sq / values.length };
  }
  function normalizedCrossCorrelation(a, b) {
    if (a.length !== b.length || a.length === 0) return 0;
    const statsA = meanAndVariance(a);
    const statsB = meanAndVariance(b);
    const den = Math.sqrt(statsA.variance * statsB.variance) * a.length;
    if (den < EPSILON) return 0;
    let num = 0;
    for (let i = 0; i < a.length; i++) {
      num += (a[i] - statsA.mean) * (b[i] - statsB.mean);
    }
    return num / den;
  }
  function getRegion(data, width, x, y, size) {
    const out = new Float32Array(size * size);
    for (let row = 0; row < size; row++) {
      const srcBase = (y + row) * width + x;
      const dstBase = row * size;
      for (let col = 0; col < size; col++) {
        out[dstBase + col] = data[srcBase + col];
      }
    }
    return out;
  }
  function toRegionGrayscale(imageData, region) {
    const { width, height, data } = imageData;
    const size = region.size ?? Math.min(region.width, region.height);
    if (!size || size <= 0) return new Float32Array(0);
    if (region.x < 0 || region.y < 0 || region.x + size > width || region.y + size > height) {
      return new Float32Array(0);
    }
    const out = new Float32Array(size * size);
    for (let row = 0; row < size; row++) {
      for (let col = 0; col < size; col++) {
        const idx = ((region.y + row) * width + (region.x + col)) * 4;
        out[row * size + col] = (0.2126 * data[idx] + 0.7152 * data[idx + 1] + 0.0722 * data[idx + 2]) / 255;
      }
    }
    return out;
  }
  function toGrayscale(imageData) {
    const { width, height, data } = imageData;
    const out = new Float32Array(width * height);
    for (let i = 0; i < out.length; i++) {
      const j = i * 4;
      out[i] = (0.2126 * data[j] + 0.7152 * data[j + 1] + 0.0722 * data[j + 2]) / 255;
    }
    return out;
  }
  function sobelMagnitude(gray, width, height) {
    const grad = new Float32Array(width * height);
    for (let y = 1; y < height - 1; y++) {
      for (let x = 1; x < width - 1; x++) {
        const i = y * width + x;
        const gx = -gray[i - width - 1] - 2 * gray[i - 1] - gray[i + width - 1] + gray[i - width + 1] + 2 * gray[i + 1] + gray[i + width + 1];
        const gy = -gray[i - width - 1] - 2 * gray[i - width] - gray[i - width + 1] + gray[i + width - 1] + 2 * gray[i + width] + gray[i + width + 1];
        grad[i] = Math.sqrt(gx * gx + gy * gy);
      }
    }
    return grad;
  }
  function stdDevRegion(data, width, x, y, size) {
    let sum = 0;
    let sq = 0;
    let n = 0;
    for (let row = 0; row < size; row++) {
      const base = (y + row) * width + x;
      for (let col = 0; col < size; col++) {
        const v = data[base + col];
        sum += v;
        sq += v * v;
        n++;
      }
    }
    if (n === 0) return 0;
    const mean = sum / n;
    const variance = Math.max(0, sq / n - mean * mean);
    return Math.sqrt(variance);
  }
  function buildTemplateGradient(alphaMap, size) {
    return sobelMagnitude(alphaMap, size, size);
  }
  function scoreCandidate({ gray, grad, width, height }, alphaMap, templateGrad, candidate) {
    const { x, y, size } = candidate;
    if (x < 0 || y < 0 || x + size > width || y + size > height) {
      return null;
    }
    const grayRegion = getRegion(gray, width, x, y, size);
    const gradRegion = getRegion(grad, width, x, y, size);
    const spatial = normalizedCrossCorrelation(grayRegion, alphaMap);
    const gradient = normalizedCrossCorrelation(gradRegion, templateGrad);
    let varianceScore = 0;
    if (y > 8) {
      const refY = Math.max(0, y - size);
      const refH = Math.min(size, y - refY);
      if (refH > 8) {
        const wmStd = stdDevRegion(gray, width, x, y, size);
        const refStd = stdDevRegion(gray, width, x, refY, refH);
        if (refStd > EPSILON) {
          varianceScore = clamp2(1 - wmStd / refStd, 0, 1);
        }
      }
    }
    const confidence = Math.max(0, spatial) * 0.5 + Math.max(0, gradient) * 0.3 + varianceScore * 0.2;
    return {
      confidence: clamp2(confidence, 0, 1),
      spatialScore: spatial,
      gradientScore: gradient,
      varianceScore
    };
  }
  function createScaleList(minSize, maxSize) {
    const set = /* @__PURE__ */ new Set();
    for (let s = minSize; s <= maxSize; s += 8) set.add(s);
    if (48 >= minSize && 48 <= maxSize) set.add(48);
    if (96 >= minSize && 96 <= maxSize) set.add(96);
    return [...set].sort((a, b) => a - b);
  }
  function buildSeedConfigs(width, height, defaultConfig) {
    return resolveGeminiWatermarkSearchConfigs(width, height, defaultConfig);
  }
  function getTemplate(cache, alpha96, size) {
    if (cache.has(size)) return cache.get(size);
    const alpha = size === 96 ? alpha96 : interpolateAlphaMap(alpha96, 96, size);
    const grad = buildTemplateGradient(alpha, size);
    const tpl = { alpha, grad };
    cache.set(size, tpl);
    return tpl;
  }
  function warpAlphaMap(alphaMap, size, { dx = 0, dy = 0, scale = 1 } = {}) {
    if (size <= 0) return new Float32Array(0);
    if (!Number.isFinite(dx) || !Number.isFinite(dy) || !Number.isFinite(scale) || scale <= 0) {
      return new Float32Array(0);
    }
    if (dx === 0 && dy === 0 && scale === 1) return new Float32Array(alphaMap);
    const sample = (x, y) => {
      const x0 = Math.floor(x);
      const y0 = Math.floor(y);
      const fx = x - x0;
      const fy = y - y0;
      const ix0 = clamp2(x0, 0, size - 1);
      const iy0 = clamp2(y0, 0, size - 1);
      const ix1 = clamp2(x0 + 1, 0, size - 1);
      const iy1 = clamp2(y0 + 1, 0, size - 1);
      const p00 = alphaMap[iy0 * size + ix0];
      const p10 = alphaMap[iy0 * size + ix1];
      const p01 = alphaMap[iy1 * size + ix0];
      const p11 = alphaMap[iy1 * size + ix1];
      const top = p00 + (p10 - p00) * fx;
      const bottom = p01 + (p11 - p01) * fx;
      return top + (bottom - top) * fy;
    };
    const out = new Float32Array(size * size);
    const c = (size - 1) / 2;
    for (let y = 0; y < size; y++) {
      for (let x = 0; x < size; x++) {
        const sx = (x - c) / scale + c + dx;
        const sy = (y - c) / scale + c + dy;
        out[y * size + x] = sample(sx, sy);
      }
    }
    return out;
  }
  function interpolateAlphaMap(sourceAlpha, sourceSize, targetSize) {
    if (targetSize <= 0) return new Float32Array(0);
    if (sourceSize === targetSize) return new Float32Array(sourceAlpha);
    const out = new Float32Array(targetSize * targetSize);
    const scale = (sourceSize - 1) / Math.max(1, targetSize - 1);
    for (let y = 0; y < targetSize; y++) {
      const sy = y * scale;
      const y0 = Math.floor(sy);
      const y1 = Math.min(sourceSize - 1, y0 + 1);
      const fy = sy - y0;
      for (let x = 0; x < targetSize; x++) {
        const sx = x * scale;
        const x0 = Math.floor(sx);
        const x1 = Math.min(sourceSize - 1, x0 + 1);
        const fx = sx - x0;
        const p00 = sourceAlpha[y0 * sourceSize + x0];
        const p10 = sourceAlpha[y0 * sourceSize + x1];
        const p01 = sourceAlpha[y1 * sourceSize + x0];
        const p11 = sourceAlpha[y1 * sourceSize + x1];
        const top = p00 + (p10 - p00) * fx;
        const bottom = p01 + (p11 - p01) * fx;
        out[y * targetSize + x] = top + (bottom - top) * fy;
      }
    }
    return out;
  }
  function computeRegionSpatialCorrelation({ imageData, alphaMap, region }) {
    const patch = toRegionGrayscale(imageData, region);
    if (patch.length === 0 || patch.length !== alphaMap.length) return 0;
    return normalizedCrossCorrelation(patch, alphaMap);
  }
  function computeRegionGradientCorrelation({ imageData, alphaMap, region }) {
    const patch = toRegionGrayscale(imageData, region);
    if (patch.length === 0 || patch.length !== alphaMap.length) return 0;
    const size = region.size ?? Math.min(region.width, region.height);
    if (!size || size <= 2) return 0;
    const patchGrad = sobelMagnitude(patch, size, size);
    const alphaGrad = sobelMagnitude(alphaMap, size, size);
    return normalizedCrossCorrelation(patchGrad, alphaGrad);
  }
  function shouldAttemptAdaptiveFallback({
    processedImageData,
    alphaMap,
    position,
    residualThreshold = 0.22,
    originalImageData = null,
    originalSpatialMismatchThreshold = 0
  }) {
    const residualScore = computeRegionSpatialCorrelation({
      imageData: processedImageData,
      alphaMap,
      region: {
        x: position.x,
        y: position.y,
        size: position.width ?? position.size
      }
    });
    if (residualScore >= residualThreshold) {
      return true;
    }
    if (originalImageData) {
      const originalScore = computeRegionSpatialCorrelation({
        imageData: originalImageData,
        alphaMap,
        region: {
          x: position.x,
          y: position.y,
          size: position.width ?? position.size
        }
      });
      if (originalScore <= originalSpatialMismatchThreshold) {
        return true;
      }
    }
    return false;
  }
  function detectAdaptiveWatermarkRegion({
    imageData,
    alpha96,
    defaultConfig,
    threshold = DEFAULT_THRESHOLD
  }) {
    const { width, height } = imageData;
    const gray = toGrayscale(imageData);
    const grad = sobelMagnitude(gray, width, height);
    const context = { gray, grad, width, height };
    const templateCache = /* @__PURE__ */ new Map();
    const seedConfigs = buildSeedConfigs(width, height, defaultConfig);
    const seedCandidates = seedConfigs.map((config) => {
      const size = config.logoSize;
      const candidate = {
        size,
        x: width - config.marginRight - size,
        y: height - config.marginBottom - size
      };
      if (candidate.x < 0 || candidate.y < 0 || candidate.x + size > width || candidate.y + size > height) {
        return null;
      }
      const template = getTemplate(templateCache, alpha96, size);
      const score = scoreCandidate(context, template.alpha, template.grad, candidate);
      if (!score) return null;
      return {
        ...candidate,
        ...score
      };
    }).filter(Boolean);
    const bestSeed = seedCandidates.reduce((best2, candidate) => {
      if (!best2 || candidate.confidence > best2.confidence) return candidate;
      return best2;
    }, null);
    if (bestSeed && bestSeed.confidence >= threshold + 0.08) {
      return {
        found: true,
        confidence: bestSeed.confidence,
        spatialScore: bestSeed.spatialScore,
        gradientScore: bestSeed.gradientScore,
        varianceScore: bestSeed.varianceScore,
        region: {
          x: bestSeed.x,
          y: bestSeed.y,
          size: bestSeed.size
        }
      };
    }
    const baseSize = defaultConfig.logoSize;
    const minSize = clamp2(Math.round(baseSize * 0.65), 24, 144);
    const maxSize = clamp2(
      Math.min(Math.round(baseSize * 2.8), Math.floor(Math.min(width, height) * 0.4)),
      minSize,
      192
    );
    const scaleList = createScaleList(minSize, maxSize);
    const marginRange = Math.max(32, Math.round(baseSize * 0.75));
    const minMarginRight = clamp2(defaultConfig.marginRight - marginRange, 8, width - minSize - 1);
    const maxMarginRight = clamp2(defaultConfig.marginRight + marginRange, minMarginRight, width - minSize - 1);
    const minMarginBottom = clamp2(defaultConfig.marginBottom - marginRange, 8, height - minSize - 1);
    const maxMarginBottom = clamp2(defaultConfig.marginBottom + marginRange, minMarginBottom, height - minSize - 1);
    const topK = [];
    const pushTopK = (candidate) => {
      topK.push(candidate);
      topK.sort((a, b) => b.adjustedScore - a.adjustedScore);
      if (topK.length > 5) topK.length = 5;
    };
    for (const seedCandidate of seedCandidates) {
      pushTopK({
        size: seedCandidate.size,
        x: seedCandidate.x,
        y: seedCandidate.y,
        adjustedScore: seedCandidate.confidence * Math.min(1, Math.sqrt(seedCandidate.size / 96))
      });
    }
    for (const size of scaleList) {
      const tpl = getTemplate(templateCache, alpha96, size);
      for (let mr = minMarginRight; mr <= maxMarginRight; mr += 8) {
        const x = width - mr - size;
        if (x < 0) continue;
        for (let mb = minMarginBottom; mb <= maxMarginBottom; mb += 8) {
          const y = height - mb - size;
          if (y < 0) continue;
          const score = scoreCandidate(context, tpl.alpha, tpl.grad, { x, y, size });
          if (!score) continue;
          const adjustedScore = score.confidence * Math.min(1, Math.sqrt(size / 96));
          if (adjustedScore < 0.08) continue;
          pushTopK({
            size,
            x,
            y,
            adjustedScore
          });
        }
      }
    }
    let best = bestSeed ?? {
      x: width - defaultConfig.marginRight - defaultConfig.logoSize,
      y: height - defaultConfig.marginBottom - defaultConfig.logoSize,
      size: defaultConfig.logoSize,
      confidence: 0,
      spatialScore: 0,
      gradientScore: 0,
      varianceScore: 0
    };
    for (const coarse of topK) {
      const scaleLo = clamp2(coarse.size - 10, minSize, maxSize);
      const scaleHi = clamp2(coarse.size + 10, minSize, maxSize);
      for (let size = scaleLo; size <= scaleHi; size += 2) {
        const tpl = getTemplate(templateCache, alpha96, size);
        for (let x = coarse.x - 8; x <= coarse.x + 8; x += 2) {
          if (x < 0 || x + size > width) continue;
          for (let y = coarse.y - 8; y <= coarse.y + 8; y += 2) {
            if (y < 0 || y + size > height) continue;
            const score = scoreCandidate(context, tpl.alpha, tpl.grad, { x, y, size });
            if (!score) continue;
            if (score.confidence > best.confidence) {
              best = {
                x,
                y,
                size,
                ...score
              };
            }
          }
        }
      }
    }
    return {
      found: best.confidence >= threshold,
      confidence: best.confidence,
      spatialScore: best.spatialScore,
      gradientScore: best.gradientScore,
      varianceScore: best.varianceScore,
      region: {
        x: best.x,
        y: best.y,
        size: best.size
      }
    };
  }

  // src/core/restorationMetrics.js
  var NEAR_BLACK_THRESHOLD = 5;
  var TEXTURE_REFERENCE_MARGIN = 1;
  var TEXTURE_STD_FLOOR_RATIO = 0.8;
  var TEXTURE_DARKNESS_VISIBILITY_HARD_REJECT_THRESHOLD = 1.5;
  var TEXTURE_DARKNESS_HARD_REJECT_PENALTY_THRESHOLD = 0.5;
  var TEXTURE_FLATNESS_HARD_REJECT_PENALTY_THRESHOLD = 0.2;
  var DEFAULT_HALO_MIN_ALPHA = 0.12;
  var DEFAULT_HALO_MAX_ALPHA = 0.35;
  var DEFAULT_HALO_OUTSIDE_ALPHA_MAX = 0.01;
  var DEFAULT_HALO_OUTER_MARGIN = 3;
  function cloneImageData(imageData) {
    if (typeof ImageData !== "undefined" && imageData instanceof ImageData) {
      return new ImageData(
        new Uint8ClampedArray(imageData.data),
        imageData.width,
        imageData.height
      );
    }
    return {
      width: imageData.width,
      height: imageData.height,
      data: new Uint8ClampedArray(imageData.data)
    };
  }
  function calculateNearBlackRatio(imageData, position) {
    let nearBlack = 0;
    let total = 0;
    for (let row = 0; row < position.height; row++) {
      for (let col = 0; col < position.width; col++) {
        const idx = ((position.y + row) * imageData.width + (position.x + col)) * 4;
        const r = imageData.data[idx];
        const g = imageData.data[idx + 1];
        const b = imageData.data[idx + 2];
        if (r <= NEAR_BLACK_THRESHOLD && g <= NEAR_BLACK_THRESHOLD && b <= NEAR_BLACK_THRESHOLD) {
          nearBlack++;
        }
        total++;
      }
    }
    return total > 0 ? nearBlack / total : 0;
  }
  function calculateRegionTextureStats(imageData, region) {
    let sum = 0;
    let sq = 0;
    let total = 0;
    for (let row = 0; row < region.height; row++) {
      for (let col = 0; col < region.width; col++) {
        const idx = ((region.y + row) * imageData.width + (region.x + col)) * 4;
        const lum = 0.2126 * imageData.data[idx] + 0.7152 * imageData.data[idx + 1] + 0.0722 * imageData.data[idx + 2];
        sum += lum;
        sq += lum * lum;
        total++;
      }
    }
    const meanLum = total > 0 ? sum / total : 0;
    const variance = total > 0 ? Math.max(0, sq / total - meanLum * meanLum) : 0;
    return {
      meanLum,
      stdLum: Math.sqrt(variance)
    };
  }
  function getRegionTextureStats(imageData, region) {
    return calculateRegionTextureStats(imageData, region);
  }
  function assessAlphaBandHalo({
    imageData,
    position,
    alphaMap,
    minAlpha = DEFAULT_HALO_MIN_ALPHA,
    maxAlpha = DEFAULT_HALO_MAX_ALPHA,
    outsideAlphaMax = DEFAULT_HALO_OUTSIDE_ALPHA_MAX,
    outerMargin = DEFAULT_HALO_OUTER_MARGIN
  }) {
    let bandSum = 0;
    let bandSq = 0;
    let bandCount = 0;
    let outerSum = 0;
    let outerSq = 0;
    let outerCount = 0;
    for (let row = -outerMargin; row < position.height + outerMargin; row++) {
      for (let col = -outerMargin; col < position.width + outerMargin; col++) {
        const pixelX = position.x + col;
        const pixelY = position.y + row;
        if (pixelX < 0 || pixelY < 0 || pixelX >= imageData.width || pixelY >= imageData.height) {
          continue;
        }
        const pixelIndex = (pixelY * imageData.width + pixelX) * 4;
        const luminance = 0.2126 * imageData.data[pixelIndex] + 0.7152 * imageData.data[pixelIndex + 1] + 0.0722 * imageData.data[pixelIndex + 2];
        const insideRegion = row >= 0 && col >= 0 && row < position.height && col < position.width;
        const alpha = insideRegion ? alphaMap[row * position.width + col] : 0;
        if (insideRegion && alpha >= minAlpha && alpha <= maxAlpha) {
          bandSum += luminance;
          bandSq += luminance * luminance;
          bandCount++;
          continue;
        }
        if (!insideRegion || alpha <= outsideAlphaMax) {
          outerSum += luminance;
          outerSq += luminance * luminance;
          outerCount++;
        }
      }
    }
    const bandMeanLum = bandCount > 0 ? bandSum / bandCount : 0;
    const outerMeanLum = outerCount > 0 ? outerSum / outerCount : 0;
    const bandStdLum = bandCount > 0 ? Math.sqrt(Math.max(0, bandSq / bandCount - bandMeanLum * bandMeanLum)) : 0;
    const outerStdLum = outerCount > 0 ? Math.sqrt(Math.max(0, outerSq / outerCount - outerMeanLum * outerMeanLum)) : 0;
    const deltaLum = bandMeanLum - outerMeanLum;
    const visibility = deltaLum / Math.max(1, outerStdLum);
    return {
      bandCount,
      outerCount,
      bandMeanLum,
      outerMeanLum,
      bandStdLum,
      outerStdLum,
      deltaLum,
      positiveDeltaLum: Math.max(0, deltaLum),
      visibility
    };
  }
  function getReferenceRegion(position, imageData) {
    const referenceY = position.y - position.height;
    if (referenceY < 0) return null;
    return {
      x: position.x,
      y: referenceY,
      width: position.width,
      height: position.height
    };
  }
  function assessReferenceTextureAlignment({
    originalImageData,
    referenceImageData,
    candidateImageData,
    position
  }) {
    const candidateTextureStats = candidateImageData ? calculateRegionTextureStats(candidateImageData, position) : null;
    return assessReferenceTextureAlignmentFromStats({
      originalImageData,
      referenceImageData,
      candidateTextureStats,
      position
    });
  }
  function assessReferenceTextureAlignmentFromStats({
    originalImageData,
    referenceImageData,
    candidateTextureStats,
    position
  }) {
    const resolvedReferenceImageData = referenceImageData ?? originalImageData;
    const referenceRegion = resolvedReferenceImageData ? getReferenceRegion(position, resolvedReferenceImageData) : null;
    const referenceTextureStats = referenceRegion ? calculateRegionTextureStats(resolvedReferenceImageData, referenceRegion) : null;
    const darknessPenalty = referenceTextureStats && candidateTextureStats ? Math.max(0, referenceTextureStats.meanLum - candidateTextureStats.meanLum - TEXTURE_REFERENCE_MARGIN) / Math.max(1, referenceTextureStats.meanLum) : 0;
    const flatnessPenalty = referenceTextureStats && candidateTextureStats ? Math.max(0, referenceTextureStats.stdLum * TEXTURE_STD_FLOOR_RATIO - candidateTextureStats.stdLum) / Math.max(1, referenceTextureStats.stdLum) : 0;
    const darknessVisibility = referenceTextureStats && candidateTextureStats ? Math.max(0, referenceTextureStats.meanLum - candidateTextureStats.meanLum - TEXTURE_REFERENCE_MARGIN) / Math.max(1, referenceTextureStats.stdLum) : 0;
    const tooDark = darknessPenalty > 0;
    const tooFlat = flatnessPenalty > 0;
    const visibleDarkHole = tooDark && darknessVisibility >= TEXTURE_DARKNESS_VISIBILITY_HARD_REJECT_THRESHOLD;
    const strongDarkFlatCollapse = tooDark && tooFlat && darknessPenalty >= TEXTURE_DARKNESS_HARD_REJECT_PENALTY_THRESHOLD && flatnessPenalty >= TEXTURE_FLATNESS_HARD_REJECT_PENALTY_THRESHOLD;
    return {
      referenceTextureStats,
      candidateTextureStats,
      darknessPenalty,
      flatnessPenalty,
      darknessVisibility,
      texturePenalty: darknessPenalty * 2 + flatnessPenalty * 2,
      tooDark,
      tooFlat,
      visibleDarkHole,
      hardReject: strongDarkFlatCollapse || visibleDarkHole
    };
  }
  function scoreRegion(imageData, alphaMap, position) {
    return {
      spatialScore: computeRegionSpatialCorrelation({
        imageData,
        alphaMap,
        region: {
          x: position.x,
          y: position.y,
          size: position.width
        }
      }),
      gradientScore: computeRegionGradientCorrelation({
        imageData,
        alphaMap,
        region: {
          x: position.x,
          y: position.y,
          size: position.width
        }
      })
    };
  }

  // src/core/multiPassRemoval.js
  var DEFAULT_MAX_PASSES = 4;
  var DEFAULT_RESIDUAL_THRESHOLD = 0.25;
  var MAX_NEAR_BLACK_RATIO_INCREASE = 0.05;
  function removeRepeatedWatermarkLayers(imageDataOrOptions, alphaMapArg, positionArg, optionsArg = {}) {
    const isObjectCall = imageDataOrOptions && typeof imageDataOrOptions === "object" && "imageData" in imageDataOrOptions && alphaMapArg === void 0;
    const imageData = isObjectCall ? imageDataOrOptions.imageData : imageDataOrOptions;
    const alphaMap = isObjectCall ? imageDataOrOptions.alphaMap : alphaMapArg;
    const position = isObjectCall ? imageDataOrOptions.position : positionArg;
    const options = isObjectCall ? imageDataOrOptions : optionsArg;
    const maxPasses = Math.max(1, options.maxPasses ?? DEFAULT_MAX_PASSES);
    const residualThreshold = options.residualThreshold ?? DEFAULT_RESIDUAL_THRESHOLD;
    const startingPassIndex = Math.max(0, options.startingPassIndex ?? 0);
    const alphaGain = Number.isFinite(options.alphaGain) && options.alphaGain > 0 ? options.alphaGain : 1;
    let currentImageData = cloneImageData(imageData);
    const referenceImageData = currentImageData;
    const baseNearBlackRatio = calculateNearBlackRatio(currentImageData, position);
    const maxNearBlackRatio = Math.min(1, baseNearBlackRatio + MAX_NEAR_BLACK_RATIO_INCREASE);
    const passes = [];
    let stopReason = "max-passes";
    let appliedPassCount = startingPassIndex;
    let attemptedPassCount = startingPassIndex;
    for (let passIndex = 0; passIndex < maxPasses; passIndex++) {
      attemptedPassCount = startingPassIndex + passIndex + 1;
      const before = scoreRegion(currentImageData, alphaMap, position);
      const candidate = cloneImageData(currentImageData);
      removeWatermark(candidate, alphaMap, position, { alphaGain });
      const after = scoreRegion(candidate, alphaMap, position);
      const nearBlackRatio = calculateNearBlackRatio(candidate, position);
      const improvement = Math.abs(before.spatialScore) - Math.abs(after.spatialScore);
      const gradientDelta = after.gradientScore - before.gradientScore;
      const textureAssessment = assessReferenceTextureAlignment({
        referenceImageData,
        candidateImageData: candidate,
        position
      });
      if (nearBlackRatio > maxNearBlackRatio) {
        stopReason = "safety-near-black";
        break;
      }
      if (textureAssessment.hardReject) {
        stopReason = "safety-texture-collapse";
        break;
      }
      currentImageData = candidate;
      appliedPassCount = startingPassIndex + passIndex + 1;
      passes.push({
        index: appliedPassCount,
        beforeSpatialScore: before.spatialScore,
        beforeGradientScore: before.gradientScore,
        afterSpatialScore: after.spatialScore,
        afterGradientScore: after.gradientScore,
        improvement,
        gradientDelta,
        nearBlackRatio
      });
      if (Math.abs(after.spatialScore) <= residualThreshold) {
        stopReason = "residual-low";
        break;
      }
    }
    return {
      imageData: currentImageData,
      passCount: appliedPassCount,
      attemptedPassCount,
      stopReason,
      passes
    };
  }

  // src/core/watermarkPresence.js
  function hasReliableStandardWatermarkSignal({ spatialScore, gradientScore }) {
    return classifyStandardWatermarkSignal({ spatialScore, gradientScore }).tier === "direct-match";
  }
  function hasReliableAdaptiveWatermarkSignal(adaptiveResult) {
    return classifyAdaptiveWatermarkSignal(adaptiveResult).tier === "direct-match";
  }

  // src/core/candidateSelector.js
  var MAX_NEAR_BLACK_RATIO_INCREASE2 = 0.05;
  var VALIDATION_MIN_IMPROVEMENT = 0.08;
  var VALIDATION_TARGET_RESIDUAL = 0.22;
  var VALIDATION_MAX_GRADIENT_INCREASE = 0.04;
  var VALIDATION_MIN_CONFIDENCE_FOR_ADAPTIVE_TRIAL = 0.25;
  var STANDARD_FAST_PATH_RESIDUAL_THRESHOLD = 0.22;
  var STANDARD_FAST_PATH_GRADIENT_THRESHOLD = 0.08;
  var STANDARD_NEARBY_SEARCH_RESIDUAL_THRESHOLD = 0.18;
  var STANDARD_NEARBY_SEARCH_GRADIENT_THRESHOLD = 0.05;
  var STANDARD_LOCAL_SHIFT_STRONG_BASE_GRADIENT_SCORE = 0.35;
  var STANDARD_LOCAL_SHIFT_STRONG_BASE_SPATIAL_SCORE = 0.8;
  var STANDARD_LOCAL_SHIFT_WEAK_CANDIDATE_GRADIENT_SCORE = 0.12;
  var STANDARD_LOCAL_SHIFT_WEAK_CANDIDATE_SPATIAL_SCORE = 0.65;
  var STANDARD_LOCAL_SHIFT_MIN_VALIDATION_ADVANTAGE = 0.3;
  var STANDARD_LOCAL_SHIFT_SKIP_PROCESSED_GRADIENT_THRESHOLD = 0.02;
  var STANDARD_LOCAL_SHIFT_PRESERVE_CLEAN_BASE_GRADIENT_THRESHOLD = 0.02;
  var STANDARD_LOCAL_SHIFT_MAX_CANDIDATE_GRADIENT_FOR_CLEAN_BASE = 0.03;
  var TEMPLATE_ALIGN_SHIFTS = [-0.5, -0.25, 0, 0.25, 0.5];
  var TEMPLATE_ALIGN_SCALES = [0.99, 1, 1.01];
  var STANDARD_NEARBY_SHIFTS = [-12, -8, -4, 0, 4, 8, 12];
  var STANDARD_FINE_LOCAL_SHIFTS = [-2, -1, 0, 1, 2];
  var STANDARD_SIZE_JITTERS = [-12, -10, -8, -6, -4, -2, 2, 4, 6, 8, 10, 12];
  var PREVIEW_ANCHOR_MIN_SIZE = 24;
  var PREVIEW_ANCHOR_MAX_SIZE_RATIO = 1.05;
  var PREVIEW_ANCHOR_MIN_SIZE_RATIO = 0.55;
  var PREVIEW_ANCHOR_MARGIN_WINDOW = 16;
  var PREVIEW_ANCHOR_MARGIN_EXTENSION = 8;
  var PREVIEW_ANCHOR_SIZE_STEP = 2;
  var PREVIEW_ANCHOR_MARGIN_STEP = 2;
  var PREVIEW_ANCHOR_TOP_K = 8;
  var PREVIEW_ANCHOR_MIN_SCORE = 0.2;
  var PREVIEW_ANCHOR_LOCAL_DELTAS = [-1, 0, 1];
  var PREVIEW_TEMPLATE_ALIGN_SHIFTS = [-1, -0.5, 0, 0.5, 1];
  var PREVIEW_TEMPLATE_ALIGN_SCALES = [0.985, 1, 1.015];
  var PREVIEW_ANCHOR_GAIN_SKIP_RESIDUAL_THRESHOLD = 0.22;
  var PREVIEW_ANCHOR_GAIN_SKIP_GRADIENT_THRESHOLD = 0.24;
  var ORIGIN_REGION = Object.freeze({ x: 0, y: 0 });
  function mergeCandidateProvenance(...provenanceParts) {
    const merged = {};
    for (const provenance of provenanceParts) {
      if (!provenance || typeof provenance !== "object") continue;
      Object.assign(merged, provenance);
    }
    return Object.keys(merged).length > 0 ? merged : null;
  }
  function buildStandardCandidateSeeds({
    originalImageData,
    config,
    position,
    alpha48,
    alpha96,
    getAlphaMap,
    resolveAlphaMap = null,
    includeCatalogVariants = true
  }) {
    const configs = includeCatalogVariants ? resolveGeminiWatermarkSearchConfigs(
      originalImageData.width,
      originalImageData.height,
      config
    ) : [config];
    const seeds = [];
    for (const candidateConfig of configs) {
      const candidatePosition = candidateConfig === config ? position : {
        x: originalImageData.width - candidateConfig.marginRight - candidateConfig.logoSize,
        y: originalImageData.height - candidateConfig.marginBottom - candidateConfig.logoSize,
        width: candidateConfig.logoSize,
        height: candidateConfig.logoSize
      };
      if (candidatePosition.x < 0 || candidatePosition.y < 0 || candidatePosition.x + candidatePosition.width > originalImageData.width || candidatePosition.y + candidatePosition.height > originalImageData.height) {
        continue;
      }
      const alphaMap = typeof resolveAlphaMap === "function" ? resolveAlphaMap(candidateConfig.logoSize) : resolveAlphaMapForSize(candidateConfig.logoSize, {
        alpha48,
        alpha96,
        getAlphaMap
      });
      if (!alphaMap) continue;
      seeds.push({
        config: candidateConfig,
        position: candidatePosition,
        alphaMap,
        source: candidateConfig === config ? "standard" : "standard+catalog",
        provenance: candidateConfig === config ? null : { catalogVariant: true }
      });
    }
    return seeds;
  }
  function inferDecisionTier(candidate, { directMatch = false } = {}) {
    if (!candidate) return "insufficient";
    if (directMatch) return "direct-match";
    if (candidate.source?.includes("validated")) return "validated-match";
    if (candidate.accepted) return "validated-match";
    return "safe-removal";
  }
  function shouldEscalateSearch(candidate) {
    if (!candidate) return true;
    return Math.abs(candidate.processedSpatialScore) > STANDARD_FAST_PATH_RESIDUAL_THRESHOLD || Math.max(0, candidate.processedGradientScore) > STANDARD_FAST_PATH_GRADIENT_THRESHOLD;
  }
  function shouldSearchNearbyStandardCandidate(candidate, originalImageData) {
    if (!candidate) return true;
    return Number(candidate.position?.width) >= 72 && Number(originalImageData?.height) > Number(originalImageData?.width) * 1.25 && (Math.abs(candidate.processedSpatialScore) > STANDARD_NEARBY_SEARCH_RESIDUAL_THRESHOLD || Math.max(0, candidate.processedGradientScore) > STANDARD_NEARBY_SEARCH_GRADIENT_THRESHOLD);
  }
  function resolveAlphaMapForSize(size, { alpha48, alpha96, getAlphaMap } = {}) {
    if (size === 48) return alpha48;
    if (size === 96) return alpha96;
    const provided = typeof getAlphaMap === "function" ? getAlphaMap(size) : null;
    if (provided) return provided;
    return alpha96 ? interpolateAlphaMap(alpha96, 96, size) : null;
  }
  function createAlphaMapResolver({ alpha48, alpha96, getAlphaMap }) {
    const cache = /* @__PURE__ */ new Map();
    return (size) => {
      if (cache.has(size)) {
        return cache.get(size);
      }
      const resolved = resolveAlphaMapForSize(size, {
        alpha48,
        alpha96,
        getAlphaMap
      });
      cache.set(size, resolved);
      return resolved;
    };
  }
  function isPreviewAnchorGainSearchRequired(candidate) {
    if (!candidate) return true;
    return Math.abs(candidate.processedSpatialScore) > PREVIEW_ANCHOR_GAIN_SKIP_RESIDUAL_THRESHOLD || Math.max(0, candidate.processedGradientScore) > PREVIEW_ANCHOR_GAIN_SKIP_GRADIENT_THRESHOLD;
  }
  function evaluateRestorationCandidate({
    originalImageData,
    alphaMap,
    position,
    source,
    config,
    baselineNearBlackRatio,
    adaptiveConfidence = null,
    alphaGain = 1,
    provenance = null,
    includeImageData = true
  }) {
    if (!alphaMap || !position) return null;
    const originalScores = scoreRegion(originalImageData, alphaMap, position);
    const regionImageData = createCandidateRegionImageData({
      originalImageData,
      alphaMap,
      position,
      alphaGain
    });
    const regionPosition = {
      x: ORIGIN_REGION.x,
      y: ORIGIN_REGION.y,
      width: position.width,
      height: position.height
    };
    const processedScores = scoreRegion(regionImageData, alphaMap, regionPosition);
    const nearBlackRatio = calculateNearBlackRatio(regionImageData, regionPosition);
    const nearBlackIncrease = nearBlackRatio - baselineNearBlackRatio;
    const improvement = originalScores.spatialScore - processedScores.spatialScore;
    const gradientIncrease = processedScores.gradientScore - originalScores.gradientScore;
    const textureAssessment = assessReferenceTextureAlignmentFromStats({
      originalImageData,
      referenceImageData: originalImageData,
      candidateTextureStats: getRegionTextureStats(regionImageData, regionPosition),
      position
    });
    const texturePenalty = textureAssessment.texturePenalty;
    const accepted = textureAssessment.hardReject !== true && nearBlackIncrease <= MAX_NEAR_BLACK_RATIO_INCREASE2 && improvement >= VALIDATION_MIN_IMPROVEMENT && (Math.abs(processedScores.spatialScore) <= VALIDATION_TARGET_RESIDUAL || gradientIncrease <= VALIDATION_MAX_GRADIENT_INCREASE);
    return {
      accepted,
      source,
      config,
      position,
      alphaMap,
      adaptiveConfidence,
      alphaGain,
      provenance: mergeCandidateProvenance(provenance),
      imageData: includeImageData ? materializeCandidateImageData(originalImageData, alphaMap, position, alphaGain) : null,
      originalSpatialScore: originalScores.spatialScore,
      originalGradientScore: originalScores.gradientScore,
      processedSpatialScore: processedScores.spatialScore,
      processedGradientScore: processedScores.gradientScore,
      improvement,
      nearBlackRatio,
      nearBlackIncrease,
      gradientIncrease,
      tooDark: textureAssessment.tooDark,
      tooFlat: textureAssessment.tooFlat,
      hardReject: textureAssessment.hardReject,
      texturePenalty,
      validationCost: Math.abs(processedScores.spatialScore) + Math.max(0, processedScores.gradientScore) * 0.6 + Math.max(0, nearBlackIncrease) * 3 + texturePenalty
    };
  }
  function pickBestValidatedCandidate(candidates) {
    const accepted = candidates.filter((candidate) => candidate?.accepted);
    if (accepted.length === 0) return null;
    accepted.sort((a, b) => {
      if (a.validationCost !== b.validationCost) {
        return a.validationCost - b.validationCost;
      }
      return b.improvement - a.improvement;
    });
    return accepted[0];
  }
  function createCandidateRegionImageData({
    originalImageData,
    alphaMap,
    position,
    alphaGain
  }) {
    const regionImageData = {
      width: position.width,
      height: position.height,
      data: new Uint8ClampedArray(position.width * position.height * 4)
    };
    for (let row = 0; row < position.height; row++) {
      const srcStart = ((position.y + row) * originalImageData.width + position.x) * 4;
      const srcEnd = srcStart + position.width * 4;
      const destStart = row * position.width * 4;
      regionImageData.data.set(originalImageData.data.subarray(srcStart, srcEnd), destStart);
    }
    removeWatermark(regionImageData, alphaMap, {
      x: 0,
      y: 0,
      width: position.width,
      height: position.height
    }, { alphaGain });
    return regionImageData;
  }
  function materializeCandidateImageData(originalImageData, alphaMap, position, alphaGain) {
    const candidateImageData = cloneImageData(originalImageData);
    removeWatermark(candidateImageData, alphaMap, position, { alphaGain });
    return candidateImageData;
  }
  function ensureCandidateImageData(candidate, originalImageData) {
    if (!candidate) return candidate;
    if (candidate.imageData) return candidate;
    return {
      ...candidate,
      imageData: materializeCandidateImageData(
        originalImageData,
        candidate.alphaMap,
        candidate.position,
        candidate.alphaGain ?? 1
      )
    };
  }
  function pickBetterCandidate(currentBest, candidate, minCostDelta = 5e-3) {
    if (!candidate?.accepted) return currentBest;
    if (!currentBest) return candidate;
    if (shouldPreserveStrongStandardAnchor(currentBest, candidate)) {
      return currentBest;
    }
    if (shouldPreferPreviewAnchorCandidate(currentBest, candidate)) {
      return candidate;
    }
    if (shouldPreferPreviewAnchorCandidate(candidate, currentBest)) {
      return currentBest;
    }
    if (candidate.validationCost < currentBest.validationCost - minCostDelta) {
      return candidate;
    }
    if (Math.abs(candidate.validationCost - currentBest.validationCost) <= minCostDelta && candidate.improvement > currentBest.improvement + 0.01) {
      return candidate;
    }
    return currentBest;
  }
  function isStandardCandidateSource(candidate) {
    return typeof candidate?.source === "string" && candidate.source.startsWith("standard");
  }
  function isDriftedStandardCandidate(candidate) {
    return isStandardCandidateSource(candidate) && (candidate?.provenance?.localShift === true || candidate?.provenance?.sizeJitter === true || String(candidate?.source || "").includes("+warp"));
  }
  function isCanonicalStandardCandidate(candidate) {
    return isStandardCandidateSource(candidate) && candidate?.provenance?.localShift !== true && candidate?.provenance?.sizeJitter !== true;
  }
  function hasStrongCanonicalAnchorSignal(candidate) {
    const baseSpatial = Number(candidate?.originalSpatialScore);
    const baseGradient = Number(candidate?.originalGradientScore);
    if (!Number.isFinite(baseSpatial) || !Number.isFinite(baseGradient)) {
      return false;
    }
    return baseGradient >= STANDARD_LOCAL_SHIFT_STRONG_BASE_GRADIENT_SCORE || baseSpatial >= STANDARD_LOCAL_SHIFT_STRONG_BASE_SPATIAL_SCORE;
  }
  function hasWeakDriftEvidence(candidate) {
    const candidateSpatial = Number(candidate?.originalSpatialScore);
    const candidateGradient = Number(candidate?.originalGradientScore);
    if (!Number.isFinite(candidateSpatial) || !Number.isFinite(candidateGradient)) {
      return false;
    }
    return candidateGradient < STANDARD_LOCAL_SHIFT_WEAK_CANDIDATE_GRADIENT_SCORE || candidateSpatial < STANDARD_LOCAL_SHIFT_WEAK_CANDIDATE_SPATIAL_SCORE;
  }
  function leavesWorseResidualGradientThanCanonical(canonicalCandidate, driftCandidate) {
    const canonicalProcessedGradientRaw = Number(canonicalCandidate?.processedGradientScore);
    const driftProcessedGradientRaw = Number(driftCandidate?.processedGradientScore);
    if (!Number.isFinite(canonicalProcessedGradientRaw) || !Number.isFinite(driftProcessedGradientRaw)) {
      return false;
    }
    return Math.max(0, canonicalProcessedGradientRaw) <= STANDARD_LOCAL_SHIFT_PRESERVE_CLEAN_BASE_GRADIENT_THRESHOLD && Math.max(0, driftProcessedGradientRaw) >= STANDARD_LOCAL_SHIFT_MAX_CANDIDATE_GRADIENT_FOR_CLEAN_BASE;
  }
  function shouldPreserveCanonicalAnchor(canonicalCandidate, driftCandidate) {
    if (!isCanonicalStandardCandidate(canonicalCandidate)) return false;
    if (!isDriftedStandardCandidate(driftCandidate)) return false;
    const validationAdvantage = Number(canonicalCandidate.validationCost) - Number(driftCandidate.validationCost);
    if (!Number.isFinite(validationAdvantage)) {
      return false;
    }
    return hasStrongCanonicalAnchorSignal(canonicalCandidate) && hasWeakDriftEvidence(driftCandidate) && validationAdvantage < STANDARD_LOCAL_SHIFT_MIN_VALIDATION_ADVANTAGE || leavesWorseResidualGradientThanCanonical(canonicalCandidate, driftCandidate);
  }
  function shouldPreserveStrongStandardAnchor(currentBest, candidate) {
    if (currentBest?.provenance?.localShift === true) return false;
    if (!isStandardCandidateSource(candidate)) return false;
    return shouldPreserveCanonicalAnchor(currentBest, candidate);
  }
  function shouldRevertLocalShiftToStandardTrial(selectedCandidate, standardTrial) {
    if (selectedCandidate?.provenance?.localShift !== true) return false;
    if (!isStandardCandidateSource(selectedCandidate) || !isStandardCandidateSource(standardTrial)) return false;
    if (!standardTrial?.accepted) return false;
    return shouldPreserveCanonicalAnchor(standardTrial, selectedCandidate);
  }
  function shouldSkipStandardLocalSearch(seedCandidate) {
    if (!seedCandidate) return false;
    return Math.max(0, Number(seedCandidate.processedGradientScore)) <= STANDARD_LOCAL_SHIFT_SKIP_PROCESSED_GRADIENT_THRESHOLD;
  }
  function isPreviewAnchorSearchEligible(originalImageData, config) {
    if (!config || config.logoSize !== 48) return false;
    const width = Number(originalImageData?.width);
    const height = Number(originalImageData?.height);
    if (!Number.isFinite(width) || !Number.isFinite(height)) return false;
    if (width < 384 || width > 1536) return false;
    if (height < 384 || height > 1536) return false;
    if (Math.max(width, height) < 512) return false;
    return matchOfficialGeminiImageSize(width, height) === null;
  }
  function shouldPreferPreviewAnchorCandidate(currentBest, candidate) {
    if (candidate?.provenance?.previewAnchor !== true) return false;
    if (!currentBest || currentBest?.provenance?.previewAnchor === true) return false;
    const currentSpatial = Number(currentBest.originalSpatialScore);
    const currentGradient = Number(currentBest.originalGradientScore);
    const candidateSpatial = Number(candidate.originalSpatialScore);
    const candidateGradient = Number(candidate.originalGradientScore);
    if (!Number.isFinite(currentSpatial) || !Number.isFinite(currentGradient) || !Number.isFinite(candidateSpatial) || !Number.isFinite(candidateGradient)) {
      return false;
    }
    const currentReliable = hasReliableStandardWatermarkSignal({
      spatialScore: currentSpatial,
      gradientScore: currentGradient
    });
    const candidateReliable = hasReliableStandardWatermarkSignal({
      spatialScore: candidateSpatial,
      gradientScore: candidateGradient
    });
    if (candidateReliable && !currentReliable) {
      return true;
    }
    return candidateGradient >= currentGradient + 0.2 && candidateSpatial >= currentSpatial + 0.05;
  }
  function findBestTemplateWarp({
    originalImageData,
    alphaMap,
    position,
    baselineSpatialScore,
    baselineGradientScore,
    shiftCandidates = TEMPLATE_ALIGN_SHIFTS,
    scaleCandidates = TEMPLATE_ALIGN_SCALES
  }) {
    const size = position.width;
    if (!size || size <= 8) return null;
    let best = {
      spatialScore: baselineSpatialScore,
      gradientScore: baselineGradientScore,
      shift: { dx: 0, dy: 0, scale: 1 },
      alphaMap
    };
    for (const scale of scaleCandidates) {
      for (const dy of shiftCandidates) {
        for (const dx of shiftCandidates) {
          if (dx === 0 && dy === 0 && scale === 1) continue;
          const warped = warpAlphaMap(alphaMap, size, { dx, dy, scale });
          const spatialScore = computeRegionSpatialCorrelation({
            imageData: originalImageData,
            alphaMap: warped,
            region: { x: position.x, y: position.y, size }
          });
          const gradientScore = computeRegionGradientCorrelation({
            imageData: originalImageData,
            alphaMap: warped,
            region: { x: position.x, y: position.y, size }
          });
          const confidence = Math.max(0, spatialScore) * 0.7 + Math.max(0, gradientScore) * 0.3;
          const bestConfidence = Math.max(0, best.spatialScore) * 0.7 + Math.max(0, best.gradientScore) * 0.3;
          if (confidence > bestConfidence + 0.01) {
            best = {
              spatialScore,
              gradientScore,
              shift: { dx, dy, scale },
              alphaMap: warped
            };
          }
        }
      }
    }
    const improvedSpatial = best.spatialScore >= baselineSpatialScore + 0.01;
    const improvedGradient = best.gradientScore >= baselineGradientScore + 0.01;
    return improvedSpatial || improvedGradient ? best : null;
  }
  function searchNearbyStandardCandidate({
    originalImageData,
    candidateSeeds,
    adaptiveConfidence = null
  }) {
    if (!Array.isArray(candidateSeeds) || candidateSeeds.length === 0) return null;
    let bestCandidate = null;
    for (const seed of candidateSeeds) {
      if (shouldSkipStandardLocalSearch(seed)) continue;
      for (const dy of STANDARD_NEARBY_SHIFTS) {
        for (const dx of STANDARD_NEARBY_SHIFTS) {
          if (dx === 0 && dy === 0) continue;
          const candidatePosition = {
            x: seed.position.x + dx,
            y: seed.position.y + dy,
            width: seed.position.width,
            height: seed.position.height
          };
          if (candidatePosition.x < 0 || candidatePosition.y < 0) continue;
          if (candidatePosition.x + candidatePosition.width > originalImageData.width) continue;
          if (candidatePosition.y + candidatePosition.height > originalImageData.height) continue;
          const candidate = evaluateRestorationCandidate({
            originalImageData,
            alphaMap: seed.alphaMap,
            position: candidatePosition,
            source: `${seed.source}+local`,
            config: seed.config,
            baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, candidatePosition),
            adaptiveConfidence,
            provenance: mergeCandidateProvenance(seed.provenance, { localShift: true }),
            includeImageData: false
          });
          if (!candidate?.accepted) continue;
          bestCandidate = pickBetterCandidate(bestCandidate, candidate, 2e-3);
        }
      }
    }
    return bestCandidate;
  }
  function searchStandardSizeJitterCandidate({
    originalImageData,
    candidateSeeds,
    alpha48,
    alpha96,
    getAlphaMap,
    resolveAlphaMap = null,
    adaptiveConfidence = null
  }) {
    if (!Array.isArray(candidateSeeds) || candidateSeeds.length === 0) return null;
    let bestCandidate = null;
    for (const seed of candidateSeeds) {
      for (const delta of STANDARD_SIZE_JITTERS) {
        const size = seed.position.width + delta;
        if (size <= 24) continue;
        if (size === seed.position.width) continue;
        const candidatePosition = {
          x: originalImageData.width - seed.config.marginRight - size,
          y: originalImageData.height - seed.config.marginBottom - size,
          width: size,
          height: size
        };
        if (candidatePosition.x < 0 || candidatePosition.y < 0) continue;
        if (candidatePosition.x + candidatePosition.width > originalImageData.width) continue;
        if (candidatePosition.y + candidatePosition.height > originalImageData.height) continue;
        const candidateAlphaMap = typeof resolveAlphaMap === "function" ? resolveAlphaMap(size) : resolveAlphaMapForSize(size, {
          alpha48,
          alpha96,
          getAlphaMap
        });
        if (!candidateAlphaMap) continue;
        const candidate = evaluateRestorationCandidate({
          originalImageData,
          alphaMap: candidateAlphaMap,
          position: candidatePosition,
          source: `${seed.source}+size`,
          config: {
            logoSize: size,
            marginRight: seed.config.marginRight,
            marginBottom: seed.config.marginBottom
          },
          baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, candidatePosition),
          adaptiveConfidence,
          provenance: mergeCandidateProvenance(seed.provenance, { sizeJitter: true }),
          includeImageData: false
        });
        if (!candidate?.accepted) continue;
        bestCandidate = pickBetterCandidate(bestCandidate, candidate, 2e-3);
      }
    }
    return bestCandidate;
  }
  function searchFineStandardLocalCandidate({
    originalImageData,
    seedCandidate,
    adaptiveConfidence = null,
    shiftCandidates = STANDARD_FINE_LOCAL_SHIFTS
  }) {
    if (!seedCandidate?.alphaMap || !seedCandidate?.position) return null;
    if (shouldSkipStandardLocalSearch(seedCandidate)) return null;
    let bestCandidate = null;
    for (const dy of shiftCandidates) {
      for (const dx of shiftCandidates) {
        if (dx === 0 && dy === 0) continue;
        const candidatePosition = {
          x: seedCandidate.position.x + dx,
          y: seedCandidate.position.y + dy,
          width: seedCandidate.position.width,
          height: seedCandidate.position.height
        };
        if (candidatePosition.x < 0 || candidatePosition.y < 0) continue;
        if (candidatePosition.x + candidatePosition.width > originalImageData.width) continue;
        if (candidatePosition.y + candidatePosition.height > originalImageData.height) continue;
        const candidate = evaluateRestorationCandidate({
          originalImageData,
          alphaMap: seedCandidate.alphaMap,
          position: candidatePosition,
          source: `${seedCandidate.source}+local`,
          config: seedCandidate.config,
          baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, candidatePosition),
          adaptiveConfidence,
          provenance: mergeCandidateProvenance(seedCandidate.provenance, { localShift: true }),
          includeImageData: false
        });
        if (!candidate?.accepted) continue;
        bestCandidate = pickBetterCandidate(bestCandidate, candidate, 2e-3);
      }
    }
    return bestCandidate;
  }
  function searchCandidateAlphaGain({
    originalImageData,
    seedCandidate,
    adaptiveConfidence = null,
    alphaGainCandidates = []
  }) {
    if (!seedCandidate?.alphaMap || !seedCandidate?.position) return null;
    let bestCandidate = null;
    for (const candidateGain of alphaGainCandidates) {
      if (!Number.isFinite(candidateGain) || candidateGain <= 1) continue;
      const candidate = evaluateRestorationCandidate({
        originalImageData,
        alphaMap: seedCandidate.alphaMap,
        position: seedCandidate.position,
        source: `${seedCandidate.source}+gain`,
        config: seedCandidate.config,
        baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, seedCandidate.position),
        adaptiveConfidence,
        alphaGain: candidateGain,
        provenance: seedCandidate.provenance,
        includeImageData: false
      });
      if (!candidate?.accepted) continue;
      bestCandidate = pickBetterCandidate(bestCandidate, candidate, 2e-3);
    }
    return bestCandidate;
  }
  function insertTopPreviewCandidate(topCandidates, candidate) {
    topCandidates.push(candidate);
    topCandidates.sort((a, b) => b.coarseScore - a.coarseScore);
    if (topCandidates.length > PREVIEW_ANCHOR_TOP_K) {
      topCandidates.length = PREVIEW_ANCHOR_TOP_K;
    }
  }
  function searchBottomRightPreviewCandidate({
    originalImageData,
    config,
    alpha48,
    alpha96,
    getAlphaMap,
    resolveAlphaMap = null,
    adaptiveConfidence = null
  }) {
    if (!isPreviewAnchorSearchEligible(originalImageData, config)) return null;
    const minSize = Math.max(
      PREVIEW_ANCHOR_MIN_SIZE,
      Math.round(config.logoSize * PREVIEW_ANCHOR_MIN_SIZE_RATIO)
    );
    const maxSize = Math.max(
      minSize,
      Math.round(config.logoSize * PREVIEW_ANCHOR_MAX_SIZE_RATIO)
    );
    const minMarginRight = Math.max(8, config.marginRight - PREVIEW_ANCHOR_MARGIN_WINDOW);
    const maxMarginRight = config.marginRight + PREVIEW_ANCHOR_MARGIN_EXTENSION;
    const minMarginBottom = Math.max(8, config.marginBottom - PREVIEW_ANCHOR_MARGIN_WINDOW);
    const maxMarginBottom = config.marginBottom + PREVIEW_ANCHOR_MARGIN_EXTENSION;
    const topCandidates = [];
    for (let size = minSize; size <= maxSize; size += PREVIEW_ANCHOR_SIZE_STEP) {
      const alphaMap = typeof resolveAlphaMap === "function" ? resolveAlphaMap(size) : resolveAlphaMapForSize(size, {
        alpha48,
        alpha96,
        getAlphaMap
      });
      if (!alphaMap) continue;
      for (let marginRight = minMarginRight; marginRight <= maxMarginRight; marginRight += PREVIEW_ANCHOR_MARGIN_STEP) {
        const x = originalImageData.width - marginRight - size;
        if (x < 0 || x + size > originalImageData.width) continue;
        for (let marginBottom = minMarginBottom; marginBottom <= maxMarginBottom; marginBottom += PREVIEW_ANCHOR_MARGIN_STEP) {
          const y = originalImageData.height - marginBottom - size;
          if (y < 0 || y + size > originalImageData.height) continue;
          const coarseSpatialScore = computeRegionSpatialCorrelation({
            imageData: originalImageData,
            alphaMap,
            region: { x, y, size }
          });
          const coarseGradientScore = computeRegionGradientCorrelation({
            imageData: originalImageData,
            alphaMap,
            region: { x, y, size }
          });
          const coarseScore = Math.max(0, coarseGradientScore) * 0.6 + Math.max(0, coarseSpatialScore) * 0.4;
          if (coarseScore < PREVIEW_ANCHOR_MIN_SCORE) continue;
          insertTopPreviewCandidate(topCandidates, {
            coarseScore,
            alphaMap,
            position: { x, y, width: size, height: size },
            config: {
              logoSize: size,
              marginRight,
              marginBottom
            }
          });
        }
      }
    }
    let bestCandidate = null;
    for (const coarseCandidate of topCandidates) {
      for (const sizeDelta of PREVIEW_ANCHOR_LOCAL_DELTAS) {
        const size = coarseCandidate.position.width + sizeDelta;
        if (size < PREVIEW_ANCHOR_MIN_SIZE) continue;
        const alphaMap = typeof resolveAlphaMap === "function" ? resolveAlphaMap(size) : resolveAlphaMapForSize(size, {
          alpha48,
          alpha96,
          getAlphaMap
        });
        if (!alphaMap) continue;
        for (const dx of PREVIEW_ANCHOR_LOCAL_DELTAS) {
          for (const dy of PREVIEW_ANCHOR_LOCAL_DELTAS) {
            const position = {
              x: coarseCandidate.position.x + dx,
              y: coarseCandidate.position.y + dy,
              width: size,
              height: size
            };
            if (position.x < 0 || position.y < 0) continue;
            if (position.x + position.width > originalImageData.width) continue;
            if (position.y + position.height > originalImageData.height) continue;
            const config2 = {
              logoSize: size,
              marginRight: originalImageData.width - position.x - size,
              marginBottom: originalImageData.height - position.y - size
            };
            const candidate = evaluateRestorationCandidate({
              originalImageData,
              alphaMap,
              position,
              source: "standard+preview-anchor",
              config: config2,
              baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, position),
              adaptiveConfidence,
              provenance: {
                previewAnchor: true,
                previewAnchorLocalRefine: sizeDelta !== 0 || dx !== 0 || dy !== 0
              },
              includeImageData: false
            });
            if (!candidate?.accepted) continue;
            bestCandidate = pickBetterCandidate(bestCandidate, candidate, 2e-3);
          }
        }
      }
    }
    return bestCandidate;
  }
  function evaluateStandardTrialsForSeeds({
    originalImageData,
    candidateSeeds
  }) {
    const standardTrials = candidateSeeds.map((seed) => evaluateRestorationCandidate({
      originalImageData,
      alphaMap: seed.alphaMap,
      position: seed.position,
      source: seed.source,
      config: seed.config,
      baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, seed.position),
      provenance: seed.provenance,
      includeImageData: false
    })).filter(Boolean);
    const standardTrial = standardTrials.find((candidate) => candidate.source === "standard") ?? standardTrials[0] ?? null;
    const standardSpatialScore = standardTrial?.originalSpatialScore ?? null;
    const standardGradientScore = standardTrial?.originalGradientScore ?? null;
    const hasReliableStandardMatch = hasReliableStandardWatermarkSignal({
      spatialScore: standardSpatialScore,
      gradientScore: standardGradientScore
    });
    return {
      standardTrials,
      standardTrial,
      standardSpatialScore,
      standardGradientScore,
      hasReliableStandardMatch
    };
  }
  function resolveStandardAnchorSelection({
    originalImageData,
    config,
    position,
    alpha48,
    alpha96,
    getAlphaMap,
    resolveAlphaMap
  }) {
    let standardCandidateSeeds = buildStandardCandidateSeeds({
      originalImageData,
      config,
      position,
      alpha48,
      alpha96,
      getAlphaMap,
      resolveAlphaMap,
      includeCatalogVariants: false
    });
    let standardSelection = evaluateStandardTrialsForSeeds({
      originalImageData,
      candidateSeeds: standardCandidateSeeds
    });
    const shouldExpandStandardCatalog = !standardSelection.hasReliableStandardMatch && (!standardSelection.standardTrial || shouldEscalateSearch(standardSelection.standardTrial));
    if (shouldExpandStandardCatalog) {
      standardCandidateSeeds = buildStandardCandidateSeeds({
        originalImageData,
        config,
        position,
        alpha48,
        alpha96,
        getAlphaMap,
        resolveAlphaMap,
        includeCatalogVariants: true
      });
      standardSelection = evaluateStandardTrialsForSeeds({
        originalImageData,
        candidateSeeds: standardCandidateSeeds
      });
    }
    return {
      standardCandidateSeeds,
      ...standardSelection
    };
  }
  function resolveCandidatePromotion(candidate, {
    reliableMatch = false
  } = {}) {
    if (!candidate?.accepted) {
      return null;
    }
    if (reliableMatch) {
      return {
        candidate,
        decisionTier: "direct-match"
      };
    }
    return {
      candidate: {
        ...candidate,
        source: `${candidate.source}+validated`
      },
      decisionTier: "validated-match"
    };
  }
  function promoteBaseCandidate(baseCandidate, baseDecisionTier, candidate, {
    reliableMatch = false,
    minCostDelta = 2e-3
  } = {}) {
    const promotion = resolveCandidatePromotion(candidate, {
      reliableMatch
    });
    if (!promotion) {
      return {
        baseCandidate,
        baseDecisionTier
      };
    }
    if (shouldPreserveCanonicalAnchor(baseCandidate, promotion.candidate)) {
      return {
        baseCandidate,
        baseDecisionTier
      };
    }
    const previousCandidate = baseCandidate;
    const nextCandidate = pickBetterCandidate(baseCandidate, promotion.candidate, minCostDelta);
    return {
      baseCandidate: nextCandidate,
      baseDecisionTier: nextCandidate !== previousCandidate ? promotion.decisionTier : baseDecisionTier
    };
  }
  function evaluateAdaptiveTrial({
    originalImageData,
    config,
    alpha96,
    resolveAlphaMap,
    allowAdaptiveSearch
  }) {
    if (!allowAdaptiveSearch || !alpha96) {
      return {
        adaptive: null,
        adaptiveConfidence: null,
        adaptiveTrial: null
      };
    }
    const adaptive = detectAdaptiveWatermarkRegion({
      imageData: originalImageData,
      alpha96,
      defaultConfig: config
    });
    const adaptiveConfidence = adaptive?.confidence ?? null;
    if (!adaptive?.region || !(hasReliableAdaptiveWatermarkSignal(adaptive) || adaptive.confidence >= VALIDATION_MIN_CONFIDENCE_FOR_ADAPTIVE_TRIAL)) {
      return {
        adaptive,
        adaptiveConfidence,
        adaptiveTrial: null
      };
    }
    const size = adaptive.region.size;
    const adaptivePosition = {
      x: adaptive.region.x,
      y: adaptive.region.y,
      width: size,
      height: size
    };
    const adaptiveAlphaMap = resolveAlphaMap(size);
    if (!adaptiveAlphaMap) {
      throw new Error(`Missing alpha map for adaptive size ${size}`);
    }
    const adaptiveConfig = {
      logoSize: size,
      marginRight: originalImageData.width - adaptivePosition.x - size,
      marginBottom: originalImageData.height - adaptivePosition.y - size
    };
    return {
      adaptive,
      adaptiveConfidence,
      adaptiveTrial: evaluateRestorationCandidate({
        originalImageData,
        alphaMap: adaptiveAlphaMap,
        position: adaptivePosition,
        source: "adaptive",
        config: adaptiveConfig,
        baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, adaptivePosition),
        adaptiveConfidence: adaptive.confidence,
        provenance: { adaptive: true },
        includeImageData: false
      })
    };
  }
  function refineSelectedAnchorCandidate({
    originalImageData,
    baseCandidate,
    baseDecisionTier,
    adaptiveConfidence,
    alphaGainCandidates
  }) {
    let selectedTrial = ensureCandidateImageData(baseCandidate, originalImageData);
    let alphaMap = baseCandidate.alphaMap;
    let position = baseCandidate.position;
    let config = baseCandidate.config;
    let source = baseCandidate.source;
    let decisionTier = baseDecisionTier || inferDecisionTier(baseCandidate);
    let templateWarp = null;
    let selectedAlphaGain = baseCandidate.alphaGain ?? 1;
    const warpCandidate = findBestTemplateWarp({
      originalImageData,
      alphaMap,
      position,
      baselineSpatialScore: selectedTrial.originalSpatialScore,
      baselineGradientScore: selectedTrial.originalGradientScore,
      shiftCandidates: selectedTrial.provenance?.previewAnchor === true ? PREVIEW_TEMPLATE_ALIGN_SHIFTS : TEMPLATE_ALIGN_SHIFTS,
      scaleCandidates: selectedTrial.provenance?.previewAnchor === true ? PREVIEW_TEMPLATE_ALIGN_SCALES : TEMPLATE_ALIGN_SCALES
    });
    if (warpCandidate) {
      const warpedTrial = evaluateRestorationCandidate({
        originalImageData,
        alphaMap: warpCandidate.alphaMap,
        position,
        source: `${source}+warp`,
        config,
        baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, position),
        adaptiveConfidence,
        provenance: selectedTrial.provenance,
        includeImageData: false
      });
      const betterWarpTrial = pickBetterCandidate(selectedTrial, warpedTrial);
      if (betterWarpTrial !== selectedTrial) {
        alphaMap = warpedTrial.alphaMap;
        source = betterWarpTrial.source;
        selectedTrial = ensureCandidateImageData(betterWarpTrial, originalImageData);
        templateWarp = warpCandidate.shift;
        decisionTier = inferDecisionTier(betterWarpTrial, {
          directMatch: decisionTier === "direct-match"
        });
      }
    }
    const shouldRunGainSearch = selectedTrial.provenance?.previewAnchor === true ? isPreviewAnchorGainSearchRequired(selectedTrial) : shouldEscalateSearch(selectedTrial);
    let bestGainTrial = selectedTrial;
    if (shouldRunGainSearch) {
      for (const candidateGain of alphaGainCandidates) {
        const gainTrial = evaluateRestorationCandidate({
          originalImageData,
          alphaMap,
          position,
          source: `${source}+gain`,
          config,
          baselineNearBlackRatio: calculateNearBlackRatio(originalImageData, position),
          adaptiveConfidence,
          alphaGain: candidateGain,
          provenance: selectedTrial.provenance,
          includeImageData: false
        });
        bestGainTrial = pickBetterCandidate(bestGainTrial, gainTrial);
      }
    }
    if (bestGainTrial !== selectedTrial) {
      selectedTrial = ensureCandidateImageData(bestGainTrial, originalImageData);
      source = bestGainTrial.source;
      selectedAlphaGain = bestGainTrial.alphaGain;
      decisionTier = inferDecisionTier(bestGainTrial, {
        directMatch: decisionTier === "direct-match"
      });
    }
    return {
      selectedTrial: ensureCandidateImageData(selectedTrial, originalImageData),
      source,
      alphaMap,
      position,
      config,
      templateWarp,
      alphaGain: selectedAlphaGain,
      decisionTier
    };
  }
  function selectInitialCandidate({
    originalImageData,
    config,
    position,
    alpha48,
    alpha96,
    getAlphaMap,
    allowAdaptiveSearch,
    alphaGainCandidates
  }) {
    const resolveAlphaMap = createAlphaMapResolver({ alpha48, alpha96, getAlphaMap });
    const fallbackAlphaMap = config.logoSize === 96 ? alpha96 : alpha48;
    const {
      standardCandidateSeeds,
      standardTrials,
      standardTrial,
      standardSpatialScore,
      standardGradientScore,
      hasReliableStandardMatch
    } = resolveStandardAnchorSelection({
      originalImageData,
      config,
      position,
      alpha48,
      alpha96,
      getAlphaMap,
      resolveAlphaMap
    });
    let baseCandidate = null;
    let baseDecisionTier = "insufficient";
    if (hasReliableStandardMatch && standardTrial?.accepted) {
      baseCandidate = standardTrial;
      baseDecisionTier = "direct-match";
    } else if (standardTrial?.accepted) {
      baseCandidate = {
        ...standardTrial,
        source: `${standardTrial.source}+validated`
      };
      baseDecisionTier = "validated-match";
    }
    if (!baseCandidate && standardTrial && hasReliableStandardMatch) {
      const adaptiveConfidence2 = null;
      const gainedStandardCandidate = searchCandidateAlphaGain({
        originalImageData,
        seedCandidate: {
          ...standardTrial,
          source: "standard+validated"
        },
        adaptiveConfidence: adaptiveConfidence2,
        alphaGainCandidates
      });
      if (gainedStandardCandidate) {
        baseCandidate = gainedStandardCandidate;
        baseDecisionTier = "validated-match";
      }
    }
    let adaptive = null;
    let adaptiveConfidence = null;
    let adaptiveTrial = null;
    for (const candidate of standardTrials) {
      if (!candidate || candidate === standardTrial) continue;
      ({
        baseCandidate,
        baseDecisionTier
      } = promoteBaseCandidate(baseCandidate, baseDecisionTier, candidate, {
        reliableMatch: hasReliableStandardWatermarkSignal({
          spatialScore: candidate.originalSpatialScore,
          gradientScore: candidate.originalGradientScore
        })
      }));
    }
    const previewAnchorCandidate = searchBottomRightPreviewCandidate({
      originalImageData,
      config,
      alpha48,
      alpha96,
      getAlphaMap,
      resolveAlphaMap,
      adaptiveConfidence
    });
    if (previewAnchorCandidate) {
      ({
        baseCandidate,
        baseDecisionTier
      } = promoteBaseCandidate(baseCandidate, baseDecisionTier, previewAnchorCandidate));
    }
    if (baseDecisionTier !== "direct-match" && !baseCandidate?.provenance?.previewAnchor && shouldEscalateSearch(baseCandidate)) {
      const sizeJitterCandidate = searchStandardSizeJitterCandidate({
        originalImageData,
        candidateSeeds: standardCandidateSeeds,
        alpha48,
        alpha96,
        getAlphaMap,
        resolveAlphaMap
      });
      if (sizeJitterCandidate) {
        ({
          baseCandidate,
          baseDecisionTier
        } = promoteBaseCandidate(baseCandidate, baseDecisionTier, sizeJitterCandidate));
      }
    }
    if (baseDecisionTier !== "direct-match" && baseCandidate?.provenance?.sizeJitter === true && !baseCandidate?.provenance?.previewAnchor && isStandardCandidateSource(baseCandidate) && shouldEscalateSearch(baseCandidate)) {
      const fineLocalCandidate = searchFineStandardLocalCandidate({
        originalImageData,
        seedCandidate: baseCandidate,
        adaptiveConfidence
      });
      if (fineLocalCandidate) {
        ({
          baseCandidate,
          baseDecisionTier
        } = promoteBaseCandidate(baseCandidate, baseDecisionTier, fineLocalCandidate));
      }
    }
    const shouldEvaluateAdaptive = () => {
      if (!allowAdaptiveSearch || !alpha96) return false;
      if (!baseCandidate) return true;
      if (!shouldEscalateSearch(baseCandidate)) return false;
      baseCandidate = ensureCandidateImageData(baseCandidate, originalImageData);
      return shouldAttemptAdaptiveFallback({
        processedImageData: baseCandidate.imageData,
        alphaMap: baseCandidate.alphaMap,
        position: baseCandidate.position,
        originalImageData,
        originalSpatialMismatchThreshold: 0
      });
    };
    if (shouldEvaluateAdaptive()) {
      ({
        adaptive,
        adaptiveConfidence,
        adaptiveTrial
      } = evaluateAdaptiveTrial({
        originalImageData,
        config,
        alpha96,
        resolveAlphaMap,
        allowAdaptiveSearch
      }));
    }
    if (adaptiveTrial) {
      ({
        baseCandidate,
        baseDecisionTier
      } = promoteBaseCandidate(baseCandidate, baseDecisionTier, adaptiveTrial, {
        reliableMatch: hasReliableAdaptiveWatermarkSignal(adaptive)
      }));
    }
    if (!baseCandidate?.provenance?.previewAnchor && !hasReliableAdaptiveWatermarkSignal(adaptive) && shouldSearchNearbyStandardCandidate(baseCandidate, originalImageData)) {
      const nearbyStandardCandidate = searchNearbyStandardCandidate({
        originalImageData,
        candidateSeeds: standardCandidateSeeds,
        adaptiveConfidence
      });
      if (nearbyStandardCandidate) {
        ({
          baseCandidate,
          baseDecisionTier
        } = promoteBaseCandidate(baseCandidate, baseDecisionTier, nearbyStandardCandidate));
      }
    }
    if (!baseCandidate) {
      if (hasReliableStandardMatch && standardTrial) {
        baseCandidate = standardTrial;
        baseDecisionTier = "direct-match";
      } else if (hasReliableAdaptiveWatermarkSignal(adaptive) && adaptiveTrial) {
        baseCandidate = adaptiveTrial;
        baseDecisionTier = "direct-match";
      }
    }
    if (!baseCandidate) {
      const validatedCandidate = pickBestValidatedCandidate([standardTrial, adaptiveTrial]);
      if (!validatedCandidate) {
        return {
          selectedTrial: null,
          source: "skipped",
          alphaMap: fallbackAlphaMap,
          position,
          config,
          adaptiveConfidence,
          standardSpatialScore,
          standardGradientScore,
          templateWarp: null,
          alphaGain: 1,
          decisionTier: "insufficient"
        };
      }
      baseCandidate = {
        ...validatedCandidate,
        source: `${validatedCandidate.source}+validated`
      };
      baseDecisionTier = "validated-match";
    }
    if (shouldRevertLocalShiftToStandardTrial(baseCandidate, standardTrial)) {
      baseCandidate = standardTrial;
      baseDecisionTier = hasReliableStandardMatch ? "direct-match" : "validated-match";
    }
    const {
      selectedTrial,
      source,
      alphaMap,
      position: refinedPosition,
      config: refinedConfig,
      templateWarp,
      alphaGain,
      decisionTier
    } = refineSelectedAnchorCandidate({
      originalImageData,
      baseCandidate,
      baseDecisionTier,
      adaptiveConfidence,
      alphaGainCandidates
    });
    return {
      selectedTrial: ensureCandidateImageData(selectedTrial, originalImageData),
      source,
      alphaMap,
      position: refinedPosition,
      config: refinedConfig,
      adaptiveConfidence,
      standardSpatialScore,
      standardGradientScore,
      templateWarp,
      alphaGain,
      decisionTier
    };
  }

  // src/core/selectionDebug.js
  function normalizeConfig(config) {
    if (!config || typeof config !== "object") return null;
    const { logoSize, marginRight, marginBottom } = config;
    if (![logoSize, marginRight, marginBottom].every(Number.isFinite)) {
      return null;
    }
    return { logoSize, marginRight, marginBottom };
  }
  function normalizePosition(position) {
    if (!position || typeof position !== "object") return null;
    const { x, y, width, height } = position;
    if (![x, y, width, height].every(Number.isFinite)) {
      return null;
    }
    return { x, y, width, height };
  }
  function createSelectionDebugSummary({
    selectedTrial,
    selectionSource = null,
    initialConfig = null,
    initialPosition = null
  } = {}) {
    if (!selectedTrial) return null;
    const candidateSource = typeof selectionSource === "string" && selectionSource ? selectionSource : typeof selectedTrial.source === "string" ? selectedTrial.source : null;
    return {
      candidateSource,
      initialConfig: normalizeConfig(initialConfig),
      initialPosition: normalizePosition(initialPosition),
      finalConfig: normalizeConfig(selectedTrial.config),
      finalPosition: normalizePosition(selectedTrial.position),
      texturePenalty: Number.isFinite(selectedTrial.texturePenalty) ? selectedTrial.texturePenalty : null,
      tooDark: selectedTrial.tooDark === true,
      tooFlat: selectedTrial.tooFlat === true,
      hardReject: selectedTrial.hardReject === true,
      usedCatalogVariant: selectedTrial.provenance?.catalogVariant === true,
      usedSizeJitter: selectedTrial.provenance?.sizeJitter === true,
      usedLocalShift: selectedTrial.provenance?.localShift === true,
      usedAdaptive: selectedTrial.provenance?.adaptive === true,
      usedPreviewAnchor: selectedTrial.provenance?.previewAnchor === true
    };
  }

  // src/core/watermarkConfig.js
  function detectWatermarkConfig(imageWidth, imageHeight) {
    const officialConfig = resolveOfficialGeminiWatermarkConfig(imageWidth, imageHeight);
    if (officialConfig) {
      return { ...officialConfig };
    }
    if (imageWidth > 1024 && imageHeight > 1024) {
      return {
        logoSize: 96,
        marginRight: 64,
        marginBottom: 64
      };
    }
    return {
      logoSize: 48,
      marginRight: 32,
      marginBottom: 32
    };
  }
  function calculateWatermarkPosition(imageWidth, imageHeight, config) {
    const { logoSize, marginRight, marginBottom } = config;
    return {
      x: imageWidth - marginRight - logoSize,
      y: imageHeight - marginBottom - logoSize,
      width: logoSize,
      height: logoSize
    };
  }
  function getStandardConfig(size) {
    return size === 96 ? { logoSize: 96, marginRight: 64, marginBottom: 64 } : { logoSize: 48, marginRight: 32, marginBottom: 32 };
  }
  function getAlphaMapForConfig(config, alpha48, alpha96) {
    if (!config) return null;
    if (config.logoSize === 48) return alpha48;
    if (config.logoSize === 96) return alpha96;
    return alpha96 ? interpolateAlphaMap(alpha96, 96, config.logoSize) : null;
  }
  function isRegionInsideImage(imageData, region) {
    return region.x >= 0 && region.y >= 0 && region.x + region.width <= imageData.width && region.y + region.height <= imageData.height;
  }
  function resolveInitialStandardConfig({
    imageData,
    defaultConfig,
    alpha48,
    alpha96,
    minSwitchScore = 0.25,
    minScoreDelta = 0.08
  }) {
    if (!imageData || !defaultConfig || !alpha48 || !alpha96) return defaultConfig;
    const fallbackConfig = getStandardConfig(48);
    const primaryConfig = defaultConfig.logoSize === 96 ? getStandardConfig(96) : fallbackConfig;
    const alternateConfig = defaultConfig.logoSize === 96 ? fallbackConfig : getStandardConfig(96);
    const candidateConfigs = [primaryConfig, alternateConfig];
    for (const officialConfig of resolveOfficialGeminiSearchConfigs(imageData.width, imageData.height, {
      limit: 1
    })) {
      if (!candidateConfigs.some((candidate) => candidate.logoSize === officialConfig.logoSize && candidate.marginRight === officialConfig.marginRight && candidate.marginBottom === officialConfig.marginBottom)) {
        candidateConfigs.push(officialConfig);
      }
    }
    let bestConfig = null;
    let bestScore = Number.NEGATIVE_INFINITY;
    for (const candidateConfig of candidateConfigs) {
      const candidateRegion = calculateWatermarkPosition(
        imageData.width,
        imageData.height,
        candidateConfig
      );
      if (!isRegionInsideImage(imageData, candidateRegion)) continue;
      const alphaMap = getAlphaMapForConfig(candidateConfig, alpha48, alpha96);
      if (!alphaMap) continue;
      const candidateScore = computeRegionSpatialCorrelation({
        imageData,
        alphaMap,
        region: {
          x: candidateRegion.x,
          y: candidateRegion.y,
          size: candidateRegion.width
        }
      });
      if (!bestConfig) {
        bestConfig = candidateConfig;
        bestScore = candidateScore;
        continue;
      }
      if (candidateScore >= minSwitchScore && candidateScore > bestScore + minScoreDelta) {
        bestConfig = candidateConfig;
        bestScore = candidateScore;
      }
    }
    return bestConfig ?? defaultConfig;
  }

  // src/core/watermarkProcessor.js
  var RESIDUAL_RECALIBRATION_THRESHOLD = 0.5;
  var MIN_SUPPRESSION_FOR_SKIP_RECALIBRATION = 0.18;
  var MIN_RECALIBRATION_SCORE_DELTA = 0.18;
  var MAX_NEAR_BLACK_RATIO_INCREASE3 = 0.05;
  var OUTLINE_REFINEMENT_THRESHOLD = 0.42;
  var OUTLINE_REFINEMENT_MIN_GAIN = 1.2;
  var SUBPIXEL_REFINE_SHIFTS = [-0.25, 0, 0.25];
  var SUBPIXEL_REFINE_SCALES = [0.99, 1, 1.01];
  var ALPHA_GAIN_CANDIDATES = [1.05, 1.12, 1.2, 1.28, 1.36, 1.45, 1.52, 1.6, 1.7, 1.85, 2, 2.2, 2.4, 2.6];
  var PREVIEW_EDGE_CLEANUP_MAX_SIZE = 40;
  var PREVIEW_EDGE_CLEANUP_SPATIAL_THRESHOLD = 0.08;
  var PREVIEW_EDGE_CLEANUP_GRADIENT_THRESHOLD = 0.1;
  var PREVIEW_EDGE_CLEANUP_MIN_GRADIENT_IMPROVEMENT = 0.03;
  var PREVIEW_EDGE_CLEANUP_MAX_SPATIAL_DRIFT = 0.04;
  var PREVIEW_EDGE_CLEANUP_MAX_APPLIED_PASSES = 3;
  var PREVIEW_EDGE_CLEANUP_FINE_GRADIENT_THRESHOLD = 0.16;
  var PREVIEW_EDGE_CLEANUP_FINE_MIN_GRADIENT_IMPROVEMENT = 5e-3;
  var PREVIEW_EDGE_CLEANUP_HALO_RELAXED_MIN_GRADIENT_IMPROVEMENT = 0.01;
  var PREVIEW_EDGE_CLEANUP_HALO_WEIGHT = 0.02;
  var PREVIEW_EDGE_CLEANUP_MIN_HALO_REDUCTION = 1.5;
  var PREVIEW_EDGE_CLEANUP_STRONG_HALO_THRESHOLD = 4;
  var PREVIEW_EDGE_CLEANUP_HALO_SPATIAL_THRESHOLD = 0.18;
  var PREVIEW_EDGE_CLEANUP_PRESETS = Object.freeze([
    { minAlpha: 0.02, maxAlpha: 0.45, radius: 2, strength: 0.7, outsideAlphaMax: 0.05 },
    { minAlpha: 0.05, maxAlpha: 0.55, radius: 3, strength: 0.7, outsideAlphaMax: 0.08 },
    { minAlpha: 0.1, maxAlpha: 0.7, radius: 3, strength: 0.8, outsideAlphaMax: 0.12 },
    { minAlpha: 0.01, maxAlpha: 0.35, radius: 4, strength: 1.4, outsideAlphaMax: 0.05 }
  ]);
  var PREVIEW_EDGE_CLEANUP_STRONG_GRADIENT_THRESHOLD = 0.45;
  var PREVIEW_EDGE_CLEANUP_AGGRESSIVE_PRESETS = Object.freeze([
    {
      minAlpha: 0.01,
      maxAlpha: 0.55,
      radius: 2,
      strength: 1.3,
      outsideAlphaMax: 0.05,
      minGradientImprovement: 0.12,
      maxSpatialDrift: 0.18,
      maxAcceptedSpatial: 0.18
    }
  ]);
  var FIRST_PASS_SIGN_FLIP_GRADIENT_THRESHOLD = 0.08;
  var FIRST_PASS_SIGN_FLIP_MIN_GRADIENT_DROP = 0.2;
  function nowMs() {
    if (typeof globalThis.performance?.now === "function") {
      return globalThis.performance.now();
    }
    return Date.now();
  }
  function cloneImageData2(imageData) {
    if (typeof ImageData !== "undefined" && imageData instanceof ImageData) {
      return new ImageData(
        new Uint8ClampedArray(imageData.data),
        imageData.width,
        imageData.height
      );
    }
    return {
      width: imageData.width,
      height: imageData.height,
      data: new Uint8ClampedArray(imageData.data)
    };
  }
  function normalizeMetaPosition(position) {
    if (!position) return null;
    const { x, y, width, height } = position;
    if (![x, y, width, height].every((value) => Number.isFinite(value))) {
      return null;
    }
    return { x, y, width, height };
  }
  function normalizeMetaConfig(config) {
    if (!config) return null;
    const { logoSize, marginRight, marginBottom } = config;
    if (![logoSize, marginRight, marginBottom].every((value) => Number.isFinite(value))) {
      return null;
    }
    return { logoSize, marginRight, marginBottom };
  }
  function createWatermarkMeta({
    position = null,
    config = null,
    adaptiveConfidence = null,
    originalSpatialScore = null,
    originalGradientScore = null,
    processedSpatialScore = null,
    processedGradientScore = null,
    suppressionGain = null,
    templateWarp = null,
    alphaGain = 1,
    passCount = 0,
    attemptedPassCount = 0,
    passStopReason = null,
    passes = null,
    source = "standard",
    decisionTier = null,
    applied = true,
    skipReason = null,
    subpixelShift = null,
    selectionDebug = null
  } = {}) {
    const normalizedPosition = normalizeMetaPosition(position);
    return {
      applied,
      skipReason: applied ? null : skipReason,
      size: normalizedPosition ? normalizedPosition.width : null,
      position: normalizedPosition,
      config: normalizeMetaConfig(config),
      detection: {
        adaptiveConfidence,
        originalSpatialScore,
        originalGradientScore,
        processedSpatialScore,
        processedGradientScore,
        suppressionGain
      },
      templateWarp: templateWarp ?? null,
      alphaGain,
      passCount,
      attemptedPassCount,
      passStopReason,
      passes: Array.isArray(passes) ? passes : null,
      // decisionTier is the normalized contract used by UI and attribution.
      // source remains as a verbose execution trace for debugging/tests.
      source,
      decisionTier,
      subpixelShift: subpixelShift ?? null,
      selectionDebug
    };
  }
  function shouldRecalibrateAlphaStrength({ originalScore, processedScore, suppressionGain }) {
    return originalScore >= 0.6 && processedScore >= RESIDUAL_RECALIBRATION_THRESHOLD && suppressionGain <= MIN_SUPPRESSION_FOR_SKIP_RECALIBRATION;
  }
  function shouldStopAfterFirstPass({
    originalSpatialScore,
    originalGradientScore,
    firstPassSpatialScore,
    firstPassGradientScore
  }) {
    if (Math.abs(firstPassSpatialScore) <= 0.25) {
      return true;
    }
    return originalSpatialScore >= 0 && firstPassSpatialScore < 0 && firstPassGradientScore <= FIRST_PASS_SIGN_FLIP_GRADIENT_THRESHOLD && originalGradientScore - firstPassGradientScore >= FIRST_PASS_SIGN_FLIP_MIN_GRADIENT_DROP;
  }
  function refineSubpixelOutline({
    sourceImageData,
    alphaMap,
    position,
    alphaGain,
    originalNearBlackRatio,
    baselineSpatialScore,
    baselineGradientScore,
    baselineShift,
    minGain = OUTLINE_REFINEMENT_MIN_GAIN,
    shiftCandidates = SUBPIXEL_REFINE_SHIFTS,
    scaleCandidates = SUBPIXEL_REFINE_SCALES,
    minGradientImprovement = 0.04,
    maxSpatialDrift = 0.08
  }) {
    const size = position.width;
    if (!size || size <= 8) return null;
    if (alphaGain < minGain) return null;
    const maxAllowedNearBlackRatio = Math.min(1, originalNearBlackRatio + MAX_NEAR_BLACK_RATIO_INCREASE3);
    const gainCandidates = [alphaGain];
    const lower = Math.max(1, Number((alphaGain - 0.01).toFixed(2)));
    const upper = Number((alphaGain + 0.01).toFixed(2));
    if (lower !== alphaGain) gainCandidates.push(lower);
    if (upper !== alphaGain) gainCandidates.push(upper);
    const baseDx = baselineShift?.dx ?? 0;
    const baseDy = baselineShift?.dy ?? 0;
    const baseScale = baselineShift?.scale ?? 1;
    let best = null;
    for (const scaleDelta of scaleCandidates) {
      const scale = Number((baseScale * scaleDelta).toFixed(4));
      for (const dyDelta of shiftCandidates) {
        const dy = baseDy + dyDelta;
        for (const dxDelta of shiftCandidates) {
          const dx = baseDx + dxDelta;
          const warped = warpAlphaMap(alphaMap, size, { dx, dy, scale });
          for (const gain of gainCandidates) {
            const candidate = cloneImageData2(sourceImageData);
            removeWatermark(candidate, warped, position, { alphaGain: gain });
            const nearBlackRatio = calculateNearBlackRatio(candidate, position);
            if (nearBlackRatio > maxAllowedNearBlackRatio) continue;
            const spatialScore = computeRegionSpatialCorrelation({
              imageData: candidate,
              alphaMap: warped,
              region: { x: position.x, y: position.y, size }
            });
            const gradientScore = computeRegionGradientCorrelation({
              imageData: candidate,
              alphaMap: warped,
              region: { x: position.x, y: position.y, size }
            });
            const cost = Math.abs(spatialScore) * 0.6 + Math.max(0, gradientScore);
            if (!best || cost < best.cost) {
              best = {
                imageData: candidate,
                alphaMap: warped,
                alphaGain: gain,
                shift: { dx, dy, scale },
                spatialScore,
                gradientScore,
                nearBlackRatio,
                cost
              };
            }
          }
        }
      }
    }
    if (!best) return null;
    const improvedGradient = best.gradientScore <= baselineGradientScore - minGradientImprovement;
    const keptSpatial = Math.abs(best.spatialScore) <= Math.abs(baselineSpatialScore) + maxSpatialDrift;
    if (!improvedGradient || !keptSpatial) return null;
    return best;
  }
  function recalibrateAlphaStrength({
    sourceImageData,
    alphaMap,
    position,
    originalSpatialScore,
    processedSpatialScore,
    originalNearBlackRatio
  }) {
    let bestScore = processedSpatialScore;
    let bestGain = 1;
    let bestImageData = null;
    const maxAllowedNearBlackRatio = Math.min(1, originalNearBlackRatio + MAX_NEAR_BLACK_RATIO_INCREASE3);
    for (const alphaGain of ALPHA_GAIN_CANDIDATES) {
      const candidate = cloneImageData2(sourceImageData);
      removeWatermark(candidate, alphaMap, position, { alphaGain });
      const candidateNearBlackRatio = calculateNearBlackRatio(candidate, position);
      if (candidateNearBlackRatio > maxAllowedNearBlackRatio) {
        continue;
      }
      const score = computeRegionSpatialCorrelation({
        imageData: candidate,
        alphaMap,
        region: {
          x: position.x,
          y: position.y,
          size: position.width
        }
      });
      if (score < bestScore) {
        bestScore = score;
        bestGain = alphaGain;
        bestImageData = candidate;
      }
    }
    const refinedCandidates = [];
    for (let delta = -0.05; delta <= 0.05; delta += 0.01) {
      refinedCandidates.push(Number((bestGain + delta).toFixed(2)));
    }
    for (const alphaGain of refinedCandidates) {
      if (alphaGain <= 1 || alphaGain >= 3) continue;
      const candidate = cloneImageData2(sourceImageData);
      removeWatermark(candidate, alphaMap, position, { alphaGain });
      const candidateNearBlackRatio = calculateNearBlackRatio(candidate, position);
      if (candidateNearBlackRatio > maxAllowedNearBlackRatio) {
        continue;
      }
      const score = computeRegionSpatialCorrelation({
        imageData: candidate,
        alphaMap,
        region: {
          x: position.x,
          y: position.y,
          size: position.width
        }
      });
      if (score < bestScore) {
        bestScore = score;
        bestGain = alphaGain;
        bestImageData = candidate;
      }
    }
    const scoreDelta = processedSpatialScore - bestScore;
    if (!bestImageData || scoreDelta < MIN_RECALIBRATION_SCORE_DELTA) {
      return null;
    }
    return {
      imageData: bestImageData,
      alphaGain: bestGain,
      processedSpatialScore: bestScore,
      suppressionGain: originalSpatialScore - bestScore
    };
  }
  function shouldRefinePreviewResidualEdge({
    source,
    position,
    baselineSpatialScore,
    baselineGradientScore,
    baselinePositiveHalo
  }) {
    return typeof source === "string" && source.includes("preview-anchor") && position?.width >= 24 && position?.width <= PREVIEW_EDGE_CLEANUP_MAX_SIZE && (Math.abs(baselineSpatialScore) <= PREVIEW_EDGE_CLEANUP_SPATIAL_THRESHOLD || baselinePositiveHalo >= PREVIEW_EDGE_CLEANUP_STRONG_HALO_THRESHOLD && Math.abs(baselineSpatialScore) <= PREVIEW_EDGE_CLEANUP_HALO_SPATIAL_THRESHOLD) && baselineGradientScore >= PREVIEW_EDGE_CLEANUP_GRADIENT_THRESHOLD;
  }
  function shouldUsePreviewAnchorFastCleanup(selectedTrial, position) {
    return selectedTrial?.provenance?.previewAnchor === true && position?.width >= 24 && position?.width <= PREVIEW_EDGE_CLEANUP_MAX_SIZE;
  }
  function blendPreviewResidualEdge({
    sourceImageData,
    alphaMap,
    position,
    minAlpha,
    maxAlpha,
    radius,
    strength,
    outsideAlphaMax
  }) {
    const candidate = cloneImageData2(sourceImageData);
    const { width: imageWidth, height: imageHeight, data } = sourceImageData;
    const regionSize = position.width;
    const maxAlphaSafe = Math.max(maxAlpha, 1e-6);
    for (let row = 0; row < regionSize; row++) {
      for (let col = 0; col < regionSize; col++) {
        const alpha = alphaMap[row * regionSize + col];
        if (alpha < minAlpha || alpha > maxAlpha) continue;
        let sumR = 0;
        let sumG = 0;
        let sumB = 0;
        let sumWeight = 0;
        for (let dy = -radius; dy <= radius; dy++) {
          for (let dx = -radius; dx <= radius; dx++) {
            if (dx === 0 && dy === 0) continue;
            const localY = row + dy;
            const localX = col + dx;
            const pixelX = position.x + localX;
            const pixelY = position.y + localY;
            if (pixelX < 0 || pixelY < 0 || pixelX >= imageWidth || pixelY >= imageHeight) {
              continue;
            }
            let neighborAlpha = 0;
            if (localY >= 0 && localX >= 0 && localY < regionSize && localX < regionSize) {
              neighborAlpha = alphaMap[localY * regionSize + localX];
            }
            if (neighborAlpha > outsideAlphaMax) continue;
            const distance = Math.sqrt(dx * dx + dy * dy) || 1;
            const weight = 1 / distance;
            const pixelIndex2 = (pixelY * imageWidth + pixelX) * 4;
            sumR += data[pixelIndex2] * weight;
            sumG += data[pixelIndex2 + 1] * weight;
            sumB += data[pixelIndex2 + 2] * weight;
            sumWeight += weight;
          }
        }
        if (sumWeight <= 0) continue;
        const blend = Math.max(0, Math.min(1, strength * alpha / maxAlphaSafe));
        const pixelIndex = ((position.y + row) * imageWidth + (position.x + col)) * 4;
        candidate.data[pixelIndex] = Math.round(data[pixelIndex] * (1 - blend) + sumR / sumWeight * blend);
        candidate.data[pixelIndex + 1] = Math.round(data[pixelIndex + 1] * (1 - blend) + sumG / sumWeight * blend);
        candidate.data[pixelIndex + 2] = Math.round(data[pixelIndex + 2] * (1 - blend) + sumB / sumWeight * blend);
      }
    }
    return candidate;
  }
  function refinePreviewResidualEdge({
    sourceImageData,
    alphaMap,
    position,
    source,
    baselineSpatialScore,
    baselineGradientScore,
    minGradientImprovement = PREVIEW_EDGE_CLEANUP_MIN_GRADIENT_IMPROVEMENT,
    maxSpatialDrift = PREVIEW_EDGE_CLEANUP_MAX_SPATIAL_DRIFT,
    allowAggressivePresets = false
  }) {
    const baselineHalo = assessAlphaBandHalo({
      imageData: sourceImageData,
      position,
      alphaMap
    });
    const baselinePositiveHalo = baselineHalo.positiveDeltaLum;
    if (!shouldRefinePreviewResidualEdge({
      source,
      position,
      baselineSpatialScore,
      baselineGradientScore,
      baselinePositiveHalo
    })) {
      return null;
    }
    const baselineNearBlackRatio = calculateNearBlackRatio(sourceImageData, position);
    const maxAllowedNearBlackRatio = Math.min(1, baselineNearBlackRatio + MAX_NEAR_BLACK_RATIO_INCREASE3);
    const resolvedMinGradientImprovement = baselineGradientScore <= PREVIEW_EDGE_CLEANUP_FINE_GRADIENT_THRESHOLD ? PREVIEW_EDGE_CLEANUP_FINE_MIN_GRADIENT_IMPROVEMENT : baselinePositiveHalo >= PREVIEW_EDGE_CLEANUP_STRONG_HALO_THRESHOLD ? PREVIEW_EDGE_CLEANUP_HALO_RELAXED_MIN_GRADIENT_IMPROVEMENT : minGradientImprovement;
    const presets = allowAggressivePresets && baselineGradientScore >= PREVIEW_EDGE_CLEANUP_STRONG_GRADIENT_THRESHOLD && Math.abs(baselineSpatialScore) <= 0.05 ? [...PREVIEW_EDGE_CLEANUP_PRESETS, ...PREVIEW_EDGE_CLEANUP_AGGRESSIVE_PRESETS] : PREVIEW_EDGE_CLEANUP_PRESETS;
    let best = null;
    for (const preset of presets) {
      const candidate = blendPreviewResidualEdge({
        sourceImageData,
        alphaMap,
        position,
        ...preset
      });
      const nearBlackRatio = calculateNearBlackRatio(candidate, position);
      if (nearBlackRatio > maxAllowedNearBlackRatio) continue;
      const spatialScore = computeRegionSpatialCorrelation({
        imageData: candidate,
        alphaMap,
        region: { x: position.x, y: position.y, size: position.width }
      });
      const gradientScore = computeRegionGradientCorrelation({
        imageData: candidate,
        alphaMap,
        region: { x: position.x, y: position.y, size: position.width }
      });
      const halo = assessAlphaBandHalo({
        imageData: candidate,
        position,
        alphaMap
      });
      const presetMinGradientImprovement = preset.minGradientImprovement ?? resolvedMinGradientImprovement;
      const presetMaxSpatialDrift = preset.maxSpatialDrift ?? maxSpatialDrift;
      const presetMaxAcceptedSpatial = preset.maxAcceptedSpatial ?? 0.22;
      const improvedGradient = gradientScore <= baselineGradientScore - presetMinGradientImprovement;
      const keptSpatial = Math.abs(spatialScore) <= Math.abs(baselineSpatialScore) + presetMaxSpatialDrift;
      const keptResidualWithinTarget = Math.abs(spatialScore) <= presetMaxAcceptedSpatial;
      const candidatePositiveHalo = halo.positiveDeltaLum;
      const improvedHalo = baselinePositiveHalo < PREVIEW_EDGE_CLEANUP_STRONG_HALO_THRESHOLD || candidatePositiveHalo <= baselinePositiveHalo - PREVIEW_EDGE_CLEANUP_MIN_HALO_REDUCTION;
      if (!improvedGradient || !keptSpatial || !keptResidualWithinTarget || !improvedHalo) continue;
      const cost = Math.abs(spatialScore) * 0.6 + Math.max(0, gradientScore) + candidatePositiveHalo * PREVIEW_EDGE_CLEANUP_HALO_WEIGHT;
      if (!best || cost < best.cost) {
        best = {
          imageData: candidate,
          spatialScore,
          gradientScore,
          halo,
          cost
        };
      }
    }
    return best;
  }
  function processWatermarkImageData(imageData, options = {}) {
    const totalStartedAt = nowMs();
    const debugTimingsEnabled = options.debugTimings === true;
    const debugTimings = debugTimingsEnabled ? {} : null;
    const adaptiveMode = options.adaptiveMode || "auto";
    const allowAdaptiveSearch = adaptiveMode !== "never" && adaptiveMode !== "off";
    const originalImageData = cloneImageData2(imageData);
    const { alpha48, alpha96 } = options;
    const alphaGainCandidates = ALPHA_GAIN_CANDIDATES;
    if (!alpha48 || !alpha96) {
      throw new Error("processWatermarkImageData requires alpha48 and alpha96");
    }
    const defaultConfig = detectWatermarkConfig(originalImageData.width, originalImageData.height);
    const resolvedConfig = resolveInitialStandardConfig({
      imageData: originalImageData,
      defaultConfig,
      alpha48,
      alpha96
    });
    let config = resolvedConfig;
    let position = calculateWatermarkPosition(originalImageData.width, originalImageData.height, config);
    let alphaMap = config.logoSize === 96 ? alpha96 : alpha48;
    let source = "standard";
    let adaptiveConfidence = null;
    let alphaGain = 1;
    let subpixelShift = null;
    let templateWarp = null;
    let decisionTier = null;
    let passCount = 0;
    let attemptedPassCount = 0;
    let passStopReason = null;
    let passes = null;
    const initialSelectionStartedAt = nowMs();
    const initialSelection = selectInitialCandidate({
      originalImageData,
      config,
      position,
      alpha48,
      alpha96,
      getAlphaMap: options.getAlphaMap,
      allowAdaptiveSearch,
      alphaGainCandidates
    });
    if (debugTimingsEnabled) {
      debugTimings.initialSelectionMs = nowMs() - initialSelectionStartedAt;
    }
    if (!initialSelection.selectedTrial) {
      if (debugTimingsEnabled) {
        debugTimings.totalMs = nowMs() - totalStartedAt;
      }
      return {
        imageData: originalImageData,
        meta: createWatermarkMeta({
          adaptiveConfidence: initialSelection.adaptiveConfidence,
          originalSpatialScore: initialSelection.standardSpatialScore,
          originalGradientScore: initialSelection.standardGradientScore,
          processedSpatialScore: initialSelection.standardSpatialScore,
          processedGradientScore: initialSelection.standardGradientScore,
          suppressionGain: 0,
          alphaGain: 1,
          source: "skipped",
          decisionTier: initialSelection.decisionTier ?? "insufficient",
          applied: false,
          skipReason: "no-watermark-detected",
          selectionDebug: null
        }),
        debugTimings
      };
    }
    position = initialSelection.position;
    alphaMap = initialSelection.alphaMap;
    config = initialSelection.config;
    source = initialSelection.source;
    adaptiveConfidence = initialSelection.adaptiveConfidence;
    templateWarp = initialSelection.templateWarp;
    alphaGain = initialSelection.alphaGain;
    decisionTier = initialSelection.decisionTier;
    const selectedTrial = initialSelection.selectedTrial;
    const usePreviewAnchorFastCleanup = shouldUsePreviewAnchorFastCleanup(selectedTrial, position);
    const skipPreviewAnchorMultiPass = selectedTrial?.provenance?.previewAnchor === true;
    let finalImageData = selectedTrial.imageData;
    let originalSpatialScore = selectedTrial.originalSpatialScore;
    let originalGradientScore = selectedTrial.originalGradientScore;
    const firstPassMetricsStartedAt = nowMs();
    const firstPassSpatialScore = computeRegionSpatialCorrelation({
      imageData: finalImageData,
      alphaMap,
      region: { x: position.x, y: position.y, size: position.width }
    });
    const firstPassGradientScore = computeRegionGradientCorrelation({
      imageData: finalImageData,
      alphaMap,
      region: { x: position.x, y: position.y, size: position.width }
    });
    const firstPassNearBlackRatio = calculateNearBlackRatio(finalImageData, position);
    const firstPassRecord = {
      index: 1,
      beforeSpatialScore: originalSpatialScore,
      beforeGradientScore: originalGradientScore,
      afterSpatialScore: firstPassSpatialScore,
      afterGradientScore: firstPassGradientScore,
      improvement: Math.abs(originalSpatialScore) - Math.abs(firstPassSpatialScore),
      gradientDelta: firstPassGradientScore - originalGradientScore,
      nearBlackRatio: firstPassNearBlackRatio
    };
    if (debugTimingsEnabled) {
      debugTimings.firstPassMetricsMs = nowMs() - firstPassMetricsStartedAt;
    }
    const totalMaxPasses = Math.max(
      1,
      options.maxPasses ?? 4
    );
    const remainingPasses = Math.max(0, totalMaxPasses - 1);
    const firstPassClearedResidual = shouldStopAfterFirstPass({
      originalSpatialScore,
      originalGradientScore,
      firstPassSpatialScore,
      firstPassGradientScore
    });
    const extraPassStartedAt = nowMs();
    const extraPassResult = remainingPasses > 0 && !firstPassClearedResidual && !skipPreviewAnchorMultiPass ? removeRepeatedWatermarkLayers({
      imageData: finalImageData,
      alphaMap,
      position,
      maxPasses: remainingPasses,
      startingPassIndex: 1,
      alphaGain
    }) : null;
    if (debugTimingsEnabled) {
      debugTimings.extraPassMs = nowMs() - extraPassStartedAt;
    }
    finalImageData = extraPassResult?.imageData ?? finalImageData;
    passCount = extraPassResult?.passCount ?? 1;
    attemptedPassCount = extraPassResult?.attemptedPassCount ?? 1;
    passStopReason = extraPassResult?.stopReason ?? (firstPassClearedResidual ? "residual-low" : skipPreviewAnchorMultiPass ? "preview-anchor-single-pass" : "max-passes");
    passes = [firstPassRecord, ...extraPassResult?.passes ?? []];
    if (passCount > 1) {
      source = `${source}+multipass`;
    }
    const finalMetricsStartedAt = nowMs();
    const processedSpatialScore = computeRegionSpatialCorrelation({
      imageData: finalImageData,
      alphaMap,
      region: {
        x: position.x,
        y: position.y,
        size: position.width
      }
    });
    const processedGradientScore = computeRegionGradientCorrelation({
      imageData: finalImageData,
      alphaMap,
      region: {
        x: position.x,
        y: position.y,
        size: position.width
      }
    });
    if (debugTimingsEnabled) {
      debugTimings.finalMetricsMs = nowMs() - finalMetricsStartedAt;
    }
    let finalProcessedSpatialScore = processedSpatialScore;
    let finalProcessedGradientScore = processedGradientScore;
    let suppressionGain = originalSpatialScore - finalProcessedSpatialScore;
    const recalibrationStartedAt = nowMs();
    if (shouldRecalibrateAlphaStrength({
      originalScore: originalSpatialScore,
      processedScore: finalProcessedSpatialScore,
      suppressionGain
    })) {
      const originalNearBlackRatio = calculateNearBlackRatio(finalImageData, position);
      const recalibrated = recalibrateAlphaStrength({
        sourceImageData: finalImageData,
        alphaMap,
        position,
        originalSpatialScore,
        processedSpatialScore: finalProcessedSpatialScore,
        originalNearBlackRatio
      });
      if (recalibrated) {
        finalImageData = recalibrated.imageData;
        alphaGain = recalibrated.alphaGain;
        finalProcessedSpatialScore = recalibrated.processedSpatialScore;
        finalProcessedGradientScore = computeRegionGradientCorrelation({
          imageData: finalImageData,
          alphaMap,
          region: {
            x: position.x,
            y: position.y,
            size: position.width
          }
        });
        suppressionGain = recalibrated.suppressionGain;
        source = source === "adaptive" ? "adaptive+gain" : `${source}+gain`;
      }
    }
    if (debugTimingsEnabled) {
      debugTimings.recalibrationMs = nowMs() - recalibrationStartedAt;
    }
    let previewEdgeCleanupElapsedMs = 0;
    const applyPreviewEdgeCleanup = () => {
      const previewEdgeStartedAt = nowMs();
      const previewEdgeRefined = refinePreviewResidualEdge({
        sourceImageData: finalImageData,
        alphaMap,
        position,
        source,
        baselineSpatialScore: finalProcessedSpatialScore,
        baselineGradientScore: finalProcessedGradientScore,
        allowAggressivePresets: usePreviewAnchorFastCleanup
      });
      previewEdgeCleanupElapsedMs += nowMs() - previewEdgeStartedAt;
      if (!previewEdgeRefined) {
        return false;
      }
      finalImageData = previewEdgeRefined.imageData;
      finalProcessedSpatialScore = previewEdgeRefined.spatialScore;
      finalProcessedGradientScore = previewEdgeRefined.gradientScore;
      suppressionGain = originalSpatialScore - finalProcessedSpatialScore;
      source = `${source}+edge-cleanup`;
      return true;
    };
    const subpixelStartedAt = nowMs();
    if (!usePreviewAnchorFastCleanup && finalProcessedSpatialScore <= 0.3 && finalProcessedGradientScore >= OUTLINE_REFINEMENT_THRESHOLD) {
      const originalNearBlackRatio = calculateNearBlackRatio(finalImageData, position);
      const baselineShift = templateWarp ?? { dx: 0, dy: 0, scale: 1 };
      const refined = refineSubpixelOutline({
        sourceImageData: finalImageData,
        alphaMap,
        position,
        alphaGain,
        originalNearBlackRatio,
        baselineSpatialScore: finalProcessedSpatialScore,
        baselineGradientScore: finalProcessedGradientScore,
        baselineShift,
        minGain: OUTLINE_REFINEMENT_MIN_GAIN,
        shiftCandidates: SUBPIXEL_REFINE_SHIFTS,
        scaleCandidates: SUBPIXEL_REFINE_SCALES,
        minGradientImprovement: 0.04,
        maxSpatialDrift: 0.08
      });
      if (refined) {
        finalImageData = refined.imageData;
        alphaMap = refined.alphaMap;
        alphaGain = refined.alphaGain;
        finalProcessedSpatialScore = refined.spatialScore;
        finalProcessedGradientScore = refined.gradientScore;
        suppressionGain = originalSpatialScore - finalProcessedSpatialScore;
        source = `${source}+subpixel`;
        subpixelShift = refined.shift;
      }
    }
    if (debugTimingsEnabled) {
      debugTimings.subpixelRefinementMs = nowMs() - subpixelStartedAt;
    }
    let previewEdgeCleanupPassCount = 0;
    while (previewEdgeCleanupPassCount < PREVIEW_EDGE_CLEANUP_MAX_APPLIED_PASSES) {
      if (!applyPreviewEdgeCleanup()) {
        break;
      }
      previewEdgeCleanupPassCount++;
    }
    if (debugTimingsEnabled) {
      debugTimings.previewEdgeCleanupMs = previewEdgeCleanupElapsedMs;
      debugTimings.totalMs = nowMs() - totalStartedAt;
    }
    return {
      imageData: finalImageData,
      meta: createWatermarkMeta({
        position,
        config,
        adaptiveConfidence,
        originalSpatialScore,
        originalGradientScore,
        processedSpatialScore: finalProcessedSpatialScore,
        processedGradientScore: finalProcessedGradientScore,
        suppressionGain,
        templateWarp,
        alphaGain,
        passCount,
        attemptedPassCount,
        passStopReason,
        passes,
        source,
        decisionTier,
        applied: true,
        subpixelShift,
        selectionDebug: createSelectionDebugSummary({
          selectedTrial,
          selectionSource: initialSelection.source,
          initialConfig: resolvedConfig,
          initialPosition: calculateWatermarkPosition(
            originalImageData.width,
            originalImageData.height,
            resolvedConfig
          )
        })
      }),
      debugTimings
    };
  }

  // src/core/watermarkEngine.js
  function createRuntimeCanvas(width, height) {
    if (typeof OffscreenCanvas !== "undefined") {
      return new OffscreenCanvas(width, height);
    }
    if (typeof document !== "undefined") {
      const canvas = document.createElement("canvas");
      canvas.width = width;
      canvas.height = height;
      return canvas;
    }
    throw new Error("Canvas runtime not available");
  }
  function getCanvasContext2D(canvas) {
    const ctx = canvas.getContext("2d", { willReadFrequently: true });
    if (!ctx) {
      throw new Error("Failed to get 2D canvas context");
    }
    return ctx;
  }
  var WatermarkEngine = class _WatermarkEngine {
    constructor() {
      this.alphaMaps = {};
    }
    static async create() {
      return new _WatermarkEngine();
    }
    /**
     * Get alpha map from background captured image based on watermark size
     * @param {number} size - Watermark size (48 or 96)
     * @returns {Promise<Float32Array>} Alpha map
     */
    async getAlphaMap(size) {
      if (size !== 48 && size !== 96) {
        if (this.alphaMaps[size]) return this.alphaMaps[size];
        const alpha96 = await this.getAlphaMap(96);
        const interpolated = interpolateAlphaMap(alpha96, 96, size);
        this.alphaMaps[size] = interpolated;
        return interpolated;
      }
      if (this.alphaMaps[size]) {
        return this.alphaMaps[size];
      }
      const alphaMap = getEmbeddedAlphaMap(size);
      if (!alphaMap) {
        throw new Error(`Missing embedded alpha map for size ${size}`);
      }
      this.alphaMaps[size] = alphaMap;
      return alphaMap;
    }
    /**
     * Remove watermark from image based on watermark size
     * @param {HTMLImageElement|HTMLCanvasElement} image - Input image
     * @returns {Promise<HTMLCanvasElement>} Processed canvas
     */
    async removeWatermarkFromImage(image, options = {}) {
      const now = () => {
        if (typeof globalThis.performance?.now === "function") {
          return globalThis.performance.now();
        }
        return Date.now();
      };
      const canvas = createRuntimeCanvas(image.width, image.height);
      const ctx = getCanvasContext2D(canvas);
      const drawStartedAt = now();
      ctx.drawImage(image, 0, 0);
      const drawMs = now() - drawStartedAt;
      const readStartedAt = now();
      const originalImageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
      const getImageDataMs = now() - readStartedAt;
      const alpha48 = await this.getAlphaMap(48);
      const alpha96 = await this.getAlphaMap(96);
      const processingStartedAt = now();
      const result = processWatermarkImageData(originalImageData, {
        alpha48,
        alpha96,
        adaptiveMode: options.adaptiveMode,
        maxPasses: options.maxPasses,
        debugTimings: options.debugTimings === true,
        getAlphaMap: (size) => this.alphaMaps[size] || interpolateAlphaMap(alpha96, 96, size)
      });
      const processWatermarkImageDataMs = now() - processingStartedAt;
      const writeStartedAt = now();
      ctx.putImageData(result.imageData, 0, 0);
      const putImageDataMs = now() - writeStartedAt;
      canvas.__watermarkMeta = result.meta;
      canvas.__watermarkTiming = {
        drawMs,
        getImageDataMs,
        processWatermarkImageDataMs,
        putImageDataMs,
        processor: result.debugTimings ?? null
      };
      return canvas;
    }
    /**
     * Get watermark information (for display)
     * @param {number} imageWidth - Image width
     * @param {number} imageHeight - Image height
     * @returns {Object} Watermark information {size, position, config}
     */
    getWatermarkInfo(imageWidth, imageHeight) {
      const config = detectWatermarkConfig(imageWidth, imageHeight);
      const position = calculateWatermarkPosition(imageWidth, imageHeight, config);
      return {
        size: config.logoSize,
        position,
        config
      };
    }
  };

  // src/shared/imageProcessing.js
  function loadImageFromObjectUrl(objectUrl) {
    return new Promise((resolve, reject) => {
      const image = new Image();
      image.onload = () => resolve(image);
      image.onerror = () => reject(new Error("Failed to decode Gemini image blob"));
      image.src = objectUrl;
    });
  }
  async function loadImageElementFromBlob(blob) {
    const objectUrl = URL.createObjectURL(blob);
    try {
      return await loadImageFromObjectUrl(objectUrl);
    } finally {
      URL.revokeObjectURL(objectUrl);
    }
  }
  async function loadRenderableFromBlobFallback(blob, originalError) {
    if (typeof createImageBitmap !== "function") {
      throw originalError;
    }
    try {
      return await createImageBitmap(blob);
    } catch {
      throw originalError;
    }
  }
  async function loadImageFromBlob(blob) {
    try {
      return await loadImageElementFromBlob(blob);
    } catch (error) {
      return await loadRenderableFromBlobFallback(blob, error);
    }
  }
  function withProcessorPath(meta, processorPath) {
    const normalizedMeta = meta && typeof meta === "object" ? { ...meta } : null;
    if (processorPath != null) {
      return {
        ...normalizedMeta || {},
        processorPath
      };
    }
    return normalizedMeta;
  }
  function normalizeProcessorResult(result, processorPath = "main-thread") {
    return {
      processedBlob: result?.processedBlob || null,
      processedMeta: withProcessorPath(result?.processedMeta || null, processorPath)
    };
  }
  function normalizeProcessingOptions(options = {}) {
    return {
      adaptiveMode: "always",
      ...options && typeof options === "object" ? options : {}
    };
  }
  function createCachedEngineGetter({
    createEngine = () => WatermarkEngine.create()
  } = {}) {
    let enginePromise = null;
    return async function getEngine() {
      if (!enginePromise) {
        enginePromise = Promise.resolve(createEngine()).catch((error) => {
          enginePromise = null;
          throw error;
        });
      }
      return enginePromise;
    };
  }
  function createCachedCanvasProcessor({
    createEngine = () => WatermarkEngine.create(),
    getEngine = null
  } = {}) {
    const resolveEngine = typeof getEngine === "function" ? getEngine : createCachedEngineGetter({ createEngine });
    return async function processRenderableToCanvas(image, options = {}) {
      const engine = await resolveEngine();
      const normalizedOptions = normalizeProcessingOptions(options);
      return engine.removeWatermarkFromImage(image, normalizedOptions);
    };
  }
  function createCachedImageProcessor({
    createEngine = () => WatermarkEngine.create(),
    encodeCanvas = canvasToBlob,
    processorPath = "main-thread"
  } = {}) {
    const processRenderableToCanvas = createCachedCanvasProcessor({ createEngine });
    return async function processRenderable(image, options = {}) {
      const canvas = await processRenderableToCanvas(image, options);
      return {
        processedBlob: await encodeCanvas(canvas),
        processedMeta: withProcessorPath(canvas.__watermarkMeta || null, processorPath)
      };
    };
  }
  function createMainThreadBlobProcessor({
    loadRenderable = loadImageFromBlob,
    processRenderable = createCachedImageProcessor()
  } = {}) {
    return async function processBlobOnMainThread(blob, options = {}) {
      const image = await loadRenderable(blob);
      return processRenderable(image, options);
    };
  }
  function createSharedBlobProcessor({
    processMainThread = createMainThreadBlobProcessor(),
    getWorkerProcessor = null,
    onWorkerError = null
  } = {}) {
    return async function processWithBestPath(blob, options = { adaptiveMode: "always" }) {
      const normalizedOptions = normalizeProcessingOptions(options);
      const processWorker = typeof getWorkerProcessor === "function" ? getWorkerProcessor() : null;
      if (typeof processWorker === "function") {
        try {
          return await processWorker(blob, normalizedOptions);
        } catch (error) {
          onWorkerError?.(error);
        }
      }
      return normalizeProcessorResult(
        await processMainThread(blob, normalizedOptions),
        "main-thread"
      );
    };
  }
  var processWatermarkBlobOnMainThread = createMainThreadBlobProcessor();
  var processWatermarkBlobWithBestPath = createSharedBlobProcessor();
  async function processWatermarkBlob(blob, options = { adaptiveMode: "always" }) {
    return processWatermarkBlobWithBestPath(blob, options);
  }
  async function removeWatermarkFromBlob(blob, options = { adaptiveMode: "always" }) {
    const result = await processWatermarkBlob(blob, options);
    return result.processedBlob;
  }

  // src/shared/pageImageReplacement.js
  var PAGE_IMAGE_STATE_KEY = "gwrPageImageState";
  var PAGE_IMAGE_SOURCE_KEY = "gwrPageImageSource";
  var PAGE_IMAGE_OBJECT_URL_KEY = "gwrWatermarkObjectUrl";
  var PROCESSING_OVERLAY_DATA_KEY = "gwrProcessingOverlay";
  var PROCESSING_VISUAL_DATA_KEY = "gwrProcessingVisual";
  var PREVIEW_OVERLAY_DATA_KEY = "gwrPreviewImage";
  var PAGE_IMAGE_RESPONSE_ID_KEY = "gwrResponseId";
  var PAGE_IMAGE_DRAFT_ID_KEY = "gwrDraftId";
  var PAGE_IMAGE_CONVERSATION_ID_KEY = "gwrConversationId";
  var OBSERVED_ATTRIBUTES = ["src", "srcset", "data-gwr-source-url"];
  var PAGE_FETCH_REQUEST = "gwr:page-fetch-request";
  var PAGE_FETCH_RESPONSE = "gwr:page-fetch-response";
  var PROCESSING_OVERLAY_FADE_MS = 180;
  var PREVIEW_IMAGE_RENDER_RETRY_MS = 1500;
  var RECENT_SOURCE_HINT_TTL_MS = 5e3;
  var MIN_VISIBLE_CAPTURE_EDGE = 32;
  var MIN_VISIBLE_CAPTURE_AREA = MIN_VISIBLE_CAPTURE_EDGE * MIN_VISIBLE_CAPTURE_EDGE;
  var processingOverlayState = /* @__PURE__ */ new WeakMap();
  var previewOverlayState = /* @__PURE__ */ new WeakMap();
  var originalAssetUrlRegistry = /* @__PURE__ */ new Map();
  var previewProcessedResultRegistry = /* @__PURE__ */ new Map();
  var MAX_REMEMBERED_PREVIEW_RESULT_REGISTRY_SIZE = 32;
  function appendLog(onLog, type, payload = {}) {
    if (typeof onLog === "function") {
      onLog(type, payload);
    }
  }
  function isBlobPageImageSource(sourceUrl = "") {
    return typeof sourceUrl === "string" && sourceUrl.startsWith("blob:");
  }
  function isDataPageImageSource(sourceUrl = "") {
    return typeof sourceUrl === "string" && sourceUrl.startsWith("data:");
  }
  function hasExplicitBoundSourceUrl(imageElement, sourceUrl = "") {
    const explicitSourceUrl = typeof imageElement?.dataset?.gwrSourceUrl === "string" ? imageElement.dataset.gwrSourceUrl.trim() : "";
    const normalizedSourceUrl = typeof sourceUrl === "string" ? sourceUrl.trim() : "";
    return Boolean(explicitSourceUrl && normalizedSourceUrl && explicitSourceUrl === normalizedSourceUrl);
  }
  function shouldTreatPageImageSourceAsPreview(imageElement, sourceUrl = "") {
    if (isBlobPageImageSource(sourceUrl)) {
      return true;
    }
    if (!isGeminiDisplayPreviewAssetUrl(sourceUrl)) {
      return false;
    }
    return !hasExplicitBoundSourceUrl(imageElement, sourceUrl);
  }
  function getComparableImageSize(imageElement) {
    const width = Number(imageElement?.naturalWidth) || Number(imageElement?.clientWidth) || Number(imageElement?.width) || 0;
    const height = Number(imageElement?.naturalHeight) || Number(imageElement?.clientHeight) || Number(imageElement?.height) || 0;
    if (width <= 0 || height <= 0) {
      return null;
    }
    return { width, height };
  }
  function readAssetIdsFromImageDataset(imageElement) {
    if (!imageElement?.dataset) {
      return null;
    }
    const responseId = typeof imageElement.dataset[PAGE_IMAGE_RESPONSE_ID_KEY] === "string" ? imageElement.dataset[PAGE_IMAGE_RESPONSE_ID_KEY].trim() : "";
    const draftId = typeof imageElement.dataset[PAGE_IMAGE_DRAFT_ID_KEY] === "string" ? imageElement.dataset[PAGE_IMAGE_DRAFT_ID_KEY].trim() : "";
    const conversationId = typeof imageElement.dataset[PAGE_IMAGE_CONVERSATION_ID_KEY] === "string" ? imageElement.dataset[PAGE_IMAGE_CONVERSATION_ID_KEY].trim() : "";
    if (!responseId && !draftId && !conversationId) {
      return null;
    }
    return {
      responseId: responseId || null,
      draftId: draftId || null,
      conversationId: conversationId || null
    };
  }
  function resolveImageSessionSurfaceType(imageElement) {
    if (typeof imageElement?.closest === "function") {
      if (imageElement.closest('expansion-dialog,[role="dialog"],.image-expansion-dialog-panel,.cdk-overlay-pane')) {
        return "fullscreen";
      }
    }
    return "preview";
  }
  function getAspectRatioDelta(left, right) {
    if (!left || !right) return 0;
    return Math.abs(left.width / left.height - right.width / right.height);
  }
  function getRenderableComparableSize(renderable) {
    const width = Number(renderable?.naturalWidth) || Number(renderable?.width) || 0;
    const height = Number(renderable?.naturalHeight) || Number(renderable?.height) || 0;
    if (width <= 0 || height <= 0) {
      return null;
    }
    return { width, height };
  }
  function shouldRejectPreviewOriginalBlobByAspectRatio(renderable, imageElement, {
    maxAspectRatioDelta = 0.02
  } = {}) {
    const renderableSize = getRenderableComparableSize(renderable);
    const previewSize = getComparableImageSize(imageElement);
    if (!renderableSize || !previewSize) {
      return false;
    }
    return getAspectRatioDelta(renderableSize, previewSize) > maxAspectRatioDelta;
  }
  function hasAnyAssetIds(assetIds = null) {
    return Boolean(assetIds?.responseId || assetIds?.draftId || assetIds?.conversationId);
  }
  function buildRecentImageSourceHint(imageElement, {
    now = Date.now(),
    resolveSourceUrl = resolveCandidateImageUrl,
    resolveAssetIds = extractGeminiImageAssetIds
  } = {}) {
    const assetIds = typeof resolveAssetIds === "function" ? resolveAssetIds(imageElement) : null;
    const sourceUrl = typeof resolveSourceUrl === "function" ? String(resolveSourceUrl(imageElement) || "").trim() : "";
    const hasUsableSourceUrl = Boolean(sourceUrl) && !isBlobPageImageSource(sourceUrl) && !isDataPageImageSource(sourceUrl);
    if (!hasUsableSourceUrl && !hasAnyAssetIds(assetIds)) {
      return null;
    }
    return {
      sourceUrl: hasUsableSourceUrl ? sourceUrl : "",
      createdAt: Number(now) || 0,
      size: getComparableImageSize(imageElement),
      assetIds
    };
  }
  function isRecentImageSourceHintFresh(hint, now = Date.now()) {
    if (!hint || typeof hint !== "object") return false;
    const createdAt = Number(hint.createdAt) || 0;
    const currentNow = Number(now) || 0;
    return createdAt > 0 && currentNow >= createdAt && currentNow - createdAt <= RECENT_SOURCE_HINT_TTL_MS;
  }
  function applyRecentImageSourceHintToImage(imageElement, hint, {
    now = Date.now()
  } = {}) {
    if (!isRecentImageSourceHintFresh(hint, now) || !imageElement || typeof imageElement !== "object") {
      return false;
    }
    const dataset = imageElement.dataset || (imageElement.dataset = {});
    const currentSourceUrl = resolveCandidateImageUrl(imageElement);
    if (!isBlobPageImageSource(currentSourceUrl) && !isDataPageImageSource(currentSourceUrl)) {
      return false;
    }
    const imageAssetIds = extractGeminiImageAssetIds(imageElement);
    if (hasAnyAssetIds(imageAssetIds)) {
      if (!hasAnyAssetIds(hint.assetIds) || !assetIdsMatch(imageAssetIds, hint.assetIds)) {
        return false;
      }
    }
    const hintSize = hint.size;
    const imageSize = getComparableImageSize(imageElement);
    if (hintSize && imageSize && getAspectRatioDelta(hintSize, imageSize) > 0.02) {
      return false;
    }
    let applied = false;
    const rememberedSourceUrl = !hint.sourceUrl && hasAnyAssetIds(hint.assetIds) ? resolveRememberedOriginalAssetUrl(hint.assetIds) : "";
    const resolvedHintSourceUrl = hint.sourceUrl || rememberedSourceUrl;
    if (resolvedHintSourceUrl && !(typeof dataset.gwrSourceUrl === "string" && dataset.gwrSourceUrl.trim())) {
      dataset.gwrSourceUrl = resolvedHintSourceUrl;
      applied = true;
    }
    if (!dataset[PAGE_IMAGE_RESPONSE_ID_KEY] && hint.assetIds?.responseId) {
      dataset[PAGE_IMAGE_RESPONSE_ID_KEY] = hint.assetIds.responseId;
      applied = true;
    }
    if (!dataset[PAGE_IMAGE_DRAFT_ID_KEY] && hint.assetIds?.draftId) {
      dataset[PAGE_IMAGE_DRAFT_ID_KEY] = hint.assetIds.draftId;
      applied = true;
    }
    if (!dataset[PAGE_IMAGE_CONVERSATION_ID_KEY] && hint.assetIds?.conversationId) {
      dataset[PAGE_IMAGE_CONVERSATION_ID_KEY] = hint.assetIds.conversationId;
      applied = true;
    }
    return applied;
  }
  function resolveHintSourceImageFromEventTarget(target) {
    if (!target || typeof target !== "object") {
      return null;
    }
    const normalizedTagName = typeof target.tagName === "string" ? target.tagName.toUpperCase() : "";
    if (normalizedTagName === "IMG" && isProcessableGeminiImageElement(target)) {
      return target;
    }
    const queryRoot = typeof target.closest === "function" ? target.closest(getGeminiImageContainerSelector()) || target.closest("single-image") || target.closest("[data-test-draft-id]") : null;
    if (!queryRoot || typeof queryRoot.querySelector !== "function") {
      return null;
    }
    return queryRoot.querySelector("img");
  }
  function emitPageImageProcessEvent({
    logger,
    onLog,
    level = "info",
    consoleMessage,
    eventType,
    payload
  }) {
    logger?.[level]?.(consoleMessage, payload);
    appendLog(onLog, eventType, payload);
  }
  function nowMs2() {
    if (typeof globalThis.performance?.now === "function") {
      return globalThis.performance.now();
    }
    return Date.now();
  }
  function getErrorCandidateDiagnostics(error) {
    return Array.isArray(error?.candidateDiagnostics) ? error.candidateDiagnostics : null;
  }
  function getErrorCandidateDiagnosticsSummary(error) {
    return typeof error?.candidateDiagnosticsSummary === "string" ? error.candidateDiagnosticsSummary : "";
  }
  function getDraftAssetRegistryKey(assetIds = null) {
    const draftId = typeof assetIds?.draftId === "string" ? assetIds.draftId.trim() : "";
    return draftId ? `draft:${draftId}` : "";
  }
  function getResponseAssetRegistryKey(assetIds = null) {
    const responseId = typeof assetIds?.responseId === "string" ? assetIds.responseId.trim() : "";
    const conversationId = typeof assetIds?.conversationId === "string" ? assetIds.conversationId.trim() : "";
    return responseId && conversationId ? `response:${responseId}|conversation:${conversationId}` : "";
  }
  function rememberOriginalAssetUrlBinding(assetIds = null, sourceUrl = "", {
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    const normalizedSourceUrl = typeof sourceUrl === "string" ? sourceUrl.trim() : "";
    if (!assetIds || !normalizedSourceUrl) {
      return;
    }
    const draftKey = getDraftAssetRegistryKey(assetIds);
    const responseKey = getResponseAssetRegistryKey(assetIds);
    if (draftKey) {
      originalAssetUrlRegistry.set(draftKey, normalizedSourceUrl);
    }
    if (responseKey) {
      originalAssetUrlRegistry.set(responseKey, normalizedSourceUrl);
    }
    const sessionKey = imageSessionStore?.getOrCreateByAssetIds?.(assetIds) || "";
    if (sessionKey) {
      imageSessionStore.updateOriginalSource?.(sessionKey, normalizedSourceUrl);
    }
  }
  function resolveRememberedOriginalAssetUrl(assetIds = null) {
    if (!assetIds) {
      return "";
    }
    const draftKey = getDraftAssetRegistryKey(assetIds);
    if (draftKey && originalAssetUrlRegistry.has(draftKey)) {
      return originalAssetUrlRegistry.get(draftKey) || "";
    }
    const responseKey = getResponseAssetRegistryKey(assetIds);
    if (responseKey && originalAssetUrlRegistry.has(responseKey)) {
      return originalAssetUrlRegistry.get(responseKey) || "";
    }
    return "";
  }
  function resolveRememberedPreviewSourceUrl(assetIds = null, {
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    const sessionKey = imageSessionStore?.getOrCreateByAssetIds?.(assetIds) || "";
    if (!sessionKey) {
      return "";
    }
    const previewUrl = imageSessionStore?.getSnapshot?.(sessionKey)?.sources?.previewUrl || "";
    return typeof previewUrl === "string" ? previewUrl.trim() : "";
  }
  function trimRememberedPreviewResultRegistry() {
    while (previewProcessedResultRegistry.size > MAX_REMEMBERED_PREVIEW_RESULT_REGISTRY_SIZE) {
      const oldestKey = previewProcessedResultRegistry.keys().next().value;
      if (typeof oldestKey !== "string" || !oldestKey) {
        break;
      }
      previewProcessedResultRegistry.delete(oldestKey);
    }
  }
  function rememberProcessedPreviewResult(sourceUrl = "", payload = {}, {
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    const normalizedSourceUrl = typeof sourceUrl === "string" ? normalizeGoogleusercontentImageUrl(sourceUrl.trim()) : "";
    const sessionKey = typeof payload?.sessionKey === "string" && payload.sessionKey.trim() ? payload.sessionKey.trim() : imageSessionStore?.getOrCreateByAssetIds?.(payload?.assetIds) || "";
    if (!normalizedSourceUrl || !sessionKey) {
      return "";
    }
    previewProcessedResultRegistry.delete(normalizedSourceUrl);
    previewProcessedResultRegistry.set(normalizedSourceUrl, {
      sourceUrl: normalizedSourceUrl,
      sessionKey,
      processedMeta: payload?.processedMeta ?? null,
      processedFrom: typeof payload?.processedFrom === "string" && payload.processedFrom.trim() ? payload.processedFrom.trim() : "request-preview"
    });
    trimRememberedPreviewResultRegistry();
    return normalizedSourceUrl;
  }
  function resolveRememberedProcessedPreviewResult(sourceUrl = "", {
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    const normalizedSourceUrl = typeof sourceUrl === "string" ? normalizeGoogleusercontentImageUrl(sourceUrl.trim()) : "";
    if (!normalizedSourceUrl) {
      return null;
    }
    const rememberedEntry = previewProcessedResultRegistry.get(normalizedSourceUrl) || null;
    if (!rememberedEntry?.sessionKey) {
      return null;
    }
    const rememberedResource = imageSessionStore?.getBestResource?.(rememberedEntry.sessionKey, "display") || null;
    if (rememberedResource?.kind !== "processed" || rememberedResource.slot !== "preview" || !(rememberedResource.blob instanceof Blob)) {
      return null;
    }
    return {
      sourceUrl: normalizedSourceUrl,
      sessionKey: rememberedEntry.sessionKey,
      processedBlob: rememberedResource.blob,
      processedMeta: rememberedResource.processedMeta ?? rememberedEntry.processedMeta ?? null,
      processedFrom: rememberedResource.source || rememberedEntry.processedFrom || "request-preview"
    };
  }
  function createPreviewCandidateProcessor(processWatermarkBlobImpl, processingOptions = null) {
    return async (candidate) => {
      const originalBlob = await candidate.getOriginalBlob();
      try {
        const captureTiming = originalBlob?.__gwrCaptureTiming || null;
        const processedResult = await processWatermarkBlobImpl(
          originalBlob,
          processingOptions ? { ...processingOptions } : void 0
        );
        return {
          ...processedResult,
          captureTiming,
          sourceBlobType: originalBlob.type || "",
          sourceBlobSize: originalBlob.size || 0
        };
      } catch (error) {
        if (error && typeof error === "object") {
          error.sourceBlobType = originalBlob.type || "";
          error.sourceBlobSize = originalBlob.size || 0;
        }
        throw error;
      }
    };
  }
  async function fetchBlobDirect(url) {
    const response = await fetch(url, {
      credentials: "omit",
      redirect: "follow"
    });
    if (!response.ok) {
      throw new Error(`Failed to fetch image: ${response.status}`);
    }
    return response.blob();
  }
  async function fetchBlobFromBackground(url, fallbackFetchBlob = null) {
    if (typeof fallbackFetchBlob === "function") {
      return fallbackFetchBlob(url);
    }
    return fetchBlobDirect(url);
  }
  var pageFetchRequestCounter = 0;
  async function fetchBlobViaPageBridge(url, timeoutMs = 15e3) {
    if (typeof window === "undefined" || typeof window.postMessage !== "function" || typeof window.addEventListener !== "function") {
      throw new Error("Page fetch bridge unavailable");
    }
    const requestId = `gwr-page-fetch-${Date.now()}-${pageFetchRequestCounter += 1}`;
    return new Promise((resolve, reject) => {
      let settled = false;
      const cleanup = () => {
        if (settled) return;
        settled = true;
        window.removeEventListener("message", handleMessage);
        globalThis.clearTimeout(timeoutId);
      };
      const handleMessage = (event) => {
        if (event.source !== window) return;
        if (event.data?.type !== PAGE_FETCH_RESPONSE) return;
        if (event.data?.requestId !== requestId) return;
        cleanup();
        if (event.data?.ok === false) {
          reject(new Error(normalizeErrorMessage(event.data?.error, "Page fetch failed")));
          return;
        }
        const blobMimeType = resolveFetchedImageMimeType(event.data?.mimeType, event.data?.buffer);
        resolve(new Blob([event.data.buffer], { type: blobMimeType }));
      };
      const timeoutId = globalThis.setTimeout(() => {
        cleanup();
        reject(new Error("Page fetch bridge timed out"));
      }, timeoutMs);
      window.addEventListener("message", handleMessage);
      window.postMessage({
        type: PAGE_FETCH_REQUEST,
        requestId,
        url
      }, "*");
    });
  }
  async function imageElementToBlob(imageElement) {
    const startedAt = nowMs2();
    const waitStartedAt = nowMs2();
    const { width, height } = await waitForRenderableImageSize(imageElement);
    const waitRenderableMs = nowMs2() - waitStartedAt;
    const canvas = document.createElement("canvas");
    canvas.width = width;
    canvas.height = height;
    const context = canvas.getContext("2d");
    if (!context) {
      throw new Error("2D canvas context unavailable");
    }
    const drawStartedAt = nowMs2();
    context.drawImage(imageElement, 0, 0, width, height);
    const drawMs = nowMs2() - drawStartedAt;
    const encodeStartedAt = nowMs2();
    const blob = await canvasToBlob(canvas);
    const encodeMs = nowMs2() - encodeStartedAt;
    blob.__gwrCaptureTiming = {
      waitRenderableMs,
      drawMs,
      encodeMs,
      totalMs: nowMs2() - startedAt,
      width,
      height
    };
    return blob;
  }
  function normalizeCaptureRect(rect) {
    if (!rect || typeof rect !== "object") return null;
    const left = Number(rect.left);
    const top = Number(rect.top);
    const width = Number(rect.width);
    const height = Number(rect.height);
    if (![left, top, width, height].every(Number.isFinite)) {
      return null;
    }
    return {
      left,
      top,
      width: Math.max(0, width),
      height: Math.max(0, height)
    };
  }
  function waitForNextFrame() {
    return new Promise((resolve) => {
      if (typeof requestAnimationFrame === "function") {
        requestAnimationFrame(() => resolve());
        return;
      }
      globalThis.setTimeout(resolve, 16);
    });
  }
  function getRenderableImageSize(imageElement) {
    const width = Number(imageElement?.naturalWidth) || Number(imageElement?.width) || Number(imageElement?.clientWidth) || 0;
    const height = Number(imageElement?.naturalHeight) || Number(imageElement?.height) || Number(imageElement?.clientHeight) || 0;
    return { width, height };
  }
  function isPreviewImageRenderable(imageElement) {
    return Boolean(imageElement?.complete) && (Number(imageElement?.naturalWidth) || 0) > 0 && (Number(imageElement?.naturalHeight) || 0) > 0;
  }
  async function waitForRenderableImageSize(imageElement, timeoutMs = 1500) {
    let size = getRenderableImageSize(imageElement);
    if (size.width > 0 && size.height > 0) {
      return size;
    }
    if (typeof imageElement?.decode === "function") {
      try {
        await imageElement.decode();
      } catch {
      }
      size = getRenderableImageSize(imageElement);
      if (size.width > 0 && size.height > 0) {
        return size;
      }
    }
    const deadline = Date.now() + Math.max(0, timeoutMs);
    while (Date.now() < deadline) {
      await waitForNextFrame();
      size = getRenderableImageSize(imageElement);
      if (size.width > 0 && size.height > 0) {
        return size;
      }
    }
    throw new Error("Image has no renderable size");
  }
  function hasConfirmedGeminiPreviewMeta(processedMeta) {
    return classifyGeminiAttributionFromWatermarkMeta(processedMeta).tier !== "insufficient";
  }
  function isSafePreviewFallbackStrategy(strategy) {
    return strategy === "rendered-capture";
  }
  function isBlobLike(value) {
    return Boolean(value) && typeof value === "object" && typeof value.size === "number" && typeof value.type === "string" && typeof value.arrayBuffer === "function";
  }
  function summarizeCandidateDiagnostics(diagnostics) {
    if (!Array.isArray(diagnostics) || diagnostics.length === 0) {
      return "";
    }
    return diagnostics.map((item) => {
      const parts = [item.strategy || "unknown", item.status || "unknown"];
      if (item.decisionTier) parts.push(`tier=${item.decisionTier}`);
      if (item.processorPath) parts.push(`processor=${item.processorPath}`);
      if (typeof item.sourceBlobSize === "number") parts.push(`sourceSize=${item.sourceBlobSize}`);
      if (item.sourceBlobType) parts.push(`sourceType=${item.sourceBlobType}`);
      if (typeof item.processedBlobSize === "number") parts.push(`processedSize=${item.processedBlobSize}`);
      if (item.processedBlobType) parts.push(`processedType=${item.processedBlobType}`);
      if (item.error) parts.push(`error=${item.error}`);
      return parts.join(",");
    }).join(" | ");
  }
  function shouldSkipPreviewProcessingFailure(diagnostics = []) {
    if (!Array.isArray(diagnostics) || diagnostics.length === 0) {
      return false;
    }
    const pageFetchFailure = diagnostics.find((item) => item?.strategy === "page-fetch");
    const renderedCaptureFailure = diagnostics.find((item) => item?.strategy === "rendered-capture");
    const pageFetchError = String(pageFetchFailure?.error || "");
    const renderedCaptureError = String(renderedCaptureFailure?.error || "");
    return pageFetchFailure?.status === "error" && /failed to fetch image: 403/i.test(pageFetchError) && renderedCaptureFailure?.status === "error" && /tainted canvases may not be exported/i.test(renderedCaptureError);
  }
  async function resolvePreviewReplacementResult({
    candidates = [],
    processCandidate
  }) {
    let lastError = null;
    let sawInsufficientCandidate = false;
    let fallbackResult = null;
    const diagnostics = [];
    for (const candidate of candidates) {
      try {
        const result = await processCandidate(candidate);
        const confirmed = hasConfirmedGeminiPreviewMeta(result?.processedMeta);
        const decisionTier = classifyGeminiAttributionFromWatermarkMeta(result?.processedMeta).tier || "insufficient";
        diagnostics.push({
          strategy: candidate.strategy || "",
          status: confirmed ? "confirmed" : "insufficient",
          decisionTier,
          captureTiming: result?.captureTiming || null,
          processorPath: typeof result?.processedMeta?.processorPath === "string" ? result.processedMeta.processorPath : "",
          sourceBlobType: result?.sourceBlobType || "",
          sourceBlobSize: typeof result?.sourceBlobSize === "number" ? result.sourceBlobSize : void 0,
          processedBlobType: result?.processedBlob?.type || "",
          processedBlobSize: typeof result?.processedBlob?.size === "number" ? result.processedBlob.size : void 0
        });
        if (confirmed) {
          return {
            ...result,
            strategy: candidate.strategy || "",
            diagnostics,
            diagnosticsSummary: summarizeCandidateDiagnostics(diagnostics)
          };
        }
        sawInsufficientCandidate = true;
        if (isSafePreviewFallbackStrategy(candidate.strategy) && isBlobLike(result?.processedBlob)) {
          const nextFallbackResult = {
            ...result,
            strategy: candidate.strategy || "",
            diagnostics: [...diagnostics],
            diagnosticsSummary: summarizeCandidateDiagnostics(diagnostics)
          };
          if (!fallbackResult) {
            fallbackResult = nextFallbackResult;
          }
        }
      } catch (error2) {
        lastError = error2;
        diagnostics.push({
          strategy: candidate.strategy || "",
          status: "error",
          sourceBlobType: typeof error2?.sourceBlobType === "string" ? error2.sourceBlobType : "",
          sourceBlobSize: typeof error2?.sourceBlobSize === "number" ? error2.sourceBlobSize : void 0,
          error: normalizeErrorMessage(error2)
        });
      }
    }
    if (fallbackResult) {
      return fallbackResult;
    }
    if (lastError) {
      const wrappedError = new Error(normalizeErrorMessage(lastError, "Preview candidate failed"));
      wrappedError.candidateDiagnostics = diagnostics;
      wrappedError.candidateDiagnosticsSummary = summarizeCandidateDiagnostics(diagnostics);
      throw wrappedError;
    }
    if (sawInsufficientCandidate) {
      const error2 = new Error("No confirmed Gemini preview candidate succeeded");
      error2.candidateDiagnostics = diagnostics;
      error2.candidateDiagnosticsSummary = summarizeCandidateDiagnostics(diagnostics);
      throw error2;
    }
    const error = new Error("No preview candidate succeeded");
    error.candidateDiagnostics = diagnostics;
    error.candidateDiagnosticsSummary = summarizeCandidateDiagnostics(diagnostics);
    throw error;
  }
  function buildPreviewReplacementCandidates({
    imageElement,
    sourceUrl = "",
    fetchPreviewBlob = fetchBlobViaPageBridge,
    captureRenderedImageBlob = imageElementToBlob
  }) {
    const candidates = [];
    const normalizedPreviewUrl = sourceUrl ? normalizeGoogleusercontentImageUrl(sourceUrl) : "";
    if (typeof fetchPreviewBlob === "function" && normalizedPreviewUrl) {
      candidates.push({
        strategy: "page-fetch",
        getOriginalBlob: () => fetchPreviewBlob(normalizedPreviewUrl)
      });
    }
    if (typeof captureRenderedImageBlob === "function") {
      candidates.push({
        strategy: "rendered-capture",
        getOriginalBlob: () => captureRenderedImageBlob(imageElement)
      });
    }
    return candidates;
  }
  async function processPreviewPageImageSource({
    sourceUrl,
    imageElement,
    fetchPreviewBlob = fetchBlobViaPageBridge,
    processWatermarkBlobImpl = processWatermarkBlob,
    captureRenderedImageBlob = imageElementToBlob
  }) {
    try {
      const previewResult = await resolvePreviewReplacementResult({
        candidates: buildPreviewReplacementCandidates({
          imageElement,
          sourceUrl,
          fetchPreviewBlob,
          captureRenderedImageBlob
        }),
        processCandidate: createPreviewCandidateProcessor(processWatermarkBlobImpl)
      });
      return {
        skipped: false,
        processedBlob: previewResult.processedBlob,
        selectedStrategy: previewResult.strategy || "",
        candidateDiagnostics: previewResult.diagnostics || null,
        candidateDiagnosticsSummary: previewResult.diagnosticsSummary || "",
        captureTiming: previewResult.captureTiming || null
      };
    } catch (error) {
      const diagnostics = getErrorCandidateDiagnostics(error) || [];
      if (shouldSkipPreviewProcessingFailure(diagnostics)) {
        return {
          skipped: true,
          reason: "preview-fetch-unavailable",
          candidateDiagnostics: diagnostics,
          candidateDiagnosticsSummary: getErrorCandidateDiagnosticsSummary(error)
        };
      }
      throw error;
    }
  }
  async function processOriginalPageImageSource({
    sourceUrl,
    imageElement,
    fetchPreviewBlob = fetchBlobViaPageBridge,
    removeWatermarkFromBlobImpl = removeWatermarkFromBlob,
    captureRenderedImageBlob = imageElementToBlob,
    fetchBlobDirectImpl = fetchBlobDirect,
    validateBlob = loadImageFromBlob,
    fetchBlobFromBackgroundImpl = fetchBlobFromBackground,
    preferRenderedCaptureForPreview = true,
    allowRenderedCaptureFallbackOnValidationFailure = true,
    rejectPreviewAspectMismatch = false
  }) {
    let validatedRenderable = null;
    const validateOriginalBlob = typeof validateBlob === "function" ? async (blob) => {
      const renderable = await validateBlob(blob);
      validatedRenderable = renderable;
      return renderable;
    } : null;
    const originalBlob = await acquireOriginalBlob({
      sourceUrl,
      image: imageElement,
      fetchBlobFromBackground: async (url) => fetchBlobFromBackgroundImpl(
        normalizeGoogleusercontentImageUrl(url),
        fetchPreviewBlob
      ),
      fetchBlobDirect: fetchBlobDirectImpl,
      captureRenderedImageBlob,
      validateBlob: validateOriginalBlob,
      preferRenderedCaptureForPreview,
      preferRenderedCaptureForBlobUrl: true,
      allowRenderedCaptureFallbackOnValidationFailure
    });
    if (rejectPreviewAspectMismatch && shouldRejectPreviewOriginalBlobByAspectRatio(validatedRenderable, imageElement)) {
      throw new Error("Preview source aspect ratio mismatches visible preview");
    }
    return {
      skipped: false,
      processedBlob: await removeWatermarkFromBlobImpl(originalBlob),
      selectedStrategy: "",
      candidateDiagnostics: null,
      candidateDiagnosticsSummary: ""
    };
  }
  async function processPageImageSource({
    sourceUrl,
    imageElement,
    fetchPreviewBlob = fetchBlobViaPageBridge,
    processWatermarkBlobImpl = processWatermarkBlob,
    removeWatermarkFromBlobImpl = removeWatermarkFromBlob,
    captureRenderedImageBlob = imageElementToBlob,
    fetchBlobDirectImpl = fetchBlobDirect,
    validateBlob = loadImageFromBlob,
    fetchBlobFromBackgroundImpl = fetchBlobFromBackground
  }) {
    const treatAsPreviewSource = shouldTreatPageImageSourceAsPreview(imageElement, sourceUrl);
    if (treatAsPreviewSource) {
      if (!isBlobPageImageSource(sourceUrl) && isGeminiDisplayPreviewAssetUrl(sourceUrl)) {
        try {
          return await processOriginalPageImageSource({
            sourceUrl,
            imageElement,
            fetchPreviewBlob,
            removeWatermarkFromBlobImpl,
            captureRenderedImageBlob,
            fetchBlobDirectImpl,
            validateBlob,
            fetchBlobFromBackgroundImpl,
            preferRenderedCaptureForPreview: false,
            rejectPreviewAspectMismatch: true
          });
        } catch {
        }
      }
      return processPreviewPageImageSource({
        sourceUrl,
        imageElement,
        fetchPreviewBlob: isBlobPageImageSource(sourceUrl) ? null : fetchPreviewBlob,
        processWatermarkBlobImpl,
        captureRenderedImageBlob
      });
    }
    return processOriginalPageImageSource({
      sourceUrl,
      imageElement,
      fetchPreviewBlob,
      removeWatermarkFromBlobImpl,
      captureRenderedImageBlob,
      fetchBlobDirectImpl,
      validateBlob,
      fetchBlobFromBackgroundImpl,
      preferRenderedCaptureForPreview: isGeminiDisplayPreviewAssetUrl(sourceUrl) && !hasExplicitBoundSourceUrl(imageElement, sourceUrl)
    });
  }
  function addProcessableCandidateImage(candidates, imageElement) {
    if (isProcessableGeminiImageElement(imageElement)) {
      candidates.add(imageElement);
    }
  }
  function collectCandidateImages(root) {
    const candidates = /* @__PURE__ */ new Set();
    if (root instanceof HTMLImageElement) {
      addProcessableCandidateImage(candidates, root);
    }
    if (typeof root?.querySelectorAll === "function") {
      for (const image of root.querySelectorAll(getGeminiImageQuerySelector())) {
        addProcessableCandidateImage(candidates, image);
      }
      for (const image of root.querySelectorAll("img")) {
        addProcessableCandidateImage(candidates, image);
      }
    }
    return [...candidates];
  }
  function hasRelevantDescendant(root) {
    if (!root || typeof root.querySelector !== "function") {
      return false;
    }
    const containerSelector = getGeminiImageContainerSelector();
    if (root.querySelector(containerSelector)) {
      return true;
    }
    return Boolean(root.querySelector("img") && root.querySelector('button,[role="button"]'));
  }
  function shouldScheduleMutationRoot(root) {
    if (!root || typeof root !== "object") {
      return false;
    }
    const tagName = typeof root.tagName === "string" ? root.tagName.toUpperCase() : "";
    if (!tagName) {
      return false;
    }
    if (tagName === "IMG" || tagName === "GENERATED-IMAGE") {
      return true;
    }
    const containerSelector = getGeminiImageContainerSelector();
    if (typeof root.matches === "function" && root.matches(containerSelector)) {
      return true;
    }
    return hasRelevantDescendant(root);
  }
  function shouldScheduleAttributeMutation(target, attributeName = "") {
    if (!target || typeof target !== "object") {
      return false;
    }
    const normalizedAttributeName = typeof attributeName === "string" ? attributeName.trim().toLowerCase() : "";
    if (!normalizedAttributeName) {
      return true;
    }
    if (normalizedAttributeName === "data-gwr-stable-source") {
      return false;
    }
    if (normalizedAttributeName !== "src" && normalizedAttributeName !== "srcset") {
      return true;
    }
    return !isSelfWrittenProcessedImageSource(target);
  }
  function isSelfWrittenProcessedImageSource(target) {
    const trackedObjectUrl = typeof target?.dataset?.[PAGE_IMAGE_OBJECT_URL_KEY] === "string" ? target.dataset[PAGE_IMAGE_OBJECT_URL_KEY].trim() : "";
    if (!trackedObjectUrl) {
      return false;
    }
    const currentSrc = typeof target?.currentSrc === "string" ? target.currentSrc.trim() : "";
    const src = typeof target?.src === "string" ? target.src.trim() : "";
    return currentSrc === trackedObjectUrl || src === trackedObjectUrl;
  }
  function handlePageImageMutations(mutations, {
    scheduleProcess,
    HTMLImageElementClass = globalThis.HTMLImageElement
  } = {}) {
    if (typeof scheduleProcess !== "function" || !Array.isArray(mutations) || mutations.length === 0) {
      return;
    }
    const hasImageElementClass = typeof HTMLImageElementClass === "function";
    for (const mutation of mutations) {
      if (mutation?.type === "attributes") {
        if (!hasImageElementClass || !(mutation.target instanceof HTMLImageElementClass)) {
          continue;
        }
        if (!shouldScheduleAttributeMutation(mutation.target, mutation.attributeName)) {
          continue;
        }
        scheduleProcess(mutation.target);
        continue;
      }
      if (mutation?.type !== "childList" || !mutation.addedNodes) {
        continue;
      }
      for (const node of mutation.addedNodes) {
        if (shouldScheduleMutationRoot(node)) {
          scheduleProcess(node);
        }
      }
    }
  }
  function scheduleOnNextFrame(callback) {
    if (typeof requestAnimationFrame === "function") {
      requestAnimationFrame(() => callback());
      return;
    }
    globalThis.setTimeout(callback, 16);
  }
  function scheduleOnIdle(callback) {
    if (typeof requestIdleCallback === "function") {
      requestIdleCallback(() => callback(), { timeout: 120 });
      return;
    }
    globalThis.setTimeout(callback, 32);
  }
  function doesRootContain(containerRoot, candidateRoot) {
    if (!containerRoot || !candidateRoot || containerRoot === candidateRoot) {
      return false;
    }
    if (typeof containerRoot.contains === "function") {
      try {
        return containerRoot.contains(candidateRoot);
      } catch {
        return false;
      }
    }
    return false;
  }
  function createRootBatchProcessor({
    processRoot,
    scheduleFlush = scheduleOnNextFrame
  } = {}) {
    const pendingRoots = /* @__PURE__ */ new Set();
    let scheduled = false;
    function flush() {
      scheduled = false;
      const roots = [...pendingRoots];
      pendingRoots.clear();
      for (const root of roots) {
        processRoot(root);
      }
    }
    function schedule(root = document) {
      for (const pendingRoot of pendingRoots) {
        if (pendingRoot === root || doesRootContain(pendingRoot, root)) {
          return;
        }
      }
      for (const pendingRoot of [...pendingRoots]) {
        if (doesRootContain(root, pendingRoot)) {
          pendingRoots.delete(pendingRoot);
        }
      }
      pendingRoots.add(root);
      if (scheduled) return;
      scheduled = true;
      scheduleFlush(flush);
    }
    return {
      schedule,
      flush
    };
  }
  function createProcessingOverlayElement(createElement) {
    const overlay = createElement("div");
    overlay.dataset[PROCESSING_OVERLAY_DATA_KEY] = "true";
    overlay.textContent = "Processing...";
    if (overlay.style && typeof overlay.style === "object") {
      Object.assign(overlay.style, {
        position: "absolute",
        inset: "0",
        display: "flex",
        alignItems: "center",
        justifyContent: "center",
        padding: "16px",
        pointerEvents: "none",
        borderRadius: "inherit",
        background: "rgba(17, 17, 17, 0.16)",
        backdropFilter: "blur(2px)",
        color: "rgba(255, 255, 255, 0.92)",
        fontSize: "13px",
        fontWeight: "500",
        letterSpacing: "0.02em",
        opacity: "1",
        transition: `opacity ${PROCESSING_OVERLAY_FADE_MS}ms ease`
      });
    }
    return overlay;
  }
  function buildProcessingFilter(previousFilter = "") {
    const tokens = [previousFilter.trim(), "blur(4px)", "brightness(0.78)"].filter(Boolean);
    return tokens.join(" ");
  }
  function showProcessingOverlay(imageElement, {
    container = getPreferredGeminiImageContainer(imageElement) || imageElement?.parentElement || null,
    createElement = (tagName) => document.createElement(tagName),
    clearTimeoutImpl = globalThis.clearTimeout?.bind(globalThis) || null
  } = {}) {
    if (!imageElement || !container || typeof container.appendChild !== "function") {
      return null;
    }
    const existingState = processingOverlayState.get(imageElement);
    if (existingState) {
      if (existingState.hideTimerId !== null && typeof clearTimeoutImpl === "function") {
        clearTimeoutImpl(existingState.hideTimerId);
        existingState.hideTimerId = null;
        existingState.hideSequence += 1;
      }
      if (existingState.overlay?.style && typeof existingState.overlay.style === "object") {
        existingState.overlay.style.opacity = "1";
      }
      return existingState.overlay;
    }
    const overlay = createProcessingOverlayElement(createElement);
    const previousFilter = typeof imageElement?.style?.filter === "string" ? imageElement.style.filter : "";
    const previousContainerPosition = typeof container?.style?.position === "string" ? container.style.position : "";
    const didOverrideContainerPosition = Boolean(
      container.style && (!container.style.position || container.style.position === "static")
    );
    if (didOverrideContainerPosition) {
      container.style.position = "relative";
    }
    container.appendChild(overlay);
    if (imageElement.style && typeof imageElement.style === "object") {
      imageElement.style.filter = buildProcessingFilter(previousFilter);
    }
    if (imageElement.dataset) {
      imageElement.dataset[PROCESSING_VISUAL_DATA_KEY] = "true";
    }
    processingOverlayState.set(imageElement, {
      overlay,
      container,
      previousFilter,
      previousContainerPosition,
      didOverrideContainerPosition,
      hideTimerId: null,
      hideSequence: 0
    });
    return overlay;
  }
  function hideProcessingOverlay(imageElement, {
    removeImmediately = false,
    setTimeoutImpl = globalThis.setTimeout?.bind(globalThis) || null,
    clearTimeoutImpl = globalThis.clearTimeout?.bind(globalThis) || null
  } = {}) {
    const state = processingOverlayState.get(imageElement);
    if (!state) return;
    const nextHideSequence = state.hideSequence + 1;
    state.hideSequence = nextHideSequence;
    const cleanup = () => {
      if (processingOverlayState.get(imageElement) !== state) {
        return;
      }
      if (state.hideSequence !== nextHideSequence) {
        return;
      }
      if (state.overlay?.parentNode && typeof state.overlay.parentNode.removeChild === "function") {
        state.overlay.parentNode.removeChild(state.overlay);
      }
      if (imageElement?.style && typeof imageElement.style === "object") {
        imageElement.style.filter = state.previousFilter;
      }
      if (imageElement?.dataset) {
        delete imageElement.dataset[PROCESSING_VISUAL_DATA_KEY];
      }
      if (state.didOverrideContainerPosition && state.container?.style && typeof state.container.style === "object" && state.container.style.position === "relative") {
        state.container.style.position = state.previousContainerPosition;
      }
      state.hideTimerId = null;
      processingOverlayState.delete(imageElement);
    };
    if (removeImmediately || typeof setTimeoutImpl !== "function") {
      if (state.hideTimerId !== null && typeof clearTimeoutImpl === "function") {
        clearTimeoutImpl(state.hideTimerId);
        state.hideTimerId = null;
      }
      cleanup();
      return;
    }
    if (state.hideTimerId !== null && typeof clearTimeoutImpl === "function") {
      clearTimeoutImpl(state.hideTimerId);
    }
    if (state.overlay?.style && typeof state.overlay.style === "object") {
      state.overlay.style.opacity = "0";
    }
    state.hideTimerId = setTimeoutImpl(cleanup, PROCESSING_OVERLAY_FADE_MS);
  }
  function revokeTrackedObjectUrl(imageElement) {
    const previewState = previewOverlayState.get(imageElement);
    if (previewState?.overlay?.parentNode && typeof previewState.overlay.parentNode.removeChild === "function") {
      previewState.overlay.parentNode.removeChild(previewState.overlay);
    }
    if (previewState?.overlay?.style && typeof previewState.overlay.style === "object") {
      previewState.overlay.style.opacity = "0";
    }
    previewOverlayState.delete(imageElement);
    const objectUrl = imageElement?.dataset?.[PAGE_IMAGE_OBJECT_URL_KEY];
    if (!objectUrl) return;
    URL.revokeObjectURL(objectUrl);
    delete imageElement.dataset[PAGE_IMAGE_OBJECT_URL_KEY];
  }
  function resolveImageOverlayBox(imageElement, container) {
    const imageRect = normalizeCaptureRect(imageElement?.getBoundingClientRect?.());
    const containerRect = normalizeCaptureRect(container?.getBoundingClientRect?.());
    if (!imageRect || !containerRect) {
      return null;
    }
    const left = imageRect.left - containerRect.left;
    const top = imageRect.top - containerRect.top;
    if (![left, top].every(Number.isFinite)) {
      return null;
    }
    if (imageRect.width <= 0 || imageRect.height <= 0) {
      return null;
    }
    return {
      left,
      top,
      width: imageRect.width,
      height: imageRect.height
    };
  }
  function findContainerChildForDescendant(container, descendant) {
    let current = descendant;
    const getParent = (node) => node?.parentElement || node?.parentNode || null;
    while (getParent(current) && getParent(current) !== container) {
      current = getParent(current);
    }
    if (getParent(current) === container) {
      return current;
    }
    return null;
  }
  function resolvePreviewOverlayMount(imageElement) {
    const container = getPreferredGeminiImageContainer(imageElement) || imageElement?.parentElement || null;
    if (!container) {
      return {
        container: null,
        referenceNode: null
      };
    }
    const controls = typeof container.querySelector === "function" ? container.querySelector(".generated-image-controls") : null;
    const controlsParent = controls?.parentElement || controls?.parentNode || null;
    if (controlsParent && typeof controlsParent.appendChild === "function") {
      return {
        container: controlsParent,
        referenceNode: controls
      };
    }
    return {
      container,
      referenceNode: findContainerChildForDescendant(container, controls)
    };
  }
  function applySkippedImageState(imageElement) {
    imageElement.dataset[PAGE_IMAGE_STATE_KEY] = "skipped";
    hideProcessingOverlay(imageElement, { removeImmediately: true });
  }
  function applyReadyImageState(imageElement, processedBlob, {
    imageSessionStore = getDefaultImageSessionStore(),
    processedMeta = null,
    processedFrom = "",
    processedSlot = "preview"
  } = {}) {
    const objectUrl = URL.createObjectURL(processedBlob);
    revokeTrackedObjectUrl(imageElement);
    imageElement.dataset[PAGE_IMAGE_OBJECT_URL_KEY] = objectUrl;
    imageElement.dataset[PAGE_IMAGE_STATE_KEY] = "ready";
    const assetIds = readAssetIdsFromImageDataset(imageElement) || extractGeminiImageAssetIds(imageElement);
    const sessionKey = imageSessionStore?.getOrCreateByAssetIds?.(assetIds) || "";
    if (sessionKey) {
      imageSessionStore.attachElement?.(
        sessionKey,
        resolveImageSessionSurfaceType(imageElement),
        imageElement
      );
      imageSessionStore.updateProcessedResult?.(sessionKey, {
        slot: processedSlot,
        objectUrl,
        blob: processedBlob || null,
        blobType: processedBlob?.type || "",
        processedMeta,
        processedFrom
      });
      imageSessionStore.markProcessing?.(
        sessionKey,
        resolveImageSessionSurfaceType(imageElement),
        "ready"
      );
    }
    const { container, referenceNode } = resolvePreviewOverlayMount(imageElement);
    if (container && typeof container.appendChild === "function") {
      const overlay = document.createElement("div");
      overlay.dataset[PREVIEW_OVERLAY_DATA_KEY] = "true";
      const overlayBox = resolveImageOverlayBox(imageElement, container);
      if (overlay.style && typeof overlay.style === "object") {
        Object.assign(overlay.style, {
          position: "absolute",
          inset: overlayBox ? "auto" : "0",
          left: overlayBox ? `${overlayBox.left}px` : "0",
          top: overlayBox ? `${overlayBox.top}px` : "0",
          width: overlayBox ? `${overlayBox.width}px` : "100%",
          height: overlayBox ? `${overlayBox.height}px` : "100%",
          pointerEvents: "none",
          backgroundImage: `url("${objectUrl}")`,
          backgroundPosition: "center",
          backgroundRepeat: "no-repeat",
          backgroundSize: "contain"
        });
      }
      if (container.style && typeof container.style === "object" && (!container.style.position || container.style.position === "static")) {
        container.style.position = "relative";
      }
      if (referenceNode && typeof container.insertBefore === "function") {
        container.insertBefore(overlay, referenceNode);
      } else {
        container.appendChild(overlay);
      }
      previewOverlayState.set(imageElement, {
        overlay
      });
    }
    hideProcessingOverlay(imageElement);
  }
  function applyFailedImageState(imageElement) {
    imageElement.dataset[PAGE_IMAGE_STATE_KEY] = "failed";
    hideProcessingOverlay(imageElement, { removeImmediately: true });
  }
  function preparePageImageProcessing(imageElement, {
    processing = null,
    HTMLImageElementClass = globalThis.HTMLImageElement,
    isProcessableImage = isProcessableGeminiImageElement,
    resolveSourceUrl = resolveCandidateImageUrl,
    resolveAssetIds = extractGeminiImageAssetIds,
    imageSessionStore = getDefaultImageSessionStore(),
    hideProcessingOverlayImpl = hideProcessingOverlay,
    revokeTrackedObjectUrlImpl = revokeTrackedObjectUrl,
    showProcessingOverlayImpl = showProcessingOverlay
  } = {}) {
    const isHtmlImageElement = typeof HTMLImageElementClass === "function" && imageElement instanceof HTMLImageElementClass;
    const isImageLikeElement = typeof imageElement?.tagName === "string" && imageElement.tagName.toUpperCase() === "IMG";
    if (!isHtmlImageElement && !isImageLikeElement) {
      return null;
    }
    if (typeof isProcessableImage === "function" && !isProcessableImage(imageElement)) {
      return null;
    }
    let sourceUrl = typeof resolveSourceUrl === "function" ? String(resolveSourceUrl(imageElement) || "").trim() : "";
    const dataset = imageElement.dataset || (imageElement.dataset = {});
    const assetIds = typeof resolveAssetIds === "function" ? resolveAssetIds(imageElement) : null;
    const rememberedSourceUrl = resolveRememberedOriginalAssetUrl(assetIds);
    const rememberedPreviewSourceUrl = isBlobPageImageSource(sourceUrl) || isDataPageImageSource(sourceUrl) ? resolveRememberedPreviewSourceUrl(assetIds, { imageSessionStore }) : "";
    const rememberedBoundSourceUrl = rememberedSourceUrl || rememberedPreviewSourceUrl;
    if (rememberedBoundSourceUrl && (!dataset.gwrSourceUrl || isBlobPageImageSource(sourceUrl) || isDataPageImageSource(sourceUrl))) {
      dataset.gwrSourceUrl = rememberedBoundSourceUrl;
      sourceUrl = rememberedBoundSourceUrl;
    }
    if (!sourceUrl) {
      return null;
    }
    const lastSourceUrl = dataset[PAGE_IMAGE_SOURCE_KEY] || "";
    const lastState = dataset[PAGE_IMAGE_STATE_KEY] || "";
    if (lastSourceUrl === sourceUrl && lastState === "ready") {
      return null;
    }
    if (typeof processing?.has === "function" && processing.has(imageElement)) {
      return null;
    }
    if (lastSourceUrl && lastSourceUrl !== sourceUrl) {
      hideProcessingOverlayImpl(imageElement, { removeImmediately: true });
      revokeTrackedObjectUrlImpl(imageElement);
    }
    if (typeof processing?.add === "function") {
      processing.add(imageElement);
    }
    const surfaceType = resolveImageSessionSurfaceType(imageElement);
    const sessionKey = imageSessionStore?.getOrCreateByAssetIds?.(assetIds) || "";
    const isPreviewSource = shouldTreatPageImageSourceAsPreview(imageElement, sourceUrl);
    if (sessionKey) {
      imageSessionStore.attachElement?.(sessionKey, surfaceType, imageElement);
      if (isPreviewSource) {
        const existingPreviewResource = imageSessionStore.getBestResource?.(sessionKey, "display") || null;
        if (existingPreviewResource?.kind === "processed" && existingPreviewResource.slot === "preview" && existingPreviewResource.source === "request-preview") {
          return null;
        }
      }
      imageSessionStore.updateSourceSnapshot?.(sessionKey, {
        sourceUrl,
        isPreviewSource
      });
      imageSessionStore.markProcessing?.(sessionKey, surfaceType, "processing");
    }
    dataset.gwrStableSource = sourceUrl;
    dataset[PAGE_IMAGE_SOURCE_KEY] = sourceUrl;
    dataset[PAGE_IMAGE_STATE_KEY] = "processing";
    if (assetIds?.responseId) {
      dataset[PAGE_IMAGE_RESPONSE_ID_KEY] = assetIds.responseId;
    } else {
      delete dataset[PAGE_IMAGE_RESPONSE_ID_KEY];
    }
    if (assetIds?.draftId) {
      dataset[PAGE_IMAGE_DRAFT_ID_KEY] = assetIds.draftId;
    } else {
      delete dataset[PAGE_IMAGE_DRAFT_ID_KEY];
    }
    if (assetIds?.conversationId) {
      dataset[PAGE_IMAGE_CONVERSATION_ID_KEY] = assetIds.conversationId;
    } else {
      delete dataset[PAGE_IMAGE_CONVERSATION_ID_KEY];
    }
    showProcessingOverlayImpl(imageElement);
    return {
      sessionKey,
      surfaceType,
      sourceUrl,
      normalizedUrl: normalizeGoogleusercontentImageUrl(sourceUrl),
      isPreviewSource,
      assetIds: {
        responseId: assetIds?.responseId || null,
        draftId: assetIds?.draftId || null,
        conversationId: assetIds?.conversationId || null
      }
    };
  }
  function emitPageImageProcessingStart({
    logger = console,
    onLog = null,
    sourceUrl,
    normalizedUrl,
    isPreviewSource = false
  } = {}) {
    emitPageImageProcessEvent({
      logger,
      onLog,
      consoleMessage: "[Gemini Watermark Remover] page image process start",
      eventType: "page-image-process-start",
      payload: {
        sourceUrl,
        normalizedUrl
      }
    });
    if (!isPreviewSource) {
      return;
    }
    emitPageImageProcessEvent({
      logger,
      onLog,
      consoleMessage: "[Gemini Watermark Remover] page image process strategy",
      eventType: "page-image-process-strategy",
      payload: {
        sourceUrl,
        strategy: "preview-candidate-fallback"
      }
    });
  }
  function applyPageImageProcessingResult({
    imageElement,
    sourceUrl,
    normalizedUrl,
    isPreviewSource = false,
    sourceResult,
    imageSessionStore = getDefaultImageSessionStore(),
    logger = console,
    onLog = null
  } = {}) {
    if (sourceResult?.skipped) {
      applySkippedImageState(imageElement);
      const assetIds = readAssetIdsFromImageDataset(imageElement) || extractGeminiImageAssetIds(imageElement);
      const sessionKey = imageSessionStore?.getOrCreateByAssetIds?.(assetIds) || "";
      if (sessionKey) {
        imageSessionStore.markProcessing?.(
          sessionKey,
          resolveImageSessionSurfaceType(imageElement),
          "idle"
        );
      }
      emitPageImageProcessEvent({
        logger,
        onLog,
        consoleMessage: "[Gemini Watermark Remover] page image process skipped",
        eventType: "page-image-process-skipped",
        payload: {
          sourceUrl,
          normalizedUrl,
          reason: sourceResult.reason || "preview-fetch-unavailable",
          candidateDiagnostics: sourceResult.candidateDiagnostics,
          candidateDiagnosticsSummary: sourceResult.candidateDiagnosticsSummary || ""
        }
      });
      return;
    }
    const processedBlob = sourceResult?.processedBlob;
    const selectedStrategy = sourceResult?.selectedStrategy || "";
    const candidateDiagnostics = sourceResult?.candidateDiagnostics || null;
    const candidateDiagnosticsSummary = sourceResult?.candidateDiagnosticsSummary || "";
    const captureTiming = sourceResult?.captureTiming || null;
    applyReadyImageState(imageElement, processedBlob, {
      imageSessionStore,
      processedMeta: sourceResult?.processedMeta || null,
      processedFrom: selectedStrategy || (isPreviewSource ? "preview-candidate" : "default"),
      processedSlot: isPreviewSource ? "preview" : "full"
    });
    emitPageImageProcessEvent({
      logger,
      onLog,
      consoleMessage: "[Gemini Watermark Remover] page image process success",
      eventType: "page-image-process-success",
      payload: {
        sourceUrl,
        normalizedUrl,
        strategy: selectedStrategy || (isPreviewSource ? "preview-candidate" : "default"),
        candidateDiagnostics,
        candidateDiagnosticsSummary,
        captureTiming,
        selectionDebug: sourceResult?.processedMeta?.selectionDebug ?? null,
        blobType: processedBlob?.type || "",
        blobSize: processedBlob?.size || 0
      }
    });
  }
  function handlePageImageProcessingFailure({
    imageElement,
    sourceUrl,
    normalizedUrl,
    error,
    imageSessionStore = getDefaultImageSessionStore(),
    logger = console,
    onLog = null
  } = {}) {
    const assetIds = readAssetIdsFromImageDataset(imageElement) || extractGeminiImageAssetIds(imageElement);
    const sessionKey = imageSessionStore?.getOrCreateByAssetIds?.(assetIds) || "";
    if (sessionKey) {
      imageSessionStore.markProcessing?.(
        sessionKey,
        resolveImageSessionSurfaceType(imageElement),
        "failed",
        normalizeErrorMessage(error)
      );
    }
    emitPageImageProcessEvent({
      logger,
      onLog,
      level: "warn",
      consoleMessage: "[Gemini Watermark Remover] page image process failed",
      eventType: "page-image-process-failed",
      payload: {
        sourceUrl,
        normalizedUrl,
        error: normalizeErrorMessage(error),
        candidateDiagnostics: getErrorCandidateDiagnostics(error),
        candidateDiagnosticsSummary: getErrorCandidateDiagnosticsSummary(error)
      }
    });
    applyFailedImageState(imageElement);
  }
  function assetIdsMatch(candidate = null, target = null) {
    if (!candidate || !target) return false;
    if (candidate.draftId && target.draftId) {
      return candidate.draftId === target.draftId;
    }
    return Boolean(
      candidate.responseId && target.responseId && candidate.responseId === target.responseId && candidate.conversationId && target.conversationId && candidate.conversationId === target.conversationId
    );
  }
  function collectBindableImages(root) {
    return collectCandidateImages(root);
  }
  function bindOriginalAssetUrlToImages({
    root = document,
    assetIds = null,
    sourceUrl = "",
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    const normalizedSourceUrl = typeof sourceUrl === "string" ? sourceUrl.trim() : "";
    if (!assetIds || !normalizedSourceUrl) {
      return 0;
    }
    rememberOriginalAssetUrlBinding(assetIds, normalizedSourceUrl, {
      imageSessionStore
    });
    if (!root) {
      return 0;
    }
    let updatedCount = 0;
    for (const imageElement of collectBindableImages(root)) {
      const imageAssetIds = {
        responseId: imageElement?.dataset?.[PAGE_IMAGE_RESPONSE_ID_KEY] || null,
        draftId: imageElement?.dataset?.[PAGE_IMAGE_DRAFT_ID_KEY] || null,
        conversationId: imageElement?.dataset?.[PAGE_IMAGE_CONVERSATION_ID_KEY] || null
      };
      const resolvedImageAssetIds = imageAssetIds.responseId || imageAssetIds.draftId || imageAssetIds.conversationId ? imageAssetIds : extractGeminiImageAssetIds(imageElement);
      if (!assetIdsMatch(resolvedImageAssetIds, assetIds)) {
        continue;
      }
      const dataset = imageElement.dataset || (imageElement.dataset = {});
      if (dataset.gwrSourceUrl === normalizedSourceUrl) {
        const rememberedPreviewResult2 = resolveRememberedProcessedPreviewResult(normalizedSourceUrl, {
          imageSessionStore
        });
        if (rememberedPreviewResult2) {
          applyReadyImageState(imageElement, rememberedPreviewResult2.processedBlob, {
            imageSessionStore,
            processedMeta: rememberedPreviewResult2.processedMeta,
            processedFrom: rememberedPreviewResult2.processedFrom,
            processedSlot: "preview"
          });
        }
        continue;
      }
      dataset.gwrSourceUrl = normalizedSourceUrl;
      const rememberedPreviewResult = resolveRememberedProcessedPreviewResult(normalizedSourceUrl, {
        imageSessionStore
      });
      if (rememberedPreviewResult) {
        applyReadyImageState(imageElement, rememberedPreviewResult.processedBlob, {
          imageSessionStore,
          processedMeta: rememberedPreviewResult.processedMeta,
          processedFrom: rememberedPreviewResult.processedFrom,
          processedSlot: "preview"
        });
      }
      updatedCount += 1;
    }
    return updatedCount;
  }
  function bindProcessedPreviewResultToImages({
    root = document,
    sourceUrl = "",
    processedBlob = null,
    processedMeta = null,
    processedFrom = "request-preview",
    sessionKey = "",
    assetIds = null,
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    const normalizedSourceUrl = typeof sourceUrl === "string" ? normalizeGoogleusercontentImageUrl(sourceUrl.trim()) : "";
    if (!root || !normalizedSourceUrl || !(processedBlob instanceof Blob)) {
      return 0;
    }
    let updatedCount = 0;
    let rememberedSessionKey = typeof sessionKey === "string" ? sessionKey.trim() : "";
    for (const imageElement of collectBindableImages(root)) {
      const candidateSourceUrl = normalizeGoogleusercontentImageUrl(resolveCandidateImageUrl(imageElement) || "");
      if (candidateSourceUrl !== normalizedSourceUrl) {
        continue;
      }
      const dataset = imageElement.dataset || (imageElement.dataset = {});
      dataset.gwrSourceUrl ||= normalizedSourceUrl;
      applyReadyImageState(imageElement, processedBlob, {
        imageSessionStore,
        processedMeta,
        processedFrom,
        processedSlot: "preview"
      });
      if (!rememberedSessionKey) {
        const rememberedAssetIds = readAssetIdsFromImageDataset(imageElement) || extractGeminiImageAssetIds(imageElement);
        rememberedSessionKey = imageSessionStore.getOrCreateByAssetIds?.(rememberedAssetIds) || "";
      }
      updatedCount += 1;
    }
    rememberProcessedPreviewResult(normalizedSourceUrl, {
      sessionKey: rememberedSessionKey,
      assetIds,
      processedMeta,
      processedFrom
    }, {
      imageSessionStore
    });
    return updatedCount;
  }
  function buildPageImageSourceRequest({
    sourceUrl,
    assetIds = null,
    imageElement,
    fetchPreviewBlob,
    processWatermarkBlobImpl,
    removeWatermarkFromBlobImpl
  } = {}) {
    return {
      sourceUrl,
      assetIds,
      imageElement,
      fetchPreviewBlob,
      processWatermarkBlobImpl,
      removeWatermarkFromBlobImpl,
      captureRenderedImageBlob: imageElementToBlob,
      fetchBlobDirectImpl: fetchBlobDirect,
      validateBlob: loadImageFromBlob,
      fetchBlobFromBackgroundImpl: fetchBlobFromBackground
    };
  }
  function createPageImageReplacementController({
    logger = console,
    onLog = null,
    targetDocument = globalThis.document,
    imageSessionStore = getDefaultImageSessionStore(),
    fetchPreviewBlob = fetchBlobViaPageBridge,
    processPageImageSourceImpl = processPageImageSource,
    processWatermarkBlobImpl = processWatermarkBlob,
    removeWatermarkFromBlobImpl = removeWatermarkFromBlob,
    scheduleProcessingDrain = scheduleOnIdle,
    setTimeoutImpl = globalThis.setTimeout?.bind(globalThis) || null,
    clearTimeoutImpl = globalThis.clearTimeout?.bind(globalThis) || null
  } = {}) {
    const processing = /* @__PURE__ */ new WeakSet();
    const queued = /* @__PURE__ */ new WeakSet();
    const waitingForRenderable = /* @__PURE__ */ new WeakMap();
    const pendingImages = [];
    let observer = null;
    let drainScheduled = false;
    let drainActive = false;
    let recentImageSourceHint = null;
    function tryApplyRememberedPreviewResult(imageElement) {
      if (!imageElement || typeof imageElement !== "object") {
        return false;
      }
      const currentSourceUrl = String(resolveCandidateImageUrl(imageElement) || "").trim();
      const datasetSourceUrl = typeof imageElement?.dataset?.gwrSourceUrl === "string" ? imageElement.dataset.gwrSourceUrl.trim() : "";
      const stableSourceUrl = typeof imageElement?.dataset?.gwrStableSource === "string" ? imageElement.dataset.gwrStableSource.trim() : "";
      const candidateUrls = [datasetSourceUrl, stableSourceUrl, currentSourceUrl].filter(Boolean);
      for (const candidateUrl of candidateUrls) {
        const rememberedPreviewResult = resolveRememberedProcessedPreviewResult(candidateUrl, {
          imageSessionStore
        });
        if (!rememberedPreviewResult) {
          continue;
        }
        const dataset = imageElement.dataset || (imageElement.dataset = {});
        dataset.gwrSourceUrl ||= rememberedPreviewResult.sourceUrl;
        applyReadyImageState(imageElement, rememberedPreviewResult.processedBlob, {
          imageSessionStore,
          processedMeta: rememberedPreviewResult.processedMeta,
          processedFrom: rememberedPreviewResult.processedFrom,
          processedSlot: "preview"
        });
        return true;
      }
      return false;
    }
    function cleanupRenderableWait(imageElement) {
      const state = waitingForRenderable.get(imageElement);
      if (!state) return;
      if (typeof imageElement?.removeEventListener === "function") {
        imageElement.removeEventListener("load", state.handleReady);
        imageElement.removeEventListener("error", state.handleStop);
      }
      if (state.timeoutId !== null && typeof clearTimeoutImpl === "function") {
        clearTimeoutImpl(state.timeoutId);
      }
      waitingForRenderable.delete(imageElement);
    }
    function deferUntilRenderable(imageElement) {
      if (!imageElement || waitingForRenderable.has(imageElement)) return;
      const retry = () => {
        cleanupRenderableWait(imageElement);
        enqueueImage(imageElement);
      };
      const stopWaiting = () => {
        cleanupRenderableWait(imageElement);
      };
      const timeoutId = typeof setTimeoutImpl === "function" ? setTimeoutImpl(retry, PREVIEW_IMAGE_RENDER_RETRY_MS) : null;
      waitingForRenderable.set(imageElement, {
        handleReady: retry,
        handleStop: stopWaiting,
        timeoutId
      });
      if (typeof imageElement?.addEventListener === "function") {
        imageElement.addEventListener("load", retry, { once: true });
        imageElement.addEventListener("error", stopWaiting, { once: true });
      }
    }
    async function processImage(imageElement) {
      applyRecentImageSourceHintToImage(imageElement, recentImageSourceHint);
      if (tryApplyRememberedPreviewResult(imageElement)) {
        return;
      }
      const currentSourceUrl = String(resolveCandidateImageUrl(imageElement) || "").trim();
      if (currentSourceUrl && isBlobPageImageSource(currentSourceUrl) && !isPreviewImageRenderable(imageElement)) {
        deferUntilRenderable(imageElement);
        return;
      }
      cleanupRenderableWait(imageElement);
      const context = preparePageImageProcessing(imageElement, {
        processing,
        imageSessionStore
      });
      if (!context) return;
      const { sourceUrl, normalizedUrl, isPreviewSource, assetIds } = context;
      emitPageImageProcessingStart({
        logger,
        onLog,
        sourceUrl,
        normalizedUrl,
        isPreviewSource
      });
      try {
        const sourceResult = await processPageImageSourceImpl(buildPageImageSourceRequest({
          sourceUrl,
          assetIds,
          imageElement,
          fetchPreviewBlob,
          processWatermarkBlobImpl,
          removeWatermarkFromBlobImpl
        }));
        applyPageImageProcessingResult({
          imageElement,
          imageSessionStore,
          logger,
          onLog,
          sourceUrl,
          normalizedUrl,
          isPreviewSource,
          sourceResult
        });
      } catch (error) {
        handlePageImageProcessingFailure({
          imageElement,
          imageSessionStore,
          logger,
          onLog,
          sourceUrl,
          normalizedUrl,
          error
        });
      } finally {
        processing.delete(imageElement);
      }
    }
    async function drainQueue() {
      if (drainActive) return;
      drainActive = true;
      try {
        const imageElement = pendingImages.shift();
        if (!imageElement) return;
        queued.delete(imageElement);
        await processImage(imageElement);
      } finally {
        drainActive = false;
        if (pendingImages.length > 0) {
          scheduleDrain();
        }
      }
    }
    function scheduleDrain() {
      if (drainScheduled || drainActive) return;
      drainScheduled = true;
      scheduleProcessingDrain(() => {
        drainScheduled = false;
        void drainQueue();
      });
    }
    function enqueueImage(imageElement) {
      if (!imageElement) return;
      if (queued.has(imageElement) || processing.has(imageElement)) return;
      queued.add(imageElement);
      if (resolveImageSessionSurfaceType(imageElement) === "fullscreen") {
        pendingImages.unshift(imageElement);
      } else {
        pendingImages.push(imageElement);
      }
      scheduleDrain();
    }
    function processRoot(root = document) {
      for (const imageElement of collectCandidateImages(root)) {
        enqueueImage(imageElement);
      }
    }
    const batchProcessor = createRootBatchProcessor({ processRoot });
    const scheduleProcess = batchProcessor.schedule;
    function handlePointerIntent(event) {
      const hintedImage = resolveHintSourceImageFromEventTarget(event?.target);
      const nextHint = buildRecentImageSourceHint(hintedImage);
      if (!nextHint) {
        return;
      }
      recentImageSourceHint = nextHint;
    }
    function observe() {
      const root = targetDocument?.body || targetDocument?.documentElement;
      if (!root || observer) return;
      observer = new MutationObserver((mutations) => {
        handlePageImageMutations(mutations, {
          scheduleProcess,
          HTMLImageElementClass: HTMLImageElement
        });
      });
      observer.observe(root, {
        childList: true,
        subtree: true,
        attributes: true,
        attributeFilter: OBSERVED_ATTRIBUTES
      });
    }
    function install() {
      processRoot(targetDocument);
      targetDocument?.addEventListener?.("pointerdown", handlePointerIntent, true);
      targetDocument?.addEventListener?.("click", handlePointerIntent, true);
      if (targetDocument?.readyState === "loading") {
        targetDocument.addEventListener("DOMContentLoaded", () => {
          observe();
          scheduleProcess(targetDocument);
        }, { once: true });
        return;
      }
      observe();
    }
    function dispose() {
      if (observer) {
        observer.disconnect();
        observer = null;
      }
      targetDocument?.removeEventListener?.("pointerdown", handlePointerIntent, true);
      targetDocument?.removeEventListener?.("click", handlePointerIntent, true);
    }
    return {
      install,
      dispose,
      processRoot
    };
  }
  function installPageImageReplacement(options = {}) {
    const controller = createPageImageReplacementController(options);
    controller.install();
    return controller;
  }

  // src/shared/imageSessionContext.js
  function mergeImageSessionAssetIds(...candidates) {
    const merged = {
      responseId: "",
      draftId: "",
      conversationId: ""
    };
    for (const candidate of candidates) {
      const normalizedCandidate = normalizeImageSessionAssetIds(candidate);
      if (!normalizedCandidate) {
        continue;
      }
      merged.responseId ||= normalizedCandidate.responseId || "";
      merged.draftId ||= normalizedCandidate.draftId || "";
      merged.conversationId ||= normalizedCandidate.conversationId || "";
    }
    return normalizeImageSessionAssetIds(merged);
  }
  function resolveImageElementFromTarget(target) {
    const normalizedTagName = typeof target?.tagName === "string" ? target.tagName.toUpperCase() : "";
    return normalizedTagName === "IMG" ? target : null;
  }
  function resolveImageSessionContext({
    action = "display",
    actionContext = null,
    target = null,
    imageElement = null,
    resolveImageElement = null,
    resolveAssetIds = extractGeminiImageAssetIds,
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    const resolvedActionContext = resolveCompatibleActionContext(actionContext);
    let resolvedImageElement = imageElement || resolvedActionContext?.imageElement || resolveImageElementFromTarget(target) || null;
    if (!resolvedImageElement && typeof resolveImageElement === "function") {
      resolvedImageElement = resolveImageElement(resolvedActionContext) || null;
    }
    const extractedImageAssetIds = typeof resolveAssetIds === "function" && resolvedImageElement ? resolveAssetIds(resolvedImageElement) : null;
    const extractedTargetAssetIds = typeof resolveAssetIds === "function" && target ? resolveAssetIds(target) : null;
    const assetIds = mergeImageSessionAssetIds(
      resolvedActionContext?.assetIds,
      extractedImageAssetIds,
      extractedTargetAssetIds
    );
    const explicitSessionKey = typeof resolvedActionContext?.sessionKey === "string" ? resolvedActionContext.sessionKey.trim() : "";
    const sessionKey = explicitSessionKey || imageSessionStore?.getOrCreateByAssetIds?.(assetIds) || buildImageSessionKey(assetIds);
    const sessionSnapshot = sessionKey ? imageSessionStore?.getSnapshot?.(sessionKey) || null : null;
    const mergedAssetIds = mergeImageSessionAssetIds(
      assetIds,
      sessionSnapshot?.assetIds
    );
    const resource = sessionKey ? imageSessionStore?.getBestResource?.(sessionKey, action) || null : null;
    const preferredImageElement = sessionKey ? imageSessionStore?.getPreferredElement?.(sessionKey, action) || null : null;
    if (preferredImageElement) {
      resolvedImageElement = preferredImageElement;
    }
    return {
      action,
      sessionKey: sessionKey || "",
      assetIds: mergedAssetIds,
      imageElement: resolvedImageElement,
      resource
    };
  }

  // src/userscript/clipboardHook.js
  function isImageMimeType(type) {
    return typeof type === "string" && /^image\//i.test(type);
  }
  function isBlobUrl(url) {
    return typeof url === "string" && /^blob:/i.test(url);
  }
  function hasClipboardImageItems(items) {
    return Array.from(items || []).some((item) => Array.isArray(item?.types) && item.types.some(isImageMimeType));
  }
  async function getFirstClipboardImageBlob(items) {
    for (const item of Array.from(items || [])) {
      const types = Array.isArray(item?.types) ? item.types.filter(isImageMimeType) : [];
      for (const type of types) {
        if (typeof item?.getType !== "function") {
          continue;
        }
        const blob = await item.getType(type);
        if (blob instanceof Blob) {
          return blob;
        }
      }
    }
    return null;
  }
  function isGeminiClipboardActionContext(actionContext) {
    if (!actionContext || typeof actionContext !== "object") {
      return false;
    }
    if (actionContext.action === "clipboard") {
      return true;
    }
    if (typeof actionContext.sessionKey === "string" && actionContext.sessionKey.trim()) {
      return true;
    }
    const assetIds = actionContext.assetIds;
    return Boolean(
      assetIds && typeof assetIds === "object" && (assetIds.responseId || assetIds.draftId || assetIds.conversationId)
    );
  }
  async function notifyActionCriticalFailure(onActionCriticalFailure, payload) {
    if (typeof onActionCriticalFailure !== "function") {
      return;
    }
    try {
      await onActionCriticalFailure(payload);
    } catch {
    }
  }
  async function createBlobFromObjectUrlImage(objectUrl, imageElement, targetWindow = globalThis) {
    const ImageClass = targetWindow?.Image || globalThis.Image;
    const documentRef = imageElement?.ownerDocument || targetWindow?.document || globalThis.document;
    if (typeof ImageClass !== "function" || !documentRef?.createElement) {
      throw new Error("Image decode fallback unavailable");
    }
    const image = new ImageClass();
    image.decoding = "async";
    image.src = objectUrl;
    if (typeof image.decode === "function") {
      await image.decode();
    } else {
      await new Promise((resolve, reject) => {
        image.onload = () => resolve();
        image.onerror = () => reject(new Error("Failed to load processed object URL"));
      });
    }
    const width = Number(image.naturalWidth) || Number(image.width) || Number(imageElement?.naturalWidth) || Number(imageElement?.width) || 0;
    const height = Number(image.naturalHeight) || Number(image.height) || Number(imageElement?.naturalHeight) || Number(imageElement?.height) || 0;
    if (width <= 0 || height <= 0) {
      throw new Error("Processed object URL image has no renderable size");
    }
    const canvas = documentRef.createElement("canvas");
    canvas.width = width;
    canvas.height = height;
    const context = canvas.getContext?.("2d", { willReadFrequently: true });
    if (!context) {
      throw new Error("2D canvas context unavailable");
    }
    context.drawImage(image, 0, 0, width, height);
    return canvasToBlob(canvas, "image/png", {
      unavailableMessage: "Canvas toBlob unavailable",
      nullBlobMessage: "Canvas toBlob returned null"
    });
  }
  async function buildClipboardReplacementItems(items, replacementBlob, ClipboardItemClass) {
    const replacementItems = [];
    let replacedAny = false;
    for (const item of Array.from(items || [])) {
      const types = Array.isArray(item?.types) ? item.types.filter(Boolean) : [];
      if (!types.some(isImageMimeType) || typeof ClipboardItemClass !== "function") {
        replacementItems.push(item);
        continue;
      }
      const replacementData = {};
      for (const type of types) {
        if (isImageMimeType(type)) {
          continue;
        }
        if (typeof item.getType === "function") {
          replacementData[type] = item.getType(type);
        }
      }
      replacementData[replacementBlob.type || "image/png"] = replacementBlob;
      replacementItems.push(new ClipboardItemClass(replacementData));
      replacedAny = true;
    }
    return replacedAny ? replacementItems : items;
  }
  async function processClipboardImageBlobFallback(items, {
    processClipboardImageBlob = null,
    actionContext = null
  } = {}) {
    if (typeof processClipboardImageBlob !== "function") {
      return null;
    }
    const sourceBlob = await getFirstClipboardImageBlob(items);
    if (!(sourceBlob instanceof Blob)) {
      return null;
    }
    const result = await processClipboardImageBlob(sourceBlob, {
      actionContext,
      items
    });
    if (result instanceof Blob) {
      return result;
    }
    return result?.processedBlob instanceof Blob ? result.processedBlob : null;
  }
  async function resolveProcessedClipboardBlob({
    actionContext = null,
    resolveImageElement,
    imageSessionStore = getDefaultImageSessionStore(),
    fetchBlobDirect: fetchBlobDirect2,
    resolveBlobViaImageElement,
    requireFullProcessedResource = false
  }) {
    const sessionContext = resolveImageSessionContext({
      action: "clipboard",
      actionContext,
      resolveImageElement,
      imageSessionStore
    });
    const imageElement = sessionContext?.imageElement || actionContext?.imageElement || null;
    const sessionBlob = sessionContext?.resource?.kind === "processed" && sessionContext.resource.blob instanceof Blob ? sessionContext.resource.blob : null;
    if (sessionBlob) {
      return sessionBlob;
    }
    const processedResource = sessionContext?.resource?.kind === "processed" ? sessionContext.resource : null;
    const processedImageElementObjectUrl = typeof imageElement?.dataset?.gwrWatermarkObjectUrl === "string" ? imageElement.dataset.gwrWatermarkObjectUrl.trim() : "";
    const canReuseProcessedImageElementFallback = Boolean(
      processedImageElementObjectUrl && (!requireFullProcessedResource || !sessionContext?.resource || sessionContext.resource.kind === "preview" || sessionContext.resource.kind === "blob")
    );
    if (requireFullProcessedResource && !processedResource && !canReuseProcessedImageElementFallback) {
      return null;
    }
    const resourceUrl = processedResource && typeof sessionContext.resource.url === "string" ? sessionContext.resource.url.trim() : "";
    const objectUrl = resourceUrl || (canReuseProcessedImageElementFallback ? processedImageElementObjectUrl : "");
    if (!objectUrl) {
      return null;
    }
    if (imageElement && isBlobUrl(objectUrl) && typeof resolveBlobViaImageElement === "function") {
      try {
        return await resolveBlobViaImageElement({
          objectUrl,
          imageElement
        });
      } catch (error) {
        if (!requireFullProcessedResource && typeof fetchBlobDirect2 === "function") {
          return fetchBlobDirect2(objectUrl);
        }
        throw error;
      }
    }
    if (typeof fetchBlobDirect2 !== "function") {
      return null;
    }
    return fetchBlobDirect2(objectUrl);
  }
  function installGeminiClipboardImageHook(targetWindow, {
    provideActionContext = null,
    getActionContext = () => null,
    resolveImageElement = null,
    imageSessionStore = getDefaultImageSessionStore(),
    onActionCriticalFailure = null,
    processClipboardImageBlob = null,
    fetchBlobDirect: fetchBlobDirect2 = async (url) => {
      const response = await fetch(url);
      return response.blob();
    },
    resolveBlobViaImageElement = ({ objectUrl, imageElement }) => createBlobFromObjectUrlImage(objectUrl, imageElement, targetWindow),
    logger = console
  } = {}) {
    const clipboard = targetWindow?.navigator?.clipboard;
    if (!clipboard || typeof clipboard.write !== "function") {
      return () => {
      };
    }
    const originalWrite = clipboard.write.bind(clipboard);
    const ClipboardItemClass = targetWindow?.ClipboardItem || globalThis.ClipboardItem;
    const resolveActionContextProvider = typeof provideActionContext === "function" ? provideActionContext : createActionContextProvider({ getActionContext });
    const hookedWrite = async function gwrClipboardWriteHook(items) {
      const actionContext = resolveActionContextProvider();
      const containsImageItems = hasClipboardImageItems(items);
      const requiresOriginalGeminiBlob = containsImageItems && isGeminiClipboardActionContext(actionContext);
      let clipboardResolutionError = null;
      try {
        if (!containsImageItems) {
          return originalWrite(items);
        }
        let processedBlob = null;
        try {
          processedBlob = await resolveProcessedClipboardBlob({
            actionContext,
            resolveImageElement,
            imageSessionStore,
            fetchBlobDirect: fetchBlobDirect2,
            resolveBlobViaImageElement,
            requireFullProcessedResource: requiresOriginalGeminiBlob
          });
        } catch (error) {
          clipboardResolutionError = error;
        }
        if (!processedBlob && requiresOriginalGeminiBlob && clipboardResolutionError) {
          processedBlob = await processClipboardImageBlobFallback(items, {
            processClipboardImageBlob,
            actionContext
          });
        }
        if (!processedBlob) {
          if (requiresOriginalGeminiBlob) {
            throw clipboardResolutionError || new Error("Original image is unavailable for clipboard processing");
          }
          return originalWrite(items);
        }
        const replacementItems = await buildClipboardReplacementItems(
          items,
          processedBlob,
          ClipboardItemClass
        );
        return originalWrite(replacementItems);
      } catch (error) {
        logger?.warn?.("[Gemini Watermark Remover] Clipboard image hook failed, falling back:", error);
        if (requiresOriginalGeminiBlob) {
          await notifyActionCriticalFailure(onActionCriticalFailure, {
            error,
            actionContext,
            items
          });
          throw error;
        }
        return originalWrite(items);
      }
    };
    clipboard.write = hookedWrite;
    return () => {
      if (clipboard.write === hookedWrite) {
        clipboard.write = originalWrite;
      }
    };
  }

  // src/userscript/actionContext.js
  function assetIdsMatch2(candidate = null, target = null) {
    if (!candidate || !target) {
      return false;
    }
    if (candidate.draftId && target.draftId) {
      return candidate.draftId === target.draftId;
    }
    return Boolean(
      candidate.responseId && target.responseId && candidate.responseId === target.responseId && candidate.conversationId && target.conversationId && candidate.conversationId === target.conversationId
    );
  }
  function findGeminiImageElementForAssetIds(root, assetIds) {
    if (!root || !assetIds || typeof root.querySelectorAll !== "function") {
      return null;
    }
    let fallbackMatch = null;
    for (const imageElement of root.querySelectorAll(getGeminiImageQuerySelector())) {
      if (!assetIdsMatch2(extractGeminiImageAssetIds(imageElement), assetIds)) {
        continue;
      }
      if (imageElement?.dataset?.gwrWatermarkObjectUrl) {
        return imageElement;
      }
      fallbackMatch ||= imageElement;
    }
    return fallbackMatch;
  }
  function findGeminiImageElementForSourceUrl(root, sourceUrl = "") {
    if (!root || typeof root.querySelectorAll !== "function") {
      return null;
    }
    const normalizedTargetUrl = typeof sourceUrl === "string" ? normalizeGoogleusercontentImageUrl(sourceUrl.trim()) : "";
    if (!normalizedTargetUrl) {
      return null;
    }
    let fallbackMatch = null;
    const unboundBlobCandidates = [];
    for (const imageElement of root.querySelectorAll(getGeminiImageQuerySelector())) {
      const candidateUrl = normalizeGoogleusercontentImageUrl(resolveCandidateImageUrl(imageElement) || "");
      if (!candidateUrl || candidateUrl !== normalizedTargetUrl) {
        const currentSrc = typeof imageElement?.currentSrc === "string" ? imageElement.currentSrc.trim() : "";
        const src = typeof imageElement?.src === "string" ? imageElement.src.trim() : "";
        const hasExplicitSource = typeof imageElement?.dataset?.gwrSourceUrl === "string" && imageElement.dataset.gwrSourceUrl.trim();
        if (!hasExplicitSource && (currentSrc.startsWith("blob:") || src.startsWith("blob:"))) {
          unboundBlobCandidates.push(imageElement);
        }
        continue;
      }
      if (imageElement?.dataset?.gwrWatermarkObjectUrl) {
        return imageElement;
      }
      fallbackMatch ||= imageElement;
    }
    if (!fallbackMatch && unboundBlobCandidates.length === 1) {
      return unboundBlobCandidates[0];
    }
    return fallbackMatch;
  }
  function collectCandidateImagesFromRoot(root) {
    if (!root || typeof root !== "object") {
      return [];
    }
    const candidates = [];
    if (typeof root.tagName === "string" && root.tagName.toUpperCase() === "IMG") {
      candidates.push(root);
    }
    if (typeof root.querySelectorAll === "function") {
      candidates.push(...root.querySelectorAll("img"));
    }
    return candidates.filter(Boolean);
  }
  function findPreferredGeminiImageElement(root, assetIds) {
    const candidates = collectCandidateImagesFromRoot(root);
    if (candidates.length === 0) {
      return null;
    }
    const matchingAssetCandidate = assetIds ? candidates.find((imageElement) => assetIdsMatch2(extractGeminiImageAssetIds(imageElement), assetIds)) : null;
    const processedMatchingAssetCandidate = matchingAssetCandidate?.dataset?.gwrWatermarkObjectUrl ? matchingAssetCandidate : null;
    if (processedMatchingAssetCandidate) {
      return processedMatchingAssetCandidate;
    }
    if (matchingAssetCandidate) {
      return matchingAssetCandidate;
    }
    const processedProcessableCandidate = candidates.find((imageElement) => typeof imageElement?.dataset?.gwrWatermarkObjectUrl === "string" && imageElement.dataset.gwrWatermarkObjectUrl.trim());
    if (processedProcessableCandidate) {
      return processedProcessableCandidate;
    }
    return candidates[0] || null;
  }
  function findNearbyGeminiImageElement(targetWindow, target, assetIds) {
    const buttonLike = typeof target?.closest === "function" ? target.closest('button,[role="button"]') : null;
    const globalAssetMatch = assetIds ? findGeminiImageElementForAssetIds(targetWindow?.document || document, assetIds) : null;
    const candidateRoots = [
      buttonLike?.closest?.("generated-image,.generated-image-container"),
      buttonLike?.closest?.("single-image"),
      buttonLike?.closest?.('expansion-dialog,[role="dialog"],.image-expansion-dialog-panel,.cdk-overlay-pane'),
      buttonLike?.closest?.("[data-test-draft-id]")
    ].filter(Boolean);
    for (const root of candidateRoots) {
      const imageElement = findPreferredGeminiImageElement(root, assetIds);
      if (imageElement?.dataset?.gwrWatermarkObjectUrl) {
        return imageElement;
      }
      if (globalAssetMatch?.dataset?.gwrWatermarkObjectUrl) {
        return globalAssetMatch;
      }
      if (imageElement) {
        return imageElement;
      }
    }
    return globalAssetMatch;
  }
  function createGeminiActionContextResolver({
    targetWindow,
    imageSessionStore = getDefaultImageSessionStore()
  } = {}) {
    function resolveActionContext(target, {
      action = "display"
    } = {}) {
      const initialImageElement = findNearbyGeminiImageElement(targetWindow, target, null);
      const initialContext = resolveImageSessionContext({
        action,
        target,
        imageElement: initialImageElement,
        imageSessionStore
      });
      const preferredImageElement = initialContext?.assetIds ? findNearbyGeminiImageElement(targetWindow, target, initialContext.assetIds) : null;
      if (!preferredImageElement || preferredImageElement === initialImageElement) {
        return initialContext;
      }
      return resolveImageSessionContext({
        action,
        target,
        imageElement: preferredImageElement,
        imageSessionStore
      });
    }
    function resolveImageElement(actionContext = null) {
      if (actionContext?.imageElement) {
        return actionContext.imageElement;
      }
      const assetIds = actionContext?.assetIds || null;
      const target = actionContext?.target || null;
      return findNearbyGeminiImageElement(targetWindow, target, assetIds);
    }
    return {
      resolveActionContext,
      resolveImageElement
    };
  }

  // src/userscript/downloadHook.js
  function buildHookRequestArgs(args, normalizedUrl) {
    const nextArgs = [...args];
    const input = nextArgs[0];
    const init = nextArgs[1];
    if (typeof input === "string") {
      nextArgs[0] = normalizedUrl;
      if (init && typeof init === "object") {
        nextArgs[1] = {
          ...init,
          credentials: "omit"
        };
      }
      return nextArgs;
    }
    if (typeof Request !== "undefined" && input instanceof Request) {
      nextArgs[0] = new Request(new Request(normalizedUrl, input), {
        credentials: "omit"
      });
      if (init && typeof init === "object") {
        nextArgs[1] = {
          ...init,
          credentials: "omit"
        };
      }
      return nextArgs;
    }
    nextArgs[0] = normalizedUrl;
    if (init && typeof init === "object") {
      nextArgs[1] = {
        ...init,
        credentials: "omit"
      };
    }
    return nextArgs;
  }
  function hasHeaderValue(headersLike, headerName) {
    if (!headersLike) return false;
    const normalizedHeaderName = String(headerName || "").toLowerCase();
    if (typeof Headers !== "undefined" && headersLike instanceof Headers) {
      return headersLike.get(normalizedHeaderName) === "1";
    }
    if (Array.isArray(headersLike)) {
      return headersLike.some(([name, value]) => String(name || "").toLowerCase() === normalizedHeaderName && String(value || "") === "1");
    }
    if (typeof headersLike === "object") {
      for (const [name, value] of Object.entries(headersLike)) {
        if (String(name || "").toLowerCase() === normalizedHeaderName && String(value || "") === "1") {
          return true;
        }
      }
    }
    return false;
  }
  function shouldBypassHook(args) {
    const input = args[0];
    const init = args[1];
    if (init?.gwrBypass === true) {
      return true;
    }
    if (input && typeof input === "object" && input.gwrBypass === true) {
      return true;
    }
    if (typeof Request !== "undefined" && input instanceof Request && input.headers?.get("x-gwr-bypass") === "1") {
      return true;
    }
    return hasHeaderValue(init?.headers, "x-gwr-bypass");
  }
  function buildProcessedResponse(response, blob) {
    const headers = new Headers(response.headers);
    if (blob.type) {
      headers.set("content-type", blob.type);
    }
    return new Response(blob, {
      status: response.status,
      statusText: response.statusText,
      headers
    });
  }
  function buildDirectBlobResponse(blob, mimeType = "") {
    const headers = new Headers();
    const resolvedMimeType = mimeType || blob?.type || "application/octet-stream";
    if (resolvedMimeType) {
      headers.set("content-type", resolvedMimeType);
    }
    return new Response(blob, {
      status: 200,
      statusText: "OK",
      headers
    });
  }
  function isImageResponse(response) {
    const contentType = response?.headers?.get?.("content-type") || "";
    if (!contentType) {
      return true;
    }
    return /^image\//i.test(contentType);
  }
  function serializeResponseHeaders(headers) {
    const entries = {};
    if (!headers || typeof headers.forEach !== "function") {
      return entries;
    }
    headers.forEach((value, key) => {
      entries[key] = value;
    });
    return entries;
  }
  function shouldReuseProcessedDownloadResource(actionContext) {
    return actionContext?.action === "download" && actionContext?.resource?.kind === "processed" && actionContext?.resource?.slot === "full" && actionContext.resource.blob instanceof Blob;
  }
  async function notifyActionCriticalFailure2(onActionCriticalFailure, payload) {
    if (typeof onActionCriticalFailure !== "function") {
      return;
    }
    try {
      await onActionCriticalFailure(payload);
    } catch {
    }
  }
  var DOWNLOAD_ACTION_LABEL_PATTERN = /(download|copy|下载|复制)/i;
  var COPY_ACTION_LABEL_PATTERN = /(copy|复制)/i;
  var EXPLICIT_DOWNLOAD_ACTION_LABEL_PATTERN = /(download|下载)/i;
  var INTENT_EVENT_TYPES = ["click", "keydown"];
  var DEFAULT_INTENT_WINDOW_MS = 5e3;
  var DEFAULT_DOWNLOAD_STICKY_WINDOW_MS = 3e4;
  var GEMINI_DOWNLOAD_RPC_HOST = "gemini.google.com";
  var GEMINI_DOWNLOAD_RPC_PATH = "/_/BardChatUi/data/batchexecute";
  var GEMINI_GOOGLEUSERCONTENT_URL_PATTERN = /https:(?:(?:\\\\\/)|(?:\\\/)|\/){2}[^\s"'\]]*googleusercontent\.com(?:(?:\\\\\/)|(?:\\\/)|\/)[^\s"'\]]+/gi;
  var GEMINI_RESPONSE_ID_PATTERN = /\br_[a-z0-9]+\b/i;
  var GEMINI_DRAFT_ID_PATTERN = /\brc_[a-z0-9]+\b/i;
  var GEMINI_CONVERSATION_ID_PATTERN = /\bc_[a-z0-9]+\b/i;
  var GEMINI_RESPONSE_BINDING_PATTERN = /(?<conversationId>c_[a-z0-9]+)[\s\S]{0,96}?(?<responseId>r_[a-z0-9]+)[\s\S]{0,96}?(?<draftId>rc_[a-z0-9]+)/gi;
  var GEMINI_DRAFT_URL_BLOCK_PATTERN = /(?<draftId>rc_[a-z0-9]+)(?:(?:\\\\")|")?,\[(?:(?:\\\\")|")http:\/\/googleusercontent\.com\/image_generation_content\/\d+(?:(?:\\\\")|")?\][\s\S]{0,2400}?(?<discoveredUrl>https:(?:(?:\\\\\/)|(?:\\\/)|\/){2}[^\s"'\]]*googleusercontent\.com(?:(?:\\\\\/)|(?:\\\/)|\/)[^\s"'\]]+)/gi;
  var GEMINI_XHR_HOOK_STATE = Symbol("gwrGeminiRpcXhrState");
  var GEMINI_XHR_HOOK_LISTENER = Symbol("gwrGeminiRpcXhrListener");
  function normalizeActionLabel(value) {
    return typeof value === "string" ? value.trim() : "";
  }
  function extractIntentCandidateUrl(candidate) {
    if (typeof candidate === "string") {
      return candidate.trim();
    }
    if (!candidate || typeof candidate !== "object") {
      return "";
    }
    if (typeof candidate.normalizedUrl === "string" && candidate.normalizedUrl.trim()) {
      return candidate.normalizedUrl.trim();
    }
    if (typeof candidate.url === "string" && candidate.url.trim()) {
      return candidate.url.trim();
    }
    return "";
  }
  function isGeminiDownloadAssetUrl(url) {
    return classifyGeminiAssetUrl(url)?.isDownload === true;
  }
  function collectButtonLikeLabels(element) {
    if (!element || typeof element !== "object") {
      return [];
    }
    const button = typeof element.closest === "function" ? element.closest('button,[role="button"]') : null;
    if (!button || typeof button !== "object") {
      return [];
    }
    return [
      button.getAttribute?.("aria-label") || "",
      button.getAttribute?.("title") || "",
      button.innerText || "",
      button.textContent || ""
    ].map(normalizeActionLabel).filter(Boolean);
  }
  function isGeminiDownloadActionTarget(target) {
    return collectButtonLikeLabels(target).some((label) => DOWNLOAD_ACTION_LABEL_PATTERN.test(label));
  }
  function resolveGeminiActionKind(target) {
    const labels = collectButtonLikeLabels(target);
    if (labels.some((label) => COPY_ACTION_LABEL_PATTERN.test(label))) {
      return "clipboard";
    }
    if (labels.some((label) => EXPLICIT_DOWNLOAD_ACTION_LABEL_PATTERN.test(label))) {
      return "download";
    }
    return "";
  }
  function createGeminiDownloadIntentGate({
    targetWindow = globalThis,
    now = () => Date.now(),
    windowMs = DEFAULT_INTENT_WINDOW_MS,
    downloadWindowMs = DEFAULT_DOWNLOAD_STICKY_WINDOW_MS,
    resolveActionContext = null
  } = {}) {
    let armedUntil = 0;
    let downloadStickyUntil = 0;
    let recentActionContext = null;
    let recentIntentTarget = null;
    function cloneActionContext(actionContext = null) {
      return actionContext && typeof actionContext === "object" ? { ...actionContext } : null;
    }
    function arm(actionContext = null, target = null) {
      armedUntil = Math.max(armedUntil, now() + windowMs);
      recentActionContext = cloneActionContext(actionContext);
      recentIntentTarget = target || recentIntentTarget || null;
      const resolvedActionKind = actionContext?.action || resolveGeminiActionKind(target) || "";
      if (resolvedActionKind === "download") {
        downloadStickyUntil = Math.max(
          downloadStickyUntil,
          now() + Math.max(windowMs, downloadWindowMs)
        );
        return;
      }
      downloadStickyUntil = 0;
    }
    function hasStickyDownloadIntent(candidate = null) {
      if (now() > downloadStickyUntil) {
        return false;
      }
      return isGeminiDownloadAssetUrl(extractIntentCandidateUrl(candidate));
    }
    function hasRecentIntent(candidate = null) {
      return now() <= armedUntil || hasStickyDownloadIntent(candidate);
    }
    function getRecentActionContext(candidate = null) {
      if (!hasRecentIntent(candidate)) {
        return null;
      }
      if (recentIntentTarget && typeof resolveActionContext === "function") {
        const refreshedActionContext = cloneActionContext(
          resolveActionContext(recentIntentTarget, null)
        );
        if (refreshedActionContext) {
          recentActionContext = refreshedActionContext;
          return refreshedActionContext;
        }
      }
      return recentActionContext;
    }
    function release(candidate = null) {
      if (candidate == null || isGeminiDownloadAssetUrl(extractIntentCandidateUrl(candidate))) {
        armedUntil = 0;
        downloadStickyUntil = 0;
        recentActionContext = null;
        recentIntentTarget = null;
      }
    }
    function handleEvent(event) {
      if (!event || typeof event !== "object") {
        return;
      }
      if (event.type === "keydown") {
        const key = typeof event.key === "string" ? event.key : "";
        if (key && key !== "Enter" && key !== " ") {
          return;
        }
      }
      if (isGeminiDownloadActionTarget(event.target)) {
        const actionContext = typeof resolveActionContext === "function" ? resolveActionContext(event.target, event) : null;
        arm(actionContext, event.target);
      }
    }
    for (const eventType of INTENT_EVENT_TYPES) {
      targetWindow?.addEventListener?.(eventType, handleEvent, true);
    }
    return {
      arm,
      hasRecentIntent,
      getRecentActionContext,
      release,
      handleEvent,
      dispose() {
        for (const eventType of INTENT_EVENT_TYPES) {
          targetWindow?.removeEventListener?.(eventType, handleEvent, true);
        }
      }
    };
  }
  function isGeminiBatchExecuteUrl(url) {
    if (typeof url !== "string" || url.length === 0) {
      return false;
    }
    try {
      const parsed = new URL(url);
      return parsed.hostname === GEMINI_DOWNLOAD_RPC_HOST && parsed.pathname === GEMINI_DOWNLOAD_RPC_PATH;
    } catch {
      return false;
    }
  }
  function decodeEscapedRpcUrl(rawUrl) {
    let decodedUrl = String(rawUrl || "").trim();
    if (!decodedUrl) {
      return "";
    }
    decodedUrl = decodedUrl.replace(/\\u003d/gi, "=").replace(/\\u0026/gi, "&").replace(/\\u002f/gi, "/").replace(/\\u003f/gi, "?").replace(/\\u003a/gi, ":");
    let previous = "";
    while (decodedUrl !== previous) {
      previous = decodedUrl;
      decodedUrl = decodedUrl.replace(/\\\\\//g, "/").replace(/\\\//g, "/");
    }
    return decodedUrl.replace(/[\\"]+$/g, "").trim();
  }
  function decodeRpcRequestBodyText(rawText) {
    let decodedText = String(rawText || "").trim();
    if (!decodedText) {
      return "";
    }
    let previous = "";
    let attempts = 0;
    while (decodedText !== previous && attempts < 3) {
      previous = decodedText;
      attempts += 1;
      try {
        decodedText = decodeURIComponent(decodedText.replace(/\+/g, "%20"));
      } catch {
        break;
      }
    }
    return decodedText;
  }
  function matchGeminiAssetIds(text) {
    if (typeof text !== "string" || text.length === 0) {
      return null;
    }
    const responseId = text.match(GEMINI_RESPONSE_ID_PATTERN)?.[0] || null;
    const draftId = text.match(GEMINI_DRAFT_ID_PATTERN)?.[0] || null;
    const conversationId = text.match(GEMINI_CONVERSATION_ID_PATTERN)?.[0] || null;
    if (!responseId && !draftId && !conversationId) {
      return null;
    }
    return {
      responseId,
      draftId,
      conversationId
    };
  }
  function extractGeminiAssetIdsFromRpcRequestBody(body) {
    const candidateTexts = [];
    if (typeof body === "string") {
      candidateTexts.push(body);
      try {
        const searchParams = new URLSearchParams(body);
        const requestPayload = searchParams.get("f.req");
        if (requestPayload) {
          candidateTexts.push(requestPayload);
        }
      } catch {
      }
    } else if (body instanceof URLSearchParams) {
      candidateTexts.push(body.toString());
      const requestPayload = body.get("f.req");
      if (requestPayload) {
        candidateTexts.push(requestPayload);
      }
    } else {
      return null;
    }
    for (const candidateText of candidateTexts) {
      const assetIds = matchGeminiAssetIds(candidateText) || matchGeminiAssetIds(decodeRpcRequestBodyText(candidateText));
      if (assetIds) {
        return assetIds;
      }
    }
    return null;
  }
  async function extractGeminiAssetIdsFromRpcRequestArgs(args) {
    const input = args[0];
    const init = args[1];
    const initBodyAssetIds = extractGeminiAssetIdsFromRpcRequestBody(init?.body);
    if (initBodyAssetIds) {
      return initBodyAssetIds;
    }
    if (typeof Request !== "undefined" && input instanceof Request) {
      try {
        const requestText = await input.clone().text();
        return extractGeminiAssetIdsFromRpcRequestBody(requestText);
      } catch {
        return null;
      }
    }
    return null;
  }
  function extractGeminiOriginalAssetUrlsFromResponseText(responseText) {
    if (typeof responseText !== "string" || responseText.length === 0) {
      return [];
    }
    const discoveredUrls = /* @__PURE__ */ new Set();
    for (const match of responseText.matchAll(GEMINI_GOOGLEUSERCONTENT_URL_PATTERN)) {
      const candidateUrl = decodeEscapedRpcUrl(match[0]);
      const normalizedUrl = normalizeGoogleusercontentImageUrl(candidateUrl);
      if (!isGeminiOriginalAssetUrl(normalizedUrl)) {
        continue;
      }
      discoveredUrls.add(normalizedUrl);
    }
    return Array.from(discoveredUrls);
  }
  function extractGeminiGeneratedAssetUrlsFromResponseText(responseText) {
    if (typeof responseText !== "string" || responseText.length === 0) {
      return [];
    }
    const discoveredUrls = /* @__PURE__ */ new Set();
    for (const match of responseText.matchAll(GEMINI_GOOGLEUSERCONTENT_URL_PATTERN)) {
      const candidateUrl = decodeEscapedRpcUrl(match[0]);
      const normalizedUrl = normalizeGoogleusercontentImageUrl(candidateUrl);
      if (!isGeminiGeneratedAssetUrl(normalizedUrl)) {
        continue;
      }
      discoveredUrls.add(normalizedUrl);
    }
    return Array.from(discoveredUrls);
  }
  function parseGeminiHistoryPayloadsFromResponseText(responseText) {
    if (typeof responseText !== "string" || responseText.length === 0) {
      return [];
    }
    const payloads = [];
    for (const line of responseText.split(/\r?\n/)) {
      const trimmedLine = line.trim();
      if (!trimmedLine.startsWith("[[")) {
        continue;
      }
      let parsedLine = null;
      try {
        parsedLine = JSON.parse(trimmedLine);
      } catch {
        continue;
      }
      if (!Array.isArray(parsedLine)) {
        continue;
      }
      for (const entry of parsedLine) {
        const rpcId = Array.isArray(entry) ? entry[1] : "";
        const innerPayloadText = Array.isArray(entry) ? entry[2] : "";
        if (rpcId !== "hNvQHb" || typeof innerPayloadText !== "string" || innerPayloadText.length === 0) {
          continue;
        }
        try {
          const innerPayload = JSON.parse(innerPayloadText);
          if (Array.isArray(innerPayload)) {
            payloads.push(innerPayload);
          }
        } catch {
        }
      }
    }
    return payloads;
  }
  function isGeminiResponseTuple(value) {
    return Array.isArray(value) && value.length >= 2 && typeof value[0] === "string" && value[0].startsWith("c_") && typeof value[1] === "string" && value[1].startsWith("r_");
  }
  function collectGeminiResponseSequence(node, sequence = [], seen = /* @__PURE__ */ new Map(), state = {
    order: 0
  }) {
    if (!Array.isArray(node)) {
      return sequence;
    }
    if (isGeminiResponseTuple(node)) {
      const conversationId = node[0];
      const responseId = node[1];
      const draftId = typeof node[2] === "string" && node[2].startsWith("rc_") ? node[2] : null;
      const responseKey = `${conversationId}|${responseId}`;
      const tupleOrder = state.order;
      state.order += 1;
      const existing = seen.get(responseKey);
      if (existing) {
        if (!existing.draftId && draftId) {
          existing.draftId = draftId;
          existing.firstDraftOrder = tupleOrder;
        }
        return sequence;
      }
      const entry = {
        conversationId,
        responseId,
        draftId,
        firstOrder: tupleOrder,
        firstDraftOrder: draftId ? tupleOrder : Number.POSITIVE_INFINITY
      };
      seen.set(responseKey, entry);
      sequence.push(entry);
      return sequence;
    }
    for (const item of node) {
      collectGeminiResponseSequence(item, sequence, seen, state);
    }
    return sequence;
  }
  function collectGeminiGeneratedUrlsFromParsedNode(node, urls = /* @__PURE__ */ new Set()) {
    if (typeof node === "string") {
      const normalizedUrl = normalizeGoogleusercontentImageUrl(decodeEscapedRpcUrl(node));
      if (isGeminiGeneratedAssetUrl(normalizedUrl)) {
        urls.add(normalizedUrl);
      }
      return urls;
    }
    if (!Array.isArray(node)) {
      if (node && typeof node === "object") {
        for (const value of Object.values(node)) {
          collectGeminiGeneratedUrlsFromParsedNode(value, urls);
        }
      }
      return urls;
    }
    for (const item of node) {
      collectGeminiGeneratedUrlsFromParsedNode(item, urls);
    }
    return urls;
  }
  function collectGeminiDraftBlocksFromParsedNode(node, blocks = []) {
    if (!Array.isArray(node)) {
      return blocks;
    }
    if (typeof node[0] === "string" && node[0].startsWith("rc_")) {
      const discoveredUrls = Array.from(collectGeminiGeneratedUrlsFromParsedNode(node));
      if (discoveredUrls.length > 0) {
        blocks.push({
          draftId: node[0],
          discoveredUrls
        });
      }
      return blocks;
    }
    for (const item of node) {
      collectGeminiDraftBlocksFromParsedNode(item, blocks);
    }
    return blocks;
  }
  function collectGeminiDraftIdsFromParsedNode(node, draftIds = []) {
    if (!Array.isArray(node)) {
      return draftIds;
    }
    if (typeof node[0] === "string" && node[0].startsWith("rc_")) {
      draftIds.push(node[0]);
    }
    for (const item of node) {
      collectGeminiDraftIdsFromParsedNode(item, draftIds);
    }
    return draftIds;
  }
  function extractGeminiAssetBindingsFromParsedHistorySegments(node, bindings = [], seen = /* @__PURE__ */ new Set()) {
    if (!Array.isArray(node)) {
      return bindings;
    }
    const immediateResponses = node.filter(isGeminiResponseTuple);
    const discoveredUrls = Array.from(collectGeminiGeneratedUrlsFromParsedNode(node));
    const draftIds = collectGeminiDraftIdsFromParsedNode(node);
    if (immediateResponses.length > 0 && discoveredUrls.length > 0 && draftIds.length > 0) {
      const leadingResponse = immediateResponses[0];
      const responseDraftId = typeof leadingResponse[2] === "string" && leadingResponse[2].startsWith("rc_") ? leadingResponse[2] : null;
      const resolvedDraftId = draftIds[draftIds.length - 1] || responseDraftId || null;
      const conversationId = leadingResponse[0];
      const responseId = leadingResponse[1];
      for (const discoveredUrl of discoveredUrls) {
        const bindingKey = `${conversationId || ""}|${responseId || ""}|${resolvedDraftId || ""}|${discoveredUrl}`;
        if (seen.has(bindingKey)) {
          continue;
        }
        seen.add(bindingKey);
        bindings.push({
          discoveredUrl,
          assetIds: {
            responseId,
            draftId: resolvedDraftId,
            conversationId
          }
        });
      }
      return bindings;
    }
    for (const child of node) {
      extractGeminiAssetBindingsFromParsedHistorySegments(child, bindings, seen);
    }
    return bindings;
  }
  function extractGeminiAssetBindingsFromParsedHistoryNode(historyNode) {
    if (!Array.isArray(historyNode)) {
      return [];
    }
    const responseSequence = collectGeminiResponseSequence(historyNode).slice().sort((left, right) => {
      const leftOrder = Number.isFinite(left.firstDraftOrder) ? left.firstDraftOrder : left.firstOrder;
      const rightOrder = Number.isFinite(right.firstDraftOrder) ? right.firstDraftOrder : right.firstOrder;
      return leftOrder - rightOrder;
    });
    const draftBlocks = collectGeminiDraftBlocksFromParsedNode(historyNode);
    if (responseSequence.length > 0 && draftBlocks.length > 0) {
      const remainingResponseEntries = [...responseSequence];
      const responseEntriesByDraftId = /* @__PURE__ */ new Map();
      for (const responseEntry of responseSequence) {
        if (!responseEntry.draftId) {
          continue;
        }
        const existingEntries = responseEntriesByDraftId.get(responseEntry.draftId);
        if (existingEntries) {
          existingEntries.push(responseEntry);
        } else {
          responseEntriesByDraftId.set(responseEntry.draftId, [responseEntry]);
        }
      }
      const bindings = [];
      for (const draftBlock of draftBlocks) {
        const directDraftMatches = draftBlock.draftId ? responseEntriesByDraftId.get(draftBlock.draftId) || [] : [];
        const responseEntry = directDraftMatches.shift() || remainingResponseEntries.shift();
        if (!responseEntry) {
          continue;
        }
        const matchedResponseIndex = remainingResponseEntries.indexOf(responseEntry);
        if (matchedResponseIndex >= 0) {
          remainingResponseEntries.splice(matchedResponseIndex, 1);
        }
        const resolvedDraftId = responseSequence.length === 1 && draftBlocks.length === 1 && responseEntry.draftId ? responseEntry.draftId : draftBlock.draftId || responseEntry.draftId || null;
        for (const discoveredUrl of draftBlock.discoveredUrls) {
          bindings.push({
            discoveredUrl,
            assetIds: {
              responseId: responseEntry.responseId,
              draftId: resolvedDraftId,
              conversationId: responseEntry.conversationId
            }
          });
        }
      }
      if (bindings.length > 0) {
        return bindings;
      }
    }
    return extractGeminiAssetBindingsFromParsedHistorySegments(historyNode);
  }
  function collectGeminiResponseBindingAnchors(responseText) {
    if (typeof responseText !== "string" || responseText.length === 0) {
      return [];
    }
    const anchors = [];
    for (const match of responseText.matchAll(GEMINI_RESPONSE_BINDING_PATTERN)) {
      const conversationId = match.groups?.conversationId || null;
      const responseId = match.groups?.responseId || null;
      const draftId = match.groups?.draftId || null;
      if (!conversationId && !responseId && !draftId) {
        continue;
      }
      anchors.push({
        index: match.index ?? 0,
        assetIds: {
          responseId,
          draftId,
          conversationId
        }
      });
    }
    return anchors;
  }
  function collectGeminiDraftUrlBlocks(responseText) {
    if (typeof responseText !== "string" || responseText.length === 0) {
      return [];
    }
    const blocks = [];
    for (const match of responseText.matchAll(GEMINI_DRAFT_URL_BLOCK_PATTERN)) {
      const draftId = match.groups?.draftId || null;
      const discoveredUrl = normalizeGoogleusercontentImageUrl(
        decodeEscapedRpcUrl(match.groups?.discoveredUrl || "")
      );
      if (!draftId || !isGeminiGeneratedAssetUrl(discoveredUrl)) {
        continue;
      }
      blocks.push({
        index: match.index ?? 0,
        draftId,
        discoveredUrl
      });
    }
    return blocks;
  }
  function extractGeminiAssetBindingsFromResponseText(responseText) {
    if (typeof responseText !== "string" || responseText.length === 0) {
      return [];
    }
    const structuredBindings = [];
    const seenStructuredBindings = /* @__PURE__ */ new Set();
    for (const historyPayload of parseGeminiHistoryPayloadsFromResponseText(responseText)) {
      for (const historyNode of historyPayload) {
        for (const binding of extractGeminiAssetBindingsFromParsedHistoryNode(historyNode)) {
          const bindingKey = `${binding.assetIds.conversationId || ""}|${binding.assetIds.responseId || ""}|${binding.assetIds.draftId || ""}|${binding.discoveredUrl}`;
          if (seenStructuredBindings.has(bindingKey)) {
            continue;
          }
          seenStructuredBindings.add(bindingKey);
          structuredBindings.push(binding);
        }
      }
    }
    if (structuredBindings.length > 0) {
      return structuredBindings;
    }
    const anchors = collectGeminiResponseBindingAnchors(responseText);
    if (anchors.length === 0) {
      return [];
    }
    const bindings = [];
    const seenBindings = /* @__PURE__ */ new Set();
    const draftUrlBlocks = collectGeminiDraftUrlBlocks(responseText);
    for (const block of draftUrlBlocks) {
      const matchingAnchor = [...anchors].reverse().find((anchor) => anchor.index < block.index && anchor.assetIds.draftId === block.draftId);
      if (!matchingAnchor) {
        continue;
      }
      const bindingKey = `${matchingAnchor.assetIds.conversationId || ""}|${matchingAnchor.assetIds.responseId || ""}|${matchingAnchor.assetIds.draftId || ""}|${block.discoveredUrl}`;
      if (seenBindings.has(bindingKey)) {
        continue;
      }
      seenBindings.add(bindingKey);
      bindings.push({
        discoveredUrl: block.discoveredUrl,
        assetIds: {
          ...matchingAnchor.assetIds
        }
      });
    }
    if (bindings.length > 0) {
      return bindings;
    }
    for (let index = 0; index < anchors.length; index += 1) {
      const anchor = anchors[index];
      const nextAnchor = anchors[index + 1];
      const segment = responseText.slice(anchor.index, nextAnchor?.index ?? responseText.length);
      const discoveredUrls = extractGeminiGeneratedAssetUrlsFromResponseText(segment);
      for (const discoveredUrl of discoveredUrls) {
        const bindingKey = `${anchor.assetIds.conversationId || ""}|${anchor.assetIds.responseId || ""}|${anchor.assetIds.draftId || ""}|${discoveredUrl}`;
        if (seenBindings.has(bindingKey)) {
          continue;
        }
        seenBindings.add(bindingKey);
        bindings.push({
          discoveredUrl,
          assetIds: {
            ...anchor.assetIds
          }
        });
      }
    }
    return bindings;
  }
  function mergeGeminiActionContext(actionContext, assetIds) {
    const baseActionContext = actionContext && typeof actionContext === "object" ? { ...actionContext } : {};
    const mergedAssetIds = {
      ...baseActionContext.assetIds && typeof baseActionContext.assetIds === "object" ? baseActionContext.assetIds : {},
      ...assetIds && typeof assetIds === "object" ? assetIds : {}
    };
    if (!mergedAssetIds.responseId && !mergedAssetIds.draftId && !mergedAssetIds.conversationId) {
      return Object.keys(baseActionContext).length > 0 ? baseActionContext : null;
    }
    return {
      ...baseActionContext,
      assetIds: mergedAssetIds
    };
  }
  async function notifyGeminiOriginalAssetsFromRpcPayload({
    rpcUrl,
    requestAssetIds = null,
    responseText = "",
    provideActionContext = () => null,
    onOriginalAssetDiscovered = null
  } = {}) {
    const actionContext = provideActionContext({ rpcUrl });
    const resolvedActionContext = mergeGeminiActionContext(
      actionContext,
      requestAssetIds
    );
    if (typeof onOriginalAssetDiscovered !== "function") {
      return;
    }
    const responseBindings = extractGeminiAssetBindingsFromResponseText(responseText);
    if (responseBindings.length > 0) {
      for (const binding of responseBindings) {
        const mergedActionContext = mergeGeminiActionContext(
          resolvedActionContext,
          binding.assetIds
        );
        await onOriginalAssetDiscovered(appendCompatibleActionContext({
          rpcUrl,
          discoveredUrl: binding.discoveredUrl
        }, mergedActionContext));
      }
      return;
    }
    if (!resolvedActionContext) {
      return;
    }
    const discoveredUrls = extractGeminiOriginalAssetUrlsFromResponseText(responseText);
    for (const discoveredUrl of discoveredUrls) {
      await onOriginalAssetDiscovered(appendCompatibleActionContext({
        rpcUrl,
        discoveredUrl
      }, resolvedActionContext));
    }
  }
  function createGeminiDownloadRpcFetchHook({
    originalFetch,
    provideActionContext = null,
    getActionContext = () => null,
    onOriginalAssetDiscovered = null,
    logger = console
  }) {
    if (typeof originalFetch !== "function") {
      throw new TypeError("originalFetch must be a function");
    }
    const resolveActionContextProvider = typeof provideActionContext === "function" ? provideActionContext : createActionContextProvider({ getActionContext });
    return async function geminiDownloadRpcFetchHook(...args) {
      if (shouldBypassHook(args)) {
        return originalFetch(...args);
      }
      const input = args[0];
      const rpcUrl = typeof input === "string" ? input : input?.url;
      if (!isGeminiBatchExecuteUrl(rpcUrl)) {
        return originalFetch(...args);
      }
      const response = await originalFetch(...args);
      if (!response?.ok || typeof response.clone !== "function") {
        return response;
      }
      try {
        const requestAssetIds = await extractGeminiAssetIdsFromRpcRequestArgs(args);
        const responseText = await response.clone().text();
        await notifyGeminiOriginalAssetsFromRpcPayload({
          rpcUrl,
          requestAssetIds,
          responseText,
          provideActionContext: () => resolveActionContextProvider({ args, rpcUrl }),
          onOriginalAssetDiscovered
        });
      } catch (error) {
        logger?.warn?.("[Gemini Watermark Remover] Download RPC hook processing failed:", error);
      }
      return response;
    };
  }
  function installGeminiDownloadRpcXmlHttpRequestHook(targetWindow, {
    provideActionContext = null,
    getActionContext = () => null,
    onOriginalAssetDiscovered = null,
    logger = console
  } = {}) {
    if (!targetWindow || typeof targetWindow !== "object") {
      throw new TypeError("targetWindow must be an object");
    }
    const XMLHttpRequestCtor = targetWindow.XMLHttpRequest;
    const prototype = XMLHttpRequestCtor?.prototype;
    if (typeof XMLHttpRequestCtor !== "function" || !prototype || typeof prototype.open !== "function" || typeof prototype.send !== "function") {
      return null;
    }
    const originalOpen = prototype.open;
    const originalSend = prototype.send;
    const resolveActionContextProvider = typeof provideActionContext === "function" ? provideActionContext : createActionContextProvider({ getActionContext });
    prototype.open = function gwrGeminiRpcOpen(method, url, ...rest) {
      this[GEMINI_XHR_HOOK_STATE] = {
        rpcUrl: typeof url === "string" ? url : String(url || ""),
        requestBody: null
      };
      return originalOpen.call(this, method, url, ...rest);
    };
    prototype.send = function gwrGeminiRpcSend(body) {
      const state = this[GEMINI_XHR_HOOK_STATE] || {
        rpcUrl: "",
        requestBody: null
      };
      state.requestBody = body;
      this[GEMINI_XHR_HOOK_STATE] = state;
      if (!this[GEMINI_XHR_HOOK_LISTENER] && typeof this.addEventListener === "function") {
        const handleLoadEnd = () => {
          const currentState = this[GEMINI_XHR_HOOK_STATE];
          const rpcUrl = currentState?.rpcUrl || "";
          if (!isGeminiBatchExecuteUrl(rpcUrl)) {
            return;
          }
          if (typeof this.status === "number" && (this.status < 200 || this.status >= 300)) {
            return;
          }
          if (this.responseType && this.responseType !== "text") {
            return;
          }
          const responseText = typeof this.responseText === "string" ? this.responseText : typeof this.response === "string" ? this.response : "";
          if (!responseText) {
            return;
          }
          void notifyGeminiOriginalAssetsFromRpcPayload({
            rpcUrl,
            requestAssetIds: extractGeminiAssetIdsFromRpcRequestBody(currentState?.requestBody),
            responseText,
            provideActionContext: resolveActionContextProvider,
            onOriginalAssetDiscovered
          }).catch((error) => {
            logger?.warn?.("[Gemini Watermark Remover] Download RPC XHR hook processing failed:", error);
          });
        };
        this[GEMINI_XHR_HOOK_LISTENER] = handleLoadEnd;
        this.addEventListener("loadend", handleLoadEnd);
      }
      return originalSend.call(this, body);
    };
    return {
      dispose() {
        prototype.open = originalOpen;
        prototype.send = originalSend;
      }
    };
  }
  function createGeminiDownloadFetchHook({
    originalFetch,
    isTargetUrl,
    normalizeUrl,
    processBlob,
    provideActionContext = null,
    getActionContext = () => null,
    onOriginalAssetDiscovered = null,
    onProcessedBlobResolved = null,
    onActionCriticalFailure = null,
    shouldProcessRequest = () => true,
    failOpenOnProcessingError = false,
    logger = console,
    cache = /* @__PURE__ */ new Map()
  }) {
    if (typeof originalFetch !== "function") {
      throw new TypeError("originalFetch must be a function");
    }
    if (typeof isTargetUrl !== "function") {
      throw new TypeError("isTargetUrl must be a function");
    }
    if (typeof normalizeUrl !== "function") {
      throw new TypeError("normalizeUrl must be a function");
    }
    if (typeof processBlob !== "function") {
      throw new TypeError("processBlob must be a function");
    }
    if (typeof shouldProcessRequest !== "function") {
      throw new TypeError("shouldProcessRequest must be a function");
    }
    const resolveActionContextProvider = typeof provideActionContext === "function" ? provideActionContext : createActionContextProvider({ getActionContext });
    return async function geminiDownloadFetchHook(...args) {
      if (shouldBypassHook(args)) {
        return originalFetch(...args);
      }
      const input = args[0];
      const url = typeof input === "string" ? input : input?.url;
      if (!isTargetUrl(url)) {
        return originalFetch(...args);
      }
      if (!shouldProcessRequest({ args, url })) {
        return originalFetch(...args);
      }
      const normalizedUrl = normalizeUrl(url);
      const resolvedActionContext = resolveActionContextProvider({ args, url, normalizedUrl });
      if (shouldReuseProcessedDownloadResource(resolvedActionContext)) {
        return buildDirectBlobResponse(
          resolvedActionContext.resource.blob,
          resolvedActionContext.resource.mimeType || ""
        );
      }
      const hookArgs = buildHookRequestArgs(args, normalizedUrl);
      const response = await originalFetch(...hookArgs);
      if (!response?.ok) {
        return response;
      }
      if (!isImageResponse(response)) {
        return response;
      }
      const fallbackResponse = failOpenOnProcessingError && typeof response.clone === "function" ? response.clone() : null;
      try {
        let pendingBlob = cache.get(normalizedUrl);
        if (!pendingBlob) {
          pendingBlob = response.blob().then(async (blob) => {
            const processingContext = {
              url,
              normalizedUrl,
              responseStatus: response.status,
              responseStatusText: response.statusText,
              responseHeaders: serializeResponseHeaders(response.headers)
            };
            if (resolvedActionContext != null) {
              processingContext.actionContext = resolvedActionContext;
            }
            if (typeof onOriginalAssetDiscovered === "function") {
              await onOriginalAssetDiscovered(
                appendCompatibleActionContext(processingContext, resolvedActionContext)
              );
            }
            return processBlob(blob, processingContext);
          }).finally(() => {
            if (cache.get(normalizedUrl) === pendingBlob) {
              cache.delete(normalizedUrl);
            }
          });
          cache.set(normalizedUrl, pendingBlob);
        }
        const processedBlob = await pendingBlob;
        if (typeof onProcessedBlobResolved === "function") {
          await onProcessedBlobResolved(appendCompatibleActionContext({
            url,
            normalizedUrl,
            processedBlob,
            responseStatus: response.status,
            responseStatusText: response.statusText,
            responseHeaders: serializeResponseHeaders(response.headers)
          }, resolvedActionContext));
        }
        return buildProcessedResponse(response, processedBlob);
      } catch (error) {
        logger?.warn?.("[Gemini Watermark Remover] Download hook processing failed:", error);
        if (failOpenOnProcessingError && fallbackResponse) {
          return fallbackResponse;
        }
        await notifyActionCriticalFailure2(onActionCriticalFailure, appendCompatibleActionContext({
          error,
          url,
          normalizedUrl
        }, resolvedActionContext));
        throw error;
      }
    };
  }
  function installGeminiDownloadHook(targetWindow, options) {
    if (!targetWindow || typeof targetWindow !== "object") {
      throw new TypeError("targetWindow must be an object");
    }
    const intentGate = options?.intentGate || createGeminiDownloadIntentGate({
      targetWindow,
      resolveActionContext: options?.resolveActionContext
    });
    const originalFetch = typeof options?.originalFetch === "function" ? options.originalFetch : targetWindow.fetch;
    const onProcessedBlobResolved = async (payload) => {
      await options?.onProcessedBlobResolved?.(payload);
      if (payload?.actionContext?.action === "download") {
        intentGate.release();
      }
    };
    const onActionCriticalFailure = async (payload) => {
      await options?.onActionCriticalFailure?.(payload);
      if (payload?.actionContext?.action === "download") {
        intentGate.release();
      }
    };
    const hook = createGeminiDownloadFetchHook({
      ...options,
      getActionContext: ({ url = "", normalizedUrl = "" } = {}) => getActionContextFromIntentGate(
        intentGate,
        { normalizedUrl, url }
      ),
      onProcessedBlobResolved,
      onActionCriticalFailure,
      shouldProcessRequest: options?.shouldProcessRequest || (({ url = "", normalizedUrl = "" } = {}) => intentGate.hasRecentIntent({ normalizedUrl, url })),
      originalFetch
    });
    targetWindow.fetch = hook;
    return hook;
  }

  // src/userscript/crossOriginFetch.js
  function parseMimeTypeFromResponseHeaders(responseHeaders) {
    if (typeof responseHeaders !== "string" || responseHeaders.length === 0) {
      return "";
    }
    const lines = responseHeaders.split(/\r?\n/);
    for (const line of lines) {
      const separatorIndex = line.indexOf(":");
      if (separatorIndex <= 0) continue;
      const name = line.slice(0, separatorIndex).trim().toLowerCase();
      if (name !== "content-type") continue;
      return line.slice(separatorIndex + 1).trim().split(";")[0].trim().toLowerCase();
    }
    return "";
  }
  async function fetchBlobWithStandardFetch(fetchImpl, url) {
    const response = await fetchImpl(url, {
      credentials: "omit",
      redirect: "follow"
    });
    if (!response?.ok) {
      throw new Error(`Failed to fetch image: ${response?.status || 0}`);
    }
    return response.blob();
  }
  async function fetchBlobWithUserscriptRequest(gmRequest, url) {
    return new Promise((resolve, reject) => {
      gmRequest({
        method: "GET",
        url,
        responseType: "arraybuffer",
        onload: (response) => {
          const status = Number(response?.status) || 0;
          if (status < 200 || status >= 300) {
            reject(new Error(`Failed to fetch image: ${status}`));
            return;
          }
          const mimeType = parseMimeTypeFromResponseHeaders(response?.responseHeaders) || "image/png";
          resolve(new Blob([response.response], { type: mimeType }));
        },
        onerror: () => {
          reject(new Error("Failed to fetch image"));
        },
        ontimeout: () => {
          reject(new Error("Failed to fetch image: timeout"));
        }
      });
    });
  }
  function isCrossOriginGoogleusercontentUrl(url) {
    try {
      const parsedUrl = new URL(String(url || ""));
      return /^https?:$/i.test(parsedUrl.protocol) && /(^|\.)googleusercontent\.com$/i.test(parsedUrl.hostname);
    } catch {
      return false;
    }
  }
  function createUserscriptBlobFetcher({
    gmRequest = globalThis.GM_xmlhttpRequest,
    fallbackFetch = globalThis.fetch?.bind(globalThis) || null
  } = {}) {
    return async function fetchPreviewBlob(url) {
      if (typeof gmRequest === "function") {
        return fetchBlobWithUserscriptRequest(gmRequest, url);
      }
      if (isCrossOriginGoogleusercontentUrl(url)) {
        throw new Error("Cross-origin preview fetch requires GM_xmlhttpRequest");
      }
      if (typeof fallbackFetch === "function") {
        return fetchBlobWithStandardFetch(fallbackFetch, url);
      }
      throw new Error("Failed to fetch image");
    };
  }

  // src/userscript/bridgeShared.js
  function buildBlobBridgeResult(processedBlob, processedMeta = null) {
    return {
      processedBlob,
      processedMeta
    };
  }
  async function blobBridgeResultToPayload(result, { invalidBlobMessage = "Bridge processor must return a Blob" } = {}) {
    const normalizedResult = result instanceof Blob ? buildBlobBridgeResult(result, null) : buildBlobBridgeResult(result?.processedBlob, result?.processedMeta ?? null);
    const processedBlob = normalizedResult.processedBlob;
    if (!(processedBlob instanceof Blob)) {
      throw new Error(invalidBlobMessage);
    }
    const processedBuffer = await processedBlob.arrayBuffer();
    return {
      processedBuffer,
      mimeType: processedBlob.type || "image/png",
      meta: normalizedResult.processedMeta ?? null
    };
  }
  function createBlobBridgeResultFromResponse(result = {}) {
    return {
      processedBlob: new Blob([result.processedBuffer], {
        type: result.mimeType || "image/png"
      }),
      processedMeta: result.meta ?? null
    };
  }
  function createBridgeRequestId(prefix) {
    return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2)}`;
  }
  function installWindowMessageBridge({
    targetWindow = globalThis.window || null,
    bridgeFlag,
    createHandler
  } = {}) {
    if (!targetWindow || typeof targetWindow.addEventListener !== "function") {
      return null;
    }
    if (!bridgeFlag) {
      throw new Error("bridgeFlag is required");
    }
    if (targetWindow[bridgeFlag]) {
      return targetWindow[bridgeFlag];
    }
    if (typeof createHandler !== "function") {
      throw new Error("createHandler must be a function");
    }
    const handler = createHandler();
    const listener = (event) => {
      void handler(event);
    };
    targetWindow.addEventListener("message", listener);
    targetWindow[bridgeFlag] = {
      handler,
      dispose() {
        targetWindow.removeEventListener?.("message", listener);
        delete targetWindow[bridgeFlag];
      }
    };
    return targetWindow[bridgeFlag];
  }

  // src/userscript/pageProcessBridge.js
  var PAGE_PROCESS_REQUEST = "gwr:page-process-request";
  var PAGE_PROCESS_RESPONSE = "gwr:page-process-response";
  function isAllowedMessageSource(eventSource, targetWindow) {
    if (!targetWindow || !eventSource) {
      return true;
    }
    if (eventSource === targetWindow) {
      return true;
    }
    try {
      if (eventSource.window === targetWindow || eventSource.self === targetWindow) {
        return true;
      }
    } catch {
    }
    try {
      if (targetWindow.window === eventSource || targetWindow.self === eventSource) {
        return true;
      }
    } catch {
    }
    return false;
  }
  function sanitizeSerializableAssetIds(assetIds = null) {
    if (!assetIds || typeof assetIds !== "object") {
      return null;
    }
    const sanitized = {};
    for (const key of ["responseId", "draftId", "conversationId"]) {
      if (typeof assetIds[key] === "string" && assetIds[key].trim()) {
        sanitized[key] = assetIds[key].trim();
      }
    }
    return Object.keys(sanitized).length > 0 ? sanitized : null;
  }
  function sanitizeSerializableResource(resource = null) {
    if (!resource || typeof resource !== "object") {
      return null;
    }
    const sanitized = {};
    for (const key of ["kind", "url", "mimeType", "source", "slot"]) {
      if (typeof resource[key] === "string" && resource[key].trim()) {
        sanitized[key] = resource[key].trim();
      }
    }
    if (resource.processedMeta != null) {
      sanitized.processedMeta = resource.processedMeta;
    }
    return Object.keys(sanitized).length > 0 ? sanitized : null;
  }
  function sanitizeSerializableActionContext(actionContext = null) {
    if (!actionContext || typeof actionContext !== "object") {
      return null;
    }
    const sanitized = {};
    if (typeof actionContext.action === "string" && actionContext.action.trim()) {
      sanitized.action = actionContext.action.trim();
    }
    if (typeof actionContext.sessionKey === "string" && actionContext.sessionKey.trim()) {
      sanitized.sessionKey = actionContext.sessionKey.trim();
    }
    const assetIds = sanitizeSerializableAssetIds(actionContext.assetIds);
    if (assetIds) {
      sanitized.assetIds = assetIds;
    }
    const resource = sanitizeSerializableResource(actionContext.resource);
    if (resource) {
      sanitized.resource = resource;
    }
    return Object.keys(sanitized).length > 0 ? sanitized : null;
  }
  function sanitizePageProcessOptions(options = {}) {
    if (!options || typeof options !== "object") {
      return {};
    }
    const sanitized = { ...options };
    const actionContext = sanitizeSerializableActionContext(options.actionContext);
    delete sanitized.actionContext;
    if (actionContext) {
      sanitized.actionContext = actionContext;
    }
    return sanitized;
  }
  function createPageProcessBridgeClient({
    targetWindow = globalThis.window || null,
    timeoutMs = 12e4,
    fallbackProcessWatermarkBlob,
    fallbackRemoveWatermarkFromBlob,
    logger = console
  } = {}) {
    async function request(action, blob, options, fallback) {
      if (!(blob instanceof Blob)) {
        throw new TypeError("blob must be a Blob");
      }
      if (!targetWindow || typeof targetWindow.addEventListener !== "function" || typeof targetWindow.removeEventListener !== "function" || typeof targetWindow.postMessage !== "function") {
        return fallback(blob, options);
      }
      const inputBuffer = await blob.arrayBuffer();
      const requestId = createBridgeRequestId("gwr-page-bridge");
      const sanitizedOptions = sanitizePageProcessOptions(options);
      try {
        return await new Promise((resolve, reject) => {
          const cleanup = () => {
            targetWindow.removeEventListener("message", handleMessage);
            globalThis.clearTimeout(timeoutId);
          };
          const handleMessage = (event) => {
            if (!isAllowedMessageSource(event?.source, targetWindow)) {
              return;
            }
            if (!event?.data || event.data.type !== PAGE_PROCESS_RESPONSE) {
              return;
            }
            if (event.data.requestId !== requestId) {
              return;
            }
            cleanup();
            if (event.data.ok === false) {
              reject(new Error(normalizeErrorMessage(event.data.error, "Page bridge failed")));
              return;
            }
            resolve(createBlobBridgeResultFromResponse(event.data.result));
          };
          const timeoutId = globalThis.setTimeout(() => {
            cleanup();
            reject(new Error(`Page bridge timed out: ${action}`));
          }, timeoutMs);
          targetWindow.addEventListener("message", handleMessage);
          targetWindow.postMessage({
            type: PAGE_PROCESS_REQUEST,
            requestId,
            action,
            inputBuffer,
            mimeType: blob.type || "image/png",
            options: sanitizedOptions
          }, "*", [inputBuffer]);
        });
      } catch (error) {
        logger?.warn?.("[Gemini Watermark Remover] Page bridge fallback:", error);
        return fallback(blob, options);
      }
    }
    return {
      async processWatermarkBlob(blob, options = {}) {
        if (typeof fallbackProcessWatermarkBlob !== "function") {
          throw new Error("fallbackProcessWatermarkBlob must be a function");
        }
        return request("process-watermark-blob", blob, options, fallbackProcessWatermarkBlob);
      },
      async removeWatermarkFromBlob(blob, options = {}) {
        if (typeof fallbackRemoveWatermarkFromBlob !== "function") {
          throw new Error("fallbackRemoveWatermarkFromBlob must be a function");
        }
        const result = await request("remove-watermark-blob", blob, options, async (inputBlob, inputOptions) => {
          const processedBlob = await fallbackRemoveWatermarkFromBlob(inputBlob, inputOptions);
          return buildBlobBridgeResult(processedBlob, null);
        });
        return result.processedBlob;
      }
    };
  }

  // src/userscript/historyBindingBootstrap.js
  var GEMINI_HISTORY_RPC_ID = "hNvQHb";
  var GEMINI_HISTORY_PAGE_SIZE = 10;
  function normalizeConversationRouteSegment(segment = "") {
    const normalizedSegment = String(segment || "").trim().replace(/^\/+|\/+$/g, "");
    if (!normalizedSegment || normalizedSegment === "app") {
      return "";
    }
    if (normalizedSegment.startsWith("c_")) {
      return normalizedSegment;
    }
    return `c_${normalizedSegment}`;
  }
  function extractGeminiConversationIdFromPath(pathname = "") {
    const normalizedPath = String(pathname || "").trim();
    if (!normalizedPath) {
      return "";
    }
    const segments = normalizedPath.split("/").filter(Boolean);
    const appIndex = segments.indexOf("app");
    if (appIndex < 0) {
      return "";
    }
    return normalizeConversationRouteSegment(segments[appIndex + 1] || "");
  }
  function getGeminiBootstrapRpcConfig(targetWindow = globalThis.window || null) {
    const bootstrapData = targetWindow?.WIZ_global_data;
    if (!bootstrapData || typeof bootstrapData !== "object") {
      return null;
    }
    const at = typeof bootstrapData.SNlM0e === "string" ? bootstrapData.SNlM0e.trim() : "";
    const buildLabel = typeof bootstrapData.cfb2h === "string" ? bootstrapData.cfb2h.trim() : "";
    const sessionId = typeof bootstrapData.FdrFJe === "string" ? bootstrapData.FdrFJe.trim() : "";
    const endpointBase = typeof bootstrapData.eptZe === "string" ? bootstrapData.eptZe.trim() : "";
    if (!at || !buildLabel || !sessionId || !endpointBase) {
      return null;
    }
    return {
      at,
      buildLabel,
      sessionId,
      endpointBase
    };
  }
  function buildGeminiConversationHistoryRequest({
    origin = "https://gemini.google.com",
    sourcePath = "/app",
    hl = "en",
    reqId = 1e5,
    conversationId = "",
    rpcConfig = null,
    pageSize = GEMINI_HISTORY_PAGE_SIZE
  } = {}) {
    if (!conversationId || !rpcConfig) {
      return null;
    }
    const endpointBase = String(rpcConfig.endpointBase || "").trim();
    const endpointPath = endpointBase.endsWith("/") ? `${endpointBase}data/batchexecute` : `${endpointBase}/data/batchexecute`;
    const url = new URL(endpointPath, origin);
    url.searchParams.set("rpcids", GEMINI_HISTORY_RPC_ID);
    url.searchParams.set("source-path", sourcePath || "/app");
    url.searchParams.set("bl", rpcConfig.buildLabel);
    url.searchParams.set("f.sid", rpcConfig.sessionId);
    url.searchParams.set("hl", hl || "en");
    url.searchParams.set("_reqid", String(reqId));
    url.searchParams.set("rt", "c");
    const payload = [[[
      GEMINI_HISTORY_RPC_ID,
      JSON.stringify([conversationId, pageSize, null, 1, [0], [4], null, 1]),
      null,
      "generic"
    ]]];
    return {
      url: url.toString(),
      init: {
        method: "POST",
        credentials: "same-origin",
        headers: {
          "content-type": "application/x-www-form-urlencoded;charset=UTF-8"
        },
        body: `f.req=${encodeURIComponent(JSON.stringify(payload))}&at=${encodeURIComponent(rpcConfig.at)}&`
      }
    };
  }
  var historyReqCounter = 0;
  function nextHistoryReqId() {
    historyReqCounter = (historyReqCounter + 1e5) % 9e5;
    return 1e5 + historyReqCounter;
  }
  async function requestGeminiConversationHistoryBindings({
    targetWindow = globalThis.window || null,
    fetchImpl = null,
    onResponseText = null,
    logger = console
  } = {}) {
    if (!targetWindow || typeof targetWindow !== "object") {
      return false;
    }
    const conversationId = extractGeminiConversationIdFromPath(targetWindow.location?.pathname || "");
    if (!conversationId) {
      return false;
    }
    const rpcConfig = getGeminiBootstrapRpcConfig(targetWindow);
    if (!rpcConfig) {
      return false;
    }
    const request = buildGeminiConversationHistoryRequest({
      origin: targetWindow.location?.origin || "https://gemini.google.com",
      sourcePath: targetWindow.location?.pathname || "/app",
      hl: targetWindow.document?.documentElement?.lang || targetWindow.navigator?.language || "en",
      reqId: nextHistoryReqId(),
      conversationId,
      rpcConfig
    });
    if (!request) {
      return false;
    }
    const effectiveFetch = typeof fetchImpl === "function" ? fetchImpl : targetWindow.fetch?.bind(targetWindow);
    if (typeof effectiveFetch !== "function") {
      return false;
    }
    try {
      const response = await effectiveFetch(request.url, request.init);
      if (typeof onResponseText === "function" && response) {
        const responseText = typeof response.clone === "function" ? await response.clone().text() : await response.text();
        await onResponseText(responseText, {
          request,
          response
        });
      }
      return true;
    } catch (error) {
      logger?.warn?.("[Gemini Watermark Remover] Conversation history bootstrap failed:", error);
      return false;
    }
  }

  // src/userscript/processBridge.js
  var USERSCRIPT_PROCESS_REQUEST = "gwr:userscript-process-request";
  var USERSCRIPT_PROCESS_RESPONSE = "gwr:userscript-process-response";
  var USERSCRIPT_PROCESS_BRIDGE_FLAG = "__gwrUserscriptProcessBridgeInstalled__";
  function createUserscriptProcessBridgeServer({
    targetWindow = globalThis.window || null,
    processWatermarkBlob: processWatermarkBlob2,
    removeWatermarkFromBlob: removeWatermarkFromBlob2,
    logger = console
  } = {}) {
    return async function handleUserscriptProcessBridge(event) {
      if (!event?.data || event.data.type !== USERSCRIPT_PROCESS_REQUEST) {
        return;
      }
      if (targetWindow && event.source && event.source !== targetWindow) {
        return;
      }
      if (!targetWindow || typeof targetWindow.postMessage !== "function") {
        return;
      }
      const requestId = typeof event.data.requestId === "string" ? event.data.requestId : "";
      const action = typeof event.data.action === "string" ? event.data.action : "";
      if (!requestId || !action) {
        return;
      }
      try {
        const inputBlob = new Blob([event.data.inputBuffer], {
          type: event.data.mimeType || "image/png"
        });
        let result;
        if (action === "process-watermark-blob") {
          if (typeof processWatermarkBlob2 !== "function") {
            throw new Error("processWatermarkBlob bridge handler unavailable");
          }
          result = await processWatermarkBlob2(inputBlob, event.data.options || {});
        } else if (action === "remove-watermark-blob") {
          if (typeof removeWatermarkFromBlob2 !== "function") {
            throw new Error("removeWatermarkFromBlob bridge handler unavailable");
          }
          result = await removeWatermarkFromBlob2(inputBlob, event.data.options || {});
        } else {
          throw new Error(`Unknown bridge action: ${action}`);
        }
        const payload = await blobBridgeResultToPayload(result, {
          invalidBlobMessage: "Bridge processor must return a Blob"
        });
        targetWindow.postMessage({
          type: USERSCRIPT_PROCESS_RESPONSE,
          requestId,
          ok: true,
          action,
          result: payload
        }, "*", [payload.processedBuffer]);
      } catch (error) {
        logger?.warn?.("[Gemini Watermark Remover] Userscript bridge request failed:", error);
        targetWindow.postMessage({
          type: USERSCRIPT_PROCESS_RESPONSE,
          requestId,
          ok: false,
          action,
          error: normalizeErrorMessage(error, "Userscript bridge failed")
        }, "*");
      }
    };
  }
  function installUserscriptProcessBridge(options = {}) {
    const {
      targetWindow = globalThis.window || null
    } = options;
    return installWindowMessageBridge({
      targetWindow,
      bridgeFlag: USERSCRIPT_PROCESS_BRIDGE_FLAG,
      createHandler() {
        return createUserscriptProcessBridgeServer({
          ...options,
          targetWindow
        });
      }
    });
  }

  // src/userscript/trustedTypes.js
  var USERSCRIPT_TRUSTED_TYPES_POLICY = "gemini-watermark-remover";
  function getUserscriptTrustedTypesPolicy(env = globalThis) {
    const trustedTypesApi = env?.trustedTypes;
    if (!trustedTypesApi || typeof trustedTypesApi.createPolicy !== "function") {
      return null;
    }
    try {
      const existingPolicy = typeof trustedTypesApi.getPolicy === "function" ? trustedTypesApi.getPolicy(USERSCRIPT_TRUSTED_TYPES_POLICY) : null;
      return existingPolicy || trustedTypesApi.createPolicy(
        USERSCRIPT_TRUSTED_TYPES_POLICY,
        {
          createScript: (value) => value,
          createScriptURL: (value) => value
        }
      );
    } catch {
      return null;
    }
  }
  function toTrustedScript(script, env = globalThis) {
    const policy = getUserscriptTrustedTypesPolicy(env);
    if (!policy) return script;
    if (typeof policy.createScript !== "function") return null;
    try {
      return policy.createScript(script);
    } catch {
      return null;
    }
  }
  function toTrustedScriptUrl(url, env = globalThis) {
    const policy = getUserscriptTrustedTypesPolicy(env);
    if (!policy) return url;
    if (typeof policy.createScriptURL !== "function") return null;
    try {
      return policy.createScriptURL(url);
    } catch {
      return null;
    }
  }
  function toWorkerScriptUrl(url, env = globalThis) {
    return toTrustedScriptUrl(url, env);
  }

  // src/userscript/pageProcessorRuntime.js
  var PAGE_PROCESSOR_SCRIPT_FLAG = "__gwrPageProcessorScriptInstalled__";
  var PAGE_PROCESS_RUNTIME_FLAG = "__gwrPageProcessRuntimeInstalled__";
  var PAGE_PROCESSOR_SCRIPT_TIMEOUT_MS = 5e3;
  function getExistingScriptNonce(documentRef) {
    const existingScript = documentRef?.querySelector?.("script[nonce]");
    const nonce = existingScript?.nonce || existingScript?.getAttribute?.("nonce") || "";
    return typeof nonce === "string" && nonce.length > 0 ? nonce : "";
  }
  function applyScriptNonce(script, nonce) {
    if (!script || !nonce) {
      return;
    }
    script.nonce = nonce;
    script.setAttribute?.("nonce", nonce);
  }
  function createScriptElement(documentRef, nonce) {
    const script = documentRef.createElement("script");
    applyScriptNonce(script, nonce);
    return script;
  }
  function appendRuntimeScript(documentRef, script) {
    const parent = documentRef.head || documentRef.documentElement || documentRef.body;
    parent?.appendChild(script);
  }
  async function injectInlineRuntimeScript({
    targetWindow,
    documentRef,
    scriptCode,
    nonce
  }) {
    const script = createScriptElement(documentRef, nonce);
    const trustedScript = toTrustedScript(scriptCode, targetWindow);
    if (!trustedScript) {
      throw new Error("Trusted Types script injection unavailable");
    }
    script.textContent = trustedScript;
    appendRuntimeScript(documentRef, script);
    script.remove();
    return targetWindow[PAGE_PROCESS_RUNTIME_FLAG] || null;
  }
  async function injectBlobRuntimeScript({
    targetWindow,
    documentRef,
    scriptCode,
    nonce
  }) {
    const script = createScriptElement(documentRef, nonce);
    const blobUrl = URL.createObjectURL(new Blob([scriptCode], {
      type: "text/javascript"
    }));
    const trustedScriptUrl = toTrustedScriptUrl(blobUrl, targetWindow);
    if (!trustedScriptUrl) {
      URL.revokeObjectURL(blobUrl);
      throw new Error("Trusted Types script URL injection unavailable");
    }
    try {
      await new Promise((resolve, reject) => {
        const cleanup = () => {
          targetWindow.clearTimeout?.(timeoutId);
          script.onload = null;
          script.onerror = null;
        };
        const timeoutId = targetWindow.setTimeout?.(() => {
          cleanup();
          reject(new Error("Page runtime blob injection timed out"));
        }, PAGE_PROCESSOR_SCRIPT_TIMEOUT_MS);
        script.onload = () => {
          cleanup();
          resolve();
        };
        script.onerror = () => {
          cleanup();
          reject(new Error("Page runtime blob injection failed"));
        };
        script.src = trustedScriptUrl;
        appendRuntimeScript(documentRef, script);
      });
    } finally {
      script.remove();
      URL.revokeObjectURL(blobUrl);
    }
    return targetWindow[PAGE_PROCESS_RUNTIME_FLAG] || null;
  }
  async function installInjectedPageProcessorRuntime({
    targetWindow = globalThis.window || null,
    scriptCode = "",
    logger = console
  } = {}) {
    if (!targetWindow || typeof scriptCode !== "string" || scriptCode.length === 0) {
      return null;
    }
    if (targetWindow[PAGE_PROCESS_RUNTIME_FLAG]) {
      return targetWindow[PAGE_PROCESS_RUNTIME_FLAG];
    }
    if (targetWindow[PAGE_PROCESSOR_SCRIPT_FLAG]) {
      return targetWindow[PAGE_PROCESSOR_SCRIPT_FLAG];
    }
    const documentRef = targetWindow.document;
    if (!documentRef || typeof documentRef.createElement !== "function") {
      return null;
    }
    const nonce = getExistingScriptNonce(documentRef);
    try {
      const inlineRuntime = await injectInlineRuntimeScript({
        targetWindow,
        documentRef,
        scriptCode,
        nonce
      });
      if (inlineRuntime) {
        targetWindow[PAGE_PROCESSOR_SCRIPT_FLAG] = inlineRuntime;
        return inlineRuntime;
      }
      logger?.info?.("[Gemini Watermark Remover] Page runtime inline injection did not register, retrying with blob script");
      const blobRuntime = await injectBlobRuntimeScript({
        targetWindow,
        documentRef,
        scriptCode,
        nonce
      });
      if (blobRuntime) {
        targetWindow[PAGE_PROCESSOR_SCRIPT_FLAG] = blobRuntime;
        return blobRuntime;
      }
    } catch (error) {
      logger?.warn?.("[Gemini Watermark Remover] Page runtime injection failed:", error);
      return null;
    }
    if (!targetWindow[PAGE_PROCESS_RUNTIME_FLAG]) {
      logger?.warn?.("[Gemini Watermark Remover] Page runtime injection did not register a bridge");
      return null;
    }
    targetWindow[PAGE_PROCESSOR_SCRIPT_FLAG] = targetWindow[PAGE_PROCESS_RUNTIME_FLAG];
    return targetWindow[PAGE_PROCESSOR_SCRIPT_FLAG];
  }

  // src/userscript/runtimeFlags.js
  var INLINE_WORKER_DEFAULT_ENABLED = true ? false : false;
  var FORCE_INLINE_WORKER_STORAGE_KEY = "__gwr_force_inline_worker__";
  var DEBUG_TIMINGS_STORAGE_KEY = "__gwr_debug_timings__";
  function isTruthyFlagValue(value) {
    return value === true || value === "1" || value === "true";
  }
  function readStorageFlag(env, storageKey) {
    try {
      const value = env?.localStorage?.getItem?.(storageKey);
      return isTruthyFlagValue(value);
    } catch {
      return false;
    }
  }
  function readForceInlineWorkerFlag(env) {
    try {
      return isTruthyFlagValue(env?.__GWR_FORCE_INLINE_WORKER__);
    } catch {
      return false;
    }
  }
  function shouldUseInlineWorker(workerCode, env = globalThis) {
    const unsafeWindowEnv = env?.unsafeWindow;
    const forceEnable = readForceInlineWorkerFlag(env) || readForceInlineWorkerFlag(unsafeWindowEnv) || readStorageFlag(env, FORCE_INLINE_WORKER_STORAGE_KEY) || readStorageFlag(unsafeWindowEnv, FORCE_INLINE_WORKER_STORAGE_KEY);
    if (!INLINE_WORKER_DEFAULT_ENABLED && !forceEnable) return false;
    if (typeof workerCode !== "string" || workerCode.length === 0) return false;
    return typeof env?.Worker !== "undefined" && typeof env?.Blob !== "undefined";
  }
  function isTimingDebugEnabled(env = globalThis) {
    const unsafeWindowEnv = env?.unsafeWindow;
    return isTruthyFlagValue(env?.__GWR_DEBUG_TIMINGS__) || isTruthyFlagValue(unsafeWindowEnv?.__GWR_DEBUG_TIMINGS__) || readStorageFlag(env, DEBUG_TIMINGS_STORAGE_KEY) || readStorageFlag(unsafeWindowEnv, DEBUG_TIMINGS_STORAGE_KEY);
  }

  // src/userscript/processingRuntime.js
  var DEFAULT_INLINE_WORKER_TIMEOUT_MS = 12e4;
  var DEFAULT_WORKER_PING_TIMEOUT_MS = 3e3;
  function toError(errorLike, fallback = "Inline worker error") {
    if (errorLike instanceof Error) return errorLike;
    if (typeof errorLike === "string" && errorLike.length > 0) return new Error(errorLike);
    if (errorLike && typeof errorLike.message === "string" && errorLike.message.length > 0) {
      return new Error(errorLike.message);
    }
    return new Error(fallback);
  }
  function nowMs3() {
    if (typeof globalThis.performance?.now === "function") {
      return globalThis.performance.now();
    }
    return Date.now();
  }
  var InlineWorkerClient = class {
    constructor(workerCode) {
      const blob = new Blob([workerCode], { type: "text/javascript" });
      this.workerUrl = URL.createObjectURL(blob);
      const workerScriptUrl = toWorkerScriptUrl(this.workerUrl);
      if (!workerScriptUrl) {
        URL.revokeObjectURL(this.workerUrl);
        this.workerUrl = null;
        throw new Error("Trusted Types policy unavailable for inline worker");
      }
      try {
        this.worker = new Worker(workerScriptUrl);
      } catch (error) {
        URL.revokeObjectURL(this.workerUrl);
        this.workerUrl = null;
        throw error;
      }
      this.pending = /* @__PURE__ */ new Map();
      this.requestId = 0;
      this.handleMessage = this.handleMessage.bind(this);
      this.handleError = this.handleError.bind(this);
      this.worker.addEventListener("message", this.handleMessage);
      this.worker.addEventListener("error", this.handleError);
    }
    dispose() {
      this.worker.removeEventListener("message", this.handleMessage);
      this.worker.removeEventListener("error", this.handleError);
      this.worker.terminate();
      if (this.workerUrl) {
        URL.revokeObjectURL(this.workerUrl);
        this.workerUrl = null;
      }
      const error = new Error("Inline worker disposed");
      for (const pending of this.pending.values()) {
        clearTimeout(pending.timeoutId);
        pending.reject(error);
      }
      this.pending.clear();
    }
    handleMessage(event) {
      const payload = event?.data;
      if (!payload || typeof payload.id === "undefined") return;
      const pending = this.pending.get(payload.id);
      if (!pending) return;
      this.pending.delete(payload.id);
      clearTimeout(pending.timeoutId);
      if (payload.ok) {
        pending.resolve(payload.result);
        return;
      }
      pending.reject(new Error(payload.error?.message || "Inline worker request failed"));
    }
    handleError(event) {
      const error = new Error(event?.message || "Inline worker crashed");
      for (const pending of this.pending.values()) {
        clearTimeout(pending.timeoutId);
        pending.reject(error);
      }
      this.pending.clear();
    }
    request(type, payload, transferList = [], timeoutMs = DEFAULT_INLINE_WORKER_TIMEOUT_MS) {
      const id = ++this.requestId;
      return new Promise((resolve, reject) => {
        const timeoutId = setTimeout(() => {
          this.pending.delete(id);
          reject(new Error(`Inline worker request timed out: ${type}`));
        }, timeoutMs);
        this.pending.set(id, { resolve, reject, timeoutId });
        try {
          this.worker.postMessage({ id, type, ...payload }, transferList);
        } catch (error) {
          clearTimeout(timeoutId);
          this.pending.delete(id);
          reject(toError(error));
        }
      });
    }
    async ping(timeoutMs = DEFAULT_WORKER_PING_TIMEOUT_MS) {
      await this.request("ping", {}, [], timeoutMs);
    }
    async processWatermarkBlob(blob, options = {}) {
      const inputBuffer = await blob.arrayBuffer();
      const result = await this.request(
        "process-image",
        { inputBuffer, mimeType: blob.type || "image/png", options },
        [inputBuffer]
      );
      return {
        processedBlob: new Blob([result.processedBuffer], { type: result.mimeType || "image/png" }),
        processedMeta: result.meta || null
      };
    }
  };
  function createUserscriptProcessingRuntime({
    workerCode = "",
    env = globalThis,
    logger = console
  } = {}) {
    let workerClient = null;
    const timingDebugEnabled = isTimingDebugEnabled(env);
    function normalizeProcessingOptions2(options = {}) {
      return {
        adaptiveMode: "always",
        ...options && typeof options === "object" ? options : {}
      };
    }
    const getEngine = createCachedEngineGetter();
    const processRenderableToCanvas = createCachedCanvasProcessor({
      getEngine
    });
    function disableInlineWorker(reason) {
      if (!workerClient) return;
      logger?.warn?.("[Gemini Watermark Remover] Disable worker path:", reason);
      workerClient.dispose();
      workerClient = null;
    }
    function emitTiming(stage, payload = {}) {
      if (!timingDebugEnabled) return;
      logger?.info?.(`[Gemini Watermark Remover] timing ${stage}`, payload);
    }
    async function processBlobOnMainThread(blob, options = {}) {
      const startedAt = nowMs3();
      const engineWaitStartedAt = nowMs3();
      await getEngine();
      const engineWaitMs = nowMs3() - engineWaitStartedAt;
      const decodeStartedAt = nowMs3();
      const img = await loadImageElementFromBlob(blob);
      const decodeMs = nowMs3() - decodeStartedAt;
      const removeStartedAt = nowMs3();
      const canvas = await processRenderableToCanvas(img, {
        ...options,
        debugTimings: timingDebugEnabled
      });
      const removeWatermarkMs = nowMs3() - removeStartedAt;
      const encodeStartedAt = nowMs3();
      const processedBlob = await canvasToBlob(canvas);
      const encodeMs = nowMs3() - encodeStartedAt;
      const totalMs = nowMs3() - startedAt;
      const engineStageTimings = canvas?.__watermarkTiming ?? null;
      const processorTimings = engineStageTimings?.processor ?? null;
      const selectionDebug = canvas?.__watermarkMeta?.selectionDebug ?? null;
      emitTiming("process-blob-main-thread", {
        sourceBlobType: blob?.type || "",
        sourceBlobSize: blob?.size || 0,
        imageWidth: img?.width || 0,
        imageHeight: img?.height || 0,
        engineWaitMs,
        decodeMs,
        removeWatermarkMs,
        encodeMs,
        totalMs,
        adaptiveMode: options?.adaptiveMode || "",
        maxPasses: options?.maxPasses ?? null,
        engineStageTimings,
        engineDrawMs: engineStageTimings?.drawMs ?? null,
        engineGetImageDataMs: engineStageTimings?.getImageDataMs ?? null,
        engineProcessWatermarkImageDataMs: engineStageTimings?.processWatermarkImageDataMs ?? null,
        enginePutImageDataMs: engineStageTimings?.putImageDataMs ?? null,
        processorInitialSelectionMs: processorTimings?.initialSelectionMs ?? null,
        processorFirstPassMetricsMs: processorTimings?.firstPassMetricsMs ?? null,
        processorExtraPassMs: processorTimings?.extraPassMs ?? null,
        processorFinalMetricsMs: processorTimings?.finalMetricsMs ?? null,
        processorRecalibrationMs: processorTimings?.recalibrationMs ?? null,
        processorSubpixelRefinementMs: processorTimings?.subpixelRefinementMs ?? null,
        processorPreviewEdgeCleanupMs: processorTimings?.previewEdgeCleanupMs ?? null,
        processorTotalMs: processorTimings?.totalMs ?? null,
        selectionDebug
      });
      return {
        processedBlob,
        processedMeta: canvas.__watermarkMeta || null
      };
    }
    async function processBlobWithBestPath(blob, options = {}) {
      const normalizedOptions = normalizeProcessingOptions2(options);
      if (workerClient) {
        try {
          return await workerClient.processWatermarkBlob(blob, normalizedOptions);
        } catch (error) {
          logger?.warn?.("[Gemini Watermark Remover] Worker path failed, fallback to main thread:", error);
          disableInlineWorker(error);
        }
      }
      return processBlobOnMainThread(blob, normalizedOptions);
    }
    const runtime = {
      async initialize() {
        if (!shouldUseInlineWorker(workerCode, env)) {
          return false;
        }
        try {
          workerClient = new InlineWorkerClient(workerCode);
          await workerClient.ping();
          logger?.log?.("[Gemini Watermark Remover] Worker acceleration enabled");
          return true;
        } catch (workerError) {
          workerClient?.dispose();
          workerClient = null;
          logger?.warn?.("[Gemini Watermark Remover] Worker initialization failed, using main thread:", workerError);
          return false;
        }
      },
      dispose(reason) {
        disableInlineWorker(reason);
      },
      async processWatermarkBlob(blob, options = {}) {
        return processBlobWithBestPath(blob, options);
      },
      async removeWatermarkFromBlob(blob, options = {}) {
        return (await runtime.processWatermarkBlob(blob, options)).processedBlob;
      }
    };
    return runtime;
  }

  // src/userscript/userNotice.js
  var GWR_ORIGINAL_ASSET_REFRESH_MESSAGE = "\u65E0\u6CD5\u83B7\u53D6\u539F\u56FE\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u540E\u91CD\u8BD5";
  function showUserNotice(targetWindow = globalThis, message = "") {
    const normalizedMessage = typeof message === "string" ? message.trim() : "";
    if (!normalizedMessage) {
      return false;
    }
    try {
      if (typeof targetWindow?.alert === "function") {
        targetWindow.alert(normalizedMessage);
        return true;
      }
    } catch {
      return false;
    }
    return false;
  }

  // src/userscript/index.js
  var USERSCRIPT_WORKER_CODE = true ? '(()=>{var Lg={48:2304,96:9216},LA={48:"gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAADj4uI+4eDgPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDvBwEA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4WEBD6BgAA/gYAAP4GAAD4AAAAAgYAAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8wcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYAAPIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO5GQkD6BgAA/gYAAP5GQkD4AAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADwAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAO+Hg4D6BgAA/gYAAP/Hw8D4AAAAAgYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPoGAAD+BgAA/gYAAP4GAAD+BgAA+AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAADwAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7AAAAAAAAAACBgIA7oaCgPoGAAD+BgAA/gYAAP4GAAD/BwMA+AAAAAAAAAACBgIA7AAAAAIGAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAwcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADwAAAAAAAAAAIGAADyJiIg9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgIA7AAAAAAAAAAAAAAAAgYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAADwAAAAAgYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO8HAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/o6KiPoGAgDuBgAA8AAAAAIGAgDuBgIA7gYCAO8HAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPAAAAAAAAAAAgYCAO4GAADyBgIA7gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAADyBgAA8gYCAO4mIiD2BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD6BgAA8gYCAO4GAADwAAAAAgYCAO4GAADyBgIA7wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7AAAAAIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO+Hg4D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDsAAAAAAAAAAIGAgDuBgAA8AAAAAIGAgDuBgIA7AAAAAAAAAAAAAAAAgYAAPIGAgDuBgIA7gYAAPAAAAACBgIA7gYCAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4GA+AAAAAAAAAACBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAACBgIA7gYCAO8HAQDwAAAAAgYCAO4GAADwAAAAAgYAAPAAAAACBgAA8gYCAOwAAAACBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+wcDAPYGAgDuBgAA8wcBAPIGAADyBgAA8gYAAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAACBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7AAAAAMHAQDyBgAA8gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAAD2BgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAOwAAAACBgIA7AAAAAAAAAACBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO9PS0j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPIGAgDuBgIA7o6KiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+hoKA+gYCAOwAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPgAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAADwAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPcHAwD6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgIA9gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgIA7gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAADBwMA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+iYiIPYGAgDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAOHgYD7x8PA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4WEhD6BgIA7gYCAO4GAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAgDsAAAAAgYAAPIGAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAgDuBgAA+wcDAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAPYGAADzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6GgoD6BgIA9gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4WEBD7BwMA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAAD6BgIA7gYAAPIGAgDuBgIA7AAAAAIGAAD6RkJA+8fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+kZCQPoGAAD6BgIA84eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAO4GAAD6RkJA+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+kZCQPoGAAD6BgIA7gYCAO8HAQDwAAAAAgYCAO4GAAD6hoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/wcDAPoGAAD6BgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA7AAAAAAAAAACBgAA8gYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6Oioj6JiIg9gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO4GAADyBgIA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/BwMA+gYAAPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/8/LyPuXkZD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAAAAAAAAAAAAgYAAPAAAAACBgIA94+LiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+wcDAPYGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPdHQ0D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgAA9gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgIA7gYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/oaCgPsHAQDzBwEA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7gYCAO4GAADyBgIA7oaCgPoGAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8PCwj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgAA8gYAAPMHAQDzBwEA8gYCAOwAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYCAO6GgID3j4uI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAgD2BgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYCAPMHAQDwAAAAAgYCAO8HAQDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8AAAAAAAAAACBgAA8wcBAPIGAADzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADzJyMg98fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgAA8wcBAPIGAADyBgIA7AAAAAAAAAACBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA84eBgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYCAO4GAgDvBwEA8gYAAPIGAgDsAAAAAgYCAO4GAgDvBwEA8wcBAPIGAgDuBgAA8gYCAOwAAAAAAAAAAAAAAAIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYAAPIGAADyBgAA8AAAAAMHAwD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgAA8gYCAO4GAAD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAgD2BgIA7gYCAOwAAAACBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAOwAAAACBgAA8gYAAPIGAADyBgIA7gYCAOwAAAAChoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPYGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAw8LCPoKBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDuBgIA7gYAAPMHAQDyBgIA7gYAAPoKBAT+BgAA/gYAAP4GAAD+BgAA+gYCAO4GAADyBgAA8AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPAAAAAAAAAAAgYAAPIGAADyBgIA7gYCAO/Py8j6BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAADzBwEA8gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO5OSkj6BgAA/gYAAP5OSkj6BgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADyBgIA7AAAAAIGAgDvBwEA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYAAPIGAAD6BgAA/gYAAP4WEBD6BgIA7gYCAO4GAADyBgAA8gYAAPIGAADwAAAAAgYCAOwAAAACBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8gYAAPIGAgDvh4OA+4eDgPoGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7",96:"gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDwAAAAAwcBAPMHAQDyBgIA8wcBAPIGAADyhoKA8gYAAPIGAADyBgAA8AAAAAIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAADzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPOXkZD7z8vI+4+LiPu3sbD6BgIA7wcBAPAAAAACBgAA8gYCAO4GAADyBgIA8gYCAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAO8HAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8oaCgPIGAgDyBgIA8wcBAPIGAgDyBgAA8wcBAPIGAgDvBwEA8wcBAPIGAgDyBgAA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAADzBwEA8wcBAPIGAgDvBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPYGAAD+BgAA/goEBP4KBAT+RkBA9gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYAAPAAAAACBgAA8AAAAAIGAgDuBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcDAPKGgoDyBgIA8oaCgPIGAgDyhoKA8gYCAOwAAAACBgAA8gYCAO4GAADyBgIA8wcBAPIGAADwAAAAAgYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8AAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAADyBgAA8paQkPoGAAD+BgAA/goEBP4GAAD/FxEQ+AAAAAAAAAACBgIA7gYAAPIGAgDsAAAAAAAAAAIGAgDuBgIA7gYAAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYAAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPKGgoDzBwEA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDyBgIA8gYCAPMHAQDzBwEA8AAAAAIGAgDuBgIA7gYAAPIGAADyhoKA8gYAAPMHAQDwAAAAAgYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAADyBgIA7gYCAOwAAAACBgIA7gYCAPMHAQDyBgAA8gYCAPIGAgDuBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPIGAADzBwEA8paSkPoGAAD+BgAA/goEBP4KBAT+hoKA+gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAAAAAAIGAgDuBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8oaCgPIGAgDyBgAA8gYCAO8HAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPMHAQDyhoKA8gYCAPMHAQDzBwEA8AAAAAAAAAACBgIA7wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAADBwEA8gYCAO8HAQDzBwEA8AAAAAIGAADyBgIA7gYCAOwAAAACBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgIA8wcBAPAAAAACBgIA7AAAAAIGAgDvBwEA85eTkPoGAAD+BgAA/gYAAP4GAAD/z8vI+gYAAPMHAQDyBgIA7gYAAPMHAQDyBgIA7gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYCAO8HAQDyBgIA8oaCgPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDsAAAAAwcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPKGgoDyBgIA8oaCgPIGAgDzBwEA8gYCAOwAAAADBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAgDyBgIA8AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDuBgIA8oaCgPIGAADyBgIA8AAAAAIGAADyBgIA8gYAAPIGAADyFhAQ+goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/iYgIPoGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAADyBgIA7gYCAO4GAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAADyBgIA7gYCAPIGAADyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADylpKQ+goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/k5KSPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADzBwEA8wcBAPKGgoDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwMA8oaCgPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA8gYCAO4GAgDsAAAAAgYAAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDvj4uI+goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/8/LyPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYCAO8HAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDzBwEA8oaCgPKGgoDyBgIA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA8gYCAO4GAgDuBgAA8wcBAPIGAgDyBgIA7gYAAPIGAADyBgAA8gYAAPAAAAACBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPKmoKD6BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4WEBD7BwEA8gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgIA8gYAAPIGAgDsAAAAAgYCAO4GAgDuBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgIA8oaCgPIGAgDyBgAA8gYAAPIGAgDyBgIA8oaCgPIGAgDyBgIA8gYCAO8HAQDyBgIA7gYCAOwAAAACBgIA7wcBAPIGAADyBgIA7wcBAPIGAgDuBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPLOysj6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP8PCwj6BgAA8AAAAAIGAgDvBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDsAAAAAgYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYCAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyhoKA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcDAPIGAgDyBgIA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO8HAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4GAADyBgIA8iYiIPYGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+JiIg9gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAgDsAAAAAgYAAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAADzBwEA8oaCgPoGAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+FhIQ+gYAAPIGAADyBgIA7AAAAAIGAADyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA7wcBAPIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8gYCAO4GAgDuBgIA7gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8AAAAAAAAAACBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgAA8gYCAOwAAAADBwEA8wcBAPMHAQDwAAAAAAAAAAIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADyBgIA7gYAAPAAAAAAAAAAAgYAAPAAAAACJiIg9goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD/z8vI+gYAAPYGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAOwAAAADBwEA8gYAAPIGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPMHAwDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAADwAAAAAgYAAPIGAgDsAAAAAgYAAPMHAQDyBgAA8gYCAOwAAAACBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8wcBAPAAAAAAAAAAAgYCAO4GAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7gYAAPMHAQDyDgoI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4KCPoGAADyBgAA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPKGgoDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDvBwEA8gYCAPAAAAAAAAAAAgYCAO4GAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDwAAAAAgYCAOwAAAACBgIA7AAAAAAAAAACBgIA8gYCAPJGQkD3j4uI+goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/8/LyPpGQED2BgAA8oaCgPIGAgDyBgIA8wcBAPIGAADyBgIA8gYCAPIGAADzBwEA8gYAAPIGAgDyBgIA7wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYCAPKGgoDzBwMA8gYCAPIGAADyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8wcBAPIGAgDuBgAA8gYCAO4GAgDsAAAAAgYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAO4GAADyBgIA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYCAPKWkpD6CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP4KBAT+CgQE/goEBP4WEhD7BwEA8gYCAO8HAQDyBgIA8gYAAPMHAQDzBwMA8wcBAPIGAADyBgIA7gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAwDzBwEA8gYCAPIGAADyhoKA8wcBAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgAA8gYAAPAAAAACBgIA7gYAAPIGAgDuBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP/Py8j6JiIg9wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAO4GAADzBwEA8gYCAOwAAAACBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8paSkPoKBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+zsrI+gYCAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYCAO8HAQDyBgIA8gYCAOwAAAADBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA8gYAAPIGAgDuBgIA7AAAAAIGAADzBwEA8oaCgPIGAgDzBwEA8gYCAO8HAQDyBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDylpCQ+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4SDAz+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/iYgIPoGAgDuBgIA7gYAAPIGAgDyBgAA8gYCAO4GAADyBgAA8AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDyBgIA8gYAAPIGAgDzBwEA8gYAAPMHAQDyhoKA8oaCgPIGAgDyBgAA8gYCAOwAAAADBwEA8gYCAPIGAgDzBwEA8gYCAO4GAADyBgAA8gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYCAPIGAADyBgAA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzj4uI+goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/gYAAP4GAAD+CgQE/4+LiPpGQED3BwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYAAPIGAgDvBwEA8gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8gYCAPIWEhD6BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP5OSkj6BgAA8wcBAPMHAQDyBgAA8gYCAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgIA8gYCAPIGAADyBgIA8oaCgPIGAgDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8oaCgPIGAADyBgAA8gYCAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8AAAAAMHAQDyBgIA82djYPYKBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+DggI/goEBP4GAAD+FhAQ+wcBAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDsAAAAAAAAAAAAAAAChoKA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDyBgAA8gYCAPMHAQDyBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDwAAAAAgYCAO4GAADyJiIg95eTkPoKBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD/j4uI+sbAwPYGAgDyhoKA8oaCgPMHAQDyBgAA8AAAAAIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8oaCgPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAIGAgDvBwEA8gYCAPIGAADyBgIA7gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyjoqI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPsHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAADyBgIA8wcBAPKGgoDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgAA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgAA8wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA8wcBAPIWEhD6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+XkZD6BgAA8gYCAO4GAgDyBgIA8gYCAO8HAQDyBgIA8gYAAPMHAQDyBgIA7gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPIGAADzBwEA8gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDsAAAAAwcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8jYwMPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgIA8gYCAO4GAADyhoKA8wcBAPIGAgDyBgIA8gYCAO4GAgDyBgIA8gYCAPIGAgDyBgAA8oaCgPIGAgDzBwEA8gYCAPKGgoDzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYCAO4GAADyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAADzBwEA8gYAAPIGAgDsAAAAAwcBAPIGAADyJiIg98/LyPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD/x8PA+kZCQPYGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPIGAgDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAO8HAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPKGgoDzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgDvBwEA8wcBAPMHAQDwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/4+LiPomIiD3BwEA8gYCAO4GAgDuBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDyBgIA7gYAAPMHAQDyBgIA8oaCgPMHAQDzBwEA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgIA8gYAAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDzBwEA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgIA7wcBAPIGAgDsAAAAAgYCAO4GAADzBwEA8kZCQPePi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP+Pi4j6BgIA9gYCAO4GAgDuhoKA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDwAAAAAgYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADyxsDA94+LiPoKBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/T0tI+gYAAPcHAQDyBgAA8gYCAPIGAgDsAAAAAgYCAO8HAQDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDyBgAA8gYCAPMHAQDyBgAA8gYCAO8HAQDwAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAOwAAAACBgAA8gYCAO4GAgDuBgAA8gYAAPJmYmD3V1NQ+gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/4+LiPqGgoD2BgIA8wcDAPIGAADyBgAA8gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA7gYCAPIGAgDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDyhoKA8oaCgPMHAQDzBwEA8gYCAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYCAO8HAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA7kZCQPeXk5D6CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4OCAj+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+BgAA/gYAAP+Pi4j6JiIg9gYAAPAAAAAAAAAAAwcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgIA7wcBAPIGAADyBgIA7gYAAPIGAgDzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADyRkJA95eTkPoKBAT+CgQE/g4ICP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD/j4uI+gYCAPYGAgDuBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDzBwEA8wcBAPKGgoDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA7AAAAAMHAQDzBwEA8gYCAO4GAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgIA7AAAAAIGAADyBgAA8oaCgPMHAQDyBgIA7gYCAO4mICD7z8vI+gYAAP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/8fDwPoWEBD6BgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcDAPKGgoDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgIA8wcBAPMHAQDyBgIA75eRkPoKBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgAA8wcBAPMHAwDyhoKA8gYCAPMHAQDwAAAAAgYCAO4GAgDyBgIA8gYAAPIGAADyBgIA7gYCAPIGAADyBgIA7wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8wcBAPIGAAD2xsLA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/o6KiPpGQkD3BwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADzBwEA8iYgIPuHg4D6BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP+Pi4j7R0NA9wcBAPIGAgDuBgIA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAOwAAAACBgAA8wcBAPMHAQDyBgIA7gYAAPIGAgDyhoKA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAAD2TkpI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/hYSEPsHAQDyBgAA8gYCAO4GAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYCAPKGgoDzBwEA8gYCAOwAAAADBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8iYgIPuPi4j6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Xk5D6pqCg+gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPIGAADyBgIA8wcBAPImIiD2zsrI+gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4ICP4KBAT+DggI/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/paSkPomIiD3BwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADzBwEA8wcDAPIGAgDzBwEA8gYCAPIGAgDuBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA9g4KCPvPy8j6CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+lpKQ+kZCQPYGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgAA8wcBAPIGAADyBgAA8kZAQPYWEhD7z8vI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/4+LiPoWEhD6ZmJg9gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA7AAAAAIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgD2FhIQ+8/LyPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/o6KiPomIiD2BgAA8gYCAPIGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAADyFhAQ+w8LCPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4SDAz+BgAA/g4ICP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+xsLA+paQkPsHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA+kZCQPvPy8j6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/g4ICP+Pi4j6joqI+kZAQPoGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPKGgID3FxEQ+o6KiPvPy8j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4OCAj+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP+Xk5D6lpKQ+rawsPpGQkD2BgAA86ehoPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/p6Gg+4+LiPoKBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT/z8vI+8/LyPoKBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT/l5OQ+6ehoPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT/t7Gw+wcBAPKmoqD2hoCA+paSkPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP/X09D6joqI+xcREPpGQED2BgAA8wcBAPIGAgDzBwEA8wcBAPIGAADyFhAQ+oaCgPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP/Py8j6VlJQ+iYgIPoGAgDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADylpCQ+tbS0PoGAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT/DwsI+iYgIPoGAgDyhoKA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgD2joqI+gYAAP4GAAD+BgAA/g4ICP4OCAj+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/z8vI+hYSEPpmYmD3BwEA8wcBAPMHAwDzBwMA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8kZCQPYWEhD7j4uI+goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/8/LyPoOCgj6RkBA9gYAAPIGAADyBgAA8gYCAPIGAgDyhoKA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgAA8gYCAPIGAADzBwEA8gYCAPKGgoDyBgIA8gYAAPMHAQDyhoKA8oaCgPIGAADzBwEA8gYAAPIGAgDyBgIA9o6KiPoKBAT+BgAA/gYAAP4KBAT+DggI/g4ICP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP/X09D6FhIQ+oaAgPYGAgDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgAA8gYAAPIGAADwAAAAAgYAAPImIiD2npqY+gYAAP4KBAT+DggI/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPpGQkD2BgIA8wcBAPMHAQDyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAgDuBgIA7gYCAO4GAADwAAAAAgYCAO8HAQDzBwEA8oaAgPuHg4D6BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP+Xk5D6JiAg+gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPKGgoDyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADyBgAA8AAAAAIGAADyDgoI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/lZSUPrGwMD3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDzBwEA8gYCAO8HAQDyBgIA7gYAAPIGAgDuBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDwAAAAAgYAAPAAAAACBgAA8gYCAO4GAgDsAAAAAwcDAPePi4j6CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP+Pi4j6JiAg+wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPKGgoDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgAA8AAAAAAAAAADBwEA8gYCAO4mIiD2joqI+goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/s7KyPqGgID3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA8gYAAPIGAgDuBgIA8hYSEPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/l5GQ+wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYAAPImICD7z8vI+goEBP4GAAD+CgQE/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/8fDwPomICD7BwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAADzBwEA8gYCAPMHAQDyZmJg94+LiPoGAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD/j4uI+iYiIPcHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8kZCQPePi4j6CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYAAPIGAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA8oaCgPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA8gYAAPIGAADyBgIA7gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYAAPMHAQDzBwEA8wcBAPJGQkD3j4uI+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4OCAj+CgQE/g4ICP4OCAj+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/09LSPpGQkD3BwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8oaCgPMHAQDyBgIA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyhoCA909LSPoKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT/j4uI+sbAwPYGAgDyBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDyhoKA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYAAPIGAgDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8mZiYPeXk5D6CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+DggI/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgIA7wcBAPMHAQDzBwEA8wcBAPJGQkD3j4uI+g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4GAAD+DggI/4+LiPpGQkD2BgAA8gYAAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyJiIg98/LyPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT/19PQ+kZCQPYGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPKGgoDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA7hYQEPoKBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4KBAT+NjAw+oaCgPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPKGgoDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8gYCAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYAAPOXkZD6BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCgj6BgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPKGgoDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAwDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDyhoKA8oaCgPKGgoDyBgIA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADyBgAA8gYCAO8HAQDyzsrI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPMHAQDyBgAA8gYCAO4GAADyBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDuhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPMHAQDwAAAAAwcBAPMHAQDyBgAA8gYCAPIGAgDyhoKA8oaCgPKGgoDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYAAPMHAQDyBgIA7gYAAPMHAQDyBgAA94eDgPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+kZCQPYGAADyBgIA7wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA7wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDvBwEA8gYAAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAPMHAQDyBgIA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT/R0NA9gYCAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPJOSkj6BgAA/gYAAP4KBAT+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4WEhD6BgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYAAPIGAgDyBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgAA8gYAAPMHAQDyBgIA7wcBAPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8oaCgPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAO5GQED3j4uI+gYAAP4OCAj+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/5eTkPoGAgDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDyhoKA8gYCAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA8gYAAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyJiAg+goEBP4KBAT+DggI/goEBP4OCAj+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/qagoPoGAADyBgAA8gYAAPIGAADyBgIA8gYCAPIGAADyBgIA8gYCAO8HAQDyBgAA8wcBAPIGAADyBgAA8gYCAPIGAADyBgIA7gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA7wcBAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDvBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADzBwEA8wcBAPAAAAACBgAA8gYCAO4GAADyBgIA7s7KyPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+lpKQ+gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA8wcBAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyBgAA8iYiIPfHw8D6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+JiIg9wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDyhoKA8wcBAPMHAQDyBgAA8gYCAPMHAQDyhoKA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDvBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIOCgj6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP6WkpD6BgIA8gYCAPIGAgDzBwEA8wcBAPKGgoDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgIA8wcBAPIGAgDyBgAA8gYCAPIGAADyBgAA8AAAAAIGAADyBgAA8wcBAPIGAADyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYCAPJGQED3z8vI+gYAAP4GAAD+DggI/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+CgQE/4+LiPpmYmD3BwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8gYAAPKGgoDzBwEA8gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8AAAAAMHAQDzBwEA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyDgoI+goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/g4KCPsHAQDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPKGgoDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAADyBgAA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAADyBgAA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8oaCgPIGAgDzBwEA8gYCAPIGAADyhoCA98/LyPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/mZiYPYGAADyBgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDvBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8hYSEPoKBAT+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+lpKQ+gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAgDuBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDzBwMA8wcBAPMHAQDzBwEA8AAAAAIGAADzBwEA8AAAAAIGAADyBgIA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPMHAQDyBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+RkJA9wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8wcBAPKGgoDzBwEA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgIA8gYAAPIGAADyBgIA7gYCAO4GAgDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDvBwEA8gYAAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDyBgAA8AAAAAIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMPCwj6BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP7Oysj6BgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8oaCgPKGgoDyBgIA8gYCAPIGAgDvBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDvBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAAD6BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP6WkJD7BwEA8wcBAPIGAADyBgAA8gYCAPKGgoDyBgIA7wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAgDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgIA8oaCgPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyhoKA8wcBAPMHAQDzz8vI+goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/4+LiPoGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDyBgAA8gYCAPIGAgDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADyBgAA8wcBAPAAAAADBwEA8wcBAPIGAgDuBgIA7gYAAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyVlJQ+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/paSkPoGAgDyBgIA8wcBAPMHAQDyhoKA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYCAPIGAADzBwEA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA8wcBAPIGAADwAAAAAgYAAPIGAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyJiAg+goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/iYgIPoGAADyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADyhoKA8gYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYAAPAAAAACBgAA8gYCAO4GAgDvBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDyhoKA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgAA8AAAAAIGAgDuBgIA8wcBAPAAAAACBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA8gYCAO8HAQDyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA88/LyPoGAAD+CgQE/goEBP4KBAT/j4uI+gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPKGgoDyBgIA8gYCAPIGAgDyBgIA7gYCAO8HAQDyBgAA8gYAAPIGAADyBgIA7gYAAPIGAgDsAAAAAAAAAAMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPKGgoDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgAA8paSkPoKBAT+CgQE/goEBP4KBAT+hoKA+gYAAPMHAQDyhoKA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgIA8oaCgPIGAADyBgAA8gYAAPMHAQDzBwEA8oaCgPIGAgDyBgIA7gYCAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPIGAADyhoKA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8gYAAPIGAgDyBgIA8wcBAPMHAQDwAAAAAgYCAO8HAQDyBgAA8gYCAOwAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8xcREPoKBAT+CgQE/goEBP4KBAT+pqCg+wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8kZAQPYGAAD+CgQE/goEBP4KBAT+JiIg9gYCAPIGAgDyBgIA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDyBgIA7gYAAPAAAAACBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPKGgoDyBgAA8wcBAPIGAADzBwEA8AAAAAIGAADyBgIA7gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPOXkZD7h4OA+8/LyPunoaD7BwEA8gYCAPIGAgDzBwEA8gYAAPIGAgDvBwEA8wcBAPIGAADyBgIA8wcBAPIGAADyBgIA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAPMHAQDyBgIA7gYAAPIGAADyBgAA8"},uA=new Map;function kg(A){if(typeof Buffer<"u")return Uint8Array.from(Buffer.from(A,"base64"));if(typeof atob<"u"){let g=atob(A),B=new Uint8Array(g.length);for(let P=0;P<g.length;P++)B[P]=g.charCodeAt(P);return B}throw new Error("No base64 decoder available in current runtime")}function kA(A){let g=Number(A);if(!(g in LA))return null;if(!uA.has(g)){let B=kg(LA[g]),P=Lg[g],D=new Float32Array(B.buffer,B.byteOffset,P);uA.set(g,new Float32Array(D))}return new Float32Array(uA.get(g))}var Fg=.011764705882352941,jg=.002,Wg=.99,Ug=255;function v(A,g,B,P={}){let{x:D,y:t,width:e,height:o}=B,G=Number.isFinite(P.alphaGain)&&P.alphaGain>0?P.alphaGain:1;for(let c=0;c<o;c++)for(let E=0;E<e;E++){let w=((t+c)*A.width+(D+E))*4,n=c*e+E,r=g[n];if(Math.max(0,r-Fg)*G<jg)continue;let Y=Math.min(r*G,Wg),I=1-Y;for(let i=0;i<3;i++){let s=(A.data[w+i]-Y*Ug)/I;A.data[w+i]=Math.max(0,Math.min(255,Math.round(s)))}}}var Vg=Object.freeze({"0.5k":Object.freeze({logoSize:48,marginRight:32,marginBottom:32}),"1k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"2k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"4k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64})});function DA(A,g,B){return B.map(([P,D,t])=>({modelFamily:A,resolutionTier:g,aspectRatio:P,width:D,height:t}))}var FA=Object.freeze([...DA("gemini-3.x-image","0.5k",[["1:1",512,512],["1:4",256,1024],["1:8",192,1536],["2:3",424,632],["3:2",632,424],["3:4",448,600],["4:1",1024,256],["4:3",600,448],["4:5",464,576],["5:4",576,464],["8:1",1536,192],["9:16",384,688],["16:9",688,384],["21:9",792,168]]),...DA("gemini-3.x-image","1k",[["1:1",1024,1024],["1:4",512,2064],["1:8",352,2928],["2:3",848,1264],["3:2",1264,848],["3:4",896,1200],["4:1",2064,512],["4:3",1200,896],["4:5",928,1152],["5:4",1152,928],["8:1",2928,352],["9:16",768,1376],["16:9",1376,768],["16:9",1408,768],["21:9",1584,672]]),...DA("gemini-3.x-image","2k",[["1:1",2048,2048],["1:4",512,2048],["1:8",384,3072],["2:3",1696,2528],["3:2",2528,1696],["3:4",1792,2400],["4:1",2048,512],["4:3",2400,1792],["4:5",1856,2304],["5:4",2304,1856],["8:1",3072,384],["9:16",1536,2752],["16:9",2752,1536],["21:9",3168,1344]]),...DA("gemini-3.x-image","4k",[["1:1",4096,4096],["1:4",2048,8192],["1:8",1536,12288],["2:3",3392,5056],["3:2",5056,3392],["3:4",3584,4800],["4:1",8192,2048],["4:3",4800,3584],["4:5",3712,4608],["5:4",4608,3712],["8:1",12288,1536],["9:16",3072,5504],["16:9",5504,3072],["21:9",6336,2688]]),...DA("gemini-2.5-flash-image","1k",[["1:1",1024,1024],["2:3",832,1248],["3:2",1248,832],["3:4",864,1184],["4:3",1184,864],["4:5",896,1152],["5:4",1152,896],["9:16",768,1344],["16:9",1344,768],["21:9",1536,672]])]),Xg=new Map(FA.map(A=>[`${A.width}x${A.height}`,A]));function YA(A){let g=Number(A);if(!Number.isFinite(g))return null;let B=Math.round(g);return B>0?B:null}function Jg(A,g,B){return Math.max(g,Math.min(B,A))}function jA(A){return Vg[A.resolutionTier]??null}function Zg(A){return`${A.logoSize}:${A.marginRight}:${A.marginBottom}`}function yA(A,g){let B=YA(A),P=YA(g);return!B||!P?null:Xg.get(`${B}x${P}`)??null}function QA(A,g){let B=yA(A,g);return B?jA(B):null}function lA(A,g,{maxRelativeAspectRatioDelta:B=.02,maxScaleMismatchRatio:P=.12,minLogoSize:D=24,maxLogoSize:t=192,limit:e=3}={}){let o=YA(A),G=YA(g);if(!o||!G)return[];let c=QA(o,G);if(c)return[{...c}];let E=o/G,w=FA.map(a=>{let Y=jA(a);if(!Y)return null;let I=o/a.width,i=G/a.height,C=(I+i)/2,s=a.width/a.height,u=Math.abs(E-s)/s,Q=Math.abs(I-i)/Math.max(I,i);if(u>B||Q>P)return null;let H={logoSize:Jg(Math.round(Y.logoSize*C),D,t),marginRight:Math.max(8,Math.round(Y.marginRight*I)),marginBottom:Math.max(8,Math.round(Y.marginBottom*i))},T=o-H.marginRight-H.logoSize,f=G-H.marginBottom-H.logoSize;return T<0||f<0?null:{config:H,score:u*100+Q*20+Math.abs(Math.log2(Math.max(C,1e-6)))}}).filter(Boolean).sort((a,Y)=>a.score-Y.score),n=[],r=new Set;for(let a of w){let Y=`${a.config.logoSize}:${a.config.marginRight}:${a.config.marginBottom}`;if(!r.has(Y)&&(r.add(Y),n.push(a.config),n.length>=e))break}return n}function EA(A,g,B){let P=[];B&&P.push(B),P.push(...lA(A,g));let D=[],t=new Set;for(let e of P){if(!e)continue;let o=Zg(e);t.has(o)||(t.add(o),D.push(e))}return D}var qg=.35,XA=1e-8,_=(A,g,B)=>Math.max(g,Math.min(B,A));function WA(A){let g=0;for(let D=0;D<A.length;D++)g+=A[D];let B=g/A.length,P=0;for(let D=0;D<A.length;D++){let t=A[D]-B;P+=t*t}return{mean:B,variance:P/A.length}}function aA(A,g){if(A.length!==g.length||A.length===0)return 0;let B=WA(A),P=WA(g),D=Math.sqrt(B.variance*P.variance)*A.length;if(D<XA)return 0;let t=0;for(let e=0;e<A.length;e++)t+=(A[e]-B.mean)*(g[e]-P.mean);return t/D}function UA(A,g,B,P,D){let t=new Float32Array(D*D);for(let e=0;e<D;e++){let o=(P+e)*g+B,G=e*D;for(let c=0;c<D;c++)t[G+c]=A[o+c]}return t}function JA(A,g){let{width:B,height:P,data:D}=A,t=g.size??Math.min(g.width,g.height);if(!t||t<=0)return new Float32Array(0);if(g.x<0||g.y<0||g.x+t>B||g.y+t>P)return new Float32Array(0);let e=new Float32Array(t*t);for(let o=0;o<t;o++)for(let G=0;G<t;G++){let c=((g.y+o)*B+(g.x+G))*4;e[o*t+G]=(.2126*D[c]+.7152*D[c+1]+.0722*D[c+2])/255}return e}function $g(A){let{width:g,height:B,data:P}=A,D=new Float32Array(g*B);for(let t=0;t<D.length;t++){let e=t*4;D[t]=(.2126*P[e]+.7152*P[e+1]+.0722*P[e+2])/255}return D}function rA(A,g,B){let P=new Float32Array(g*B);for(let D=1;D<B-1;D++)for(let t=1;t<g-1;t++){let e=D*g+t,o=-A[e-g-1]-2*A[e-1]-A[e+g-1]+A[e-g+1]+2*A[e+1]+A[e+g+1],G=-A[e-g-1]-2*A[e-g]-A[e-g+1]+A[e+g-1]+2*A[e+g]+A[e+g+1];P[e]=Math.sqrt(o*o+G*G)}return P}function VA(A,g,B,P,D){let t=0,e=0,o=0;for(let E=0;E<D;E++){let w=(P+E)*g+B;for(let n=0;n<D;n++){let r=A[w+n];t+=r,e+=r*r,o++}}if(o===0)return 0;let G=t/o,c=Math.max(0,e/o-G*G);return Math.sqrt(c)}function AB(A,g){return rA(A,g,g)}function MA({gray:A,grad:g,width:B,height:P},D,t,e){let{x:o,y:G,size:c}=e;if(o<0||G<0||o+c>B||G+c>P)return null;let E=UA(A,B,o,G,c),w=UA(g,B,o,G,c),n=aA(E,D),r=aA(w,t),a=0;if(G>8){let I=Math.max(0,G-c),i=Math.min(c,G-I);if(i>8){let C=VA(A,B,o,G,c),s=VA(A,B,o,I,i);s>XA&&(a=_(1-C/s,0,1))}}let Y=Math.max(0,n)*.5+Math.max(0,r)*.3+a*.2;return{confidence:_(Y,0,1),spatialScore:n,gradientScore:r,varianceScore:a}}function gB(A,g){let B=new Set;for(let P=A;P<=g;P+=8)B.add(P);return 48>=A&&48<=g&&B.add(48),96>=A&&96<=g&&B.add(96),[...B].sort((P,D)=>P-D)}function BB(A,g,B){return EA(A,g,B)}function HA(A,g,B){if(A.has(B))return A.get(B);let P=B===96?g:L(g,96,B),D=AB(P,B),t={alpha:P,grad:D};return A.set(B,t),t}function iA(A,g,{dx:B=0,dy:P=0,scale:D=1}={}){if(g<=0)return new Float32Array(0);if(!Number.isFinite(B)||!Number.isFinite(P)||!Number.isFinite(D)||D<=0)return new Float32Array(0);if(B===0&&P===0&&D===1)return new Float32Array(A);let t=(G,c)=>{let E=Math.floor(G),w=Math.floor(c),n=G-E,r=c-w,a=_(E,0,g-1),Y=_(w,0,g-1),I=_(E+1,0,g-1),i=_(w+1,0,g-1),C=A[Y*g+a],s=A[Y*g+I],u=A[i*g+a],Q=A[i*g+I],H=C+(s-C)*n,T=u+(Q-u)*n;return H+(T-H)*r},e=new Float32Array(g*g),o=(g-1)/2;for(let G=0;G<g;G++)for(let c=0;c<g;c++){let E=(c-o)/D+o+B,w=(G-o)/D+o+P;e[G*g+c]=t(E,w)}return e}function L(A,g,B){if(B<=0)return new Float32Array(0);if(g===B)return new Float32Array(A);let P=new Float32Array(B*B),D=(g-1)/Math.max(1,B-1);for(let t=0;t<B;t++){let e=t*D,o=Math.floor(e),G=Math.min(g-1,o+1),c=e-o;for(let E=0;E<B;E++){let w=E*D,n=Math.floor(w),r=Math.min(g-1,n+1),a=w-n,Y=A[o*g+n],I=A[o*g+r],i=A[G*g+n],C=A[G*g+r],s=Y+(I-Y)*a,u=i+(C-i)*a;P[t*B+E]=s+(u-s)*c}}return P}function S({imageData:A,alphaMap:g,region:B}){let P=JA(A,B);return P.length===0||P.length!==g.length?0:aA(P,g)}function x({imageData:A,alphaMap:g,region:B}){let P=JA(A,B);if(P.length===0||P.length!==g.length)return 0;let D=B.size??Math.min(B.width,B.height);if(!D||D<=2)return 0;let t=rA(P,D,D),e=rA(g,D,D);return aA(t,e)}function ZA({processedImageData:A,alphaMap:g,position:B,residualThreshold:P=.22,originalImageData:D=null,originalSpatialMismatchThreshold:t=0}){return!!(S({imageData:A,alphaMap:g,region:{x:B.x,y:B.y,size:B.width??B.size}})>=P||D&&S({imageData:D,alphaMap:g,region:{x:B.x,y:B.y,size:B.width??B.size}})<=t)}function qA({imageData:A,alpha96:g,defaultConfig:B,threshold:P=qg}){let{width:D,height:t}=A,e=$g(A),o=rA(e,D,t),G={gray:e,grad:o,width:D,height:t},c=new Map,w=BB(D,t,B).map(l=>{let d=l.logoSize,M={size:d,x:D-l.marginRight-d,y:t-l.marginBottom-d};if(M.x<0||M.y<0||M.x+d>D||M.y+d>t)return null;let h=HA(c,g,d),K=MA(G,h.alpha,h.grad,M);return K?{...M,...K}:null}).filter(Boolean),n=w.reduce((l,d)=>!l||d.confidence>l.confidence?d:l,null);if(n&&n.confidence>=P+.08)return{found:!0,confidence:n.confidence,spatialScore:n.spatialScore,gradientScore:n.gradientScore,varianceScore:n.varianceScore,region:{x:n.x,y:n.y,size:n.size}};let r=B.logoSize,a=_(Math.round(r*.65),24,144),Y=_(Math.min(Math.round(r*2.8),Math.floor(Math.min(D,t)*.4)),a,192),I=gB(a,Y),i=Math.max(32,Math.round(r*.75)),C=_(B.marginRight-i,8,D-a-1),s=_(B.marginRight+i,C,D-a-1),u=_(B.marginBottom-i,8,t-a-1),Q=_(B.marginBottom+i,u,t-a-1),H=[],T=l=>{H.push(l),H.sort((d,M)=>M.adjustedScore-d.adjustedScore),H.length>5&&(H.length=5)};for(let l of w)T({size:l.size,x:l.x,y:l.y,adjustedScore:l.confidence*Math.min(1,Math.sqrt(l.size/96))});for(let l of I){let d=HA(c,g,l);for(let M=C;M<=s;M+=8){let h=D-M-l;if(!(h<0))for(let K=u;K<=Q;K+=8){let O=t-K-l;if(O<0)continue;let y=MA(G,d.alpha,d.grad,{x:h,y:O,size:l});if(!y)continue;let z=y.confidence*Math.min(1,Math.sqrt(l/96));z<.08||T({size:l,x:h,y:O,adjustedScore:z})}}}let f=n??{x:D-B.marginRight-B.logoSize,y:t-B.marginBottom-B.logoSize,size:B.logoSize,confidence:0,spatialScore:0,gradientScore:0,varianceScore:0};for(let l of H){let d=_(l.size-10,a,Y),M=_(l.size+10,a,Y);for(let h=d;h<=M;h+=2){let K=HA(c,g,h);for(let O=l.x-8;O<=l.x+8;O+=2)if(!(O<0||O+h>D))for(let y=l.y-8;y<=l.y+8;y+=2){if(y<0||y+h>t)continue;let z=MA(G,K.alpha,K.grad,{x:O,y,size:h});z&&z.confidence>f.confidence&&(f={x:O,y,size:h,...z})}}}return{found:f.confidence>=P,confidence:f.confidence,spatialScore:f.spatialScore,gradientScore:f.gradientScore,varianceScore:f.varianceScore,region:{x:f.x,y:f.y,size:f.size}}}var fA=5,$A=1,PB=.8,DB=1.5,tB=.5,oB=.2,eB=.12,GB=.35,nB=.01,IB=3;function tA(A){return typeof ImageData<"u"&&A instanceof ImageData?new ImageData(new Uint8ClampedArray(A.data),A.width,A.height):{width:A.width,height:A.height,data:new Uint8ClampedArray(A.data)}}function p(A,g){let B=0,P=0;for(let D=0;D<g.height;D++)for(let t=0;t<g.width;t++){let e=((g.y+D)*A.width+(g.x+t))*4,o=A.data[e],G=A.data[e+1],c=A.data[e+2];o<=fA&&G<=fA&&c<=fA&&B++,P++}return P>0?B/P:0}function TA(A,g){let B=0,P=0,D=0;for(let o=0;o<g.height;o++)for(let G=0;G<g.width;G++){let c=((g.y+o)*A.width+(g.x+G))*4,E=.2126*A.data[c]+.7152*A.data[c+1]+.0722*A.data[c+2];B+=E,P+=E*E,D++}let t=D>0?B/D:0,e=D>0?Math.max(0,P/D-t*t):0;return{meanLum:t,stdLum:Math.sqrt(e)}}function Ag(A,g){return TA(A,g)}function dA({imageData:A,position:g,alphaMap:B,minAlpha:P=eB,maxAlpha:D=GB,outsideAlphaMax:t=nB,outerMargin:e=IB}){let o=0,G=0,c=0,E=0,w=0,n=0;for(let s=-e;s<g.height+e;s++)for(let u=-e;u<g.width+e;u++){let Q=g.x+u,H=g.y+s;if(Q<0||H<0||Q>=A.width||H>=A.height)continue;let T=(H*A.width+Q)*4,f=.2126*A.data[T]+.7152*A.data[T+1]+.0722*A.data[T+2],l=s>=0&&u>=0&&s<g.height&&u<g.width,d=l?B[s*g.width+u]:0;if(l&&d>=P&&d<=D){o+=f,G+=f*f,c++;continue}(!l||d<=t)&&(E+=f,w+=f*f,n++)}let r=c>0?o/c:0,a=n>0?E/n:0,Y=c>0?Math.sqrt(Math.max(0,G/c-r*r)):0,I=n>0?Math.sqrt(Math.max(0,w/n-a*a)):0,i=r-a,C=i/Math.max(1,I);return{bandCount:c,outerCount:n,bandMeanLum:r,outerMeanLum:a,bandStdLum:Y,outerStdLum:I,deltaLum:i,positiveDeltaLum:Math.max(0,i),visibility:C}}function cB(A,g){let B=A.y-A.height;return B<0?null:{x:A.x,y:B,width:A.width,height:A.height}}function hA({originalImageData:A,referenceImageData:g,candidateImageData:B,position:P}){let D=B?TA(B,P):null;return zA({originalImageData:A,referenceImageData:g,candidateTextureStats:D,position:P})}function zA({originalImageData:A,referenceImageData:g,candidateTextureStats:B,position:P}){let D=g??A,t=D?cB(P,D):null,e=t?TA(D,t):null,o=e&&B?Math.max(0,e.meanLum-B.meanLum-$A)/Math.max(1,e.meanLum):0,G=e&&B?Math.max(0,e.stdLum*PB-B.stdLum)/Math.max(1,e.stdLum):0,c=e&&B?Math.max(0,e.meanLum-B.meanLum-$A)/Math.max(1,e.stdLum):0,E=o>0,w=G>0,n=E&&c>=DB,r=E&&w&&o>=tB&&G>=oB;return{referenceTextureStats:e,candidateTextureStats:B,darknessPenalty:o,flatnessPenalty:G,darknessVisibility:c,texturePenalty:o*2+G*2,tooDark:E,tooFlat:w,visibleDarkHole:n,hardReject:r||n}}function U(A,g,B){return{spatialScore:S({imageData:A,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}}),gradientScore:x({imageData:A,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}})}}var YB=4,EB=.25,aB=.05;function gg(A,g,B,P={}){let D=A&&typeof A=="object"&&"imageData"in A&&g===void 0,t=D?A.imageData:A,e=D?A.alphaMap:g,o=D?A.position:B,G=D?A:P,c=Math.max(1,G.maxPasses??YB),E=G.residualThreshold??EB,w=Math.max(0,G.startingPassIndex??0),n=Number.isFinite(G.alphaGain)&&G.alphaGain>0?G.alphaGain:1,r=tA(t),a=r,Y=p(r,o),I=Math.min(1,Y+aB),i=[],C="max-passes",s=w,u=w;for(let Q=0;Q<c;Q++){u=w+Q+1;let H=U(r,e,o),T=tA(r);v(T,e,o,{alphaGain:n});let f=U(T,e,o),l=p(T,o),d=Math.abs(H.spatialScore)-Math.abs(f.spatialScore),M=f.gradientScore-H.gradientScore,h=hA({referenceImageData:a,candidateImageData:T,position:o});if(l>I){C="safety-near-black";break}if(h.hardReject){C="safety-texture-collapse";break}if(r=T,s=w+Q+1,i.push({index:s,beforeSpatialScore:H.spatialScore,beforeGradientScore:H.gradientScore,afterSpatialScore:f.spatialScore,afterGradientScore:f.gradientScore,improvement:d,gradientDelta:M,nearBlackRatio:l}),Math.abs(f.spatialScore)<=E){C="residual-low";break}}return{imageData:r,passCount:s,attemptedPassCount:u,stopReason:C,passes:i}}function J(A){return typeof A=="number"&&Number.isFinite(A)?A:null}function Bg({spatialScore:A,gradientScore:g}){let B=J(A),P=J(g);return B===null||P===null?{tier:"insufficient"}:B>=.3&&P>=.12||B>=.295&&P>=.45?{tier:"direct-match"}:B>0||P>0?{tier:"needs-validation"}:{tier:"insufficient"}}function Pg(A){if(!A||A.found!==!0)return{tier:"insufficient"};let g=J(A.confidence),B=J(A.spatialScore),P=J(A.gradientScore),D=J(A?.region?.size);return g===null||B===null||P===null||D===null?{tier:"insufficient"}:g>=.5&&B>=.45&&P>=.12&&D>=40&&D<=192?{tier:"direct-match"}:D>=40&&D<=192&&P>=.12&&(g>0||B>0)?{tier:"needs-validation"}:{tier:"insufficient"}}function oA({spatialScore:A,gradientScore:g}){return Bg({spatialScore:A,gradientScore:g}).tier==="direct-match"}function eA(A){return Pg(A).tier==="direct-match"}var rB=.05,iB=.08,wB=.22,CB=.04,sB=.25,uB=.22,yB=.08,QB=.18,lB=.05,MB=.35,HB=.8,fB=.12,TB=.65,dB=.3,hB=.02,zB=.02,OB=.03,ag=[-.5,-.25,0,.25,.5],rg=[.99,1,1.01],Dg=[-12,-8,-4,0,4,8,12],pB=[-2,-1,0,1,2],KB=[-12,-10,-8,-6,-4,-2,2,4,6,8,10,12],tg=24,mB=1.05,SB=.55,og=16,eg=8,_B=2,Gg=2,ng=8,RB=.2,OA=[-1,0,1],NB=[-1,-.5,0,.5,1],xB=[.985,1,1.015],vB=.22,bB=.24,Ig=Object.freeze({x:0,y:0});function wA(...A){let g={};for(let B of A)!B||typeof B!="object"||Object.assign(g,B);return Object.keys(g).length>0?g:null}function cg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:t,resolveAlphaMap:e=null,includeCatalogVariants:o=!0}){let G=o?EA(A.width,A.height,g):[g],c=[];for(let E of G){let w=E===g?B:{x:A.width-E.marginRight-E.logoSize,y:A.height-E.marginBottom-E.logoSize,width:E.logoSize,height:E.logoSize};if(w.x<0||w.y<0||w.x+w.width>A.width||w.y+w.height>A.height)continue;let n=typeof e=="function"?e(E.logoSize):nA(E.logoSize,{alpha48:P,alpha96:D,getAlphaMap:t});n&&c.push({config:E,position:w,alphaMap:n,source:E===g?"standard":"standard+catalog",provenance:E===g?null:{catalogVariant:!0}})}return c}function pA(A,{directMatch:g=!1}={}){return A?g?"direct-match":A.source?.includes("validated")||A.accepted?"validated-match":"safe-removal":"insufficient"}function GA(A){return A?Math.abs(A.processedSpatialScore)>uB||Math.max(0,A.processedGradientScore)>yB:!0}function LB(A,g){return A?Number(A.position?.width)>=72&&Number(g?.height)>Number(g?.width)*1.25&&(Math.abs(A.processedSpatialScore)>QB||Math.max(0,A.processedGradientScore)>lB):!0}function nA(A,{alpha48:g,alpha96:B,getAlphaMap:P}={}){if(A===48)return g;if(A===96)return B;let D=typeof P=="function"?P(A):null;return D||(B?L(B,96,A):null)}function kB({alpha48:A,alpha96:g,getAlphaMap:B}){let P=new Map;return D=>{if(P.has(D))return P.get(D);let t=nA(D,{alpha48:A,alpha96:g,getAlphaMap:B});return P.set(D,t),t}}function FB(A){return A?Math.abs(A.processedSpatialScore)>vB||Math.max(0,A.processedGradientScore)>bB:!0}function b({originalImageData:A,alphaMap:g,position:B,source:P,config:D,baselineNearBlackRatio:t,adaptiveConfidence:e=null,alphaGain:o=1,provenance:G=null,includeImageData:c=!0}){if(!g||!B)return null;let E=U(A,g,B),w=WB({originalImageData:A,alphaMap:g,position:B,alphaGain:o}),n={x:Ig.x,y:Ig.y,width:B.width,height:B.height},r=U(w,g,n),a=p(w,n),Y=a-t,I=E.spatialScore-r.spatialScore,i=r.gradientScore-E.gradientScore,C=zA({originalImageData:A,referenceImageData:A,candidateTextureStats:Ag(w,n),position:B}),s=C.texturePenalty;return{accepted:C.hardReject!==!0&&Y<=rB&&I>=iB&&(Math.abs(r.spatialScore)<=wB||i<=CB),source:P,config:D,position:B,alphaMap:g,adaptiveConfidence:e,alphaGain:o,provenance:wA(G),imageData:c?ig(A,g,B,o):null,originalSpatialScore:E.spatialScore,originalGradientScore:E.gradientScore,processedSpatialScore:r.spatialScore,processedGradientScore:r.gradientScore,improvement:I,nearBlackRatio:a,nearBlackIncrease:Y,gradientIncrease:i,tooDark:C.tooDark,tooFlat:C.tooFlat,hardReject:C.hardReject,texturePenalty:s,validationCost:Math.abs(r.spatialScore)+Math.max(0,r.gradientScore)*.6+Math.max(0,Y)*3+s}}function jB(A){let g=A.filter(B=>B?.accepted);return g.length===0?null:(g.sort((B,P)=>B.validationCost!==P.validationCost?B.validationCost-P.validationCost:P.improvement-B.improvement),g[0])}function WB({originalImageData:A,alphaMap:g,position:B,alphaGain:P}){let D={width:B.width,height:B.height,data:new Uint8ClampedArray(B.width*B.height*4)};for(let t=0;t<B.height;t++){let e=((B.y+t)*A.width+B.x)*4,o=e+B.width*4,G=t*B.width*4;D.data.set(A.data.subarray(e,o),G)}return v(D,g,{x:0,y:0,width:B.width,height:B.height},{alphaGain:P}),D}function ig(A,g,B,P){let D=tA(A);return v(D,g,B,{alphaGain:P}),D}function q(A,g){return!A||A.imageData?A:{...A,imageData:ig(g,A.alphaMap,A.position,A.alphaGain??1)}}function k(A,g,B=.005){return g?.accepted?A?qB(A,g)?A:Yg(A,g)?g:Yg(g,A)?A:g.validationCost<A.validationCost-B||Math.abs(g.validationCost-A.validationCost)<=B&&g.improvement>A.improvement+.01?g:A:g:A}function $(A){return typeof A?.source=="string"&&A.source.startsWith("standard")}function UB(A){return $(A)&&(A?.provenance?.localShift===!0||A?.provenance?.sizeJitter===!0||String(A?.source||"").includes("+warp"))}function VB(A){return $(A)&&A?.provenance?.localShift!==!0&&A?.provenance?.sizeJitter!==!0}function XB(A){let g=Number(A?.originalSpatialScore),B=Number(A?.originalGradientScore);return!Number.isFinite(g)||!Number.isFinite(B)?!1:B>=MB||g>=HB}function JB(A){let g=Number(A?.originalSpatialScore),B=Number(A?.originalGradientScore);return!Number.isFinite(g)||!Number.isFinite(B)?!1:B<fB||g<TB}function ZB(A,g){let B=Number(A?.processedGradientScore),P=Number(g?.processedGradientScore);return!Number.isFinite(B)||!Number.isFinite(P)?!1:Math.max(0,B)<=zB&&Math.max(0,P)>=OB}function KA(A,g){if(!VB(A)||!UB(g))return!1;let B=Number(A.validationCost)-Number(g.validationCost);return Number.isFinite(B)?XB(A)&&JB(g)&&B<dB||ZB(A,g):!1}function qB(A,g){return A?.provenance?.localShift===!0||!$(g)?!1:KA(A,g)}function $B(A,g){return A?.provenance?.localShift!==!0||!$(A)||!$(g)||!g?.accepted?!1:KA(g,A)}function wg(A){return A?Math.max(0,Number(A.processedGradientScore))<=hB:!1}function AP(A,g){if(!g||g.logoSize!==48)return!1;let B=Number(A?.width),P=Number(A?.height);return!Number.isFinite(B)||!Number.isFinite(P)||B<384||B>1536||P<384||P>1536||Math.max(B,P)<512?!1:yA(B,P)===null}function Yg(A,g){if(g?.provenance?.previewAnchor!==!0||!A||A?.provenance?.previewAnchor===!0)return!1;let B=Number(A.originalSpatialScore),P=Number(A.originalGradientScore),D=Number(g.originalSpatialScore),t=Number(g.originalGradientScore);if(!Number.isFinite(B)||!Number.isFinite(P)||!Number.isFinite(D)||!Number.isFinite(t))return!1;let e=oA({spatialScore:B,gradientScore:P});return oA({spatialScore:D,gradientScore:t})&&!e?!0:t>=P+.2&&D>=B+.05}function gP({originalImageData:A,alphaMap:g,position:B,baselineSpatialScore:P,baselineGradientScore:D,shiftCandidates:t=ag,scaleCandidates:e=rg}){let o=B.width;if(!o||o<=8)return null;let G={spatialScore:P,gradientScore:D,shift:{dx:0,dy:0,scale:1},alphaMap:g};for(let w of e)for(let n of t)for(let r of t){if(r===0&&n===0&&w===1)continue;let a=iA(g,o,{dx:r,dy:n,scale:w}),Y=S({imageData:A,alphaMap:a,region:{x:B.x,y:B.y,size:o}}),I=x({imageData:A,alphaMap:a,region:{x:B.x,y:B.y,size:o}}),i=Math.max(0,Y)*.7+Math.max(0,I)*.3,C=Math.max(0,G.spatialScore)*.7+Math.max(0,G.gradientScore)*.3;i>C+.01&&(G={spatialScore:Y,gradientScore:I,shift:{dx:r,dy:n,scale:w},alphaMap:a})}let c=G.spatialScore>=P+.01,E=G.gradientScore>=D+.01;return c||E?G:null}function BP({originalImageData:A,candidateSeeds:g,adaptiveConfidence:B=null}){if(!Array.isArray(g)||g.length===0)return null;let P=null;for(let D of g)if(!wg(D))for(let t of Dg)for(let e of Dg){if(e===0&&t===0)continue;let o={x:D.position.x+e,y:D.position.y+t,width:D.position.width,height:D.position.height};if(o.x<0||o.y<0||o.x+o.width>A.width||o.y+o.height>A.height)continue;let G=b({originalImageData:A,alphaMap:D.alphaMap,position:o,source:`${D.source}+local`,config:D.config,baselineNearBlackRatio:p(A,o),adaptiveConfidence:B,provenance:wA(D.provenance,{localShift:!0}),includeImageData:!1});G?.accepted&&(P=k(P,G,.002))}return P}function PP({originalImageData:A,candidateSeeds:g,alpha48:B,alpha96:P,getAlphaMap:D,resolveAlphaMap:t=null,adaptiveConfidence:e=null}){if(!Array.isArray(g)||g.length===0)return null;let o=null;for(let G of g)for(let c of KB){let E=G.position.width+c;if(E<=24||E===G.position.width)continue;let w={x:A.width-G.config.marginRight-E,y:A.height-G.config.marginBottom-E,width:E,height:E};if(w.x<0||w.y<0||w.x+w.width>A.width||w.y+w.height>A.height)continue;let n=typeof t=="function"?t(E):nA(E,{alpha48:B,alpha96:P,getAlphaMap:D});if(!n)continue;let r=b({originalImageData:A,alphaMap:n,position:w,source:`${G.source}+size`,config:{logoSize:E,marginRight:G.config.marginRight,marginBottom:G.config.marginBottom},baselineNearBlackRatio:p(A,w),adaptiveConfidence:e,provenance:wA(G.provenance,{sizeJitter:!0}),includeImageData:!1});r?.accepted&&(o=k(o,r,.002))}return o}function DP({originalImageData:A,seedCandidate:g,adaptiveConfidence:B=null,shiftCandidates:P=pB}){if(!g?.alphaMap||!g?.position||wg(g))return null;let D=null;for(let t of P)for(let e of P){if(e===0&&t===0)continue;let o={x:g.position.x+e,y:g.position.y+t,width:g.position.width,height:g.position.height};if(o.x<0||o.y<0||o.x+o.width>A.width||o.y+o.height>A.height)continue;let G=b({originalImageData:A,alphaMap:g.alphaMap,position:o,source:`${g.source}+local`,config:g.config,baselineNearBlackRatio:p(A,o),adaptiveConfidence:B,provenance:wA(g.provenance,{localShift:!0}),includeImageData:!1});G?.accepted&&(D=k(D,G,.002))}return D}function tP({originalImageData:A,seedCandidate:g,adaptiveConfidence:B=null,alphaGainCandidates:P=[]}){if(!g?.alphaMap||!g?.position)return null;let D=null;for(let t of P){if(!Number.isFinite(t)||t<=1)continue;let e=b({originalImageData:A,alphaMap:g.alphaMap,position:g.position,source:`${g.source}+gain`,config:g.config,baselineNearBlackRatio:p(A,g.position),adaptiveConfidence:B,alphaGain:t,provenance:g.provenance,includeImageData:!1});e?.accepted&&(D=k(D,e,.002))}return D}function oP(A,g){A.push(g),A.sort((B,P)=>P.coarseScore-B.coarseScore),A.length>ng&&(A.length=ng)}function eP({originalImageData:A,config:g,alpha48:B,alpha96:P,getAlphaMap:D,resolveAlphaMap:t=null,adaptiveConfidence:e=null}){if(!AP(A,g))return null;let o=Math.max(tg,Math.round(g.logoSize*SB)),G=Math.max(o,Math.round(g.logoSize*mB)),c=Math.max(8,g.marginRight-og),E=g.marginRight+eg,w=Math.max(8,g.marginBottom-og),n=g.marginBottom+eg,r=[];for(let Y=o;Y<=G;Y+=_B){let I=typeof t=="function"?t(Y):nA(Y,{alpha48:B,alpha96:P,getAlphaMap:D});if(I)for(let i=c;i<=E;i+=Gg){let C=A.width-i-Y;if(!(C<0||C+Y>A.width))for(let s=w;s<=n;s+=Gg){let u=A.height-s-Y;if(u<0||u+Y>A.height)continue;let Q=S({imageData:A,alphaMap:I,region:{x:C,y:u,size:Y}}),H=x({imageData:A,alphaMap:I,region:{x:C,y:u,size:Y}}),T=Math.max(0,H)*.6+Math.max(0,Q)*.4;T<RB||oP(r,{coarseScore:T,alphaMap:I,position:{x:C,y:u,width:Y,height:Y},config:{logoSize:Y,marginRight:i,marginBottom:s}})}}}let a=null;for(let Y of r)for(let I of OA){let i=Y.position.width+I;if(i<tg)continue;let C=typeof t=="function"?t(i):nA(i,{alpha48:B,alpha96:P,getAlphaMap:D});if(C)for(let s of OA)for(let u of OA){let Q={x:Y.position.x+s,y:Y.position.y+u,width:i,height:i};if(Q.x<0||Q.y<0||Q.x+Q.width>A.width||Q.y+Q.height>A.height)continue;let H={logoSize:i,marginRight:A.width-Q.x-i,marginBottom:A.height-Q.y-i},T=b({originalImageData:A,alphaMap:C,position:Q,source:"standard+preview-anchor",config:H,baselineNearBlackRatio:p(A,Q),adaptiveConfidence:e,provenance:{previewAnchor:!0,previewAnchorLocalRefine:I!==0||s!==0||u!==0},includeImageData:!1});T?.accepted&&(a=k(a,T,.002))}}return a}function Eg({originalImageData:A,candidateSeeds:g}){let B=g.map(o=>b({originalImageData:A,alphaMap:o.alphaMap,position:o.position,source:o.source,config:o.config,baselineNearBlackRatio:p(A,o.position),provenance:o.provenance,includeImageData:!1})).filter(Boolean),P=B.find(o=>o.source==="standard")??B[0]??null,D=P?.originalSpatialScore??null,t=P?.originalGradientScore??null,e=oA({spatialScore:D,gradientScore:t});return{standardTrials:B,standardTrial:P,standardSpatialScore:D,standardGradientScore:t,hasReliableStandardMatch:e}}function GP({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:t,resolveAlphaMap:e}){let o=cg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:t,resolveAlphaMap:e,includeCatalogVariants:!1}),G=Eg({originalImageData:A,candidateSeeds:o});return!G.hasReliableStandardMatch&&(!G.standardTrial||GA(G.standardTrial))&&(o=cg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:t,resolveAlphaMap:e,includeCatalogVariants:!0}),G=Eg({originalImageData:A,candidateSeeds:o})),{standardCandidateSeeds:o,...G}}function nP(A,{reliableMatch:g=!1}={}){return A?.accepted?g?{candidate:A,decisionTier:"direct-match"}:{candidate:{...A,source:`${A.source}+validated`},decisionTier:"validated-match"}:null}function Z(A,g,B,{reliableMatch:P=!1,minCostDelta:D=.002}={}){let t=nP(B,{reliableMatch:P});if(!t)return{baseCandidate:A,baseDecisionTier:g};if(KA(A,t.candidate))return{baseCandidate:A,baseDecisionTier:g};let e=A,o=k(A,t.candidate,D);return{baseCandidate:o,baseDecisionTier:o!==e?t.decisionTier:g}}function IP({originalImageData:A,config:g,alpha96:B,resolveAlphaMap:P,allowAdaptiveSearch:D}){if(!D||!B)return{adaptive:null,adaptiveConfidence:null,adaptiveTrial:null};let t=qA({imageData:A,alpha96:B,defaultConfig:g}),e=t?.confidence??null;if(!t?.region||!(eA(t)||t.confidence>=sB))return{adaptive:t,adaptiveConfidence:e,adaptiveTrial:null};let o=t.region.size,G={x:t.region.x,y:t.region.y,width:o,height:o},c=P(o);if(!c)throw new Error(`Missing alpha map for adaptive size ${o}`);let E={logoSize:o,marginRight:A.width-G.x-o,marginBottom:A.height-G.y-o};return{adaptive:t,adaptiveConfidence:e,adaptiveTrial:b({originalImageData:A,alphaMap:c,position:G,source:"adaptive",config:E,baselineNearBlackRatio:p(A,G),adaptiveConfidence:t.confidence,provenance:{adaptive:!0},includeImageData:!1})}}function cP({originalImageData:A,baseCandidate:g,baseDecisionTier:B,adaptiveConfidence:P,alphaGainCandidates:D}){let t=q(g,A),e=g.alphaMap,o=g.position,G=g.config,c=g.source,E=B||pA(g),w=null,n=g.alphaGain??1,r=gP({originalImageData:A,alphaMap:e,position:o,baselineSpatialScore:t.originalSpatialScore,baselineGradientScore:t.originalGradientScore,shiftCandidates:t.provenance?.previewAnchor===!0?NB:ag,scaleCandidates:t.provenance?.previewAnchor===!0?xB:rg});if(r){let I=b({originalImageData:A,alphaMap:r.alphaMap,position:o,source:`${c}+warp`,config:G,baselineNearBlackRatio:p(A,o),adaptiveConfidence:P,provenance:t.provenance,includeImageData:!1}),i=k(t,I);i!==t&&(e=I.alphaMap,c=i.source,t=q(i,A),w=r.shift,E=pA(i,{directMatch:E==="direct-match"}))}let a=t.provenance?.previewAnchor===!0?FB(t):GA(t),Y=t;if(a)for(let I of D){let i=b({originalImageData:A,alphaMap:e,position:o,source:`${c}+gain`,config:G,baselineNearBlackRatio:p(A,o),adaptiveConfidence:P,alphaGain:I,provenance:t.provenance,includeImageData:!1});Y=k(Y,i)}return Y!==t&&(t=q(Y,A),c=Y.source,n=Y.alphaGain,E=pA(Y,{directMatch:E==="direct-match"})),{selectedTrial:q(t,A),source:c,alphaMap:e,position:o,config:G,templateWarp:w,alphaGain:n,decisionTier:E}}function Cg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:t,allowAdaptiveSearch:e,alphaGainCandidates:o}){let G=kB({alpha48:P,alpha96:D,getAlphaMap:t}),c=g.logoSize===96?D:P,{standardCandidateSeeds:E,standardTrials:w,standardTrial:n,standardSpatialScore:r,standardGradientScore:a,hasReliableStandardMatch:Y}=GP({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:t,resolveAlphaMap:G}),I=null,i="insufficient";if(Y&&n?.accepted?(I=n,i="direct-match"):n?.accepted&&(I={...n,source:`${n.source}+validated`},i="validated-match"),!I&&n&&Y){let z=tP({originalImageData:A,seedCandidate:{...n,source:"standard+validated"},adaptiveConfidence:null,alphaGainCandidates:o});z&&(I=z,i="validated-match")}let C=null,s=null,u=null;for(let y of w)!y||y===n||({baseCandidate:I,baseDecisionTier:i}=Z(I,i,y,{reliableMatch:oA({spatialScore:y.originalSpatialScore,gradientScore:y.originalGradientScore})}));let Q=eP({originalImageData:A,config:g,alpha48:P,alpha96:D,getAlphaMap:t,resolveAlphaMap:G,adaptiveConfidence:s});if(Q&&({baseCandidate:I,baseDecisionTier:i}=Z(I,i,Q)),i!=="direct-match"&&!I?.provenance?.previewAnchor&&GA(I)){let y=PP({originalImageData:A,candidateSeeds:E,alpha48:P,alpha96:D,getAlphaMap:t,resolveAlphaMap:G});y&&({baseCandidate:I,baseDecisionTier:i}=Z(I,i,y))}if(i!=="direct-match"&&I?.provenance?.sizeJitter===!0&&!I?.provenance?.previewAnchor&&$(I)&&GA(I)){let y=DP({originalImageData:A,seedCandidate:I,adaptiveConfidence:s});y&&({baseCandidate:I,baseDecisionTier:i}=Z(I,i,y))}if((!e||!D?!1:I?GA(I)?(I=q(I,A),ZA({processedImageData:I.imageData,alphaMap:I.alphaMap,position:I.position,originalImageData:A,originalSpatialMismatchThreshold:0})):!1:!0)&&({adaptive:C,adaptiveConfidence:s,adaptiveTrial:u}=IP({originalImageData:A,config:g,alpha96:D,resolveAlphaMap:G,allowAdaptiveSearch:e})),u&&({baseCandidate:I,baseDecisionTier:i}=Z(I,i,u,{reliableMatch:eA(C)})),!I?.provenance?.previewAnchor&&!eA(C)&&LB(I,A)){let y=BP({originalImageData:A,candidateSeeds:E,adaptiveConfidence:s});y&&({baseCandidate:I,baseDecisionTier:i}=Z(I,i,y))}if(I||(Y&&n?(I=n,i="direct-match"):eA(C)&&u&&(I=u,i="direct-match")),!I){let y=jB([n,u]);if(!y)return{selectedTrial:null,source:"skipped",alphaMap:c,position:B,config:g,adaptiveConfidence:s,standardSpatialScore:r,standardGradientScore:a,templateWarp:null,alphaGain:1,decisionTier:"insufficient"};I={...y,source:`${y.source}+validated`},i="validated-match"}$B(I,n)&&(I=n,i=Y?"direct-match":"validated-match");let{selectedTrial:T,source:f,alphaMap:l,position:d,config:M,templateWarp:h,alphaGain:K,decisionTier:O}=cP({originalImageData:A,baseCandidate:I,baseDecisionTier:i,adaptiveConfidence:s,alphaGainCandidates:o});return{selectedTrial:q(T,A),source:f,alphaMap:l,position:d,config:M,adaptiveConfidence:s,standardSpatialScore:r,standardGradientScore:a,templateWarp:h,alphaGain:K,decisionTier:O}}function sg(A){if(!A||typeof A!="object")return null;let{logoSize:g,marginRight:B,marginBottom:P}=A;return[g,B,P].every(Number.isFinite)?{logoSize:g,marginRight:B,marginBottom:P}:null}function ug(A){if(!A||typeof A!="object")return null;let{x:g,y:B,width:P,height:D}=A;return[g,B,P,D].every(Number.isFinite)?{x:g,y:B,width:P,height:D}:null}function yg({selectedTrial:A,selectionSource:g=null,initialConfig:B=null,initialPosition:P=null}={}){return A?{candidateSource:typeof g=="string"&&g?g:typeof A.source=="string"?A.source:null,initialConfig:sg(B),initialPosition:ug(P),finalConfig:sg(A.config),finalPosition:ug(A.position),texturePenalty:Number.isFinite(A.texturePenalty)?A.texturePenalty:null,tooDark:A.tooDark===!0,tooFlat:A.tooFlat===!0,hardReject:A.hardReject===!0,usedCatalogVariant:A.provenance?.catalogVariant===!0,usedSizeJitter:A.provenance?.sizeJitter===!0,usedLocalShift:A.provenance?.localShift===!0,usedAdaptive:A.provenance?.adaptive===!0,usedPreviewAnchor:A.provenance?.previewAnchor===!0}:null}function CA(A,g){let B=QA(A,g);return B?{...B}:A>1024&&g>1024?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function AA(A,g,B){let{logoSize:P,marginRight:D,marginBottom:t}=B;return{x:A-D-P,y:g-t-P,width:P,height:P}}function mA(A){return A===96?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function YP(A,g,B){return A?A.logoSize===48?g:A.logoSize===96?B:B?L(B,96,A.logoSize):null:null}function EP(A,g){return g.x>=0&&g.y>=0&&g.x+g.width<=A.width&&g.y+g.height<=A.height}function Qg({imageData:A,defaultConfig:g,alpha48:B,alpha96:P,minSwitchScore:D=.25,minScoreDelta:t=.08}){if(!A||!g||!B||!P)return g;let e=mA(48),o=g.logoSize===96?mA(96):e,G=g.logoSize===96?e:mA(96),c=[o,G];for(let n of lA(A.width,A.height,{limit:1}))c.some(r=>r.logoSize===n.logoSize&&r.marginRight===n.marginRight&&r.marginBottom===n.marginBottom)||c.push(n);let E=null,w=Number.NEGATIVE_INFINITY;for(let n of c){let r=AA(A.width,A.height,n);if(!EP(A,r))continue;let a=YP(n,B,P);if(!a)continue;let Y=S({imageData:A,alphaMap:a,region:{x:r.x,y:r.y,size:r.width}});if(!E){E=n,w=Y;continue}Y>=D&&Y>w+t&&(E=n,w=Y)}return E??g}var aP=.5,rP=.18,iP=.18,_A=.05,wP=.42,Hg=1.2,fg=[-.25,0,.25],Tg=[.99,1,1.01],dg=[1.05,1.12,1.2,1.28,1.36,1.45,1.52,1.6,1.7,1.85,2,2.2,2.4,2.6],hg=40,CP=.08,sP=.1,uP=.03,yP=.04,QP=3,lP=.16,MP=.005,HP=.01,fP=.02,TP=1.5,SA=4,dP=.18,lg=Object.freeze([{minAlpha:.02,maxAlpha:.45,radius:2,strength:.7,outsideAlphaMax:.05},{minAlpha:.05,maxAlpha:.55,radius:3,strength:.7,outsideAlphaMax:.08},{minAlpha:.1,maxAlpha:.7,radius:3,strength:.8,outsideAlphaMax:.12},{minAlpha:.01,maxAlpha:.35,radius:4,strength:1.4,outsideAlphaMax:.05}]),hP=.45,zP=Object.freeze([{minAlpha:.01,maxAlpha:.55,radius:2,strength:1.3,outsideAlphaMax:.05,minGradientImprovement:.12,maxSpatialDrift:.18,maxAcceptedSpatial:.18}]),OP=.08,pP=.2;function m(){return typeof globalThis.performance?.now=="function"?globalThis.performance.now():Date.now()}function IA(A){return typeof ImageData<"u"&&A instanceof ImageData?new ImageData(new Uint8ClampedArray(A.data),A.width,A.height):{width:A.width,height:A.height,data:new Uint8ClampedArray(A.data)}}function KP(A){if(!A)return null;let{x:g,y:B,width:P,height:D}=A;return[g,B,P,D].every(t=>Number.isFinite(t))?{x:g,y:B,width:P,height:D}:null}function mP(A){if(!A)return null;let{logoSize:g,marginRight:B,marginBottom:P}=A;return[g,B,P].every(D=>Number.isFinite(D))?{logoSize:g,marginRight:B,marginBottom:P}:null}function Mg({position:A=null,config:g=null,adaptiveConfidence:B=null,originalSpatialScore:P=null,originalGradientScore:D=null,processedSpatialScore:t=null,processedGradientScore:e=null,suppressionGain:o=null,templateWarp:G=null,alphaGain:c=1,passCount:E=0,attemptedPassCount:w=0,passStopReason:n=null,passes:r=null,source:a="standard",decisionTier:Y=null,applied:I=!0,skipReason:i=null,subpixelShift:C=null,selectionDebug:s=null}={}){let u=KP(A);return{applied:I,skipReason:I?null:i,size:u?u.width:null,position:u,config:mP(g),detection:{adaptiveConfidence:B,originalSpatialScore:P,originalGradientScore:D,processedSpatialScore:t,processedGradientScore:e,suppressionGain:o},templateWarp:G??null,alphaGain:c,passCount:E,attemptedPassCount:w,passStopReason:n,passes:Array.isArray(r)?r:null,source:a,decisionTier:Y,subpixelShift:C??null,selectionDebug:s}}function SP({originalScore:A,processedScore:g,suppressionGain:B}){return A>=.6&&g>=aP&&B<=rP}function _P({originalSpatialScore:A,originalGradientScore:g,firstPassSpatialScore:B,firstPassGradientScore:P}){return Math.abs(B)<=.25?!0:A>=0&&B<0&&P<=OP&&g-P>=pP}function RP({sourceImageData:A,alphaMap:g,position:B,alphaGain:P,originalNearBlackRatio:D,baselineSpatialScore:t,baselineGradientScore:e,baselineShift:o,minGain:G=Hg,shiftCandidates:c=fg,scaleCandidates:E=Tg,minGradientImprovement:w=.04,maxSpatialDrift:n=.08}){let r=B.width;if(!r||r<=8||P<G)return null;let a=Math.min(1,D+_A),Y=[P],I=Math.max(1,Number((P-.01).toFixed(2))),i=Number((P+.01).toFixed(2));I!==P&&Y.push(I),i!==P&&Y.push(i);let C=o?.dx??0,s=o?.dy??0,u=o?.scale??1,Q=null;for(let f of E){let l=Number((u*f).toFixed(4));for(let d of c){let M=s+d;for(let h of c){let K=C+h,O=iA(g,r,{dx:K,dy:M,scale:l});for(let y of Y){let z=IA(A);v(z,O,B,{alphaGain:y});let F=p(z,B);if(F>a)continue;let cA=S({imageData:z,alphaMap:O,region:{x:B.x,y:B.y,size:r}}),V=x({imageData:z,alphaMap:O,region:{x:B.x,y:B.y,size:r}}),X=Math.abs(cA)*.6+Math.max(0,V);(!Q||X<Q.cost)&&(Q={imageData:z,alphaMap:O,alphaGain:y,shift:{dx:K,dy:M,scale:l},spatialScore:cA,gradientScore:V,nearBlackRatio:F,cost:X})}}}}if(!Q)return null;let H=Q.gradientScore<=e-w,T=Math.abs(Q.spatialScore)<=Math.abs(t)+n;return!H||!T?null:Q}function NP({sourceImageData:A,alphaMap:g,position:B,originalSpatialScore:P,processedSpatialScore:D,originalNearBlackRatio:t}){let e=D,o=1,G=null,c=Math.min(1,t+_A);for(let n of dg){let r=IA(A);if(v(r,g,B,{alphaGain:n}),p(r,B)>c)continue;let Y=S({imageData:r,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}});Y<e&&(e=Y,o=n,G=r)}let E=[];for(let n=-.05;n<=.05;n+=.01)E.push(Number((o+n).toFixed(2)));for(let n of E){if(n<=1||n>=3)continue;let r=IA(A);if(v(r,g,B,{alphaGain:n}),p(r,B)>c)continue;let Y=S({imageData:r,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}});Y<e&&(e=Y,o=n,G=r)}let w=D-e;return!G||w<iP?null:{imageData:G,alphaGain:o,processedSpatialScore:e,suppressionGain:P-e}}function xP({source:A,position:g,baselineSpatialScore:B,baselineGradientScore:P,baselinePositiveHalo:D}){return typeof A=="string"&&A.includes("preview-anchor")&&g?.width>=24&&g?.width<=hg&&(Math.abs(B)<=CP||D>=SA&&Math.abs(B)<=dP)&&P>=sP}function vP(A,g){return A?.provenance?.previewAnchor===!0&&g?.width>=24&&g?.width<=hg}function bP({sourceImageData:A,alphaMap:g,position:B,minAlpha:P,maxAlpha:D,radius:t,strength:e,outsideAlphaMax:o}){let G=IA(A),{width:c,height:E,data:w}=A,n=B.width,r=Math.max(D,1e-6);for(let a=0;a<n;a++)for(let Y=0;Y<n;Y++){let I=g[a*n+Y];if(I<P||I>D)continue;let i=0,C=0,s=0,u=0;for(let T=-t;T<=t;T++)for(let f=-t;f<=t;f++){if(f===0&&T===0)continue;let l=a+T,d=Y+f,M=B.x+d,h=B.y+l;if(M<0||h<0||M>=c||h>=E)continue;let K=0;if(l>=0&&d>=0&&l<n&&d<n&&(K=g[l*n+d]),K>o)continue;let y=1/(Math.sqrt(f*f+T*T)||1),z=(h*c+M)*4;i+=w[z]*y,C+=w[z+1]*y,s+=w[z+2]*y,u+=y}if(u<=0)continue;let Q=Math.max(0,Math.min(1,e*I/r)),H=((B.y+a)*c+(B.x+Y))*4;G.data[H]=Math.round(w[H]*(1-Q)+i/u*Q),G.data[H+1]=Math.round(w[H+1]*(1-Q)+C/u*Q),G.data[H+2]=Math.round(w[H+2]*(1-Q)+s/u*Q)}return G}function LP({sourceImageData:A,alphaMap:g,position:B,source:P,baselineSpatialScore:D,baselineGradientScore:t,minGradientImprovement:e=uP,maxSpatialDrift:o=yP,allowAggressivePresets:G=!1}){let E=dA({imageData:A,position:B,alphaMap:g}).positiveDeltaLum;if(!xP({source:P,position:B,baselineSpatialScore:D,baselineGradientScore:t,baselinePositiveHalo:E}))return null;let w=p(A,B),n=Math.min(1,w+_A),r=t<=lP?MP:E>=SA?HP:e,a=G&&t>=hP&&Math.abs(D)<=.05?[...lg,...zP]:lg,Y=null;for(let I of a){let i=bP({sourceImageData:A,alphaMap:g,position:B,...I});if(p(i,B)>n)continue;let s=S({imageData:i,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}}),u=x({imageData:i,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}}),Q=dA({imageData:i,position:B,alphaMap:g}),H=I.minGradientImprovement??r,T=I.maxSpatialDrift??o,f=I.maxAcceptedSpatial??.22,l=u<=t-H,d=Math.abs(s)<=Math.abs(D)+T,M=Math.abs(s)<=f,h=Q.positiveDeltaLum,K=E<SA||h<=E-TP;if(!l||!d||!M||!K)continue;let O=Math.abs(s)*.6+Math.max(0,u)+h*fP;(!Y||O<Y.cost)&&(Y={imageData:i,spatialScore:s,gradientScore:u,halo:Q,cost:O})}return Y}function zg(A,g={}){let B=m(),P=g.debugTimings===!0,D=P?{}:null,t=g.adaptiveMode||"auto",e=t!=="never"&&t!=="off",o=IA(A),{alpha48:G,alpha96:c}=g,E=dg;if(!G||!c)throw new Error("processWatermarkImageData requires alpha48 and alpha96");let w=CA(o.width,o.height),n=Qg({imageData:o,defaultConfig:w,alpha48:G,alpha96:c}),r=n,a=AA(o.width,o.height,r),Y=r.logoSize===96?c:G,I="standard",i=null,C=1,s=null,u=null,Q=null,H=0,T=0,f=null,l=null,d=m(),M=Cg({originalImageData:o,config:r,position:a,alpha48:G,alpha96:c,getAlphaMap:g.getAlphaMap,allowAdaptiveSearch:e,alphaGainCandidates:E});if(P&&(D.initialSelectionMs=m()-d),!M.selectedTrial)return P&&(D.totalMs=m()-B),{imageData:o,meta:Mg({adaptiveConfidence:M.adaptiveConfidence,originalSpatialScore:M.standardSpatialScore,originalGradientScore:M.standardGradientScore,processedSpatialScore:M.standardSpatialScore,processedGradientScore:M.standardGradientScore,suppressionGain:0,alphaGain:1,source:"skipped",decisionTier:M.decisionTier??"insufficient",applied:!1,skipReason:"no-watermark-detected",selectionDebug:null}),debugTimings:D};a=M.position,Y=M.alphaMap,r=M.config,I=M.source,i=M.adaptiveConfidence,u=M.templateWarp,C=M.alphaGain,Q=M.decisionTier;let h=M.selectedTrial,K=vP(h,a),O=h?.provenance?.previewAnchor===!0,y=h.imageData,z=h.originalSpatialScore,F=h.originalGradientScore,cA=m(),V=S({imageData:y,alphaMap:Y,region:{x:a.x,y:a.y,size:a.width}}),X=x({imageData:y,alphaMap:Y,region:{x:a.x,y:a.y,size:a.width}}),pg=p(y,a),Kg={index:1,beforeSpatialScore:z,beforeGradientScore:F,afterSpatialScore:V,afterGradientScore:X,improvement:Math.abs(z)-Math.abs(V),gradientDelta:X-F,nearBlackRatio:pg};P&&(D.firstPassMetricsMs=m()-cA);let mg=Math.max(1,g.maxPasses??4),NA=Math.max(0,mg-1),xA=_P({originalSpatialScore:z,originalGradientScore:F,firstPassSpatialScore:V,firstPassGradientScore:X}),Sg=m(),gA=NA>0&&!xA&&!O?gg({imageData:y,alphaMap:Y,position:a,maxPasses:NA,startingPassIndex:1,alphaGain:C}):null;P&&(D.extraPassMs=m()-Sg),y=gA?.imageData??y,H=gA?.passCount??1,T=gA?.attemptedPassCount??1,f=gA?.stopReason??(xA?"residual-low":O?"preview-anchor-single-pass":"max-passes"),l=[Kg,...gA?.passes??[]],H>1&&(I=`${I}+multipass`);let _g=m(),Rg=S({imageData:y,alphaMap:Y,region:{x:a.x,y:a.y,size:a.width}}),Ng=x({imageData:y,alphaMap:Y,region:{x:a.x,y:a.y,size:a.width}});P&&(D.finalMetricsMs=m()-_g);let R=Rg,j=Ng,BA=z-R,xg=m();if(SP({originalScore:z,processedScore:R,suppressionGain:BA})){let PA=p(y,a),N=NP({sourceImageData:y,alphaMap:Y,position:a,originalSpatialScore:z,processedSpatialScore:R,originalNearBlackRatio:PA});N&&(y=N.imageData,C=N.alphaGain,R=N.processedSpatialScore,j=x({imageData:y,alphaMap:Y,region:{x:a.x,y:a.y,size:a.width}}),BA=N.suppressionGain,I=I==="adaptive"?"adaptive+gain":`${I}+gain`)}P&&(D.recalibrationMs=m()-xg);let vA=0,vg=()=>{let PA=m(),N=LP({sourceImageData:y,alphaMap:Y,position:a,source:I,baselineSpatialScore:R,baselineGradientScore:j,allowAggressivePresets:K});return vA+=m()-PA,N?(y=N.imageData,R=N.spatialScore,j=N.gradientScore,BA=z-R,I=`${I}+edge-cleanup`,!0):!1},bg=m();if(!K&&R<=.3&&j>=wP){let PA=p(y,a),W=RP({sourceImageData:y,alphaMap:Y,position:a,alphaGain:C,originalNearBlackRatio:PA,baselineSpatialScore:R,baselineGradientScore:j,baselineShift:u??{dx:0,dy:0,scale:1},minGain:Hg,shiftCandidates:fg,scaleCandidates:Tg,minGradientImprovement:.04,maxSpatialDrift:.08});W&&(y=W.imageData,Y=W.alphaMap,C=W.alphaGain,R=W.spatialScore,j=W.gradientScore,BA=z-R,I=`${I}+subpixel`,s=W.shift)}P&&(D.subpixelRefinementMs=m()-bg);let bA=0;for(;bA<QP&&vg();)bA++;return P&&(D.previewEdgeCleanupMs=vA,D.totalMs=m()-B),{imageData:y,meta:Mg({position:a,config:r,adaptiveConfidence:i,originalSpatialScore:z,originalGradientScore:F,processedSpatialScore:R,processedGradientScore:j,suppressionGain:BA,templateWarp:u,alphaGain:C,passCount:H,attemptedPassCount:T,passStopReason:f,passes:l,source:I,decisionTier:Q,applied:!0,subpixelShift:s,selectionDebug:yg({selectedTrial:h,selectionSource:M.source,initialConfig:n,initialPosition:AA(o.width,o.height,n)})}),debugTimings:D}}function kP(A,g){if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(A,g);if(typeof document<"u"){let B=document.createElement("canvas");return B.width=A,B.height=g,B}throw new Error("Canvas runtime not available")}function FP(A){let g=A.getContext("2d",{willReadFrequently:!0});if(!g)throw new Error("Failed to get 2D canvas context");return g}var sA=class A{constructor(){this.alphaMaps={}}static async create(){return new A}async getAlphaMap(g){if(g!==48&&g!==96){if(this.alphaMaps[g])return this.alphaMaps[g];let P=await this.getAlphaMap(96),D=L(P,96,g);return this.alphaMaps[g]=D,D}if(this.alphaMaps[g])return this.alphaMaps[g];let B=kA(g);if(!B)throw new Error(`Missing embedded alpha map for size ${g}`);return this.alphaMaps[g]=B,B}async removeWatermarkFromImage(g,B={}){let P=()=>typeof globalThis.performance?.now=="function"?globalThis.performance.now():Date.now(),D=kP(g.width,g.height),t=FP(D),e=P();t.drawImage(g,0,0);let o=P()-e,G=P(),c=t.getImageData(0,0,D.width,D.height),E=P()-G,w=await this.getAlphaMap(48),n=await this.getAlphaMap(96),r=P(),a=zg(c,{alpha48:w,alpha96:n,adaptiveMode:B.adaptiveMode,maxPasses:B.maxPasses,debugTimings:B.debugTimings===!0,getAlphaMap:C=>this.alphaMaps[C]||L(n,96,C)}),Y=P()-r,I=P();t.putImageData(a.imageData,0,0);let i=P()-I;return D.__watermarkMeta=a.meta,D.__watermarkTiming={drawMs:o,getImageDataMs:E,processWatermarkImageDataMs:Y,putImageDataMs:i,processor:a.debugTimings??null},D}getWatermarkInfo(g,B){let P=CA(g,B),D=AA(g,B,P);return{size:P.logoSize,position:D,config:P}}};async function Og(A,g="image/png",{unavailableMessage:B="Canvas blob export API is unavailable",nullBlobMessage:P="Failed to encode image blob"}={}){if(typeof A?.convertToBlob=="function")return await A.convertToBlob({type:g});if(typeof A?.toBlob=="function")return await new Promise((D,t)=>{A.toBlob(e=>{e?D(e):t(new Error(P))},g)});throw new Error(B)}var RA=null;function jP(){return RA||(RA=sA.create()),RA}function WP(A){return A?{message:A.message||String(A),stack:A.stack||null}:{message:"Unknown error"}}self.addEventListener("message",async A=>{let g=A.data;if(!g||typeof g.type!="string")return;if(g.type==="ping"){self.postMessage({id:g.id,ok:!0,result:{ready:!0}});return}if(g.type!=="process-image")return;let{id:B,inputBuffer:P,mimeType:D,options:t}=g;try{let e=await jP(),o=new Blob([P],{type:D||"image/png"}),G=await createImageBitmap(o),c=await e.removeWatermarkFromImage(G,t||{});typeof G.close=="function"&&G.close();let w=await(await Og(c,"image/png",{nullBlobMessage:"Failed to encode PNG blob"})).arrayBuffer();self.postMessage({id:B,ok:!0,result:{processedBuffer:w,mimeType:"image/png",meta:c.__watermarkMeta||null}},[w])}catch(e){self.postMessage({id:B,ok:!1,error:WP(e)})}});})();\n' : "";
  var USERSCRIPT_PAGE_PROCESSOR_CODE = true ? '(()=>{async function jA(A,g="image/png",{unavailableMessage:B="Canvas blob export API is unavailable",nullBlobMessage:P="Failed to encode image blob"}={}){if(typeof A?.convertToBlob=="function")return await A.convertToBlob({type:g});if(typeof A?.toBlob=="function")return await new Promise((D,e)=>{A.toBlob(o=>{o?D(o):e(new Error(P))},g)});throw new Error(B)}var AB={48:2304,96:9216},WA={48:"gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAADj4uI+4eDgPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDvBwEA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4WEBD6BgAA/gYAAP4GAAD4AAAAAgYAAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8wcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYAAPIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO5GQkD6BgAA/gYAAP5GQkD4AAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADwAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAO+Hg4D6BgAA/gYAAP/Hw8D4AAAAAgYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPoGAAD+BgAA/gYAAP4GAAD+BgAA+AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAADwAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7AAAAAAAAAACBgIA7oaCgPoGAAD+BgAA/gYAAP4GAAD/BwMA+AAAAAAAAAACBgIA7AAAAAIGAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDsAAAAAAAAAAIGAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAwcBAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADwAAAAAAAAAAIGAADyJiIg9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgIA7AAAAAAAAAAAAAAAAgYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAAAAAAAAAAAAAIGAADwAAAAAgYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO8HAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/o6KiPoGAgDuBgAA8AAAAAIGAgDuBgIA7gYCAO8HAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPAAAAAAAAAAAgYCAO4GAADyBgIA7gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAADyBgAA8gYCAO4mIiD2BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD6BgAA8gYCAO4GAADwAAAAAgYCAO4GAADyBgIA7wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7AAAAAIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO+Hg4D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDsAAAAAAAAAAIGAgDuBgAA8AAAAAIGAgDuBgIA7AAAAAAAAAAAAAAAAgYAAPIGAgDuBgIA7gYAAPAAAAACBgIA7gYCAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4GA+AAAAAAAAAACBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAACBgIA7gYCAO8HAQDwAAAAAgYCAO4GAADwAAAAAgYAAPAAAAACBgAA8gYCAOwAAAACBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+wcDAPYGAgDuBgAA8wcBAPIGAADyBgAA8gYAAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAACBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgDuBgIA7AAAAAMHAQDyBgAA8gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAAD2BgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAOwAAAACBgIA7AAAAAAAAAACBgIA7AAAAAIGAgDsAAAAAgYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO9PS0j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7AAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAAAAAAIGAgDsAAAAAgYAAPIGAgDuBgIA7o6KiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+hoKA+gYCAOwAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAAAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPgAAAACBgIA7gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAADwAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPcHAwD6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgIA9gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgIA7gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDuBgIA7AAAAAAAAAADBwMA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+iYiIPYGAgDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAAAAAAIGAgDsAAAAAAAAAAOHgYD7x8PA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4WEhD6BgIA7gYCAO4GAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAgDsAAAAAgYAAPIGAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAgDuBgAA+wcDAPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAPYGAADzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6GgoD6BgIA9gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4WEBD7BwMA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAAD6BgIA7gYAAPIGAgDuBgIA7AAAAAIGAAD6RkJA+8fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+kZCQPoGAAD6BgIA84eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+gYCAO4GAAD6RkJA+4eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/x8PA+kZCQPoGAAD6BgIA7gYCAO8HAQDwAAAAAgYCAO4GAAD6hoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/wcDAPoGAAD6BgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA7AAAAAAAAAACBgAA8gYCAPaOioj6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP6Oioj6JiIg9gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADyBgIA7gYCAOwAAAAAAAAAAgYCAO4GAADyBgIA94eDgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/BwMA+gYAAPoGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAgYCAO4GAgD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/8/LyPuXkZD6BgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAAAAAAAAAAAAgYAAPAAAAACBgIA94+LiPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD/h4OA+wcDAPYGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDsAAAAAgYCAOwAAAACBgIA7AAAAAIGAgDsAAAAAAAAAAAAAAAAAAAAAgYCAPdHQ0D6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP8HAwD6BgAA9gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgIA7gYCAO4GAgDsAAAAAAAAAAAAAAAAAAAAAgYCAO4GAgDuhoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/oaCgPsHAQDzBwEA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYCAOwAAAAAAAAAAAAAAAAAAAACBgIA7gYCAO4GAADyBgIA7oaCgPoGAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8PCwj6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP9HQ0D6BgAA8gYAAPMHAQDzBwEA8gYCAOwAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYCAO6GgID3j4uI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/4eDgPoGAgD2BgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYCAPMHAQDwAAAAAgYCAO8HAQDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8AAAAAAAAAACBgAA8wcBAPIGAADzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADzJyMg98fDwPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPQAAAACBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgAA8wcBAPIGAADyBgIA7AAAAAAAAAACBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADyBgAA84eBgPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYCAO4GAgDvBwEA8gYAAPIGAgDsAAAAAgYCAO4GAgDvBwEA8wcBAPIGAgDuBgAA8gYCAOwAAAAAAAAAAAAAAAIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYAAPIGAADyBgAA8AAAAAMHAwD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgAA8gYCAO4GAgDuBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgAA8gYCAO4GAAD6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAgD2BgIA7gYCAOwAAAACBgAA8gYAAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAOwAAAACBgAA8gYAAPIGAADyBgIA7gYCAOwAAAAChoKA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPAAAAACBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPAAAAACBgIA7gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7AAAAAIGAgDuBgIA9gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYCAPYGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAw8LCPoKBAT+CgQE/gYAAP4GAAD+hoKA+gYCAO4GAADyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDuBgIA7gYAAPMHAQDyBgIA7gYAAPoKBAT+BgAA/gYAAP4GAAD+BgAA+gYCAO4GAADyBgAA8AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPAAAAAAAAAAAgYAAPIGAADyBgIA7gYCAO/Py8j6BgAA/gYAAP+Hg4D6BgIA7gYCAO4GAADzBwEA8gYCAO4GAgDuBgAA8gYAAPAAAAAAAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAADyBgIA7gYCAO5OSkj6BgAA/gYAAP5OSkj6BgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADyBgIA7AAAAAIGAgDvBwEA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYAAPIGAAD6BgAA/gYAAP4WEBD6BgIA7gYCAO4GAADyBgAA8gYAAPIGAADwAAAAAgYCAOwAAAACBgIA7gYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA7gYCAOwAAAADBwEA8gYAAPIGAgDvh4OA+4eDgPoGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgIA7",96:"gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDwAAAAAwcBAPMHAQDyBgIA8wcBAPIGAADyhoKA8gYAAPIGAADyBgAA8AAAAAIGAADyBgIA7gYCAO4GAgDuBgIA7wcBAPIGAADzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPOXkZD7z8vI+4+LiPu3sbD6BgIA7wcBAPAAAAACBgAA8gYCAO4GAADyBgIA8gYCAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAO8HAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8oaCgPIGAgDyBgIA8wcBAPIGAgDyBgAA8wcBAPIGAgDvBwEA8wcBAPIGAgDyBgAA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDsAAAAAgYCAOwAAAAAAAAAAgYAAPIGAADzBwEA8wcBAPIGAgDvBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8gYCAOwAAAAAAAAAAAAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPYGAAD+BgAA/goEBP4KBAT+RkBA9gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgIA7gYAAPAAAAACBgAA8AAAAAIGAgDuBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcDAPKGgoDyBgIA8oaCgPIGAgDyhoKA8gYCAOwAAAACBgAA8gYCAO4GAADyBgIA8wcBAPIGAADwAAAAAgYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7gYCAO4GAADyBgAA8gYCAOwAAAACBgIA7gYCAOwAAAACBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8AAAAAIGAgDsAAAAAgYCAOwAAAAAAAAAAgYCAO4GAADyBgAA8paQkPoGAAD+BgAA/goEBP4GAAD/FxEQ+AAAAAAAAAACBgIA7gYAAPIGAgDsAAAAAAAAAAIGAgDuBgIA7gYAAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYAAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPKGgoDzBwEA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDyBgIA8gYCAPMHAQDzBwEA8AAAAAIGAgDuBgIA7gYAAPIGAADyhoKA8gYAAPMHAQDwAAAAAgYCAO4GAADyBgAA8AAAAAAAAAAAAAAAAgYAAPIGAADyBgIA7AAAAAIGAgDsAAAAAgYCAO4GAgDsAAAAAgYCAO4GAADyBgIA7gYCAOwAAAACBgIA7gYCAPMHAQDyBgAA8gYCAPIGAgDuBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgIA7gYAAPIGAADzBwEA8paSkPoGAAD+BgAA/goEBP4KBAT+hoKA+gYCAO4GAgDuBgIA7gYCAO4GAgDsAAAAAAAAAAIGAgDuBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8oaCgPIGAgDyBgAA8gYCAO8HAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPMHAQDyhoKA8gYCAPMHAQDzBwEA8AAAAAAAAAACBgIA7wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAADBwEA8gYCAO8HAQDzBwEA8AAAAAIGAADyBgIA7gYCAOwAAAACBgAA8AAAAAIGAgDsAAAAAAAAAAAAAAACBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgIA8wcBAPAAAAACBgIA7AAAAAIGAgDvBwEA85eTkPoGAAD+BgAA/gYAAP4GAAD/z8vI+gYAAPMHAQDyBgIA7gYAAPMHAQDyBgIA7gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYCAO8HAQDyBgIA8oaCgPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAgDsAAAAAwcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPKGgoDyBgIA8oaCgPIGAgDzBwEA8gYCAOwAAAADBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAgDyBgIA8AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAgDsAAAAAgYAAPIGAADyBgIA7gYCAO4GAgDuBgIA7AAAAAIGAgDuBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDuBgIA8oaCgPIGAADyBgIA8AAAAAIGAADyBgIA8gYAAPIGAADyFhAQ+goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/iYgIPoGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8gYAAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAO4GAADyBgIA7gYCAO4GAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAADyBgIA7gYCAPIGAADyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADylpKQ+goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/k5KSPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADzBwEA8wcBAPKGgoDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwMA8oaCgPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA8gYCAO4GAgDsAAAAAgYAAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDvBwEA8gYCAO4GAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDvj4uI+goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/8/LyPoGAADyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAO4GAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYCAO8HAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDzBwEA8oaCgPKGgoDyBgIA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA8gYCAO4GAgDuBgAA8wcBAPIGAgDyBgIA7gYAAPIGAADyBgAA8gYAAPAAAAACBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPKmoKD6BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4WEBD7BwEA8gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgIA8gYAAPIGAgDsAAAAAgYCAO4GAgDuBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgIA8oaCgPIGAgDyBgAA8gYAAPIGAgDyBgIA8oaCgPIGAgDyBgIA8gYCAO8HAQDyBgIA7gYCAOwAAAACBgIA7wcBAPIGAADyBgIA7wcBAPIGAgDuBgAA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8wcBAPAAAAACBgIA7AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPLOysj6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP8PCwj6BgAA8AAAAAIGAgDvBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDyBgAA8gYCAO4GAgDsAAAAAgYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYCAPAAAAACBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyhoKA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcDAPIGAgDyBgIA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO8HAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDzBwEA8wcBAPIGAgDuBgIA7AAAAAIGAgDsAAAAAgYCAO4GAADyBgIA8iYiIPYGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+JiIg9gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAgDsAAAAAgYAAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYCAO4GAgDuBgIA7gYCAO4GAADzBwEA8oaCgPoGAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+FhIQ+gYAAPIGAADyBgIA7AAAAAIGAADyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA7wcBAPIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8gYCAO4GAgDuBgIA7gYAAPAAAAACBgIA7gYAAPIGAADyBgAA8AAAAAAAAAACBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgAA8gYCAOwAAAADBwEA8wcBAPMHAQDwAAAAAAAAAAIGAgDvBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADwAAAAAgYCAO4GAADyBgIA7gYAAPAAAAAAAAAAAgYAAPAAAAACJiIg9goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD/z8vI+gYAAPYGAgDuBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAOwAAAADBwEA8gYAAPIGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPMHAwDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAADwAAAAAgYAAPIGAgDsAAAAAgYAAPMHAQDyBgAA8gYCAOwAAAACBgAA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAO4GAADyBgAA8wcBAPAAAAAAAAAAAgYCAO4GAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO4GAgDuBgIA7AAAAAIGAADyBgIA7gYAAPMHAQDyDgoI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4KCPoGAADyBgAA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDuBgAA8wcBAPIGAgDuBgIA7gYAAPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPKGgoDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA8gYCAO4GAgDuBgIA7gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDvBwEA8gYCAPAAAAAAAAAAAgYCAO4GAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDwAAAAAgYCAOwAAAACBgIA7AAAAAAAAAACBgIA8gYCAPJGQkD3j4uI+goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/8/LyPpGQED2BgAA8oaCgPIGAgDyBgIA8wcBAPIGAADyBgIA8gYCAPIGAADzBwEA8gYAAPIGAgDyBgIA7wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYCAPKGgoDzBwMA8gYCAPIGAADyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8wcBAPIGAgDuBgAA8gYCAO4GAgDsAAAAAgYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAO4GAADyBgIA8gYCAPMHAQDyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYCAPKWkpD6CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP4KBAT+CgQE/goEBP4WEhD7BwEA8gYCAO8HAQDyBgIA8gYAAPMHAQDzBwMA8wcBAPIGAADyBgIA7gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAwDzBwEA8gYCAPIGAADyhoKA8wcBAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgAA8gYAAPAAAAACBgIA7gYAAPIGAgDuBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDvBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP/Py8j6JiIg9wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7gYAAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgIA7gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAO4GAADzBwEA8gYCAOwAAAACBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8paSkPoKBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+zsrI+gYCAPIGAADyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYCAO8HAQDyBgIA8gYCAOwAAAADBwEA8gYCAO4GAgDuBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA8gYAAPIGAgDuBgIA7AAAAAIGAADzBwEA8oaCgPIGAgDzBwEA8gYCAO8HAQDyBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDylpCQ+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4SDAz+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/iYgIPoGAgDuBgIA7gYAAPIGAgDyBgAA8gYCAO4GAADyBgAA8AAAAAIGAADyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDyBgIA8gYAAPIGAgDzBwEA8gYAAPMHAQDyhoKA8oaCgPIGAgDyBgAA8gYCAOwAAAADBwEA8gYCAPIGAgDzBwEA8gYCAO4GAADyBgAA8gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYCAPIGAADyBgAA8AAAAAIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzj4uI+goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/gYAAP4GAAD+CgQE/4+LiPpGQED3BwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYAAPIGAgDvBwEA8gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYCAO4GAgDvBwEA8gYCAPIWEhD6BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP5OSkj6BgAA8wcBAPMHAQDyBgAA8gYCAPIGAgDuBgIA7gYCAO4GAgDvBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgIA8gYCAPIGAADyBgIA8oaCgPIGAgDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8oaCgPIGAADyBgAA8gYCAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYCAO4GAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPIGAgDzBwEA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8AAAAAMHAQDyBgIA82djYPYKBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+DggI/goEBP4GAAD+FhAQ+wcBAPMHAQDyBgIA8gYCAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPMHAQDyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8gYAAPIGAgDsAAAAAAAAAAAAAAAChoKA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDyBgAA8gYCAPMHAQDyBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDwAAAAAgYCAO4GAADyJiIg95eTkPoKBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD/j4uI+sbAwPYGAgDyhoKA8oaCgPMHAQDyBgAA8AAAAAIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8oaCgPIGAADzBwEA8gYAAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7AAAAAAAAAAAAAAAAgYCAOwAAAAAAAAAAAAAAAIGAgDvBwEA8gYCAPIGAADyBgIA7gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyjoqI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPsHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAADyBgIA8wcBAPKGgoDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgAA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgAA8wcBAPMHAQDwAAAAAAAAAAAAAAACBgIA7wcBAPMHAQDyBgIA7gYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPAAAAACBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA8wcBAPIWEhD6CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+XkZD6BgAA8gYCAO4GAgDyBgIA8gYCAO8HAQDyBgIA8gYAAPMHAQDyBgIA7gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPIGAgDuBgIA7AAAAAAAAAACBgIA7gYAAPIGAADzBwEA8gYCAOwAAAAAAAAAAgYCAO4GAgDsAAAAAgYCAO4GAgDsAAAAAwcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8gYCAPIGAgDyBgIA7gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8jYwMPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA+gYCAO4GAgDyBgIA8gYAAPIGAADyBgIA8gYCAO4GAADyhoKA8wcBAPIGAgDyBgIA8gYCAO4GAgDyBgIA8gYCAPIGAgDyBgAA8oaCgPIGAgDzBwEA8gYCAPKGgoDzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYCAO4GAADyBgIA7gYCAO4GAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDsAAAAAgYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8gYCAO4GAgDuBgIA7gYCAO4GAgDuBgAA8wcBAPIGAADzBwEA8gYAAPIGAgDsAAAAAwcBAPIGAADyJiIg98/LyPoKBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD/x8PA+kZCQPYGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYCAPIGAgDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAO8HAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPKGgoDzBwEA8gYAAPIGAADwAAAAAgYCAO4GAADyBgAA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgDvBwEA8wcBAPMHAQDwAAAAAgYCAO4GAgDuBgIA7gYCAO4GAgD3h4OA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/4+LiPomIiD3BwEA8gYCAO4GAgDuBgIA8wcBAPIGAADyBgAA8gYCAO8HAQDyBgIA7gYAAPMHAQDyBgIA8oaCgPMHAQDzBwEA8gYCAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgIA8gYAAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAO4GAgDuBgIA7gYAAPIGAgDzBwEA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgIA7wcBAPIGAgDsAAAAAgYCAO4GAADzBwEA8kZCQPePi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP+Pi4j6BgIA9gYCAO4GAgDuhoKA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPMHAQDyhoKA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDwAAAAAgYAAPIGAADyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADyxsDA94+LiPoKBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/T0tI+gYAAPcHAQDyBgAA8gYCAPIGAgDsAAAAAgYCAO8HAQDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDyBgAA8gYCAPMHAQDyBgAA8gYCAO8HAQDwAAAAAgYCAO4GAADyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAOwAAAACBgAA8gYCAO4GAgDuBgAA8gYAAPJmYmD3V1NQ+gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/4+LiPqGgoD2BgIA8wcDAPIGAADyBgAA8gYCAO4GAADzBwEA8gYCAPMHAQDyBgIA7gYCAPIGAgDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDyhoKA8oaCgPMHAQDzBwEA8gYCAPIGAgDuBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYCAO8HAQDzBwEA8gYCAO8HAQDyBgIA7wcBAPIGAADzBwEA8gYAAPIGAADyBgIA7kZCQPeXk5D6CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4OCAj+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+BgAA/gYAAP+Pi4j6JiIg9gYAAPAAAAAAAAAAAwcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgIA7wcBAPIGAADyBgIA7gYAAPIGAgDzBwEA8gYAAPIGAgDuBgIA7gYCAO4GAADzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADyRkJA95eTkPoKBAT+CgQE/g4ICP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD/j4uI+gYCAPYGAgDuBgIA7gYCAO4GAADzBwEA8oaCgPMHAQDzBwEA8wcBAPKGgoDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA7AAAAAMHAQDzBwEA8gYCAO4GAgDuBgIA7gYCAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgIA7AAAAAIGAADyBgAA8oaCgPMHAQDyBgIA7gYCAO4mICD7z8vI+gYAAP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/8fDwPoWEBD6BgIA7gYCAO4GAgDuBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA7gYAAPIGAADzBwEA8gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcDAPKGgoDwAAAAAgYAAPMHAQDzBwEA8gYCAO4GAgDuBgAA8gYAAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAO4GAADyBgIA8wcBAPMHAQDyBgIA75eRkPoKBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgIA+gYAAPIGAADzBwEA8wcBAPIGAgDuBgIA8wcBAPIGAADyBgAA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgAA8wcBAPMHAwDyhoKA8gYCAPMHAQDwAAAAAgYCAO4GAgDyBgIA8gYAAPIGAADyBgIA7gYCAPIGAADyBgIA7wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA7gYCAO4GAADyBgAA8wcBAPIGAAD2xsLA+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/o6KiPpGQkD3BwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8gYAAPMHAQDyBgIA7gYCAO4GAgDuBgAA8gYAAPMHAQDyBgIA7gYCAO8HAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADzBwEA8iYgIPuHg4D6BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP+Pi4j7R0NA9wcBAPIGAgDuBgIA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA7gYCAOwAAAACBgAA8wcBAPMHAQDyBgIA7gYAAPIGAgDyhoKA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAAD2TkpI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/hYSEPsHAQDyBgAA8gYCAO4GAADyBgIA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYCAPKGgoDzBwEA8gYCAOwAAAADBwEA8gYAAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8iYgIPuPi4j6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP+Xk5D6pqCg+gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAgDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDyBgAA8gYAAPIGAgDuBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyhoKA8gYAAPIGAADyBgIA8wcBAPImIiD2zsrI+gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/g4ICP4KBAT+DggI/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/paSkPomIiD3BwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADzBwEA8wcDAPIGAgDzBwEA8gYCAPIGAgDuBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA9g4KCPvPy8j6CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+lpKQ+kZCQPYGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgAA8wcBAPIGAADyBgAA8kZAQPYWEhD7z8vI+gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/4+LiPoWEhD6ZmJg9gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA7AAAAAIGAADzBwEA8gYAAPIGAADyBgIA7gYAAPIGAgD2FhIQ+8/LyPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/o6KiPomIiD2BgAA8gYCAPIGAADyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAADyFhAQ+w8LCPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4SDAz+BgAA/g4ICP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+xsLA+paQkPsHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDuBgAA+kZCQPvPy8j6BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/g4ICP+Pi4j6joqI+kZAQPoGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPKGgID3FxEQ+o6KiPvPy8j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4OCAj+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP+Xk5D6lpKQ+rawsPpGQkD2BgAA86ehoPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/p6Gg+4+LiPoKBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+DggI/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT/z8vI+8/LyPoKBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT/l5OQ+6ehoPoGAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT/t7Gw+wcBAPKmoqD2hoCA+paSkPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP/X09D6joqI+xcREPpGQED2BgAA8wcBAPIGAgDzBwEA8wcBAPIGAADyFhAQ+oaCgPuPi4j6BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP/Py8j6VlJQ+iYgIPoGAgDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgAA8gYCAO4GAADyBgIA7gYAAPIGAADylpCQ+tbS0PoGAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+DggI/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT/DwsI+iYgIPoGAgDyhoKA8wcBAPMHAQDyBgIA7gYAAPIGAADyBgIA7gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgD2joqI+gYAAP4GAAD+BgAA/g4ICP4OCAj+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD/z8vI+hYSEPpmYmD3BwEA8wcBAPMHAwDzBwMA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgAA8kZCQPYWEhD7j4uI+goEBP4KBAT+CgQE/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/8/LyPoOCgj6RkBA9gYAAPIGAADyBgAA8gYCAPIGAgDyhoKA8wcBAPIGAADyBgIA8wcBAPIGAgDuBgAA8gYCAPIGAADzBwEA8gYCAPKGgoDyBgIA8gYAAPMHAQDyhoKA8oaCgPIGAADzBwEA8gYAAPIGAgDyBgIA9o6KiPoKBAT+BgAA/gYAAP4KBAT+DggI/g4ICP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP/X09D6FhIQ+oaAgPYGAgDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgAA8gYAAPIGAADwAAAAAgYAAPImIiD2npqY+gYAAP4KBAT+DggI/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/gYAAP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/s7KyPpGQkD2BgIA8wcBAPMHAQDyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAgDuBgIA7gYCAO4GAADwAAAAAgYCAO8HAQDzBwEA8oaAgPuHg4D6BgAA/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+DggI/goEBP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP+Xk5D6JiAg+gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA7gYAAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPKGgoDyBgIA8wcBAPIGAADyBgIA7gYAAPIGAADyBgAA8AAAAAIGAADyDgoI+gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4KBAT+BgAA/gYAAP4KBAT+DggI/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/lZSUPrGwMD3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDzBwEA8gYCAO8HAQDyBgIA7gYAAPIGAgDuBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDwAAAAAgYAAPAAAAACBgAA8gYCAO4GAgDsAAAAAwcDAPePi4j6CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/g4ICP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP+Pi4j6JiAg+wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPKGgoDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPIGAADwAAAAAgYCAO8HAQDyBgAA8AAAAAAAAAADBwEA8gYCAO4mIiD2joqI+goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4GAAD+DggI/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/s7KyPqGgID3BwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA7gYCAO4GAgDuBgIA7gYAAPIGAgDuBgIA8gYAAPIGAgDuBgIA8hYSEPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4OCAj+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT/l5GQ+wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyhoKA8wcBAPIGAADyBgIA7gYAAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8oaCgPIGAgDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDzBwEA8gYAAPMHAQDyBgIA7wcBAPIGAgDuBgAA8gYAAPImICD7z8vI+goEBP4GAAD+CgQE/goEBP4OCAj+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/8fDwPomICD7BwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPMHAQDzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPIGAADzBwEA8gYCAPMHAQDyZmJg94+LiPoGAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD/j4uI+iYiIPcHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAO8HAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8kZCQPePi4j6CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+BgAA/gYAAP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYAAPIGAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA8oaCgPIGAgDyBgIA8oaCgPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADyBgIA8gYAAPIGAADyBgIA7gYCAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA8gYCAPIGAgDyBgIA8wcBAPIGAgDyBgIA8gYAAPMHAQDzBwEA8wcBAPJGQkD3j4uI+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4OCAj+CgQE/g4ICP4OCAj+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/09LSPpGQkD3BwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8oaCgPMHAQDyBgIA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyhoCA909LSPoKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+CgQE/gYAAP4KBAT/j4uI+sbAwPYGAgDyBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDwAAAAAgYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDyhoKA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYAAPIGAgDyBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8mZiYPeXk5D6CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/gYAAP4GAAD+CgQE/gYAAP4KBAT+DggI/g4ICP4GAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP+Pi4j6RkJA9gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8wcBAPIGAgDyBgIA7wcBAPMHAQDzBwEA8wcBAPJGQkD3j4uI+g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4GAAD+DggI/4+LiPpGQkD2BgAA8gYAAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADyhoKA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAADyBgIA7gYCAO4GAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyJiIg98/LyPoKBAT+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP4KBAT/19PQ+kZCQPYGAgDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8wcBAPIGAgDzBwEA8gYCAPMHAQDyBgIA8gYAAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPKGgoDyhoKA8oaCgPMHAQDyBgIA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDzBwEA8gYCAPIGAADyBgIA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAgDyhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA7hYQEPoKBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/goEBP4KBAT+DggI/goEBP4KBAT+CgQE/gYAAP4KBAT+NjAw+oaCgPKGgoDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPKGgoDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPIGAgDyhoKA8oaCgPMHAQDyBgIA8gYCAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYAAPOXkZD6BgAA/gYAAP4GAAD+CgQE/gYAAP4GAAD+CgQE/goEBP4GAAD+BgAA/gYAAP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4OCgj6BgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPKGgoDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAwDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPMHAQDyhoKA8oaCgPKGgoDyBgIA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgAA8AAAAAIGAADyBgAA8gYCAO8HAQDyzsrI+gYAAP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/gYAAP4KBAT+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+BgAA/oaCgPoGAgDuBgAA8gYCAO4GAgDzBwEA8wcBAPMHAQDyBgAA8gYCAO4GAADyBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYCAPMHAQDzBwEA8gYCAPMHAQDyBgAA8gYCAPIGAADyBgAA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8wcBAPIGAgDuhoKA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPMHAQDwAAAAAwcBAPMHAQDyBgAA8gYCAPIGAgDyhoKA8oaCgPKGgoDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYAAPMHAQDyBgIA7gYAAPMHAQDyBgAA94eDgPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4GAAD+BgAA/gYAAP4GAAD/j4uI+kZCQPYGAADyBgIA7wcBAPMHAQDyBgIA8oaCgPMHAQDyBgIA7wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDvBwEA8gYAAPIGAADzBwEA8gYCAO4GAADyBgIA7gYCAPMHAQDyBgIA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPoGAAD+BgAA/gYAAP4KBAT+CgQE/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+BgAA/goEBP4KBAT+BgAA/goEBP4GAAD+BgAA/goEBP4KBAT/R0NA9gYCAPIGAgDzBwEA8gYCAPIGAgDzBwEA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAgDyBgAA8gYCAO4GAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPJOSkj6BgAA/gYAAP4KBAT+DggI/gYAAP4KBAT+CgQE/goEBP4GAAD+BgAA/goEBP4KBAT+CgQE/goEBP4GAAD+BgAA/gYAAP4GAAD+BgAA/goEBP4WEhD6BgAA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8gYAAPIGAgDyBgIA7gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgAA8gYAAPMHAQDyBgIA7wcBAPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAADyBgIA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPMHAQDyBgIA8gYCAPMHAQDyBgAA8oaCgPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAO5GQED3j4uI+gYAAP4OCAj+CgQE/goEBP4OCAj+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+BgAA/gYAAP4GAAD+CgQE/5eTkPoGAgDzBwEA8oaCgPIGAgDzBwEA8wcBAPMHAQDyhoKA8gYCAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyhoKA8wcBAPMHAQDyBgIA8gYAAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgIA8wcBAPIGAgDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyJiAg+goEBP4KBAT+DggI/goEBP4OCAj+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+CgQE/qagoPoGAADyBgAA8gYAAPIGAADyBgIA8gYCAPIGAADyBgIA8gYCAO8HAQDyBgAA8wcBAPIGAADyBgAA8gYCAPIGAADyBgIA7gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA7wcBAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDvBwEA8gYAAPIGAgDvBwEA8gYCAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADzBwEA8wcBAPAAAAACBgAA8gYCAO4GAADyBgIA7s7KyPoGAAD+BgAA/gYAAP4GAAD+CgQE/g4ICP4GAAD+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/gYAAP4KBAT+lpKQ+gYCAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAgDyBgIA8gYCAPIGAADyBgAA8gYCAO4GAADyBgIA8wcBAPIGAgDyhoKA8gYCAPIGAADzBwEA8gYCAPMHAQDyBgIA8wcBAPIGAADzBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPIGAADyBgAA8iYiIPfHw8D6BgAA/gYAAP4GAAD+BgAA/goEBP4KBAT+CgQE/g4ICP4OCAj+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+JiIg9wcBAPMHAQDzBwEA8gYCAO4GAgDyBgAA8wcBAPMHAQDyhoKA8wcBAPMHAQDyBgAA8gYCAPMHAQDyhoKA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAgDyBgAA8gYCAO4GAgDvBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAgDyBgIA8gYCAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8gYCAPIGAgDzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDyBgAA8wcBAPIGAADyBgAA8gYCAO8HAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIOCgj6BgAA/gYAAP4GAAD+BgAA/gYAAP4KBAT+DggI/goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/goEBP6WkpD6BgIA8gYCAPIGAgDzBwEA8wcBAPKGgoDzBwEA8wcBAPIGAADzBwEA8gYAAPMHAQDyBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8wcBAPIGAADzBwEA8oaCgPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDyBgIA8gYCAPIGAADyBgIA8wcBAPIGAgDyBgAA8gYCAPIGAADyBgAA8AAAAAIGAADyBgAA8wcBAPIGAADyBgIA8gYAAPIGAADzBwEA8wcBAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8wcBAPIGAgDyBgIA8gYCAPJGQED3z8vI+gYAAP4GAAD+DggI/goEBP4GAAD+CgQE/g4ICP4KBAT+CgQE/goEBP4KBAT+CgQE/4+LiPpmYmD3BwEA8wcBAPKGgoDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8gYAAPKGgoDzBwEA8gYCAPKGgoDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8gYCAPIGAADzBwEA8wcBAPIGAgDzBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAADyBgAA8AAAAAMHAQDzBwEA8wcBAPAAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyDgoI+goEBP4KBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/goEBP4KBAT+CgQE/g4KCPsHAQDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPKGgoDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDyBgIA8wcBAPMHAQDyBgIA8wcBAPIGAgDuBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8oaCgPIGAADyBgAA8gYAAPIGAgDuBgIA7gYCAO8HAQDyBgIA7gYCAO4GAADyBgAA8wcBAPMHAQDyBgIA7wcBAPMHAQDyBgIA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgIA8oaCgPIGAgDzBwEA8gYCAPIGAADyhoCA98/LyPoKBAT+CgQE/goEBP4GAAD+CgQE/goEBP4KBAT+BgAA/gYAAP4KBAT+CgQE/mZiYPYGAADyBgIA8oaCgPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8oaCgPIGAgDvBwEA8gYCAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYCAPIGAADzBwEA8wcBAPMHAQDyBgIA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8gYAAPIGAgDzBwEA8wcBAPMHAQDyBgIA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8gYAAPIGAgDuBgIA7wcBAPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYCAPIGAADyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyBgAA8hYSEPoKBAT+BgAA/goEBP4GAAD+CgQE/goEBP4GAAD+CgQE/gYAAP4KBAT+lpKQ+gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYAAPIGAgDuBgIA7wcBAPIGAgDuBgAA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA8wcBAPIGAgDyBgIA8wcBAPIGAgDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyhoKA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8gYCAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDzBwMA8wcBAPMHAQDzBwEA8AAAAAIGAADzBwEA8AAAAAIGAADyBgIA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgAA8wcBAPIGAADwAAAAAgYAAPMHAQDyBgAA8gYCAO4GAADzBwEA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADyBgAA8kZCQPYKBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/goEBP4KBAT+RkJA9wcBAPIGAgDyBgIA8gYCAPKGgoDzBwEA8wcBAPKGgoDzBwEA8wcBAPMHAQDyBgIA7gYCAO4GAADyBgIA8gYAAPIGAADyBgIA7gYCAO4GAgDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA8gYCAO8HAQDzBwEA8wcBAPMHAQDzBwEA8gYCAO4GAgDvBwEA8gYAAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPMHAQDyBgIA7gYCAO8HAQDyBgAA8AAAAAIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYAAPMPCwj6BgAA/gYAAP4KBAT+CgQE/goEBP4KBAT+BgAA/goEBP7Oysj6BgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDyBgIA8oaCgPKGgoDyBgIA8gYCAPIGAgDvBwEA8gYAAPMHAQDyBgAA8gYAAPIGAgDvBwEA8gYAAPMHAQDzBwEA8gYAAPMHAQDzBwEA8gYCAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgAA8wcBAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgAA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDyBgIA8gYAAPIGAAD6BgAA/gYAAP4KBAT+CgQE/goEBP4OCAj+BgAA/goEBP6WkJD7BwEA8wcBAPIGAADyBgAA8gYCAPKGgoDyBgIA7wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAADwAAAAAgYCAO4GAADzBwEA8gYAAPIGAgDwAAAAAgYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgIA8oaCgPMHAQDyBgAA8gYAAPMHAQDzBwEA8gYAAPIGAgDuBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8wcBAPIGAADyhoKA8wcBAPMHAQDzz8vI+goEBP4KBAT+CgQE/goEBP4OCAj+CgQE/4+LiPoGAgDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDzBwEA8wcBAPKGgoDyBgIA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYCAO4GAADzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8wcBAPIGAADyBgAA8gYAAPIGAgDvBwEA8gYAAPIGAADyBgAA8wcBAPKGgoDyBgAA8gYCAPIGAgDyhoKA8oaCgPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYAAPIGAADyBgAA8wcBAPAAAAADBwEA8wcBAPIGAgDuBgIA7gYAAPIGAgDyBgAA8wcBAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDvBwEA8wcBAPMHAQDyBgIA8gYCAPIGAgDzBwEA8oaCgPMHAQDzBwEA8wcBAPIGAADyVlJQ+goEBP4KBAT+CgQE/goEBP4KBAT+CgQE/paSkPoGAgDyBgIA8wcBAPMHAQDyhoKA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8gYAAPIGAgDyBgIA8gYAAPIGAADyBgAA8gYCAPIGAADzBwEA8gYAAPIGAgDvBwEA8oaCgPIGAgDyBgIA8gYAAPIGAADzBwEA8gYCAPIGAgDzBwEA8gYCAPIGAgDyBgAA8oaCgPIGAADzBwEA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYCAPIGAgDzBwEA8gYCAPMHAQDzBwEA8gYCAPIGAgDyBgIA8gYCAPMHAQDzBwEA8gYAAPMHAQDyBgIA7gYAAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgIA8wcBAPIGAADwAAAAAgYAAPIGAADyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPIGAADzBwEA8gYAAPMHAQDzBwEA8wcBAPMHAQDyJiAg+goEBP4KBAT+CgQE/gYAAP4KBAT+BgAA/iYgIPoGAADyBgIA8gYAAPMHAQDyBgIA8wcBAPIGAgDyBgIA8gYCAPIGAgDzBwEA8gYAAPIGAADzBwEA8gYCAO4GAgDuBgIA7gYAAPIGAADyBgAA8gYAAPMHAQDyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADyhoKA8gYCAO4GAgDsAAAAAgYCAO4GAgDuBgIA7gYAAPAAAAACBgAA8gYCAO4GAgDvBwEA8gYCAPIGAADyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA8gYCAPIGAgDyBgIA8gYCAPMHAQDyhoKA8wcBAPIGAgDyBgAA8wcBAPMHAQDyBgAA8AAAAAIGAgDuBgIA8wcBAPAAAAACBgAA8wcBAPIGAgDuBgAA8gYAAPIGAADzBwEA8gYAAPIGAADyBgAA8gYCAO4GAADyBgIA8gYCAO8HAQDyBgAA8wcBAPMHAQDyBgAA8wcBAPMHAQDyBgAA88/LyPoGAAD+CgQE/goEBP4KBAT/j4uI+gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPKGgoDyBgIA8gYCAPIGAgDyBgIA7gYCAO8HAQDyBgAA8gYAAPIGAADyBgIA7gYAAPIGAgDsAAAAAAAAAAMHAQDyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8wcBAPIGAgDuBgIA7gYAAPMHAQDwAAAAAgYAAPIGAgDuBgIA7gYAAPMHAQDzBwEA8gYAAPMHAQDyBgAA8gYCAPIGAgDzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDyBgAA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgAA8gYAAPKGgoDyBgAA8wcBAPIGAADyBgAA8gYAAPMHAQDyBgAA8gYAAPIGAADyBgIA7wcBAPIGAgDzBwEA8gYAAPAAAAACBgAA8gYAAPMHAQDzBwEA8wcBAPMHAQDyBgIA8wcBAPMHAQDyBgAA8paSkPoKBAT+CgQE/goEBP4KBAT+hoKA+gYAAPMHAQDyhoKA8gYCAPIGAADyBgIA8gYCAPMHAQDyBgIA8oaCgPIGAADyBgAA8gYAAPMHAQDzBwEA8oaCgPIGAgDyBgIA7gYCAPIGAADyBgAA8wcBAPIGAgDyhoKA8wcBAPIGAADyhoKA8gYAAPIGAADyBgIA7gYAAPIGAADyBgAA8gYAAPIGAADyBgAA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgAA8gYAAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAADzBwEA8gYAAPIGAADzBwEA8gYAAPMHAQDyBgIA8gYAAPIGAgDyBgIA8wcBAPMHAQDwAAAAAgYCAO8HAQDyBgAA8gYCAOwAAAACBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPMHAQDzBwEA8gYAAPIGAADyBgIA7wcBAPMHAQDzBwEA8gYAAPMHAQDyBgIA8wcBAPMHAQDzBwEA8xcREPoKBAT+CgQE/goEBP4KBAT+pqCg+wcBAPIGAgDyBgIA8wcBAPIGAADzBwEA8gYCAPIGAgDyBgIA8wcBAPMHAQDyBgIA8gYCAPIGAADyBgAA8gYCAPMHAQDyBgIA7wcBAPIGAADyBgAA8wcBAPIGAADzBwEA8wcBAPIGAgDuBgAA8gYCAO4GAADyBgAA8gYAAPIGAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPIGAADyBgAA8gYCAO4GAgDuBgAA8gYAAPIGAgDuBgAA8gYAAPMHAQDzBwEA8gYAAPIGAADyBgIA8wcBAPMHAQDzBwEA8wcBAPIGAgDzBwEA8gYCAPMHAQDzBwEA8wcBAPIGAgDzBwEA8wcBAPIGAADzBwEA8gYCAO4GAADzBwEA8gYAAPIGAADzBwEA8wcBAPMHAQDzBwEA8wcBAPMHAQDzBwEA8gYCAPMHAQDzBwEA8wcBAPMHAQDyBgIA8gYCAPMHAQDzBwEA8wcBAPIGAADyBgAA8kZAQPYGAAD+CgQE/goEBP4KBAT+JiIg9gYCAPIGAgDyBgIA8wcBAPIGAgDyBgAA8gYCAPMHAQDyBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgAA8gYAAPIGAADyBgIA7gYAAPMHAQDyBgIA7gYCAO4GAgDsAAAAAgYCAO4GAADyBgAA8wcBAPIGAADyBgAA8gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAADyBgIA7gYAAPIGAgDyBgIA7gYAAPAAAAACBgAA8wcBAPMHAQDzBwEA8wcBAPIGAADzBwEA8wcBAPIGAgDyBgAA8wcBAPIGAgDzBwEA8wcBAPKGgoDyBgAA8wcBAPIGAADzBwEA8AAAAAIGAADyBgIA7gYAAPMHAQDyBgAA8gYAAPIGAADyBgAA8wcBAPIGAADzBwEA8gYCAPIGAADyBgIA7wcBAPIGAgDyBgIA8gYAAPMHAQDyBgIA8gYCAPMHAQDyBgIA8wcBAPMHAQDyBgAA8wcBAPOXkZD7h4OA+8/LyPunoaD7BwEA8gYCAPIGAgDzBwEA8gYAAPIGAgDvBwEA8wcBAPIGAADyBgIA8wcBAPIGAADyBgIA8wcBAPMHAQDyBgAA8gYAAPIGAADyBgAA8gYAAPIGAgDvBwEA8wcBAPIGAgDuBgAA8gYAAPIGAgDuBgAA8wcBAPIGAgDyBgIA7gYCAO4GAADzBwEA8wcBAPMHAQDzBwEA8wcBAPIGAgDuBgIA7gYCAPMHAQDyBgIA7gYAAPIGAADyBgAA8"},lA=new Map;function gB(A){if(typeof Buffer<"u")return Uint8Array.from(Buffer.from(A,"base64"));if(typeof atob<"u"){let g=atob(A),B=new Uint8Array(g.length);for(let P=0;P<g.length;P++)B[P]=g.charCodeAt(P);return B}throw new Error("No base64 decoder available in current runtime")}function UA(A){let g=Number(A);if(!(g in WA))return null;if(!lA.has(g)){let B=gB(WA[g]),P=AB[g],D=new Float32Array(B.buffer,B.byteOffset,P);lA.set(g,new Float32Array(D))}return new Float32Array(lA.get(g))}var BB=.011764705882352941,PB=.002,DB=.99,eB=255;function b(A,g,B,P={}){let{x:D,y:e,width:o,height:t}=B,n=Number.isFinite(P.alphaGain)&&P.alphaGain>0?P.alphaGain:1;for(let G=0;G<t;G++)for(let a=0;a<o;a++){let s=((e+G)*A.width+(D+a))*4,c=G*o+a,Y=g[c];if(Math.max(0,Y-BB)*n<PB)continue;let I=Math.min(Y*n,DB),r=1-I;for(let E=0;E<3;E++){let C=(A.data[s+E]-I*eB)/r;A.data[s+E]=Math.max(0,Math.min(255,Math.round(C)))}}}var tB=Object.freeze({"0.5k":Object.freeze({logoSize:48,marginRight:32,marginBottom:32}),"1k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"2k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64}),"4k":Object.freeze({logoSize:96,marginRight:64,marginBottom:64})});function eA(A,g,B){return B.map(([P,D,e])=>({modelFamily:A,resolutionTier:g,aspectRatio:P,width:D,height:e}))}var VA=Object.freeze([...eA("gemini-3.x-image","0.5k",[["1:1",512,512],["1:4",256,1024],["1:8",192,1536],["2:3",424,632],["3:2",632,424],["3:4",448,600],["4:1",1024,256],["4:3",600,448],["4:5",464,576],["5:4",576,464],["8:1",1536,192],["9:16",384,688],["16:9",688,384],["21:9",792,168]]),...eA("gemini-3.x-image","1k",[["1:1",1024,1024],["1:4",512,2064],["1:8",352,2928],["2:3",848,1264],["3:2",1264,848],["3:4",896,1200],["4:1",2064,512],["4:3",1200,896],["4:5",928,1152],["5:4",1152,928],["8:1",2928,352],["9:16",768,1376],["16:9",1376,768],["16:9",1408,768],["21:9",1584,672]]),...eA("gemini-3.x-image","2k",[["1:1",2048,2048],["1:4",512,2048],["1:8",384,3072],["2:3",1696,2528],["3:2",2528,1696],["3:4",1792,2400],["4:1",2048,512],["4:3",2400,1792],["4:5",1856,2304],["5:4",2304,1856],["8:1",3072,384],["9:16",1536,2752],["16:9",2752,1536],["21:9",3168,1344]]),...eA("gemini-3.x-image","4k",[["1:1",4096,4096],["1:4",2048,8192],["1:8",1536,12288],["2:3",3392,5056],["3:2",5056,3392],["3:4",3584,4800],["4:1",8192,2048],["4:3",4800,3584],["4:5",3712,4608],["5:4",4608,3712],["8:1",12288,1536],["9:16",3072,5504],["16:9",5504,3072],["21:9",6336,2688]]),...eA("gemini-2.5-flash-image","1k",[["1:1",1024,1024],["2:3",832,1248],["3:2",1248,832],["3:4",864,1184],["4:3",1184,864],["4:5",896,1152],["5:4",1152,896],["9:16",768,1344],["16:9",1344,768],["21:9",1536,672]])]),oB=new Map(VA.map(A=>[`${A.width}x${A.height}`,A]));function iA(A){let g=Number(A);if(!Number.isFinite(g))return null;let B=Math.round(g);return B>0?B:null}function nB(A,g,B){return Math.max(g,Math.min(B,A))}function XA(A){return tB[A.resolutionTier]??null}function cB(A){return`${A.logoSize}:${A.marginRight}:${A.marginBottom}`}function yA(A,g){let B=iA(A),P=iA(g);return!B||!P?null:oB.get(`${B}x${P}`)??null}function QA(A,g){let B=yA(A,g);return B?XA(B):null}function MA(A,g,{maxRelativeAspectRatioDelta:B=.02,maxScaleMismatchRatio:P=.12,minLogoSize:D=24,maxLogoSize:e=192,limit:o=3}={}){let t=iA(A),n=iA(g);if(!t||!n)return[];let G=QA(t,n);if(G)return[{...G}];let a=t/n,s=VA.map(i=>{let I=XA(i);if(!I)return null;let r=t/i.width,E=n/i.height,w=(r+E)/2,C=i.width/i.height,u=Math.abs(a-C)/C,y=Math.abs(r-E)/Math.max(r,E);if(u>B||y>P)return null;let f={logoSize:nB(Math.round(I.logoSize*w),D,e),marginRight:Math.max(8,Math.round(I.marginRight*r)),marginBottom:Math.max(8,Math.round(I.marginBottom*E))},H=t-f.marginRight-f.logoSize,d=n-f.marginBottom-f.logoSize;return H<0||d<0?null:{config:f,score:u*100+y*20+Math.abs(Math.log2(Math.max(w,1e-6)))}}).filter(Boolean).sort((i,I)=>i.score-I.score),c=[],Y=new Set;for(let i of s){let I=`${i.config.logoSize}:${i.config.marginRight}:${i.config.marginBottom}`;if(!Y.has(I)&&(Y.add(I),c.push(i.config),c.length>=o))break}return c}function YA(A,g,B){let P=[];B&&P.push(B),P.push(...MA(A,g));let D=[],e=new Set;for(let o of P){if(!o)continue;let t=cB(o);e.has(t)||(e.add(t),D.push(o))}return D}var GB=.35,$A=1e-8,_=(A,g,B)=>Math.max(g,Math.min(B,A));function JA(A){let g=0;for(let D=0;D<A.length;D++)g+=A[D];let B=g/A.length,P=0;for(let D=0;D<A.length;D++){let e=A[D]-B;P+=e*e}return{mean:B,variance:P/A.length}}function EA(A,g){if(A.length!==g.length||A.length===0)return 0;let B=JA(A),P=JA(g),D=Math.sqrt(B.variance*P.variance)*A.length;if(D<$A)return 0;let e=0;for(let o=0;o<A.length;o++)e+=(A[o]-B.mean)*(g[o]-P.mean);return e/D}function ZA(A,g,B,P,D){let e=new Float32Array(D*D);for(let o=0;o<D;o++){let t=(P+o)*g+B,n=o*D;for(let G=0;G<D;G++)e[n+G]=A[t+G]}return e}function Ag(A,g){let{width:B,height:P,data:D}=A,e=g.size??Math.min(g.width,g.height);if(!e||e<=0)return new Float32Array(0);if(g.x<0||g.y<0||g.x+e>B||g.y+e>P)return new Float32Array(0);let o=new Float32Array(e*e);for(let t=0;t<e;t++)for(let n=0;n<e;n++){let G=((g.y+t)*B+(g.x+n))*4;o[t*e+n]=(.2126*D[G]+.7152*D[G+1]+.0722*D[G+2])/255}return o}function rB(A){let{width:g,height:B,data:P}=A,D=new Float32Array(g*B);for(let e=0;e<D.length;e++){let o=e*4;D[e]=(.2126*P[o]+.7152*P[o+1]+.0722*P[o+2])/255}return D}function sA(A,g,B){let P=new Float32Array(g*B);for(let D=1;D<B-1;D++)for(let e=1;e<g-1;e++){let o=D*g+e,t=-A[o-g-1]-2*A[o-1]-A[o+g-1]+A[o-g+1]+2*A[o+1]+A[o+g+1],n=-A[o-g-1]-2*A[o-g]-A[o-g+1]+A[o+g-1]+2*A[o+g]+A[o+g+1];P[o]=Math.sqrt(t*t+n*n)}return P}function qA(A,g,B,P,D){let e=0,o=0,t=0;for(let a=0;a<D;a++){let s=(P+a)*g+B;for(let c=0;c<D;c++){let Y=A[s+c];e+=Y,o+=Y*Y,t++}}if(t===0)return 0;let n=e/t,G=Math.max(0,o/t-n*n);return Math.sqrt(G)}function IB(A,g){return sA(A,g,g)}function fA({gray:A,grad:g,width:B,height:P},D,e,o){let{x:t,y:n,size:G}=o;if(t<0||n<0||t+G>B||n+G>P)return null;let a=ZA(A,B,t,n,G),s=ZA(g,B,t,n,G),c=EA(a,D),Y=EA(s,e),i=0;if(n>8){let r=Math.max(0,n-G),E=Math.min(G,n-r);if(E>8){let w=qA(A,B,t,n,G),C=qA(A,B,t,r,E);C>$A&&(i=_(1-w/C,0,1))}}let I=Math.max(0,c)*.5+Math.max(0,Y)*.3+i*.2;return{confidence:_(I,0,1),spatialScore:c,gradientScore:Y,varianceScore:i}}function aB(A,g){let B=new Set;for(let P=A;P<=g;P+=8)B.add(P);return 48>=A&&48<=g&&B.add(48),96>=A&&96<=g&&B.add(96),[...B].sort((P,D)=>P-D)}function iB(A,g,B){return YA(A,g,B)}function dA(A,g,B){if(A.has(B))return A.get(B);let P=B===96?g:L(g,96,B),D=IB(P,B),e={alpha:P,grad:D};return A.set(B,e),e}function wA(A,g,{dx:B=0,dy:P=0,scale:D=1}={}){if(g<=0)return new Float32Array(0);if(!Number.isFinite(B)||!Number.isFinite(P)||!Number.isFinite(D)||D<=0)return new Float32Array(0);if(B===0&&P===0&&D===1)return new Float32Array(A);let e=(n,G)=>{let a=Math.floor(n),s=Math.floor(G),c=n-a,Y=G-s,i=_(a,0,g-1),I=_(s,0,g-1),r=_(a+1,0,g-1),E=_(s+1,0,g-1),w=A[I*g+i],C=A[I*g+r],u=A[E*g+i],y=A[E*g+r],f=w+(C-w)*c,H=u+(y-u)*c;return f+(H-f)*Y},o=new Float32Array(g*g),t=(g-1)/2;for(let n=0;n<g;n++)for(let G=0;G<g;G++){let a=(G-t)/D+t+B,s=(n-t)/D+t+P;o[n*g+G]=e(a,s)}return o}function L(A,g,B){if(B<=0)return new Float32Array(0);if(g===B)return new Float32Array(A);let P=new Float32Array(B*B),D=(g-1)/Math.max(1,B-1);for(let e=0;e<B;e++){let o=e*D,t=Math.floor(o),n=Math.min(g-1,t+1),G=o-t;for(let a=0;a<B;a++){let s=a*D,c=Math.floor(s),Y=Math.min(g-1,c+1),i=s-c,I=A[t*g+c],r=A[t*g+Y],E=A[n*g+c],w=A[n*g+Y],C=I+(r-I)*i,u=E+(w-E)*i;P[e*B+a]=C+(u-C)*G}}return P}function S({imageData:A,alphaMap:g,region:B}){let P=Ag(A,B);return P.length===0||P.length!==g.length?0:EA(P,g)}function x({imageData:A,alphaMap:g,region:B}){let P=Ag(A,B);if(P.length===0||P.length!==g.length)return 0;let D=B.size??Math.min(B.width,B.height);if(!D||D<=2)return 0;let e=sA(P,D,D),o=sA(g,D,D);return EA(e,o)}function gg({processedImageData:A,alphaMap:g,position:B,residualThreshold:P=.22,originalImageData:D=null,originalSpatialMismatchThreshold:e=0}){return!!(S({imageData:A,alphaMap:g,region:{x:B.x,y:B.y,size:B.width??B.size}})>=P||D&&S({imageData:D,alphaMap:g,region:{x:B.x,y:B.y,size:B.width??B.size}})<=e)}function Bg({imageData:A,alpha96:g,defaultConfig:B,threshold:P=GB}){let{width:D,height:e}=A,o=rB(A),t=sA(o,D,e),n={gray:o,grad:t,width:D,height:e},G=new Map,s=iB(D,e,B).map(Q=>{let T=Q.logoSize,M={size:T,x:D-Q.marginRight-T,y:e-Q.marginBottom-T};if(M.x<0||M.y<0||M.x+T>D||M.y+T>e)return null;let h=dA(G,g,T),O=fA(n,h.alpha,h.grad,M);return O?{...M,...O}:null}).filter(Boolean),c=s.reduce((Q,T)=>!Q||T.confidence>Q.confidence?T:Q,null);if(c&&c.confidence>=P+.08)return{found:!0,confidence:c.confidence,spatialScore:c.spatialScore,gradientScore:c.gradientScore,varianceScore:c.varianceScore,region:{x:c.x,y:c.y,size:c.size}};let Y=B.logoSize,i=_(Math.round(Y*.65),24,144),I=_(Math.min(Math.round(Y*2.8),Math.floor(Math.min(D,e)*.4)),i,192),r=aB(i,I),E=Math.max(32,Math.round(Y*.75)),w=_(B.marginRight-E,8,D-i-1),C=_(B.marginRight+E,w,D-i-1),u=_(B.marginBottom-E,8,e-i-1),y=_(B.marginBottom+E,u,e-i-1),f=[],H=Q=>{f.push(Q),f.sort((T,M)=>M.adjustedScore-T.adjustedScore),f.length>5&&(f.length=5)};for(let Q of s)H({size:Q.size,x:Q.x,y:Q.y,adjustedScore:Q.confidence*Math.min(1,Math.sqrt(Q.size/96))});for(let Q of r){let T=dA(G,g,Q);for(let M=w;M<=C;M+=8){let h=D-M-Q;if(!(h<0))for(let O=u;O<=y;O+=8){let p=e-O-Q;if(p<0)continue;let l=fA(n,T.alpha,T.grad,{x:h,y:p,size:Q});if(!l)continue;let z=l.confidence*Math.min(1,Math.sqrt(Q/96));z<.08||H({size:Q,x:h,y:p,adjustedScore:z})}}}let d=c??{x:D-B.marginRight-B.logoSize,y:e-B.marginBottom-B.logoSize,size:B.logoSize,confidence:0,spatialScore:0,gradientScore:0,varianceScore:0};for(let Q of f){let T=_(Q.size-10,i,I),M=_(Q.size+10,i,I);for(let h=T;h<=M;h+=2){let O=dA(G,g,h);for(let p=Q.x-8;p<=Q.x+8;p+=2)if(!(p<0||p+h>D))for(let l=Q.y-8;l<=Q.y+8;l+=2){if(l<0||l+h>e)continue;let z=fA(n,O.alpha,O.grad,{x:p,y:l,size:h});z&&z.confidence>d.confidence&&(d={x:p,y:l,size:h,...z})}}}return{found:d.confidence>=P,confidence:d.confidence,spatialScore:d.spatialScore,gradientScore:d.gradientScore,varianceScore:d.varianceScore,region:{x:d.x,y:d.y,size:d.size}}}var HA=5,Pg=1,YB=.8,EB=1.5,sB=.5,wB=.2,CB=.12,uB=.35,lB=.01,yB=3;function tA(A){return typeof ImageData<"u"&&A instanceof ImageData?new ImageData(new Uint8ClampedArray(A.data),A.width,A.height):{width:A.width,height:A.height,data:new Uint8ClampedArray(A.data)}}function m(A,g){let B=0,P=0;for(let D=0;D<g.height;D++)for(let e=0;e<g.width;e++){let o=((g.y+D)*A.width+(g.x+e))*4,t=A.data[o],n=A.data[o+1],G=A.data[o+2];t<=HA&&n<=HA&&G<=HA&&B++,P++}return P>0?B/P:0}function TA(A,g){let B=0,P=0,D=0;for(let t=0;t<g.height;t++)for(let n=0;n<g.width;n++){let G=((g.y+t)*A.width+(g.x+n))*4,a=.2126*A.data[G]+.7152*A.data[G+1]+.0722*A.data[G+2];B+=a,P+=a*a,D++}let e=D>0?B/D:0,o=D>0?Math.max(0,P/D-e*e):0;return{meanLum:e,stdLum:Math.sqrt(o)}}function Dg(A,g){return TA(A,g)}function hA({imageData:A,position:g,alphaMap:B,minAlpha:P=CB,maxAlpha:D=uB,outsideAlphaMax:e=lB,outerMargin:o=yB}){let t=0,n=0,G=0,a=0,s=0,c=0;for(let C=-o;C<g.height+o;C++)for(let u=-o;u<g.width+o;u++){let y=g.x+u,f=g.y+C;if(y<0||f<0||y>=A.width||f>=A.height)continue;let H=(f*A.width+y)*4,d=.2126*A.data[H]+.7152*A.data[H+1]+.0722*A.data[H+2],Q=C>=0&&u>=0&&C<g.height&&u<g.width,T=Q?B[C*g.width+u]:0;if(Q&&T>=P&&T<=D){t+=d,n+=d*d,G++;continue}(!Q||T<=e)&&(a+=d,s+=d*d,c++)}let Y=G>0?t/G:0,i=c>0?a/c:0,I=G>0?Math.sqrt(Math.max(0,n/G-Y*Y)):0,r=c>0?Math.sqrt(Math.max(0,s/c-i*i)):0,E=Y-i,w=E/Math.max(1,r);return{bandCount:G,outerCount:c,bandMeanLum:Y,outerMeanLum:i,bandStdLum:I,outerStdLum:r,deltaLum:E,positiveDeltaLum:Math.max(0,E),visibility:w}}function QB(A,g){let B=A.y-A.height;return B<0?null:{x:A.x,y:B,width:A.width,height:A.height}}function zA({originalImageData:A,referenceImageData:g,candidateImageData:B,position:P}){let D=B?TA(B,P):null;return pA({originalImageData:A,referenceImageData:g,candidateTextureStats:D,position:P})}function pA({originalImageData:A,referenceImageData:g,candidateTextureStats:B,position:P}){let D=g??A,e=D?QB(P,D):null,o=e?TA(D,e):null,t=o&&B?Math.max(0,o.meanLum-B.meanLum-Pg)/Math.max(1,o.meanLum):0,n=o&&B?Math.max(0,o.stdLum*YB-B.stdLum)/Math.max(1,o.stdLum):0,G=o&&B?Math.max(0,o.meanLum-B.meanLum-Pg)/Math.max(1,o.stdLum):0,a=t>0,s=n>0,c=a&&G>=EB,Y=a&&s&&t>=sB&&n>=wB;return{referenceTextureStats:o,candidateTextureStats:B,darknessPenalty:t,flatnessPenalty:n,darknessVisibility:G,texturePenalty:t*2+n*2,tooDark:a,tooFlat:s,visibleDarkHole:c,hardReject:Y||c}}function U(A,g,B){return{spatialScore:S({imageData:A,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}}),gradientScore:x({imageData:A,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}})}}var MB=4,fB=.25,dB=.05;function eg(A,g,B,P={}){let D=A&&typeof A=="object"&&"imageData"in A&&g===void 0,e=D?A.imageData:A,o=D?A.alphaMap:g,t=D?A.position:B,n=D?A:P,G=Math.max(1,n.maxPasses??MB),a=n.residualThreshold??fB,s=Math.max(0,n.startingPassIndex??0),c=Number.isFinite(n.alphaGain)&&n.alphaGain>0?n.alphaGain:1,Y=tA(e),i=Y,I=m(Y,t),r=Math.min(1,I+dB),E=[],w="max-passes",C=s,u=s;for(let y=0;y<G;y++){u=s+y+1;let f=U(Y,o,t),H=tA(Y);b(H,o,t,{alphaGain:c});let d=U(H,o,t),Q=m(H,t),T=Math.abs(f.spatialScore)-Math.abs(d.spatialScore),M=d.gradientScore-f.gradientScore,h=zA({referenceImageData:i,candidateImageData:H,position:t});if(Q>r){w="safety-near-black";break}if(h.hardReject){w="safety-texture-collapse";break}if(Y=H,C=s+y+1,E.push({index:C,beforeSpatialScore:f.spatialScore,beforeGradientScore:f.gradientScore,afterSpatialScore:d.spatialScore,afterGradientScore:d.gradientScore,improvement:T,gradientDelta:M,nearBlackRatio:Q}),Math.abs(d.spatialScore)<=a){w="residual-low";break}}return{imageData:Y,passCount:C,attemptedPassCount:u,stopReason:w,passes:E}}function J(A){return typeof A=="number"&&Number.isFinite(A)?A:null}function tg({spatialScore:A,gradientScore:g}){let B=J(A),P=J(g);return B===null||P===null?{tier:"insufficient"}:B>=.3&&P>=.12||B>=.295&&P>=.45?{tier:"direct-match"}:B>0||P>0?{tier:"needs-validation"}:{tier:"insufficient"}}function og(A){if(!A||A.found!==!0)return{tier:"insufficient"};let g=J(A.confidence),B=J(A.spatialScore),P=J(A.gradientScore),D=J(A?.region?.size);return g===null||B===null||P===null||D===null?{tier:"insufficient"}:g>=.5&&B>=.45&&P>=.12&&D>=40&&D<=192?{tier:"direct-match"}:D>=40&&D<=192&&P>=.12&&(g>0||B>0)?{tier:"needs-validation"}:{tier:"insufficient"}}function oA({spatialScore:A,gradientScore:g}){return tg({spatialScore:A,gradientScore:g}).tier==="direct-match"}function nA(A){return og(A).tier==="direct-match"}var HB=.05,TB=.08,hB=.22,zB=.04,pB=.25,mB=.22,OB=.08,KB=.18,SB=.05,_B=.35,RB=.8,NB=.12,xB=.65,bB=.3,vB=.02,LB=.02,kB=.03,wg=[-.5,-.25,0,.25,.5],Cg=[.99,1,1.01],ng=[-12,-8,-4,0,4,8,12],FB=[-2,-1,0,1,2],jB=[-12,-10,-8,-6,-4,-2,2,4,6,8,10,12],cg=24,WB=1.05,UB=.55,Gg=16,rg=8,VB=2,Ig=2,ag=8,XB=.2,mA=[-1,0,1],JB=[-1,-.5,0,.5,1],ZB=[.985,1,1.015],qB=.22,$B=.24,ig=Object.freeze({x:0,y:0});function CA(...A){let g={};for(let B of A)!B||typeof B!="object"||Object.assign(g,B);return Object.keys(g).length>0?g:null}function Yg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:e,resolveAlphaMap:o=null,includeCatalogVariants:t=!0}){let n=t?YA(A.width,A.height,g):[g],G=[];for(let a of n){let s=a===g?B:{x:A.width-a.marginRight-a.logoSize,y:A.height-a.marginBottom-a.logoSize,width:a.logoSize,height:a.logoSize};if(s.x<0||s.y<0||s.x+s.width>A.width||s.y+s.height>A.height)continue;let c=typeof o=="function"?o(a.logoSize):GA(a.logoSize,{alpha48:P,alpha96:D,getAlphaMap:e});c&&G.push({config:a,position:s,alphaMap:c,source:a===g?"standard":"standard+catalog",provenance:a===g?null:{catalogVariant:!0}})}return G}function OA(A,{directMatch:g=!1}={}){return A?g?"direct-match":A.source?.includes("validated")||A.accepted?"validated-match":"safe-removal":"insufficient"}function cA(A){return A?Math.abs(A.processedSpatialScore)>mB||Math.max(0,A.processedGradientScore)>OB:!0}function AP(A,g){return A?Number(A.position?.width)>=72&&Number(g?.height)>Number(g?.width)*1.25&&(Math.abs(A.processedSpatialScore)>KB||Math.max(0,A.processedGradientScore)>SB):!0}function GA(A,{alpha48:g,alpha96:B,getAlphaMap:P}={}){if(A===48)return g;if(A===96)return B;let D=typeof P=="function"?P(A):null;return D||(B?L(B,96,A):null)}function gP({alpha48:A,alpha96:g,getAlphaMap:B}){let P=new Map;return D=>{if(P.has(D))return P.get(D);let e=GA(D,{alpha48:A,alpha96:g,getAlphaMap:B});return P.set(D,e),e}}function BP(A){return A?Math.abs(A.processedSpatialScore)>qB||Math.max(0,A.processedGradientScore)>$B:!0}function v({originalImageData:A,alphaMap:g,position:B,source:P,config:D,baselineNearBlackRatio:e,adaptiveConfidence:o=null,alphaGain:t=1,provenance:n=null,includeImageData:G=!0}){if(!g||!B)return null;let a=U(A,g,B),s=DP({originalImageData:A,alphaMap:g,position:B,alphaGain:t}),c={x:ig.x,y:ig.y,width:B.width,height:B.height},Y=U(s,g,c),i=m(s,c),I=i-e,r=a.spatialScore-Y.spatialScore,E=Y.gradientScore-a.gradientScore,w=pA({originalImageData:A,referenceImageData:A,candidateTextureStats:Dg(s,c),position:B}),C=w.texturePenalty;return{accepted:w.hardReject!==!0&&I<=HB&&r>=TB&&(Math.abs(Y.spatialScore)<=hB||E<=zB),source:P,config:D,position:B,alphaMap:g,adaptiveConfidence:o,alphaGain:t,provenance:CA(n),imageData:G?ug(A,g,B,t):null,originalSpatialScore:a.spatialScore,originalGradientScore:a.gradientScore,processedSpatialScore:Y.spatialScore,processedGradientScore:Y.gradientScore,improvement:r,nearBlackRatio:i,nearBlackIncrease:I,gradientIncrease:E,tooDark:w.tooDark,tooFlat:w.tooFlat,hardReject:w.hardReject,texturePenalty:C,validationCost:Math.abs(Y.spatialScore)+Math.max(0,Y.gradientScore)*.6+Math.max(0,I)*3+C}}function PP(A){let g=A.filter(B=>B?.accepted);return g.length===0?null:(g.sort((B,P)=>B.validationCost!==P.validationCost?B.validationCost-P.validationCost:P.improvement-B.improvement),g[0])}function DP({originalImageData:A,alphaMap:g,position:B,alphaGain:P}){let D={width:B.width,height:B.height,data:new Uint8ClampedArray(B.width*B.height*4)};for(let e=0;e<B.height;e++){let o=((B.y+e)*A.width+B.x)*4,t=o+B.width*4,n=e*B.width*4;D.data.set(A.data.subarray(o,t),n)}return b(D,g,{x:0,y:0,width:B.width,height:B.height},{alphaGain:P}),D}function ug(A,g,B,P){let D=tA(A);return b(D,g,B,{alphaGain:P}),D}function q(A,g){return!A||A.imageData?A:{...A,imageData:ug(g,A.alphaMap,A.position,A.alphaGain??1)}}function k(A,g,B=.005){return g?.accepted?A?GP(A,g)?A:Eg(A,g)?g:Eg(g,A)?A:g.validationCost<A.validationCost-B||Math.abs(g.validationCost-A.validationCost)<=B&&g.improvement>A.improvement+.01?g:A:g:A}function $(A){return typeof A?.source=="string"&&A.source.startsWith("standard")}function eP(A){return $(A)&&(A?.provenance?.localShift===!0||A?.provenance?.sizeJitter===!0||String(A?.source||"").includes("+warp"))}function tP(A){return $(A)&&A?.provenance?.localShift!==!0&&A?.provenance?.sizeJitter!==!0}function oP(A){let g=Number(A?.originalSpatialScore),B=Number(A?.originalGradientScore);return!Number.isFinite(g)||!Number.isFinite(B)?!1:B>=_B||g>=RB}function nP(A){let g=Number(A?.originalSpatialScore),B=Number(A?.originalGradientScore);return!Number.isFinite(g)||!Number.isFinite(B)?!1:B<NB||g<xB}function cP(A,g){let B=Number(A?.processedGradientScore),P=Number(g?.processedGradientScore);return!Number.isFinite(B)||!Number.isFinite(P)?!1:Math.max(0,B)<=LB&&Math.max(0,P)>=kB}function KA(A,g){if(!tP(A)||!eP(g))return!1;let B=Number(A.validationCost)-Number(g.validationCost);return Number.isFinite(B)?oP(A)&&nP(g)&&B<bB||cP(A,g):!1}function GP(A,g){return A?.provenance?.localShift===!0||!$(g)?!1:KA(A,g)}function rP(A,g){return A?.provenance?.localShift!==!0||!$(A)||!$(g)||!g?.accepted?!1:KA(g,A)}function lg(A){return A?Math.max(0,Number(A.processedGradientScore))<=vB:!1}function IP(A,g){if(!g||g.logoSize!==48)return!1;let B=Number(A?.width),P=Number(A?.height);return!Number.isFinite(B)||!Number.isFinite(P)||B<384||B>1536||P<384||P>1536||Math.max(B,P)<512?!1:yA(B,P)===null}function Eg(A,g){if(g?.provenance?.previewAnchor!==!0||!A||A?.provenance?.previewAnchor===!0)return!1;let B=Number(A.originalSpatialScore),P=Number(A.originalGradientScore),D=Number(g.originalSpatialScore),e=Number(g.originalGradientScore);if(!Number.isFinite(B)||!Number.isFinite(P)||!Number.isFinite(D)||!Number.isFinite(e))return!1;let o=oA({spatialScore:B,gradientScore:P});return oA({spatialScore:D,gradientScore:e})&&!o?!0:e>=P+.2&&D>=B+.05}function aP({originalImageData:A,alphaMap:g,position:B,baselineSpatialScore:P,baselineGradientScore:D,shiftCandidates:e=wg,scaleCandidates:o=Cg}){let t=B.width;if(!t||t<=8)return null;let n={spatialScore:P,gradientScore:D,shift:{dx:0,dy:0,scale:1},alphaMap:g};for(let s of o)for(let c of e)for(let Y of e){if(Y===0&&c===0&&s===1)continue;let i=wA(g,t,{dx:Y,dy:c,scale:s}),I=S({imageData:A,alphaMap:i,region:{x:B.x,y:B.y,size:t}}),r=x({imageData:A,alphaMap:i,region:{x:B.x,y:B.y,size:t}}),E=Math.max(0,I)*.7+Math.max(0,r)*.3,w=Math.max(0,n.spatialScore)*.7+Math.max(0,n.gradientScore)*.3;E>w+.01&&(n={spatialScore:I,gradientScore:r,shift:{dx:Y,dy:c,scale:s},alphaMap:i})}let G=n.spatialScore>=P+.01,a=n.gradientScore>=D+.01;return G||a?n:null}function iP({originalImageData:A,candidateSeeds:g,adaptiveConfidence:B=null}){if(!Array.isArray(g)||g.length===0)return null;let P=null;for(let D of g)if(!lg(D))for(let e of ng)for(let o of ng){if(o===0&&e===0)continue;let t={x:D.position.x+o,y:D.position.y+e,width:D.position.width,height:D.position.height};if(t.x<0||t.y<0||t.x+t.width>A.width||t.y+t.height>A.height)continue;let n=v({originalImageData:A,alphaMap:D.alphaMap,position:t,source:`${D.source}+local`,config:D.config,baselineNearBlackRatio:m(A,t),adaptiveConfidence:B,provenance:CA(D.provenance,{localShift:!0}),includeImageData:!1});n?.accepted&&(P=k(P,n,.002))}return P}function YP({originalImageData:A,candidateSeeds:g,alpha48:B,alpha96:P,getAlphaMap:D,resolveAlphaMap:e=null,adaptiveConfidence:o=null}){if(!Array.isArray(g)||g.length===0)return null;let t=null;for(let n of g)for(let G of jB){let a=n.position.width+G;if(a<=24||a===n.position.width)continue;let s={x:A.width-n.config.marginRight-a,y:A.height-n.config.marginBottom-a,width:a,height:a};if(s.x<0||s.y<0||s.x+s.width>A.width||s.y+s.height>A.height)continue;let c=typeof e=="function"?e(a):GA(a,{alpha48:B,alpha96:P,getAlphaMap:D});if(!c)continue;let Y=v({originalImageData:A,alphaMap:c,position:s,source:`${n.source}+size`,config:{logoSize:a,marginRight:n.config.marginRight,marginBottom:n.config.marginBottom},baselineNearBlackRatio:m(A,s),adaptiveConfidence:o,provenance:CA(n.provenance,{sizeJitter:!0}),includeImageData:!1});Y?.accepted&&(t=k(t,Y,.002))}return t}function EP({originalImageData:A,seedCandidate:g,adaptiveConfidence:B=null,shiftCandidates:P=FB}){if(!g?.alphaMap||!g?.position||lg(g))return null;let D=null;for(let e of P)for(let o of P){if(o===0&&e===0)continue;let t={x:g.position.x+o,y:g.position.y+e,width:g.position.width,height:g.position.height};if(t.x<0||t.y<0||t.x+t.width>A.width||t.y+t.height>A.height)continue;let n=v({originalImageData:A,alphaMap:g.alphaMap,position:t,source:`${g.source}+local`,config:g.config,baselineNearBlackRatio:m(A,t),adaptiveConfidence:B,provenance:CA(g.provenance,{localShift:!0}),includeImageData:!1});n?.accepted&&(D=k(D,n,.002))}return D}function sP({originalImageData:A,seedCandidate:g,adaptiveConfidence:B=null,alphaGainCandidates:P=[]}){if(!g?.alphaMap||!g?.position)return null;let D=null;for(let e of P){if(!Number.isFinite(e)||e<=1)continue;let o=v({originalImageData:A,alphaMap:g.alphaMap,position:g.position,source:`${g.source}+gain`,config:g.config,baselineNearBlackRatio:m(A,g.position),adaptiveConfidence:B,alphaGain:e,provenance:g.provenance,includeImageData:!1});o?.accepted&&(D=k(D,o,.002))}return D}function wP(A,g){A.push(g),A.sort((B,P)=>P.coarseScore-B.coarseScore),A.length>ag&&(A.length=ag)}function CP({originalImageData:A,config:g,alpha48:B,alpha96:P,getAlphaMap:D,resolveAlphaMap:e=null,adaptiveConfidence:o=null}){if(!IP(A,g))return null;let t=Math.max(cg,Math.round(g.logoSize*UB)),n=Math.max(t,Math.round(g.logoSize*WB)),G=Math.max(8,g.marginRight-Gg),a=g.marginRight+rg,s=Math.max(8,g.marginBottom-Gg),c=g.marginBottom+rg,Y=[];for(let I=t;I<=n;I+=VB){let r=typeof e=="function"?e(I):GA(I,{alpha48:B,alpha96:P,getAlphaMap:D});if(r)for(let E=G;E<=a;E+=Ig){let w=A.width-E-I;if(!(w<0||w+I>A.width))for(let C=s;C<=c;C+=Ig){let u=A.height-C-I;if(u<0||u+I>A.height)continue;let y=S({imageData:A,alphaMap:r,region:{x:w,y:u,size:I}}),f=x({imageData:A,alphaMap:r,region:{x:w,y:u,size:I}}),H=Math.max(0,f)*.6+Math.max(0,y)*.4;H<XB||wP(Y,{coarseScore:H,alphaMap:r,position:{x:w,y:u,width:I,height:I},config:{logoSize:I,marginRight:E,marginBottom:C}})}}}let i=null;for(let I of Y)for(let r of mA){let E=I.position.width+r;if(E<cg)continue;let w=typeof e=="function"?e(E):GA(E,{alpha48:B,alpha96:P,getAlphaMap:D});if(w)for(let C of mA)for(let u of mA){let y={x:I.position.x+C,y:I.position.y+u,width:E,height:E};if(y.x<0||y.y<0||y.x+y.width>A.width||y.y+y.height>A.height)continue;let f={logoSize:E,marginRight:A.width-y.x-E,marginBottom:A.height-y.y-E},H=v({originalImageData:A,alphaMap:w,position:y,source:"standard+preview-anchor",config:f,baselineNearBlackRatio:m(A,y),adaptiveConfidence:o,provenance:{previewAnchor:!0,previewAnchorLocalRefine:r!==0||C!==0||u!==0},includeImageData:!1});H?.accepted&&(i=k(i,H,.002))}}return i}function sg({originalImageData:A,candidateSeeds:g}){let B=g.map(t=>v({originalImageData:A,alphaMap:t.alphaMap,position:t.position,source:t.source,config:t.config,baselineNearBlackRatio:m(A,t.position),provenance:t.provenance,includeImageData:!1})).filter(Boolean),P=B.find(t=>t.source==="standard")??B[0]??null,D=P?.originalSpatialScore??null,e=P?.originalGradientScore??null,o=oA({spatialScore:D,gradientScore:e});return{standardTrials:B,standardTrial:P,standardSpatialScore:D,standardGradientScore:e,hasReliableStandardMatch:o}}function uP({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:e,resolveAlphaMap:o}){let t=Yg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:e,resolveAlphaMap:o,includeCatalogVariants:!1}),n=sg({originalImageData:A,candidateSeeds:t});return!n.hasReliableStandardMatch&&(!n.standardTrial||cA(n.standardTrial))&&(t=Yg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:e,resolveAlphaMap:o,includeCatalogVariants:!0}),n=sg({originalImageData:A,candidateSeeds:t})),{standardCandidateSeeds:t,...n}}function lP(A,{reliableMatch:g=!1}={}){return A?.accepted?g?{candidate:A,decisionTier:"direct-match"}:{candidate:{...A,source:`${A.source}+validated`},decisionTier:"validated-match"}:null}function Z(A,g,B,{reliableMatch:P=!1,minCostDelta:D=.002}={}){let e=lP(B,{reliableMatch:P});if(!e)return{baseCandidate:A,baseDecisionTier:g};if(KA(A,e.candidate))return{baseCandidate:A,baseDecisionTier:g};let o=A,t=k(A,e.candidate,D);return{baseCandidate:t,baseDecisionTier:t!==o?e.decisionTier:g}}function yP({originalImageData:A,config:g,alpha96:B,resolveAlphaMap:P,allowAdaptiveSearch:D}){if(!D||!B)return{adaptive:null,adaptiveConfidence:null,adaptiveTrial:null};let e=Bg({imageData:A,alpha96:B,defaultConfig:g}),o=e?.confidence??null;if(!e?.region||!(nA(e)||e.confidence>=pB))return{adaptive:e,adaptiveConfidence:o,adaptiveTrial:null};let t=e.region.size,n={x:e.region.x,y:e.region.y,width:t,height:t},G=P(t);if(!G)throw new Error(`Missing alpha map for adaptive size ${t}`);let a={logoSize:t,marginRight:A.width-n.x-t,marginBottom:A.height-n.y-t};return{adaptive:e,adaptiveConfidence:o,adaptiveTrial:v({originalImageData:A,alphaMap:G,position:n,source:"adaptive",config:a,baselineNearBlackRatio:m(A,n),adaptiveConfidence:e.confidence,provenance:{adaptive:!0},includeImageData:!1})}}function QP({originalImageData:A,baseCandidate:g,baseDecisionTier:B,adaptiveConfidence:P,alphaGainCandidates:D}){let e=q(g,A),o=g.alphaMap,t=g.position,n=g.config,G=g.source,a=B||OA(g),s=null,c=g.alphaGain??1,Y=aP({originalImageData:A,alphaMap:o,position:t,baselineSpatialScore:e.originalSpatialScore,baselineGradientScore:e.originalGradientScore,shiftCandidates:e.provenance?.previewAnchor===!0?JB:wg,scaleCandidates:e.provenance?.previewAnchor===!0?ZB:Cg});if(Y){let r=v({originalImageData:A,alphaMap:Y.alphaMap,position:t,source:`${G}+warp`,config:n,baselineNearBlackRatio:m(A,t),adaptiveConfidence:P,provenance:e.provenance,includeImageData:!1}),E=k(e,r);E!==e&&(o=r.alphaMap,G=E.source,e=q(E,A),s=Y.shift,a=OA(E,{directMatch:a==="direct-match"}))}let i=e.provenance?.previewAnchor===!0?BP(e):cA(e),I=e;if(i)for(let r of D){let E=v({originalImageData:A,alphaMap:o,position:t,source:`${G}+gain`,config:n,baselineNearBlackRatio:m(A,t),adaptiveConfidence:P,alphaGain:r,provenance:e.provenance,includeImageData:!1});I=k(I,E)}return I!==e&&(e=q(I,A),G=I.source,c=I.alphaGain,a=OA(I,{directMatch:a==="direct-match"})),{selectedTrial:q(e,A),source:G,alphaMap:o,position:t,config:n,templateWarp:s,alphaGain:c,decisionTier:a}}function yg({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:e,allowAdaptiveSearch:o,alphaGainCandidates:t}){let n=gP({alpha48:P,alpha96:D,getAlphaMap:e}),G=g.logoSize===96?D:P,{standardCandidateSeeds:a,standardTrials:s,standardTrial:c,standardSpatialScore:Y,standardGradientScore:i,hasReliableStandardMatch:I}=uP({originalImageData:A,config:g,position:B,alpha48:P,alpha96:D,getAlphaMap:e,resolveAlphaMap:n}),r=null,E="insufficient";if(I&&c?.accepted?(r=c,E="direct-match"):c?.accepted&&(r={...c,source:`${c.source}+validated`},E="validated-match"),!r&&c&&I){let z=sP({originalImageData:A,seedCandidate:{...c,source:"standard+validated"},adaptiveConfidence:null,alphaGainCandidates:t});z&&(r=z,E="validated-match")}let w=null,C=null,u=null;for(let l of s)!l||l===c||({baseCandidate:r,baseDecisionTier:E}=Z(r,E,l,{reliableMatch:oA({spatialScore:l.originalSpatialScore,gradientScore:l.originalGradientScore})}));let y=CP({originalImageData:A,config:g,alpha48:P,alpha96:D,getAlphaMap:e,resolveAlphaMap:n,adaptiveConfidence:C});if(y&&({baseCandidate:r,baseDecisionTier:E}=Z(r,E,y)),E!=="direct-match"&&!r?.provenance?.previewAnchor&&cA(r)){let l=YP({originalImageData:A,candidateSeeds:a,alpha48:P,alpha96:D,getAlphaMap:e,resolveAlphaMap:n});l&&({baseCandidate:r,baseDecisionTier:E}=Z(r,E,l))}if(E!=="direct-match"&&r?.provenance?.sizeJitter===!0&&!r?.provenance?.previewAnchor&&$(r)&&cA(r)){let l=EP({originalImageData:A,seedCandidate:r,adaptiveConfidence:C});l&&({baseCandidate:r,baseDecisionTier:E}=Z(r,E,l))}if((!o||!D?!1:r?cA(r)?(r=q(r,A),gg({processedImageData:r.imageData,alphaMap:r.alphaMap,position:r.position,originalImageData:A,originalSpatialMismatchThreshold:0})):!1:!0)&&({adaptive:w,adaptiveConfidence:C,adaptiveTrial:u}=yP({originalImageData:A,config:g,alpha96:D,resolveAlphaMap:n,allowAdaptiveSearch:o})),u&&({baseCandidate:r,baseDecisionTier:E}=Z(r,E,u,{reliableMatch:nA(w)})),!r?.provenance?.previewAnchor&&!nA(w)&&AP(r,A)){let l=iP({originalImageData:A,candidateSeeds:a,adaptiveConfidence:C});l&&({baseCandidate:r,baseDecisionTier:E}=Z(r,E,l))}if(r||(I&&c?(r=c,E="direct-match"):nA(w)&&u&&(r=u,E="direct-match")),!r){let l=PP([c,u]);if(!l)return{selectedTrial:null,source:"skipped",alphaMap:G,position:B,config:g,adaptiveConfidence:C,standardSpatialScore:Y,standardGradientScore:i,templateWarp:null,alphaGain:1,decisionTier:"insufficient"};r={...l,source:`${l.source}+validated`},E="validated-match"}rP(r,c)&&(r=c,E=I?"direct-match":"validated-match");let{selectedTrial:H,source:d,alphaMap:Q,position:T,config:M,templateWarp:h,alphaGain:O,decisionTier:p}=QP({originalImageData:A,baseCandidate:r,baseDecisionTier:E,adaptiveConfidence:C,alphaGainCandidates:t});return{selectedTrial:q(H,A),source:d,alphaMap:Q,position:T,config:M,adaptiveConfidence:C,standardSpatialScore:Y,standardGradientScore:i,templateWarp:h,alphaGain:O,decisionTier:p}}function Qg(A){if(!A||typeof A!="object")return null;let{logoSize:g,marginRight:B,marginBottom:P}=A;return[g,B,P].every(Number.isFinite)?{logoSize:g,marginRight:B,marginBottom:P}:null}function Mg(A){if(!A||typeof A!="object")return null;let{x:g,y:B,width:P,height:D}=A;return[g,B,P,D].every(Number.isFinite)?{x:g,y:B,width:P,height:D}:null}function fg({selectedTrial:A,selectionSource:g=null,initialConfig:B=null,initialPosition:P=null}={}){return A?{candidateSource:typeof g=="string"&&g?g:typeof A.source=="string"?A.source:null,initialConfig:Qg(B),initialPosition:Mg(P),finalConfig:Qg(A.config),finalPosition:Mg(A.position),texturePenalty:Number.isFinite(A.texturePenalty)?A.texturePenalty:null,tooDark:A.tooDark===!0,tooFlat:A.tooFlat===!0,hardReject:A.hardReject===!0,usedCatalogVariant:A.provenance?.catalogVariant===!0,usedSizeJitter:A.provenance?.sizeJitter===!0,usedLocalShift:A.provenance?.localShift===!0,usedAdaptive:A.provenance?.adaptive===!0,usedPreviewAnchor:A.provenance?.previewAnchor===!0}:null}function uA(A,g){let B=QA(A,g);return B?{...B}:A>1024&&g>1024?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function AA(A,g,B){let{logoSize:P,marginRight:D,marginBottom:e}=B;return{x:A-D-P,y:g-e-P,width:P,height:P}}function SA(A){return A===96?{logoSize:96,marginRight:64,marginBottom:64}:{logoSize:48,marginRight:32,marginBottom:32}}function MP(A,g,B){return A?A.logoSize===48?g:A.logoSize===96?B:B?L(B,96,A.logoSize):null:null}function fP(A,g){return g.x>=0&&g.y>=0&&g.x+g.width<=A.width&&g.y+g.height<=A.height}function dg({imageData:A,defaultConfig:g,alpha48:B,alpha96:P,minSwitchScore:D=.25,minScoreDelta:e=.08}){if(!A||!g||!B||!P)return g;let o=SA(48),t=g.logoSize===96?SA(96):o,n=g.logoSize===96?o:SA(96),G=[t,n];for(let c of MA(A.width,A.height,{limit:1}))G.some(Y=>Y.logoSize===c.logoSize&&Y.marginRight===c.marginRight&&Y.marginBottom===c.marginBottom)||G.push(c);let a=null,s=Number.NEGATIVE_INFINITY;for(let c of G){let Y=AA(A.width,A.height,c);if(!fP(A,Y))continue;let i=MP(c,B,P);if(!i)continue;let I=S({imageData:A,alphaMap:i,region:{x:Y.x,y:Y.y,size:Y.width}});if(!a){a=c,s=I;continue}I>=D&&I>s+e&&(a=c,s=I)}return a??g}var dP=.5,HP=.18,TP=.18,RA=.05,hP=.42,hg=1.2,zg=[-.25,0,.25],pg=[.99,1,1.01],mg=[1.05,1.12,1.2,1.28,1.36,1.45,1.52,1.6,1.7,1.85,2,2.2,2.4,2.6],Og=40,zP=.08,pP=.1,mP=.03,OP=.04,KP=3,SP=.16,_P=.005,RP=.01,NP=.02,xP=1.5,_A=4,bP=.18,Hg=Object.freeze([{minAlpha:.02,maxAlpha:.45,radius:2,strength:.7,outsideAlphaMax:.05},{minAlpha:.05,maxAlpha:.55,radius:3,strength:.7,outsideAlphaMax:.08},{minAlpha:.1,maxAlpha:.7,radius:3,strength:.8,outsideAlphaMax:.12},{minAlpha:.01,maxAlpha:.35,radius:4,strength:1.4,outsideAlphaMax:.05}]),vP=.45,LP=Object.freeze([{minAlpha:.01,maxAlpha:.55,radius:2,strength:1.3,outsideAlphaMax:.05,minGradientImprovement:.12,maxSpatialDrift:.18,maxAcceptedSpatial:.18}]),kP=.08,FP=.2;function K(){return typeof globalThis.performance?.now=="function"?globalThis.performance.now():Date.now()}function rA(A){return typeof ImageData<"u"&&A instanceof ImageData?new ImageData(new Uint8ClampedArray(A.data),A.width,A.height):{width:A.width,height:A.height,data:new Uint8ClampedArray(A.data)}}function jP(A){if(!A)return null;let{x:g,y:B,width:P,height:D}=A;return[g,B,P,D].every(e=>Number.isFinite(e))?{x:g,y:B,width:P,height:D}:null}function WP(A){if(!A)return null;let{logoSize:g,marginRight:B,marginBottom:P}=A;return[g,B,P].every(D=>Number.isFinite(D))?{logoSize:g,marginRight:B,marginBottom:P}:null}function Tg({position:A=null,config:g=null,adaptiveConfidence:B=null,originalSpatialScore:P=null,originalGradientScore:D=null,processedSpatialScore:e=null,processedGradientScore:o=null,suppressionGain:t=null,templateWarp:n=null,alphaGain:G=1,passCount:a=0,attemptedPassCount:s=0,passStopReason:c=null,passes:Y=null,source:i="standard",decisionTier:I=null,applied:r=!0,skipReason:E=null,subpixelShift:w=null,selectionDebug:C=null}={}){let u=jP(A);return{applied:r,skipReason:r?null:E,size:u?u.width:null,position:u,config:WP(g),detection:{adaptiveConfidence:B,originalSpatialScore:P,originalGradientScore:D,processedSpatialScore:e,processedGradientScore:o,suppressionGain:t},templateWarp:n??null,alphaGain:G,passCount:a,attemptedPassCount:s,passStopReason:c,passes:Array.isArray(Y)?Y:null,source:i,decisionTier:I,subpixelShift:w??null,selectionDebug:C}}function UP({originalScore:A,processedScore:g,suppressionGain:B}){return A>=.6&&g>=dP&&B<=HP}function VP({originalSpatialScore:A,originalGradientScore:g,firstPassSpatialScore:B,firstPassGradientScore:P}){return Math.abs(B)<=.25?!0:A>=0&&B<0&&P<=kP&&g-P>=FP}function XP({sourceImageData:A,alphaMap:g,position:B,alphaGain:P,originalNearBlackRatio:D,baselineSpatialScore:e,baselineGradientScore:o,baselineShift:t,minGain:n=hg,shiftCandidates:G=zg,scaleCandidates:a=pg,minGradientImprovement:s=.04,maxSpatialDrift:c=.08}){let Y=B.width;if(!Y||Y<=8||P<n)return null;let i=Math.min(1,D+RA),I=[P],r=Math.max(1,Number((P-.01).toFixed(2))),E=Number((P+.01).toFixed(2));r!==P&&I.push(r),E!==P&&I.push(E);let w=t?.dx??0,C=t?.dy??0,u=t?.scale??1,y=null;for(let d of a){let Q=Number((u*d).toFixed(4));for(let T of G){let M=C+T;for(let h of G){let O=w+h,p=wA(g,Y,{dx:O,dy:M,scale:Q});for(let l of I){let z=rA(A);b(z,p,B,{alphaGain:l});let F=m(z,B);if(F>i)continue;let aA=S({imageData:z,alphaMap:p,region:{x:B.x,y:B.y,size:Y}}),V=x({imageData:z,alphaMap:p,region:{x:B.x,y:B.y,size:Y}}),X=Math.abs(aA)*.6+Math.max(0,V);(!y||X<y.cost)&&(y={imageData:z,alphaMap:p,alphaGain:l,shift:{dx:O,dy:M,scale:Q},spatialScore:aA,gradientScore:V,nearBlackRatio:F,cost:X})}}}}if(!y)return null;let f=y.gradientScore<=o-s,H=Math.abs(y.spatialScore)<=Math.abs(e)+c;return!f||!H?null:y}function JP({sourceImageData:A,alphaMap:g,position:B,originalSpatialScore:P,processedSpatialScore:D,originalNearBlackRatio:e}){let o=D,t=1,n=null,G=Math.min(1,e+RA);for(let c of mg){let Y=rA(A);if(b(Y,g,B,{alphaGain:c}),m(Y,B)>G)continue;let I=S({imageData:Y,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}});I<o&&(o=I,t=c,n=Y)}let a=[];for(let c=-.05;c<=.05;c+=.01)a.push(Number((t+c).toFixed(2)));for(let c of a){if(c<=1||c>=3)continue;let Y=rA(A);if(b(Y,g,B,{alphaGain:c}),m(Y,B)>G)continue;let I=S({imageData:Y,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}});I<o&&(o=I,t=c,n=Y)}let s=D-o;return!n||s<TP?null:{imageData:n,alphaGain:t,processedSpatialScore:o,suppressionGain:P-o}}function ZP({source:A,position:g,baselineSpatialScore:B,baselineGradientScore:P,baselinePositiveHalo:D}){return typeof A=="string"&&A.includes("preview-anchor")&&g?.width>=24&&g?.width<=Og&&(Math.abs(B)<=zP||D>=_A&&Math.abs(B)<=bP)&&P>=pP}function qP(A,g){return A?.provenance?.previewAnchor===!0&&g?.width>=24&&g?.width<=Og}function $P({sourceImageData:A,alphaMap:g,position:B,minAlpha:P,maxAlpha:D,radius:e,strength:o,outsideAlphaMax:t}){let n=rA(A),{width:G,height:a,data:s}=A,c=B.width,Y=Math.max(D,1e-6);for(let i=0;i<c;i++)for(let I=0;I<c;I++){let r=g[i*c+I];if(r<P||r>D)continue;let E=0,w=0,C=0,u=0;for(let H=-e;H<=e;H++)for(let d=-e;d<=e;d++){if(d===0&&H===0)continue;let Q=i+H,T=I+d,M=B.x+T,h=B.y+Q;if(M<0||h<0||M>=G||h>=a)continue;let O=0;if(Q>=0&&T>=0&&Q<c&&T<c&&(O=g[Q*c+T]),O>t)continue;let l=1/(Math.sqrt(d*d+H*H)||1),z=(h*G+M)*4;E+=s[z]*l,w+=s[z+1]*l,C+=s[z+2]*l,u+=l}if(u<=0)continue;let y=Math.max(0,Math.min(1,o*r/Y)),f=((B.y+i)*G+(B.x+I))*4;n.data[f]=Math.round(s[f]*(1-y)+E/u*y),n.data[f+1]=Math.round(s[f+1]*(1-y)+w/u*y),n.data[f+2]=Math.round(s[f+2]*(1-y)+C/u*y)}return n}function AD({sourceImageData:A,alphaMap:g,position:B,source:P,baselineSpatialScore:D,baselineGradientScore:e,minGradientImprovement:o=mP,maxSpatialDrift:t=OP,allowAggressivePresets:n=!1}){let a=hA({imageData:A,position:B,alphaMap:g}).positiveDeltaLum;if(!ZP({source:P,position:B,baselineSpatialScore:D,baselineGradientScore:e,baselinePositiveHalo:a}))return null;let s=m(A,B),c=Math.min(1,s+RA),Y=e<=SP?_P:a>=_A?RP:o,i=n&&e>=vP&&Math.abs(D)<=.05?[...Hg,...LP]:Hg,I=null;for(let r of i){let E=$P({sourceImageData:A,alphaMap:g,position:B,...r});if(m(E,B)>c)continue;let C=S({imageData:E,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}}),u=x({imageData:E,alphaMap:g,region:{x:B.x,y:B.y,size:B.width}}),y=hA({imageData:E,position:B,alphaMap:g}),f=r.minGradientImprovement??Y,H=r.maxSpatialDrift??t,d=r.maxAcceptedSpatial??.22,Q=u<=e-f,T=Math.abs(C)<=Math.abs(D)+H,M=Math.abs(C)<=d,h=y.positiveDeltaLum,O=a<_A||h<=a-xP;if(!Q||!T||!M||!O)continue;let p=Math.abs(C)*.6+Math.max(0,u)+h*NP;(!I||p<I.cost)&&(I={imageData:E,spatialScore:C,gradientScore:u,halo:y,cost:p})}return I}function Kg(A,g={}){let B=K(),P=g.debugTimings===!0,D=P?{}:null,e=g.adaptiveMode||"auto",o=e!=="never"&&e!=="off",t=rA(A),{alpha48:n,alpha96:G}=g,a=mg;if(!n||!G)throw new Error("processWatermarkImageData requires alpha48 and alpha96");let s=uA(t.width,t.height),c=dg({imageData:t,defaultConfig:s,alpha48:n,alpha96:G}),Y=c,i=AA(t.width,t.height,Y),I=Y.logoSize===96?G:n,r="standard",E=null,w=1,C=null,u=null,y=null,f=0,H=0,d=null,Q=null,T=K(),M=yg({originalImageData:t,config:Y,position:i,alpha48:n,alpha96:G,getAlphaMap:g.getAlphaMap,allowAdaptiveSearch:o,alphaGainCandidates:a});if(P&&(D.initialSelectionMs=K()-T),!M.selectedTrial)return P&&(D.totalMs=K()-B),{imageData:t,meta:Tg({adaptiveConfidence:M.adaptiveConfidence,originalSpatialScore:M.standardSpatialScore,originalGradientScore:M.standardGradientScore,processedSpatialScore:M.standardSpatialScore,processedGradientScore:M.standardGradientScore,suppressionGain:0,alphaGain:1,source:"skipped",decisionTier:M.decisionTier??"insufficient",applied:!1,skipReason:"no-watermark-detected",selectionDebug:null}),debugTimings:D};i=M.position,I=M.alphaMap,Y=M.config,r=M.source,E=M.adaptiveConfidence,u=M.templateWarp,w=M.alphaGain,y=M.decisionTier;let h=M.selectedTrial,O=qP(h,i),p=h?.provenance?.previewAnchor===!0,l=h.imageData,z=h.originalSpatialScore,F=h.originalGradientScore,aA=K(),V=S({imageData:l,alphaMap:I,region:{x:i.x,y:i.y,size:i.width}}),X=x({imageData:l,alphaMap:I,region:{x:i.x,y:i.y,size:i.width}}),Fg=m(l,i),jg={index:1,beforeSpatialScore:z,beforeGradientScore:F,afterSpatialScore:V,afterGradientScore:X,improvement:Math.abs(z)-Math.abs(V),gradientDelta:X-F,nearBlackRatio:Fg};P&&(D.firstPassMetricsMs=K()-aA);let Wg=Math.max(1,g.maxPasses??4),vA=Math.max(0,Wg-1),LA=VP({originalSpatialScore:z,originalGradientScore:F,firstPassSpatialScore:V,firstPassGradientScore:X}),Ug=K(),BA=vA>0&&!LA&&!p?eg({imageData:l,alphaMap:I,position:i,maxPasses:vA,startingPassIndex:1,alphaGain:w}):null;P&&(D.extraPassMs=K()-Ug),l=BA?.imageData??l,f=BA?.passCount??1,H=BA?.attemptedPassCount??1,d=BA?.stopReason??(LA?"residual-low":p?"preview-anchor-single-pass":"max-passes"),Q=[jg,...BA?.passes??[]],f>1&&(r=`${r}+multipass`);let Vg=K(),Xg=S({imageData:l,alphaMap:I,region:{x:i.x,y:i.y,size:i.width}}),Jg=x({imageData:l,alphaMap:I,region:{x:i.x,y:i.y,size:i.width}});P&&(D.finalMetricsMs=K()-Vg);let R=Xg,j=Jg,PA=z-R,Zg=K();if(UP({originalScore:z,processedScore:R,suppressionGain:PA})){let DA=m(l,i),N=JP({sourceImageData:l,alphaMap:I,position:i,originalSpatialScore:z,processedSpatialScore:R,originalNearBlackRatio:DA});N&&(l=N.imageData,w=N.alphaGain,R=N.processedSpatialScore,j=x({imageData:l,alphaMap:I,region:{x:i.x,y:i.y,size:i.width}}),PA=N.suppressionGain,r=r==="adaptive"?"adaptive+gain":`${r}+gain`)}P&&(D.recalibrationMs=K()-Zg);let kA=0,qg=()=>{let DA=K(),N=AD({sourceImageData:l,alphaMap:I,position:i,source:r,baselineSpatialScore:R,baselineGradientScore:j,allowAggressivePresets:O});return kA+=K()-DA,N?(l=N.imageData,R=N.spatialScore,j=N.gradientScore,PA=z-R,r=`${r}+edge-cleanup`,!0):!1},$g=K();if(!O&&R<=.3&&j>=hP){let DA=m(l,i),W=XP({sourceImageData:l,alphaMap:I,position:i,alphaGain:w,originalNearBlackRatio:DA,baselineSpatialScore:R,baselineGradientScore:j,baselineShift:u??{dx:0,dy:0,scale:1},minGain:hg,shiftCandidates:zg,scaleCandidates:pg,minGradientImprovement:.04,maxSpatialDrift:.08});W&&(l=W.imageData,I=W.alphaMap,w=W.alphaGain,R=W.spatialScore,j=W.gradientScore,PA=z-R,r=`${r}+subpixel`,C=W.shift)}P&&(D.subpixelRefinementMs=K()-$g);let FA=0;for(;FA<KP&&qg();)FA++;return P&&(D.previewEdgeCleanupMs=kA,D.totalMs=K()-B),{imageData:l,meta:Tg({position:i,config:Y,adaptiveConfidence:E,originalSpatialScore:z,originalGradientScore:F,processedSpatialScore:R,processedGradientScore:j,suppressionGain:PA,templateWarp:u,alphaGain:w,passCount:f,attemptedPassCount:H,passStopReason:d,passes:Q,source:r,decisionTier:y,applied:!0,subpixelShift:C,selectionDebug:fg({selectedTrial:h,selectionSource:M.source,initialConfig:c,initialPosition:AA(t.width,t.height,c)})}),debugTimings:D}}function gD(A,g){if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(A,g);if(typeof document<"u"){let B=document.createElement("canvas");return B.width=A,B.height=g,B}throw new Error("Canvas runtime not available")}function BD(A){let g=A.getContext("2d",{willReadFrequently:!0});if(!g)throw new Error("Failed to get 2D canvas context");return g}var gA=class A{constructor(){this.alphaMaps={}}static async create(){return new A}async getAlphaMap(g){if(g!==48&&g!==96){if(this.alphaMaps[g])return this.alphaMaps[g];let P=await this.getAlphaMap(96),D=L(P,96,g);return this.alphaMaps[g]=D,D}if(this.alphaMaps[g])return this.alphaMaps[g];let B=UA(g);if(!B)throw new Error(`Missing embedded alpha map for size ${g}`);return this.alphaMaps[g]=B,B}async removeWatermarkFromImage(g,B={}){let P=()=>typeof globalThis.performance?.now=="function"?globalThis.performance.now():Date.now(),D=gD(g.width,g.height),e=BD(D),o=P();e.drawImage(g,0,0);let t=P()-o,n=P(),G=e.getImageData(0,0,D.width,D.height),a=P()-n,s=await this.getAlphaMap(48),c=await this.getAlphaMap(96),Y=P(),i=Kg(G,{alpha48:s,alpha96:c,adaptiveMode:B.adaptiveMode,maxPasses:B.maxPasses,debugTimings:B.debugTimings===!0,getAlphaMap:w=>this.alphaMaps[w]||L(c,96,w)}),I=P()-Y,r=P();e.putImageData(i.imageData,0,0);let E=P()-r;return D.__watermarkMeta=i.meta,D.__watermarkTiming={drawMs:t,getImageDataMs:a,processWatermarkImageDataMs:I,putImageDataMs:E,processor:i.debugTimings??null},D}getWatermarkInfo(g,B){let P=uA(g,B),D=AA(g,B,P);return{size:P.logoSize,position:D,config:P}}};function PD(A){return new Promise((g,B)=>{let P=new Image;P.onload=()=>g(P),P.onerror=()=>B(new Error("Failed to decode Gemini image blob")),P.src=A})}async function NA(A){let g=URL.createObjectURL(A);try{return await PD(g)}finally{URL.revokeObjectURL(g)}}async function DD(A,g){if(typeof createImageBitmap!="function")throw g;try{return await createImageBitmap(A)}catch{throw g}}async function eD(A){try{return await NA(A)}catch(g){return await DD(A,g)}}function Sg(A,g){let B=A&&typeof A=="object"?{...A}:null;return g!=null?{...B||{},processorPath:g}:B}function tD(A,g="main-thread"){return{processedBlob:A?.processedBlob||null,processedMeta:Sg(A?.processedMeta||null,g)}}function _g(A={}){return{adaptiveMode:"always",...A&&typeof A=="object"?A:{}}}function oD({createEngine:A=()=>gA.create()}={}){let g=null;return async function(){return g||(g=Promise.resolve(A()).catch(P=>{throw g=null,P})),g}}function nD({createEngine:A=()=>gA.create(),getEngine:g=null}={}){let B=typeof g=="function"?g:oD({createEngine:A});return async function(D,e={}){let o=await B(),t=_g(e);return o.removeWatermarkFromImage(D,t)}}function xA({createEngine:A=()=>gA.create(),encodeCanvas:g=jA,processorPath:B="main-thread"}={}){let P=nD({createEngine:A});return async function(e,o={}){let t=await P(e,o);return{processedBlob:await g(t),processedMeta:Sg(t.__watermarkMeta||null,B)}}}function Rg({loadRenderable:A=eD,processRenderable:g=xA()}={}){return async function(P,D={}){let e=await A(P);return g(e,D)}}function cD({processMainThread:A=Rg(),getWorkerProcessor:g=null,onWorkerError:B=null}={}){return async function(D,e={adaptiveMode:"always"}){let o=_g(e),t=typeof g=="function"?g():null;if(typeof t=="function")try{return await t(D,o)}catch(n){B?.(n)}return tD(await A(D,o),"main-thread")}}var Pe=Rg(),De=cD();function GD(A){try{return JSON.stringify(A)}catch{return""}}function Ng(A,g="Unknown error"){if(A instanceof Error)return A.message||g;if(typeof A=="string")return A.trim()||g;if(A&&typeof A=="object"){if(typeof A.message=="string"&&A.message.trim())return A.message.trim();if(typeof A.error=="string"&&A.error.trim())return A.error.trim();let B=Number.isFinite(A.status)?String(A.status):"",P=typeof A.statusText=="string"?A.statusText.trim():"",D=`${B} ${P}`.trim();if(D)return D;let e=GD(A);if(e&&e!=="{}")return e}return g}function bA(A,g=null){return{processedBlob:A,processedMeta:g}}async function xg(A,{invalidBlobMessage:g="Bridge processor must return a Blob"}={}){let B=A instanceof Blob?bA(A,null):bA(A?.processedBlob,A?.processedMeta??null),P=B.processedBlob;if(!(P instanceof Blob))throw new Error(g);return{processedBuffer:await P.arrayBuffer(),mimeType:P.type||"image/png",meta:B.processedMeta??null}}function bg({targetWindow:A=globalThis.window||null,bridgeFlag:g,createHandler:B}={}){if(!A||typeof A.addEventListener!="function")return null;if(!g)throw new Error("bridgeFlag is required");if(A[g])return A[g];if(typeof B!="function")throw new Error("createHandler must be a function");let P=B(),D=e=>{P(e)};return A.addEventListener("message",D),A[g]={handler:P,dispose(){A.removeEventListener?.("message",D),delete A[g]}},A[g]}var rD="gwr:page-process-request",vg="gwr:page-process-response",ID="__gwrPageProcessBridgeInstalled__";function aD(A,g){if(!g||!A||A===g)return!0;try{if(A.window===g||A.self===g)return!0}catch{}try{if(g.window===A||g.self===A)return!0}catch{}return!1}function iD({targetWindow:A=globalThis.window||null,processWatermarkBlob:g,removeWatermarkFromBlob:B,logger:P=console}={}){return async function(e){if(!e?.data||e.data.type!==rD||!aD(e?.source,A)||!A||typeof A.postMessage!="function")return;let o=typeof e.data.requestId=="string"?e.data.requestId:"",t=typeof e.data.action=="string"?e.data.action:"";if(!(!o||!t))try{let n=new Blob([e.data.inputBuffer],{type:e.data.mimeType||"image/png"}),G;if(t==="process-watermark-blob"){if(typeof g!="function")throw new Error("processWatermarkBlob page bridge handler unavailable");G=await g(n,e.data.options||{})}else if(t==="remove-watermark-blob"){if(typeof B!="function")throw new Error("removeWatermarkFromBlob page bridge handler unavailable");G=await B(n,e.data.options||{})}else throw new Error(`Unknown page bridge action: ${t}`);let a=await xg(G,{invalidBlobMessage:"Page bridge processor must return a Blob"});A.postMessage({type:vg,requestId:o,ok:!0,action:t,result:a},"*",[a.processedBuffer])}catch(n){P?.warn?.("[Gemini Watermark Remover] Page bridge request failed:",n),A.postMessage({type:vg,requestId:o,ok:!1,action:t,error:Ng(n,"Page bridge failed")},"*")}}}function Lg(A={}){let{targetWindow:g=globalThis.window||null}=A;return bg({targetWindow:g,bridgeFlag:ID,createHandler(){return iD({...A,targetWindow:g})}})}var IA="__gwrPageProcessRuntimeInstalled__";function kg({targetWindow:A=globalThis.window||null,logger:g=console}={}){if(!A)return null;if(A[IA])return A[IA];let B=xA({processorPath:null});async function P(o,t={}){let n=await NA(o),G=await B(n,t);return{processedBlob:G?.processedBlob||null,processedMeta:G?.processedMeta||null}}async function D(o,t={}){return(await P(o,t)).processedBlob}let e=Lg({targetWindow:A,processWatermarkBlob:P,removeWatermarkFromBlob:D,logger:g});return A[IA]={bridge:e,processWatermarkBlob:P,removeWatermarkFromBlob:D,dispose(){e?.dispose?.(),delete A[IA]}},A[IA]}kg({targetWindow:window,logger:console});})();\n' : "";
  function shouldSkipFrame(targetWindow) {
    if (!targetWindow) {
      return false;
    }
    try {
      return targetWindow.top && targetWindow.top !== targetWindow.self;
    } catch {
      return false;
    }
  }
  function isPreviewReplacementEnabled(targetWindow) {
    try {
      return targetWindow?.localStorage?.getItem("__gwr_enable_preview_replacement__") !== "0";
    } catch {
      return true;
    }
  }
  async function initGeminiWatermarkRemoverUserscript() {
    try {
      const targetWindow = typeof unsafeWindow === "object" && unsafeWindow ? unsafeWindow : window;
      if (shouldSkipFrame(targetWindow)) {
        return;
      }
      console.log("[Gemini Watermark Remover] Initializing...");
      const originalPageFetch = typeof unsafeWindow?.fetch === "function" ? unsafeWindow.fetch.bind(unsafeWindow) : null;
      const userscriptRequest = typeof GM_xmlhttpRequest === "function" ? GM_xmlhttpRequest : globalThis.GM_xmlhttpRequest;
      const previewBlobFetcher = createUserscriptBlobFetcher({
        gmRequest: userscriptRequest,
        fallbackFetch: originalPageFetch
      });
      const processingRuntime = createUserscriptProcessingRuntime({
        workerCode: USERSCRIPT_WORKER_CODE,
        env: globalThis,
        logger: console
      });
      const imageSessionStore = getDefaultImageSessionStore();
      const actionContextResolver = createGeminiActionContextResolver({
        targetWindow,
        imageSessionStore
      });
      let pageProcessClient = null;
      const processPreviewBlobAtBestPath = async (blob, options = {}) => {
        const result = pageProcessClient?.processWatermarkBlob ? await pageProcessClient.processWatermarkBlob(blob, options) : await processingRuntime.processWatermarkBlob(blob, options);
        return result.processedBlob;
      };
      const processClipboardImageBlobAtBestPath = (blob, options = {}) => pageProcessClient?.processWatermarkBlob ? pageProcessClient.processWatermarkBlob(blob, options) : processingRuntime.processWatermarkBlob(blob, options);
      const removeWatermarkFromBestAvailablePath = (blob, options = {}) => pageProcessClient?.removeWatermarkFromBlob ? pageProcessClient.removeWatermarkFromBlob(blob, options) : processingRuntime.removeWatermarkFromBlob(blob, options);
      const handleOriginalAssetDiscovered = (payload = {}) => {
        const sourceUrl = payload.normalizedUrl || payload.discoveredUrl || "";
        const resolvedActionContext = resolveCompatibleActionContextFromPayload(payload);
        const assetIds = resolvedActionContext?.assetIds;
        if (!assetIds || !sourceUrl) return;
        bindOriginalAssetUrlToImages({
          root: targetWindow.document || document,
          assetIds,
          sourceUrl,
          imageSessionStore
        });
      };
      const handleRpcAssetDiscovered = (payload) => {
        handleOriginalAssetDiscovered({
          ...payload,
          normalizedUrl: payload?.discoveredUrl || ""
        });
      };
      const handleActionCriticalFailure = () => {
        showUserNotice(targetWindow, GWR_ORIGINAL_ASSET_REFRESH_MESSAGE);
      };
      const storeProcessedBlobResolved = (payload = {}, {
        slot = "full",
        processedFrom = "processed"
      } = {}) => {
        const resolvedActionContext = resolveCompatibleActionContextFromPayload(payload);
        const processedBlob = payload?.processedBlob instanceof Blob ? payload.processedBlob : null;
        const sessionKey = (typeof resolvedActionContext?.sessionKey === "string" ? resolvedActionContext.sessionKey.trim() : "") || imageSessionStore.getOrCreateByAssetIds(resolvedActionContext?.assetIds);
        const urlApi = targetWindow?.URL || globalThis.URL;
        if (!processedBlob || !sessionKey || typeof urlApi?.createObjectURL !== "function") {
          return;
        }
        const previousObjectUrl = imageSessionStore.getSnapshot(sessionKey)?.derived?.processedSlots?.[slot]?.objectUrl || "";
        const nextObjectUrl = urlApi.createObjectURL(processedBlob);
        if (previousObjectUrl && previousObjectUrl !== nextObjectUrl && typeof urlApi?.revokeObjectURL === "function") {
          urlApi.revokeObjectURL(previousObjectUrl);
        }
        imageSessionStore.updateProcessedResult(sessionKey, {
          slot,
          objectUrl: nextObjectUrl,
          blob: processedBlob,
          blobType: processedBlob.type || "image/png",
          processedFrom
        });
      };
      const handlePreviewBlobResolved = (payload = {}) => {
        const resolvedActionContext = resolveCompatibleActionContextFromPayload(payload);
        const sessionKey = (typeof resolvedActionContext?.sessionKey === "string" ? resolvedActionContext.sessionKey.trim() : "") || imageSessionStore.getOrCreateByAssetIds(resolvedActionContext?.assetIds);
        if (sessionKey && typeof payload?.normalizedUrl === "string" && payload.normalizedUrl.trim()) {
          imageSessionStore.updateSourceSnapshot?.(sessionKey, {
            sourceUrl: payload.normalizedUrl.trim(),
            isPreviewSource: true
          });
        }
        storeProcessedBlobResolved(payload, {
          slot: "preview",
          processedFrom: "request-preview"
        });
        bindProcessedPreviewResultToImages({
          root: targetWindow.document || document,
          sourceUrl: payload?.normalizedUrl || "",
          processedBlob: payload?.processedBlob || null,
          processedMeta: null,
          processedFrom: "request-preview",
          sessionKey,
          assetIds: resolvedActionContext?.assetIds || null,
          imageSessionStore
        });
      };
      const resolvePreviewRequestActionContext = ({ url = "", normalizedUrl = "" } = {}) => {
        const targetUrl = normalizedUrl || url;
        const imageElement = findGeminiImageElementForSourceUrl(targetWindow.document || document, targetUrl);
        return actionContextResolver.resolveActionContext(imageElement, {
          action: "display"
        });
      };
      const handleProcessedBlobResolved = (payload = {}) => {
        const resolvedActionContext = resolveCompatibleActionContextFromPayload(payload);
        storeProcessedBlobResolved(payload, {
          slot: "full",
          processedFrom: resolvedActionContext?.action === "clipboard" ? "original-clipboard" : "original-download"
        });
      };
      const downloadIntentGate = createGeminiDownloadIntentGate({
        targetWindow,
        resolveActionContext: (target) => {
          const intentAction = resolveGeminiActionKind(target) || "clipboard";
          const sessionContext = actionContextResolver.resolveActionContext(target, {
            action: intentAction
          });
          return {
            action: intentAction,
            target,
            assetIds: sessionContext.assetIds,
            sessionKey: sessionContext.sessionKey,
            resource: sessionContext.resource,
            imageElement: sessionContext.imageElement || actionContextResolver.resolveImageElement({
              target,
              assetIds: sessionContext.assetIds
            })
          };
        }
      });
      const downloadRpcFetch = createGeminiDownloadRpcFetchHook({
        originalFetch: targetWindow.fetch.bind(targetWindow),
        getActionContext: () => downloadIntentGate.getRecentActionContext(),
        onOriginalAssetDiscovered: handleRpcAssetDiscovered,
        logger: console
      });
      const previewFetch = createGeminiDownloadFetchHook({
        originalFetch: downloadRpcFetch,
        isTargetUrl: isGeminiDisplayPreviewAssetUrl,
        normalizeUrl: normalizeGoogleusercontentImageUrl,
        getActionContext: resolvePreviewRequestActionContext,
        processBlob: processPreviewBlobAtBestPath,
        shouldProcessRequest: ({ url = "" } = {}) => isGeminiDisplayPreviewAssetUrl(url),
        failOpenOnProcessingError: true,
        onProcessedBlobResolved: handlePreviewBlobResolved,
        logger: console
      });
      installGeminiDownloadRpcXmlHttpRequestHook(targetWindow, {
        getActionContext: () => downloadIntentGate.getRecentActionContext(),
        onOriginalAssetDiscovered: handleRpcAssetDiscovered,
        logger: console
      });
      installGeminiDownloadHook(targetWindow, {
        originalFetch: previewFetch,
        intentGate: downloadIntentGate,
        isTargetUrl: isGeminiOriginalAssetUrl,
        normalizeUrl: normalizeGoogleusercontentImageUrl,
        processBlob: removeWatermarkFromBestAvailablePath,
        onOriginalAssetDiscovered: handleOriginalAssetDiscovered,
        onProcessedBlobResolved: handleProcessedBlobResolved,
        onActionCriticalFailure: handleActionCriticalFailure,
        logger: console
      });
      const disposeClipboardHook = installGeminiClipboardImageHook(targetWindow, {
        getActionContext: () => downloadIntentGate.getRecentActionContext(),
        imageSessionStore,
        onActionCriticalFailure: handleActionCriticalFailure,
        processClipboardImageBlob: (blob, { actionContext } = {}) => processClipboardImageBlobAtBestPath(blob, { actionContext }),
        resolveImageElement: (actionContext) => actionContextResolver.resolveImageElement(actionContext),
        logger: console
      });
      await requestGeminiConversationHistoryBindings({
        targetWindow,
        fetchImpl: targetWindow.fetch.bind(targetWindow),
        onResponseText: async (responseText, { request }) => {
          for (const binding of extractGeminiAssetBindingsFromResponseText(responseText)) {
            handleRpcAssetDiscovered(appendCompatibleActionContext({
              rpcUrl: request?.url || "",
              discoveredUrl: binding.discoveredUrl
            }, {
              assetIds: binding.assetIds
            }));
          }
        },
        logger: console
      });
      await processingRuntime.initialize();
      await installInjectedPageProcessorRuntime({
        targetWindow,
        scriptCode: USERSCRIPT_PAGE_PROCESSOR_CODE,
        logger: console
      });
      pageProcessClient = createPageProcessBridgeClient({
        targetWindow,
        logger: console,
        fallbackProcessWatermarkBlob: processingRuntime.processWatermarkBlob,
        fallbackRemoveWatermarkFromBlob: processingRuntime.removeWatermarkFromBlob
      });
      installUserscriptProcessBridge({
        targetWindow,
        processWatermarkBlob: processingRuntime.processWatermarkBlob,
        removeWatermarkFromBlob: processingRuntime.removeWatermarkFromBlob,
        logger: console
      });
      const pageImageReplacementController = isPreviewReplacementEnabled(targetWindow) ? installPageImageReplacement({
        imageSessionStore,
        logger: console,
        fetchPreviewBlob: previewBlobFetcher,
        processWatermarkBlobImpl: pageProcessClient.processWatermarkBlob,
        removeWatermarkFromBlobImpl: pageProcessClient.removeWatermarkFromBlob
      }) : null;
      window.addEventListener("beforeunload", () => {
        pageImageReplacementController?.dispose?.();
        disposeClipboardHook();
        downloadIntentGate.dispose();
        processingRuntime.dispose("beforeunload");
      });
      console.log("[Gemini Watermark Remover] Ready");
    } catch (error) {
      console.error("[Gemini Watermark Remover] Initialization failed:", error);
    }
  }
  if (true) {
    void initGeminiWatermarkRemoverUserscript();
  }
})();