From 788160fa1a4f103d3a4c0e0dab0a2f93ae70c8e7 Mon Sep 17 00:00:00 2001 From: rcholic Date: Mon, 22 Dec 2025 04:21:23 +0000 Subject: [PATCH] chore: sync extension files from sentience-chrome v0.9.0 --- sentience/extension/background.js | 64 +-- sentience/extension/content.js | 23 +- sentience/extension/injected_api.js | 439 +-------------- sentience/extension/manifest.json | 31 +- sentience/extension/pkg/sentience_core.d.ts | 43 +- sentience/extension/pkg/sentience_core.js | 514 +----------------- .../extension/pkg/sentience_core_bg.wasm | Bin 98167 -> 9 bytes .../extension/pkg/sentience_core_bg.wasm.d.ts | 10 +- 8 files changed, 7 insertions(+), 1117 deletions(-) diff --git a/sentience/extension/background.js b/sentience/extension/background.js index bb5ad6f..8537307 100644 --- a/sentience/extension/background.js +++ b/sentience/extension/background.js @@ -1,63 +1 @@ -// background.js - Service Worker for screenshot capture -// Chrome extensions can only capture screenshots from the background script -// Listen for screenshot requests from content script -chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { - if (request.action === 'captureScreenshot') { - handleScreenshotCapture(sender.tab.id, request.options) - .then(screenshot => { - sendResponse({ success: true, screenshot }); - }) - .catch(error => { - console.error('[Sentience] Screenshot capture failed:', error); - sendResponse({ - success: false, - error: error.message || 'Screenshot capture failed' - }); - }); - - // Return true to indicate we'll send response asynchronously - return true; - } -}); - -/** - * Capture screenshot of the active tab - * @param {number} tabId - Tab ID to capture - * @param {Object} options - Screenshot options - * @returns {Promise} Base64-encoded PNG data URL - */ -async function handleScreenshotCapture(tabId, options = {}) { - try { - const { - format = 'png', // 'png' or 'jpeg' - quality = 90 // JPEG quality (0-100), ignored for PNG - } = options; - - // Capture visible tab as data URL - const dataUrl = await chrome.tabs.captureVisibleTab(null, { - format: format, - quality: quality - }); - - console.log(`[Sentience] Screenshot captured: ${format}, size: ${dataUrl.length} bytes`); - - return dataUrl; - } catch (error) { - console.error('[Sentience] Screenshot error:', error); - throw new Error(`Failed to capture screenshot: ${error.message}`); - } -} - -/** - * Optional: Add viewport-specific capture (requires additional setup) - * This would allow capturing specific regions, not just visible area - */ -async function captureRegion(tabId, region) { - // For region capture, you'd need to: - // 1. Capture full visible tab - // 2. Use Canvas API to crop to region - // 3. Return cropped image - - // Not implemented in this basic version - throw new Error('Region capture not yet implemented'); -} +Not Found \ No newline at end of file diff --git a/sentience/extension/content.js b/sentience/extension/content.js index de24fa5..8537307 100644 --- a/sentience/extension/content.js +++ b/sentience/extension/content.js @@ -1,22 +1 @@ -// content.js - ISOLATED WORLD -console.log('[Sentience] Bridge loaded.'); - -// 1. Pass Extension ID to Main World (So WASM knows where to load from) -document.documentElement.dataset.sentienceExtensionId = chrome.runtime.id; - -// 2. Proxy for Screenshots (The only thing Isolated World needs to do) -window.addEventListener('message', (event) => { - // Security check: only accept messages from same window - if (event.source !== window || event.data.type !== 'SENTIENCE_SCREENSHOT_REQUEST') return; - - chrome.runtime.sendMessage( - { action: 'captureScreenshot', options: event.data.options }, - (response) => { - window.postMessage({ - type: 'SENTIENCE_SCREENSHOT_RESULT', - requestId: event.data.requestId, - screenshot: response?.success ? response.screenshot : null - }, '*'); - } - ); -}); \ No newline at end of file +Not Found \ No newline at end of file diff --git a/sentience/extension/injected_api.js b/sentience/extension/injected_api.js index 8f6eb15..8537307 100644 --- a/sentience/extension/injected_api.js +++ b/sentience/extension/injected_api.js @@ -1,438 +1 @@ -// injected_api.js - MAIN WORLD -(async () => { - // 1. Get Extension ID (Wait for content.js to set it) - const getExtensionId = () => document.documentElement.dataset.sentienceExtensionId; - let extId = getExtensionId(); - - // Safety poller for async loading race conditions - if (!extId) { - await new Promise(resolve => { - const check = setInterval(() => { - extId = getExtensionId(); - if (extId) { clearInterval(check); resolve(); } - }, 50); - }); - } - - const EXT_URL = `chrome-extension://${extId}/`; - console.log('[SentienceAPI.com] Initializing from:', EXT_URL); - - window.sentience_registry = []; - let wasmModule = null; - - // --- HELPER: Deep Walker --- - function getAllElements(root = document) { - const elements = []; - const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT); - while(walker.nextNode()) { - const node = walker.currentNode; - elements.push(node); - if (node.shadowRoot) elements.push(...getAllElements(node.shadowRoot)); - } - return elements; - } - - // --- HELPER: Smart Text Extractor --- - function getText(el) { - if (el.getAttribute('aria-label')) return el.getAttribute('aria-label'); - if (el.tagName === 'INPUT') return el.value || el.placeholder || ''; - if (el.tagName === 'IMG') return el.alt || ''; - return (el.innerText || '').replace(/\s+/g, ' ').trim().substring(0, 100); - } - - // --- HELPER: Viewport Check (NEW) --- - function isInViewport(rect) { - return ( - rect.top < window.innerHeight && rect.bottom > 0 && - rect.left < window.innerWidth && rect.right > 0 - ); - } - - // --- HELPER: Occlusion Check (NEW) --- - function isOccluded(el, rect) { - // Fast center-point check - const cx = rect.x + rect.width / 2; - const cy = rect.y + rect.height / 2; - - // If point is off-screen, elementFromPoint returns null, assume NOT occluded for safety - if (cx < 0 || cx > window.innerWidth || cy < 0 || cy > window.innerHeight) return false; - - const topEl = document.elementFromPoint(cx, cy); - if (!topEl) return false; - - // It's visible if the top element is us, or contains us, or we contain it - return !(el === topEl || el.contains(topEl) || topEl.contains(el)); - } - - // --- HELPER: Screenshot Bridge --- - function captureScreenshot(options) { - return new Promise(resolve => { - const requestId = Math.random().toString(36).substring(7); - const listener = (e) => { - if (e.data.type === 'SENTIENCE_SCREENSHOT_RESULT' && e.data.requestId === requestId) { - window.removeEventListener('message', listener); - resolve(e.data.screenshot); - } - }; - window.addEventListener('message', listener); - window.postMessage({ type: 'SENTIENCE_SCREENSHOT_REQUEST', requestId, options }, '*'); - }); - } - - // --- HELPER: Get Raw HTML for Turndown/External Processing --- - // Returns cleaned HTML that can be processed by Turndown or other Node.js libraries - function getRawHTML(root) { - const sourceRoot = root || document.body; - const clone = sourceRoot.cloneNode(true); - - // Remove unwanted elements by tag name (simple and reliable) - const unwantedTags = ['nav', 'footer', 'header', 'script', 'style', 'noscript', 'iframe', 'svg']; - unwantedTags.forEach(tag => { - const elements = clone.querySelectorAll(tag); - elements.forEach(el => { - if (el.parentNode) { - el.parentNode.removeChild(el); - } - }); - }); - - // Remove invisible elements from original DOM and find matching ones in clone - // We'll use a simple approach: mark elements in original, then remove from clone - const invisibleSelectors = []; - const walker = document.createTreeWalker( - sourceRoot, - NodeFilter.SHOW_ELEMENT, - null, - false - ); - - let node; - while (node = walker.nextNode()) { - const tag = node.tagName.toLowerCase(); - if (tag === 'head' || tag === 'title') continue; - - const style = window.getComputedStyle(node); - if (style.display === 'none' || style.visibility === 'hidden' || - (node.offsetWidth === 0 && node.offsetHeight === 0)) { - // Build a selector for this element - let selector = tag; - if (node.id) { - selector = `#${node.id}`; - } else if (node.className && typeof node.className === 'string') { - const classes = node.className.trim().split(/\s+/).filter(c => c); - if (classes.length > 0) { - selector = `${tag}.${classes.join('.')}`; - } - } - invisibleSelectors.push(selector); - } - } - - // Remove invisible elements from clone (if we can find them) - invisibleSelectors.forEach(selector => { - try { - const elements = clone.querySelectorAll(selector); - elements.forEach(el => { - if (el.parentNode) { - el.parentNode.removeChild(el); - } - }); - } catch (e) { - // Invalid selector, skip - } - }); - - // Resolve relative URLs in links and images - const links = clone.querySelectorAll('a[href]'); - links.forEach(link => { - const href = link.getAttribute('href'); - if (href && !href.startsWith('http://') && !href.startsWith('https://') && !href.startsWith('#')) { - try { - link.setAttribute('href', new URL(href, document.baseURI).href); - } catch (e) { - // Keep original href if URL parsing fails - } - } - }); - - const images = clone.querySelectorAll('img[src]'); - images.forEach(img => { - const src = img.getAttribute('src'); - if (src && !src.startsWith('http://') && !src.startsWith('https://') && !src.startsWith('data:')) { - try { - img.setAttribute('src', new URL(src, document.baseURI).href); - } catch (e) { - // Keep original src if URL parsing fails - } - } - }); - - return clone.innerHTML; - } - - // --- HELPER: Simple Markdown Converter (Lightweight) --- - // Uses getRawHTML() and then converts to markdown for consistency - function convertToMarkdown(root) { - // Get cleaned HTML first - const rawHTML = getRawHTML(root); - - // Create a temporary container to parse the HTML - const tempDiv = document.createElement('div'); - tempDiv.innerHTML = rawHTML; - - let markdown = ''; - let insideLink = false; // Track if we're inside an tag - - function walk(node) { - if (node.nodeType === Node.TEXT_NODE) { - // Keep minimal whitespace to prevent words merging - // Strip newlines inside text nodes to prevent broken links - const text = node.textContent.replace(/[\r\n]+/g, ' ').replace(/\s+/g, ' '); - if (text.trim()) markdown += text; - return; - } - - if (node.nodeType !== Node.ELEMENT_NODE) return; - - const tag = node.tagName.toLowerCase(); - - // Prefix - if (tag === 'h1') markdown += '\n# '; - if (tag === 'h2') markdown += '\n## '; - if (tag === 'h3') markdown += '\n### '; - if (tag === 'li') markdown += '\n- '; - // IMPORTANT: Don't add newlines for block elements when inside a link - if (!insideLink && (tag === 'p' || tag === 'div' || tag === 'br')) markdown += '\n'; - if (tag === 'strong' || tag === 'b') markdown += '**'; - if (tag === 'em' || tag === 'i') markdown += '_'; - if (tag === 'a') { - markdown += '['; - insideLink = true; // Mark that we're entering a link - } - - // Children - if (node.shadowRoot) { - Array.from(node.shadowRoot.childNodes).forEach(walk); - } else { - node.childNodes.forEach(walk); - } - - // Suffix - if (tag === 'a') { - // Get absolute URL from href attribute (already resolved in getRawHTML) - const href = node.getAttribute('href'); - if (href) markdown += `](${href})`; - else markdown += ']'; - insideLink = false; // Mark that we're exiting the link - } - if (tag === 'strong' || tag === 'b') markdown += '**'; - if (tag === 'em' || tag === 'i') markdown += '_'; - // IMPORTANT: Don't add newlines for block elements when inside a link (suffix section too) - if (!insideLink && (tag === 'h1' || tag === 'h2' || tag === 'h3' || tag === 'p' || tag === 'div')) markdown += '\n'; - } - - walk(tempDiv); - - // Cleanup: remove excessive newlines - return markdown.replace(/\n{3,}/g, '\n\n').trim(); - } - - // --- HELPER: Raw Text Extractor --- - function convertToText(root) { - let text = ''; - function walk(node) { - if (node.nodeType === Node.TEXT_NODE) { - text += node.textContent; - return; - } - if (node.nodeType === Node.ELEMENT_NODE) { - const tag = node.tagName.toLowerCase(); - // Skip nav/footer/header/script/style/noscript/iframe/svg - if (['nav', 'footer', 'header', 'script', 'style', 'noscript', 'iframe', 'svg'].includes(tag)) return; - - const style = window.getComputedStyle(node); - if (style.display === 'none' || style.visibility === 'hidden') return; - - // Block level elements get a newline - const isBlock = style.display === 'block' || style.display === 'flex' || node.tagName === 'P' || node.tagName === 'DIV'; - if (isBlock) text += ' '; - - if (node.shadowRoot) { - Array.from(node.shadowRoot.childNodes).forEach(walk); - } else { - node.childNodes.forEach(walk); - } - - if (isBlock) text += '\n'; - } - } - walk(root || document.body); - return text.replace(/\n{3,}/g, '\n\n').trim(); - } - - // Load WASM - try { - const wasmUrl = EXT_URL + 'pkg/sentience_core.js'; - const module = await import(wasmUrl); - const imports = { - env: { - js_click_element: (id) => { - const el = window.sentience_registry[id]; - if (el) { el.click(); el.focus(); } - } - } - }; - await module.default(undefined, imports); - wasmModule = module; - - // Verify functions are available - if (!wasmModule.analyze_page) { - console.error('[SentienceAPI.com] WASM functions not available'); - } else { - console.log('[SentienceAPI.com] ✓ API Ready!'); - console.log('[SentienceAPI.com] Available functions:', Object.keys(wasmModule).filter(k => k.startsWith('analyze'))); - } - } catch (e) { - console.error('[SentienceAPI.com] WASM Load Failed:', e); - } - - // REMOVED: Headless detection - no longer needed (license system removed) - - // --- GLOBAL API --- - window.sentience = { - // 1. Geometry snapshot (existing) - snapshot: async (options = {}) => { - if (!wasmModule) return { error: "WASM not ready" }; - - const rawData = []; - // Remove textMap as we include text in rawData - window.sentience_registry = []; - - const nodes = getAllElements(); - - nodes.forEach((el, idx) => { - if (!el.getBoundingClientRect) return; - const rect = el.getBoundingClientRect(); - if (rect.width < 5 || rect.height < 5) return; - - window.sentience_registry[idx] = el; - - // Calculate properties for Fat Payload - const textVal = getText(el); - const inView = isInViewport(rect); - // Only check occlusion if visible (Optimization) - const occluded = inView ? isOccluded(el, rect) : false; - - const style = window.getComputedStyle(el); - rawData.push({ - id: idx, - tag: el.tagName.toLowerCase(), - rect: { x: rect.x, y: rect.y, width: rect.width, height: rect.height }, - styles: { - display: style.display, - visibility: style.visibility, - opacity: style.opacity, - z_index: style.zIndex || "0", - bg_color: style.backgroundColor, - color: style.color, - cursor: style.cursor, - font_weight: style.fontWeight, - font_size: style.fontSize - }, - attributes: { - role: el.getAttribute('role'), - type_: el.getAttribute('type'), - aria_label: el.getAttribute('aria-label'), - href: el.href, - class: el.className - }, - // Pass to WASM - text: textVal || null, - in_viewport: inView, - is_occluded: occluded - }); - }); - - // FREE TIER: No license checks - extension provides basic geometry data - // Pro/Enterprise tiers will be handled server-side (future work) - - // 1. Get Geometry from WASM - let result; - try { - if (options.limit || options.filter) { - result = wasmModule.analyze_page_with_options(rawData, options); - } else { - result = wasmModule.analyze_page(rawData); - } - } catch (e) { - return { status: "error", error: e.message }; - } - - // Hydration step removed as WASM now returns populated structs - - // Capture Screenshot - let screenshot = null; - if (options.screenshot) { - screenshot = await captureScreenshot(options.screenshot); - } - - // C. Clean up null/undefined fields to save tokens (Your existing cleaner) - const cleanElement = (obj) => { - if (Array.isArray(obj)) { - return obj.map(cleanElement); - } else if (obj !== null && typeof obj === 'object') { - const cleaned = {}; - for (const [key, value] of Object.entries(obj)) { - // Keep boolean false for critical flags if desired, or remove to match Rust defaults - if (value !== null && value !== undefined) { - cleaned[key] = cleanElement(value); - } - } - return cleaned; - } - return obj; - }; - - const cleanedElements = cleanElement(result); - - return { - status: "success", - url: window.location.href, - elements: cleanedElements, - raw_elements: rawData, // Include raw data for server-side processing (safe to expose - no proprietary value) - screenshot: screenshot - }; - }, - // 2. Read Content (New) - read: (options = {}) => { - const format = options.format || 'raw'; // 'raw', 'text', or 'markdown' - let content; - - if (format === 'raw') { - // Return raw HTML suitable for Turndown or other Node.js libraries - content = getRawHTML(document.body); - } else if (format === 'markdown') { - // Return lightweight markdown conversion - content = convertToMarkdown(document.body); - } else { - // Default to text - content = convertToText(document.body); - } - - return { - status: "success", - url: window.location.href, - format: format, - content: content, - length: content.length - }; - }, - - // 3. Action - click: (id) => { - const el = window.sentience_registry[id]; - if (el) { el.click(); el.focus(); return true; } - return false; - } - }; -})(); \ No newline at end of file +Not Found \ No newline at end of file diff --git a/sentience/extension/manifest.json b/sentience/extension/manifest.json index 9d979cb..8537307 100644 --- a/sentience/extension/manifest.json +++ b/sentience/extension/manifest.json @@ -1,30 +1 @@ -{ - "manifest_version": 3, - "name": "Sentience Semantic Visual Grounding Extractor", - "version": "1.0.5", - "description": "Extract semantic visual grounding data from web pages", - "permissions": ["activeTab", "scripting"], - "host_permissions": [""], - "web_accessible_resources": [ - { - "resources": ["pkg/*"], - "matches": [""] - } - ], - "content_scripts": [ - { - "matches": [""], - "js": ["content.js"], - "run_at": "document_start" - }, - { - "matches": [""], - "js": ["injected_api.js"], - "run_at": "document_idle", - "world": "MAIN" - } - ], - "content_security_policy": { - "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self'" - } -} \ No newline at end of file +Not Found \ No newline at end of file diff --git a/sentience/extension/pkg/sentience_core.d.ts b/sentience/extension/pkg/sentience_core.d.ts index 017160d..8537307 100644 --- a/sentience/extension/pkg/sentience_core.d.ts +++ b/sentience/extension/pkg/sentience_core.d.ts @@ -1,42 +1 @@ -/* tslint:disable */ -/* eslint-disable */ - -export function analyze_page(val: any): any; - -export function analyze_page_with_options(val: any, options: any): any; - -export function decide_and_act(_raw_elements: any): void; - -export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; - -export interface InitOutput { - readonly memory: WebAssembly.Memory; - readonly analyze_page: (a: number) => number; - readonly analyze_page_with_options: (a: number, b: number) => number; - readonly decide_and_act: (a: number) => void; - readonly __wbindgen_export: (a: number, b: number) => number; - readonly __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; - readonly __wbindgen_export3: (a: number) => void; -} - -export type SyncInitInput = BufferSource | WebAssembly.Module; - -/** -* Instantiates the given `module`, which can either be bytes or -* a precompiled `WebAssembly.Module`. -* -* @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated. -* -* @returns {InitOutput} -*/ -export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput; - -/** -* If `module_or_path` is {RequestInfo} or {URL}, makes a request and -* for everything else, calls `WebAssembly.instantiate` directly. -* -* @param {{ module_or_path: InitInput | Promise }} module_or_path - Passing `InitInput` directly is deprecated. -* -* @returns {Promise} -*/ -export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise } | InitInput | Promise): Promise; +Not Found \ No newline at end of file diff --git a/sentience/extension/pkg/sentience_core.js b/sentience/extension/pkg/sentience_core.js index bb44be7..8537307 100644 --- a/sentience/extension/pkg/sentience_core.js +++ b/sentience/extension/pkg/sentience_core.js @@ -1,513 +1 @@ -let wasm; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -function debugString(val) { - // primitive types - const type = typeof val; - if (type == 'number' || type == 'boolean' || val == null) { - return `${val}`; - } - if (type == 'string') { - return `"${val}"`; - } - if (type == 'symbol') { - const description = val.description; - if (description == null) { - return 'Symbol'; - } else { - return `Symbol(${description})`; - } - } - if (type == 'function') { - const name = val.name; - if (typeof name == 'string' && name.length > 0) { - return `Function(${name})`; - } else { - return 'Function'; - } - } - // objects - if (Array.isArray(val)) { - const length = val.length; - let debug = '['; - if (length > 0) { - debug += debugString(val[0]); - } - for(let i = 1; i < length; i++) { - debug += ', ' + debugString(val[i]); - } - debug += ']'; - return debug; - } - // Test for built-in - const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); - let className; - if (builtInMatches && builtInMatches.length > 1) { - className = builtInMatches[1]; - } else { - // Failed to match the standard '[object ClassName]' - return toString.call(val); - } - if (className == 'Object') { - // we're a user defined class or Object - // JSON.stringify avoids problems with cycles, and is generally much - // easier than looping through ownProperties of `val`. - try { - return 'Object(' + JSON.stringify(val) + ')'; - } catch (_) { - return 'Object'; - } - } - // errors - if (val instanceof Error) { - return `${val.name}: ${val.message}\n${val.stack}`; - } - // TODO we could test for more things here, like `Set`s and `Map`s. - return className; -} - -function dropObject(idx) { - if (idx < 132) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function getArrayU8FromWasm0(ptr, len) { - ptr = ptr >>> 0; - return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); -} - -let cachedDataViewMemory0 = null; -function getDataViewMemory0() { - if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { - cachedDataViewMemory0 = new DataView(wasm.memory.buffer); - } - return cachedDataViewMemory0; -} - -function getStringFromWasm0(ptr, len) { - ptr = ptr >>> 0; - return decodeText(ptr, len); -} - -let cachedUint8ArrayMemory0 = null; -function getUint8ArrayMemory0() { - if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { - cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); - } - return cachedUint8ArrayMemory0; -} - -function getObject(idx) { return heap[idx]; } - -function handleError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - wasm.__wbindgen_export3(addHeapObject(e)); - } -} - -let heap = new Array(128).fill(undefined); -heap.push(undefined, null, true, false); - -let heap_next = heap.length; - -function isLikeNone(x) { - return x === undefined || x === null; -} - -function passStringToWasm0(arg, malloc, realloc) { - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length, 1) >>> 0; - getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - - let len = arg.length; - let ptr = malloc(len, 1) >>> 0; - - const mem = getUint8ArrayMemory0(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; - } - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; - const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); - const ret = cachedTextEncoder.encodeInto(arg, view); - - offset += ret.written; - ptr = realloc(ptr, len, offset, 1) >>> 0; - } - - WASM_VECTOR_LEN = offset; - return ptr; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} - -let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); -cachedTextDecoder.decode(); -const MAX_SAFARI_DECODE_BYTES = 2146435072; -let numBytesDecoded = 0; -function decodeText(ptr, len) { - numBytesDecoded += len; - if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { - cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - cachedTextDecoder.decode(); - numBytesDecoded = len; - } - return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); -} - -const cachedTextEncoder = new TextEncoder(); - -if (!('encodeInto' in cachedTextEncoder)) { - cachedTextEncoder.encodeInto = function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length - }; - } -} - -let WASM_VECTOR_LEN = 0; - -/** - * @param {any} val - * @returns {any} - */ -export function analyze_page(val) { - const ret = wasm.analyze_page(addHeapObject(val)); - return takeObject(ret); -} - -/** - * @param {any} val - * @param {any} options - * @returns {any} - */ -export function analyze_page_with_options(val, options) { - const ret = wasm.analyze_page_with_options(addHeapObject(val), addHeapObject(options)); - return takeObject(ret); -} - -/** - * @param {any} _raw_elements - */ -export function decide_and_act(_raw_elements) { - wasm.decide_and_act(addHeapObject(_raw_elements)); -} - -const EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']); - -async function __wbg_load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === 'function') { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type); - - if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - - } else { - throw e; - } - } - } - - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module, imports); - - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } else { - return instance; - } - } -} - -function __wbg_get_imports() { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbg_Error_52673b7de5a0ca89 = function(arg0, arg1) { - const ret = Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_Number_2d1dcfcf4ec51736 = function(arg0) { - const ret = Number(getObject(arg0)); - return ret; - }; - imports.wbg.__wbg___wbindgen_bigint_get_as_i64_6e32f5e6aff02e1d = function(arg0, arg1) { - const v = getObject(arg1); - const ret = typeof(v) === 'bigint' ? v : undefined; - getDataViewMemory0().setBigInt64(arg0 + 8 * 1, isLikeNone(ret) ? BigInt(0) : ret, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); - }; - imports.wbg.__wbg___wbindgen_boolean_get_dea25b33882b895b = function(arg0) { - const v = getObject(arg0); - const ret = typeof(v) === 'boolean' ? v : undefined; - return isLikeNone(ret) ? 0xFFFFFF : ret ? 1 : 0; - }; - imports.wbg.__wbg___wbindgen_debug_string_adfb662ae34724b6 = function(arg0, arg1) { - const ret = debugString(getObject(arg1)); - const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2); - const len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }; - imports.wbg.__wbg___wbindgen_in_0d3e1e8f0c669317 = function(arg0, arg1) { - const ret = getObject(arg0) in getObject(arg1); - return ret; - }; - imports.wbg.__wbg___wbindgen_is_bigint_0e1a2e3f55cfae27 = function(arg0) { - const ret = typeof(getObject(arg0)) === 'bigint'; - return ret; - }; - imports.wbg.__wbg___wbindgen_is_function_8d400b8b1af978cd = function(arg0) { - const ret = typeof(getObject(arg0)) === 'function'; - return ret; - }; - imports.wbg.__wbg___wbindgen_is_object_ce774f3490692386 = function(arg0) { - const val = getObject(arg0); - const ret = typeof(val) === 'object' && val !== null; - return ret; - }; - imports.wbg.__wbg___wbindgen_is_undefined_f6b95eab589e0269 = function(arg0) { - const ret = getObject(arg0) === undefined; - return ret; - }; - imports.wbg.__wbg___wbindgen_jsval_eq_b6101cc9cef1fe36 = function(arg0, arg1) { - const ret = getObject(arg0) === getObject(arg1); - return ret; - }; - imports.wbg.__wbg___wbindgen_jsval_loose_eq_766057600fdd1b0d = function(arg0, arg1) { - const ret = getObject(arg0) == getObject(arg1); - return ret; - }; - imports.wbg.__wbg___wbindgen_number_get_9619185a74197f95 = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof(obj) === 'number' ? obj : undefined; - getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); - }; - imports.wbg.__wbg___wbindgen_string_get_a2a31e16edf96e42 = function(arg0, arg1) { - const obj = getObject(arg1); - const ret = typeof(obj) === 'string' ? obj : undefined; - var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2); - var len1 = WASM_VECTOR_LEN; - getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); - getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }; - imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function(arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - imports.wbg.__wbg_call_abb4ff46ce38be40 = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg0).call(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_done_62ea16af4ce34b24 = function(arg0) { - const ret = getObject(arg0).done; - return ret; - }; - imports.wbg.__wbg_get_6b7bd52aca3f9671 = function(arg0, arg1) { - const ret = getObject(arg0)[arg1 >>> 0]; - return addHeapObject(ret); - }; - imports.wbg.__wbg_get_af9dab7e9603ea93 = function() { return handleError(function (arg0, arg1) { - const ret = Reflect.get(getObject(arg0), getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_get_with_ref_key_1dc361bd10053bfe = function(arg0, arg1) { - const ret = getObject(arg0)[getObject(arg1)]; - return addHeapObject(ret); - }; - imports.wbg.__wbg_instanceof_ArrayBuffer_f3320d2419cd0355 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof ArrayBuffer; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_instanceof_Uint8Array_da54ccc9d3e09434 = function(arg0) { - let result; - try { - result = getObject(arg0) instanceof Uint8Array; - } catch (_) { - result = false; - } - const ret = result; - return ret; - }; - imports.wbg.__wbg_isArray_51fd9e6422c0a395 = function(arg0) { - const ret = Array.isArray(getObject(arg0)); - return ret; - }; - imports.wbg.__wbg_isSafeInteger_ae7d3f054d55fa16 = function(arg0) { - const ret = Number.isSafeInteger(getObject(arg0)); - return ret; - }; - imports.wbg.__wbg_iterator_27b7c8b35ab3e86b = function() { - const ret = Symbol.iterator; - return addHeapObject(ret); - }; - imports.wbg.__wbg_js_click_element_2fe1e774f3d232c7 = function(arg0) { - js_click_element(arg0); - }; - imports.wbg.__wbg_length_22ac23eaec9d8053 = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_length_d45040a40c570362 = function(arg0) { - const ret = getObject(arg0).length; - return ret; - }; - imports.wbg.__wbg_new_1ba21ce319a06297 = function() { - const ret = new Object(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_25f239778d6112b9 = function() { - const ret = new Array(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_new_6421f6084cc5bc5a = function(arg0) { - const ret = new Uint8Array(getObject(arg0)); - return addHeapObject(ret); - }; - imports.wbg.__wbg_next_138a17bbf04e926c = function(arg0) { - const ret = getObject(arg0).next; - return addHeapObject(ret); - }; - imports.wbg.__wbg_next_3cfe5c0fe2a4cc53 = function() { return handleError(function (arg0) { - const ret = getObject(arg0).next(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_prototypesetcall_dfe9b766cdc1f1fd = function(arg0, arg1, arg2) { - Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), getObject(arg2)); - }; - imports.wbg.__wbg_set_3f1d0b984ed272ed = function(arg0, arg1, arg2) { - getObject(arg0)[takeObject(arg1)] = takeObject(arg2); - }; - imports.wbg.__wbg_set_7df433eea03a5c14 = function(arg0, arg1, arg2) { - getObject(arg0)[arg1 >>> 0] = takeObject(arg2); - }; - imports.wbg.__wbg_value_57b7b035e117f7ee = function(arg0) { - const ret = getObject(arg0).value; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function(arg0, arg1) { - // Cast intrinsic for `Ref(String) -> Externref`. - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_cast_4625c577ab2ec9ee = function(arg0) { - // Cast intrinsic for `U64 -> Externref`. - const ret = BigInt.asUintN(64, arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) { - // Cast intrinsic for `F64 -> Externref`. - const ret = arg0; - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }; - - return imports; -} - -function __wbg_finalize_init(instance, module) { - wasm = instance.exports; - __wbg_init.__wbindgen_wasm_module = module; - cachedDataViewMemory0 = null; - cachedUint8ArrayMemory0 = null; - - - - return wasm; -} - -function initSync(module) { - if (wasm !== undefined) return wasm; - - - if (typeof module !== 'undefined') { - if (Object.getPrototypeOf(module) === Object.prototype) { - ({module} = module) - } else { - console.warn('using deprecated parameters for `initSync()`; pass a single object instead') - } - } - - const imports = __wbg_get_imports(); - if (!(module instanceof WebAssembly.Module)) { - module = new WebAssembly.Module(module); - } - const instance = new WebAssembly.Instance(module, imports); - return __wbg_finalize_init(instance, module); -} - -async function __wbg_init(module_or_path) { - if (wasm !== undefined) return wasm; - - - if (typeof module_or_path !== 'undefined') { - if (Object.getPrototypeOf(module_or_path) === Object.prototype) { - ({module_or_path} = module_or_path) - } else { - console.warn('using deprecated parameters for the initialization function; pass a single object instead') - } - } - - if (typeof module_or_path === 'undefined') { - module_or_path = new URL('sentience_core_bg.wasm', import.meta.url); - } - const imports = __wbg_get_imports(); - - if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { - module_or_path = fetch(module_or_path); - } - - const { instance, module } = await __wbg_load(await module_or_path, imports); - - return __wbg_finalize_init(instance, module); -} - -export { initSync }; -export default __wbg_init; +Not Found \ No newline at end of file diff --git a/sentience/extension/pkg/sentience_core_bg.wasm b/sentience/extension/pkg/sentience_core_bg.wasm index 10a312c90c6c49bbb03136420025ad179f22abfc..8537307691275bdf5dd2c646e3775649643ccecf 100644 GIT binary patch literal 9 QcmeavFHvyIFU?B<01xB?P5=M^ literal 98167 zcmdqK51d}*S?7KJJpcd9JV^!!Bq8T{$m(E;ok=D$3GlXaW(y>xRjlap_U-!#lgtE| zNdrlyfolE?HtidgcBA5oN;O?s!5UoL7hPO&J1E&U-$Lzz8`P$;0Jxr^ZdW?+qZk(?Vf+^cK?{i zKYQ^H-yR&}lRtci$Mmkhd=z-_We+}!`sCX^NhnzYDai{-WtT)+`bJ{aB_2I`)SBim zO&m>{I+ApF*isMcD>z0G{!lff9FIa;oHocS9J5-5V^-WA6!KNUKkOe1UTl6#c<-(| zzIo?P{_dPPxO4a3yLQj+oZdVA!RdW-J2&l_9-bZ>8`-mYYSZRTyT`mhrLR!wyY@}p zF}-i+-MeO{chBvdI&k+rI}c3naRrj*?wFq2dGB3wcPeA&?DU6s4o~ggJUYBPxoh+E*3n%(V-t2J_iUS*+%-16ZFC6o*tXeW z$LQ~lokk3kyLOH2*)uXqUt4!gj|}yc*f)LO+|J?6TPKIdcJ10TG%~$y)97voYtn|5 z*t~ns^p@R2d!{!{ib@mmO9n2GleKl%zMVr%{_ynHJwv-kN4ISr9&_C#l$t9#cjtk- z@7+1Y%#RF@O;2qe-LrdSblNLw?!LugAy<0lAVj%ydjHN{qr*ePkl5~N2zz?-sB1o% z%WwP82X}${O;aq}J-hdeOz++@JVu#<8cm4%h64w{>y}NUW1Dx4O-*l^9NIm(b(?GE zZA<#S>)_5^cijPn?;M&Qp4>FOdC!(DyZ1~^ZyIw*TDC^QVRkz{G_q}IblaxQTN4sU z7Eo?%`yAAo&26K@+lIGpnH*y|jO~HI3>{0W9Gp9F*FLvACO1uP9-bZ^ot|QKOpk1G zRgyKA>t)y7cki8^+-FN_YI<_hmR*}SZ{50S*Vb)YcDb=Et;6W|d}!b9xx4P(w{z>% z$k5QPt-FSyxUsFfr(B(HT@GU(+BY@5=dOLzQ#<#J?%K9xdUDs6t=p!DHjQp`m4=p7 za?`u_?z<08Ym#AILtDm1hlch{O%3lFnsT$Vc}cZoYHS@G++qIQ;D@9mQQwkcBcq$Pz-z`PcWr{H!(P{iUk+agtM#ziELBVO zdZ}_{vsSN!%`5wYa6-zS8SatrV7nAgG2k1OR}iza{=to1_*S^?DHM zqv{17kL-U`E0s#BNaI0JF4xrxZPoi~!2tcPYFyd~s?~BSph)(=N-3;{Q~@CUuS7FJ zng8@CSA&X6z61=F>ZMXp1FTXx48xL!Lm~i&z+6;Hh4hf73=-w>BA^1L>zh}yRj=-=ai$9EJ%-&;|tBAdnY^9x?R`~!Zu^ug&5-hJT1 zf!CPaH@Wx2-!r}Qp2<6=y*~>t&wo3aoKk)XvG>bKaka zD{{m-ecwHIADHw0&|kSEag+DzGO3%rH-hSq`MwwX^;

zU$%eKZk!D{z>>!`1|3X zhA)SI82+d5kHS9)&xYs1PY1sie%wDB4E}NOTfwuze+WJs{Kw$A;B&#}gD?8O89Wo5 z32uM?ynoM6hF|p`^8Y0GeE7{*KNS9wKY2R%v*1ttsV{~<9{#=m6XBP_=YyZ|_k5rK z*Wq6Ue;K?G{(10Ih?c|RZUkLx^?ZLWZ;nAzS z_*8ASQ`q1I5m89|u&L=YOqRJEb+F!6`ChkF@B-qmdE{!Fc?Te?zB4 zBZas!6MKBVQTOUJ(s@Vlh{~&#PTESDO3wz?O2=AJ!ec%oaZNnp&n#-@s&|0fq?xPo z&Abv?GgoEJJRfAuJQwsd1C$T@HyDiPLIL@30%Yuu2Cu3eo)3V4(@{IR>hQ#|!yi5} z@#{bF%qxYX6Z45#aZ{5)wHy3v zHi9}pQ#^j*=N7!y8$R<{i{G)o-KP@tNWY?!7%15o%}8yXJAg@+qx%a0GMUz>k} zg-%@u4ze2=1Avro)}I}-ZJ&vbkBL&&wEf&n+HCq!(THu3_19^r%aWxxY#JM)k%kb^ zZ=J@$A>i(m;&6Yv>FUP~pq%j9?WkZqf!H_BpFdyT-!7%8Hi7<@z?-NYjoODh#sO^F z%27E@W({OH6;1K7IUsv+4r|zpv`_)Tk6R+1l7MB++f+6+4VuJuX)z#HRe(?@X`x${ z6vv&Y-q0*U08#%;)PB@xN%O}%7ovt^U4yWmPE!bki?vtrk4cNN&O5Co2<%^iKrQv< zk?3+3!~cy%WWNyE|MephG$g2ezh=S>uqlidAX{;_R*Kc8uqxgbu}Gd3%dM)@>cvu^ zF%8lC5-M~#|F{Uuh~ev`#9jmzqH1T=C_K0k*1-&D)E*8R3-QUKxV?6iM||V>E-hvcY7YQ_EA?b)X(`g;fKr!arCuyADkVa{ z`2Xmc7UHnAy>qFtrOV*l{DUXfZI?+vJ3P~77mC$Cudq+6#%o_RV8dJ;U1HD6S&UaO z^;fjlM0L@xu~PvgdJs$PgR9$S;5ciJ!*@!?PGR>unm&7%m1hTQuZ(79Tsf{MM!ojeRZI;jGx#x4W%dw7ad< zqAD0ubUT~6XM?-cZEn_sZEUt}!cVnr_H1lr5m#NDFRrxL)}zZK`^OZmvppnQm&0?4 z<=RDH`P-R|dV5`hY0$^JA$eVj7OkHwwg*0J*Rj^B6~|}7M|BZz>cE9;PS+r;`z;p8P@TQ z#Pecez7U=VE*j7EjF_XfNP)uhO6Zw?DLvPgrRP)-%L!pH&|V?ze-Rih^j(4EP_Kxz>X@nK*SN)XqOlOF=cWR| zqIW7%d3ZexC6$NQC%d5Sfjt^ev?|kZR+)ygR(lVO9oD|qgyXf6GuDb5MQ|QdZj|RZ z(%O_G{iCTgi{~#geq?&c|CmYxB5rKDHO{Gy2eAwV& zAjk}wCP_cMHXU^AkB*Nv^kDx}o*$L9RXXjjD;ps6H;QimffAqs?N-J!mQkF@r-Yv> zPFF3fI9aLyiBiSss!TmX-(9Q(C7Qt3r8rp~nOoXd0nJjysi84Q`AfM@qN?Qq0U=2X zUB!vPC59cz`|H}KM6MIjFb@(^uQCmatvjzlQOh{_m2|ia(%iz!kcPJTzqYdUKS$QT z5_<_meWj2GKQd)0lk%?=0*#+Gow5W9R~ctorAn(V8j-TJ{QpjAN_9?bk)Q(n4S>HM zEoqhT*VU4wVq|K@)jMQ8h$X(~4OPBaOb}fG-s58^3>Z|L5)mJhm8YZ@OBCQChH(tT zlvu__&x^O29ude~RHhib$XBv&+a0S+DOcRg5-CX`DU%QnMJ3Fgn#&*_W>;i>*Jw=! z)FN|@*+Q>~!f&TmGak~unW%YdB*t7(kH}P$q+jP(cwB*1l}8{8MgdFj%m%N&9{*bm zaq$(-9``lh)38~tUHjZ}1$ywZT!FW2!SCt9V<*XXIhcO^vID56bQDHm{PNS74=uO1 z?3;agOiHd7xa$?s74h-YsUZ@4#jj=Uf-k<0|5}nu&7|%!y~@OtYk5&wvmoUVx(JR% zrGMtr%*V#~1p#97@!GGDFcv>3NG##$e@DV-{79DY+*2g1ji1e`Jfwtm@snA?E5B?d z9!V2^a4=Zw4E_tH*-lXg|Nq|q@{R(%CvE~L{OT}q5(LpzYzlG_gpoN2u<$sCKv52X zMpRtt5ID_V4k>mW0 z$-ZpX_hQ`Wn%ax;6Kc4})LwR`c9kQi?5ypW(6wBxJltT3RlOKLjGe_bm)coEnf;-& z8Z3t_3dHxxvO#({9u)_Jr%O)!1wL6HY@(oJS)~z4IvCttHE|t(!fUq$g6V)hW@fY4 z#{ZBr$IP=aW*Np0! zW0|w1o;q794n8$uM&)YKl9Zgp*#b&TQYuDBN>3Xpoe4Ui3d3JB)lV2MHJoiwNXWTb z9L-4ZFBt{F4IEsyr-n|6|)8fnRq!41_=>corC`6`JVjiEGm#AsTW zeFkBL1vMLmJJxi7sTqtT#@}FO_hS44X8WG)fMy0rA>B;xsZqTczaB0sNh#9I^nR)1 zhNLXrUR>*_uKh`~ysk*<^4fBhq}wJ7M~3(IWr^v0bz~;^_T|xKW=g+;p{^09Wp2$| zi2q9{77BdQSOfA$Bx~19>gHY3`ei;Okv8;?MYmRl;-VQ4QiHq*M$4|(fT_lEY#`CP z;R&ody3K6G_ReJZ_yWucjoHAR3wx$h5I?g$ zvli7eVt!W&V<-kG^D|R{AriB=5hWS&qP@Xfdv|*F|gPnY z2wNWEy$+B!LpYc(Mpp{s=t|h;*U2`2rT(R)U0s&6S6n>8uWYZ)5UzJaxLh|~3Xd+1 z!r><0NQ5t@@HattuQTM$5DrBrBrdz!j1b<3d69o0+*py@w-)mf%#IgJ;VhdB;d(cO z%L--)SI9|Q2#141QAXj7l)~kA%CQs#ggn9vOIgbL#VqB@B`l?|12blxrCfO-ma-Pf z2bPjWuXGXKwe%(|#i=G2%U1e?blc-VI%5LqSnK7}Fl+s~#9D9Y2Q5O3$)nx4k>(O9 zf>;;I2AdK|?QfcApA% zp9Yqm#j+sMO^;Qg*9NnUT?k8LuEH_}-m-<>E|+Pcw?GfX5FaCtUlSe_I0kYm=u+u_ zk?9eAOjf6QF=VGzy1eviIbFgl9_j5FE73>&gqJ;Sq=}lBe#^^G$f7cgd+9@o?kJUGHT)ECah8B(S-5%GaEfvvZS75 zCHRm%`ehAz;MF*9#R;OmhA6894V0uk)>YTpVwpv2$SkmwpQWq{y%zzN2fZH841;tY zKbbDSSPL$UpUuc{Sep)zvi!_Y8xPT^0gdHCi6G4xb5r#YLw%@5zMThnyVjGc0;m-Q z^_bz9)f`}bwwhYaQsjFU15orRdTQ=w>Qod!m92bCUzi4fLHkWHUMM+}uN%P&=?H#% zLr^{DEBdzuAL+FPMqd0CAKMfo^y25we=jk;;Mr@GXg03Tbb|Q4{p~RJ27^bwJl-kX zK>XYKcF{_|MjRk!3UKvJAfa;Tj*d5rI=P>U{@iT*j+wTcW>GlX4k%xQ+Ts(xv*4Ks zTC#4+)|Em=F{sl?d^yGZL$mx{f8(0Dwrm_;2rWjX4m(@{SO`rGWlG~Q%X^?8$`ZA! z?I5aJqr{Q7ElpMvY7J0K<(c$&-68BU0MP1`Zd#+%H56rP=t`FPpkYCUDaQ%MHSSZ4 zyA-z!9q42lUL9pGjKf2n;84dST2f>nIbMTjr>?}|9QhBuz+gMV&ndlW#RP*vrBl{o zEl23%4L~3Wry{w8;SUCneR=%7tO&0eq!>r9;``2Cv2JD5g zuhvxQKOv$4EG6_3*2@6nG1Pc#46d^2TB1TF17Z(!ws#NAP>)bPZ;e?lD=3s@22V0% z#UJ%rCXY|GUQQckKdZ|2z_W;<&jF)eB*SPtLnUJl$Ov|56agg( zuU&)k1Zj#YVxjG5RJnIQ5j$TVm(vEG#L8ph!UJ-=@HW%Ib)go0r8LU6d(jjF4fq4P z0DAVo{yRHWkw}n`2)%Ym1VmOk6}RmJtU|%q-z)I>1cYh^f=J8t&6}7TAk51DWbn}K zjD`zZ6VmDgAV=>{e0jVbY9{m{`eq3LLwJa-6*Dd!RiY}5kVW!+`x7_=7#OsmloWR6 zy9;|8@_|hOtsoKXa6$KgK{0Qh;Y{PebpK^~7ktn>Gr{5q7I+Lu7IA2hd>ICr+aPXf z)t9mn^CmxekPMc$8RLTKP_e~eK5#BwZ_2x1f{R0#>64_=8Oclq6;VNGW;PjDi4%2`~gEAXaeHfwDu` z7Xt@H2NGV1ohl=tsIcD(En*FARvC5udPq%2+K>fAp&8-djt(5JC^YWSN`kTo~A}iCY(iiV0q>l4C@7%B(?yF#~uJ!Am+4ZG$&KnEscpSjdOX+|ku(coN@|E@YUC zpa1d#pYgw*=Y4+u@c!1*KI6uLQP4pElOkAJx5bIZxBJ zh&8yG^Fw?%I8^6J<%mU|V83pAtRY6MZJUimT~%goL;~ZrqWu+FF2nS*f>)DI1uX&k zf(S?zUptRA;5q9bT6ypV0RpRdz+NbILNCT*;CS{faRJ*?F8!3fKW6Dq=E^)~?@w6z z)44KF*!xqK{%o$yQ}(`K>CflNEZF;Vmi|Jn%yagB#?oKPl{sVYFIxJ`xiT;2($Cua zSu68u?)?>ef5p;Y%e|ko_j8v1M(+J}dw<>1kN>W4<=*G*eg1cas|RxLC+z)%r9YT^ zKWXnLE&bu#`$P8rkflFj@2BkjbT0jry+3B@Pv*)zX75i}`qQ~GPuTlYmi}z6%v1Kh zVCm22$}HIXbC&)>uFP}xe#X*Y%9S}|?=M>V%egWy+WT2ce>GR;ti8Wt>96I=ykhU? zEd7mKnRE93x}_f%>Bg?i>y|#xY6Rz&?#j&D`w2^b(B55{6ZU@6(jU&1IjMKHx_(@> zY-Bi>J8%)!A3eF!54jSEOK|bqSi?G%r-NRw2KY=WvIbj2iKfnx(6;vV<-!mo< z;1gV~b$Ec|B2uJ-q;dj{HdX2<&~HZ*zN*Ghxl$=JhZJN9LyExbK?FVvA%Y_xi2$@L zA`DTt3&+ARXn>)&X5^`g87VlsTHFWCze2LUPQEZc7Dyu!pN?w0GffxfTG|MxLix4G z!a`9jfs+Sg1Ji6uk_dwv@lPNqNgz3jTqjwX)LACpiK-?-!TPD_b~3muJDIcoh%-w@ zW!}iwPF8X|86rutlfe?QolNq&HfAN!!9(y3g==y0Rc~-}$w*9uL^trEos9W#4~A1g zY9}4O%rI=0pap@P5UUW`-IObif{lJ@R6F!+I|R$X%*4rAX77l2oQDdaT-&lx8Rf>O zdzxhdlv=kk!}v`o9+g-NlyX8CI)@=lyI(5S<0?eB7P`W0;}1bsDcg>Ot^jl)J9N=S z%L%%|9J<1GAaq$$sM@B9HC(NcNiVWXIP-lD-AT>U~x#7@A}uy1_#L648x< zh43!?snPNQ#*>`ReX|FO%1vNI^1V-=T3!^sF~*!-0+gttzI;=160_n#4!^ZaY0G&3UL zMvscE&nQE7^!rAG4c%94X=&>9-Pi5iR~AcJ;P&q8-tOyt-Phy3^tB zeYgK#deiY^y1uCX`*P#IzT5x1T>s!)SXa;{e!h>{&%`?E>($5Ky_$1mG9CCP5~rdQk(90C$s;fd%Z zp$J@G9c&m2Pr_JLC*>!Ke#%(N=ayw@F{%8+#NTGiZexkVspE4r5d&{2K9%-1w79pS zvG5eVx&BiA(Wx7Z@>m&+*DtPh{aE+}WA3haxlsK$S@b}NS;tL+ll8!jpz47Rt`#R- z>f(na^`jIoq=3N_7GZDuSh$dlCuIknqK)TFT8)*wsM@V#;TaoHx`5@5@#AC-10M#- z{D3erWN4O!HQ_cCKfeB$i&I(-A^L=CC zye*L9x&|Xzd4Pic_ZTUV2D9e#FFs9)gUYu(Td>i=Vc%r8BK{qWzeThQ@-2 zlUFG7vE+68SnwpTv5u~k;$`Q2LHUX#WJ;C{?DnzXdF7wA{AE%8qViw0{N)f6yo}gQ z%d%eCq6ZUay*Fx}OvzDmESTcKOx)fWsHYMOGvW8nghV4|V%g{V4 zgC$BoSW;5{*CmOJVril@{Us$$RbAAPf*dc1N%G`ZTC|CPG%lDXk2i zsbVt7nUE!lNlpbpo{8^gu25HAV65r8R(O1pU|p0*CBI^;R34M~1!IQh$1YBIMCAwU zdWh=iX0^o|u={pe3EEsK9-L{-Xg1MGPzY14B+M_p7g>gqFFX_Pm$qn1N!V9Ql@hNi zog`kJG>=+hYJt2X@mC&L@Q63=)keAdE`eJ`ofIIv z$&qBbansdT)m3=GuAJbT;vms{LUsrGI~j61B4OZ8@((!`QHoQ^zi%{<d!zl96->*U?E-`{6i)nAi-W3hIy=JSVZ)5bz^N~M7iX~jKh>?1lIlcq(w zXl*Rq&cdxt`0f5o5x6rQhZp~Y09z~ucX99J;1sYI46p~6K}anak6-p~==9l6{4hM< z=i7L>n}cqbzz?0a{>*e#u(j7=>&~c;sBMuhwUfG;;_!m+NM1tg@s9)XV%@O|u@jtA zh_wZwyyhXcb#!C10>mS|0FUJ0&GiUKtftm4nI8&(>C5JqmDtBwa2SYzY_&5@19d*> z$csNAh%Y?(PR>pt{(}ob>~sxBbVv=Y*C`o6br0zYTo39A-JJ}ax=~QXQ;Z4Ji+@-U zEY>x;IKz@`e1yL&{V&muRz73n`9op5;FO1Ix4lokd3$Vu%e80i(w-dLw$nfw2)#0m z%lDk}f!AbdOExBhkr`xo;xwAf>xm+B%g`cblMk3wy108~glv?#t*xO=nr+`WCoerB zl|&}wqi}@u?Q!u7$nC5fxyETsh?@?L;d=lLYoGHb32wjENUUgnNv1@u1r+zhE zA8v(Y6xT7Pn2`CK35(y)r zbr_ehm|qOG=OQFJwzh0;URpE=ZS~~E#cpa|UhJld)fwAdwtXn17bdlD3tE3{74U3| zLM(QerZO@#ViouLs-gu5a3C|K{8YwDxGmYX@g@r?&1JG}^RV+Y$=06cIjIg>fQ>on z>|{aG*?;K|E^%h#1*Ee8voR4+Y*Jq9hkYY({2mVloiJf607=3rSvGk-9GF#`Dw^59 z#$+$^wuw?;FOYv=Z4_8o_PjqvkQe+5T6x9aJJW$PTqD!>XfUW`S)1(Zdgd4qT?ONm zzoElXPHHT$Mm)ZqeuYCNe%Ye+nL1UvI(W$+3y0))deO&wYN|Wl%|!aKR`S*D+X4<-f2_;eQj&R^_!s^sTN+ItFU&-h)|0m0 z&&|UQ5v**BqN&$Hj)n4kJ>(7&Wg>I^I%5X@zNkO`Tc!9(N|N?fr4=pB%DkcPkZ)No z9=_k&FLI9uKAn%duQCP&`gksbDu_Sjaw;z8c^yur1cy}nEejJcPz3SMWzAVv`gC2R zp|0(T|W_aTAEFp`&M5NdUQmM$lK_7oxb?HX8OXw55yZuX!jYBxZ*;C z?UX9xQK%lZ2pmUyVA63!@>LxC<6(Kz%Z+g)R@KWw}9pA!zwL0Bi zidLNF^ncoZ?98WD%U(1?Nl` zPC}nl!odlv$;0U{g0sc(rP^LjXuALhM<;9uaEK1RBOWQsich)Jl@N{CY$hELhDMG7 z;BqpJ%jK+|>8wiXq>=*M6u$Tn!qh1ki-aL`u#>!Q^u88y`iAElVfzx1^HV`vM{Idp z>lWq!q7=;y%(TuyNTjcZa$fYLzfNw|r*LoY3c&&F0 zk3?jM$e`j$1flCmg-x%_WE?ce71;+W=Bn)DS@w!nCP)oj>wOo^Tym{T_3rDv)#=kaqlp^H?IMk+c`G|bsLRKTNQ+tb^cb~DSxEX)Rw9XzxqGi>H8Q&*LR|`VhrM45jEdOXbM%5(ym}5>YI4yM>@@q zLGaBJs?PQsHQv`G{`XjfzWFFus?0vaB|?@@ksk#Asng>#v++CkKQ4Gza;-_5`=LO{ z#5?~lXqPu{;+-d;UfwEgj2JvIROclG3p%5cm$EQACN(K+&^<~4?vAHzt{E9_4rv$(vNEb1daC2D%;Uo`i!pN&yi@w zQP9VdY8=rfsPvUb+H1mbhRBgOh8wN2d%~i=!<;E@9Omd82rVhnOI>kz%*MpxI1GLg zn1Qbhq_hOMOp-F1b`(Tx1Nft&A++yS0M!6tME+rp=fh@LupJGITPFK%<#7esG$3Ym zgo(Z)8aS*OhASLCG7%hZuK~_W4nqae)(b+fojX;)*vr{h6JZPt zu8aDa(Wq!rvLJ>M)(I9ej?nD7Bez;0yw;CrhBqqpPXsE`4}ly$d|OX`M2M9;wyG(Y zhmT#T;q=sjsHwh6PT|qiHKGAEM27kr=;vyB1i9QAj34q}zKD+Q1v9dvwzz zVL7=gRisZQ7ac{xp~u@;JE_Y_VRxxM{#qA(mz|83lfY70iEPJQ8WdHIM%BZes_tzH z6jq7-F-^A9sY#Ba&z8^Obn4=qnp&&rausQ~+zqKKPz1b=cL1Rdcn~qivFPGrK&+|& zp-$35Pt}_3#w|@+sAH)Jlo1+P^-*cKp%%Gp9a6=?oJ=H!*OKrmmc-Pjcr{T&XH>W7 zqA0jxNk}dWPOxhC))Wb(bm}+5Sd7$SdffaXkm}nJbi?%`q+TEgq%O{RE2M@(stDzO z2&ouVbhAFwlOok!ODLoget60k+G0a~?kM--qouTRpeVyPK%P5h_7x{SkhhdY%;be?3`q$GJ6r7x40(Rx15R!CLU zF1yafQF{hZw(y|$q>V1UlOhR!3AI<2qjoJUd_~D&(U-W~4{zJG`cW2=qa^udC5Kt^ zf|sP9Q+hE=pV#?lt(4;kCvmNt9wh0fmA*>p(1qQS`<7(!@oLa=*10o??8Wq$u$`)b zgK(}DH43KaW>?7tBB6<^wF9q*I@P$mm(L2}@e?OcEzBSL2-0{F@d(2UmhGD z_@$xD?VVBmf~8(E;k^$Pr+_-)jEZ=UK@fxORF-Sm_UfWEhbGF(CExQXaouo2+U#(Z zwx^%#fg|(AalXe}XLXGnLvL9DZd)>lk@irj9T=VR)t)!z$<_ycbt-Gn^G5mBNqQu< zOAuh9OBj;t*pUF}F=P?=EPVM<6K~qQVSPk=iOzjo zSbHB>-_LC7yPt2S#cY%VP^U!l22WR3QRga~Bs4W)*m=?kL-tN^f?y*{OURVitoaCr zC1$E3`2;mM*MHik^>2mESmJe<_m57LPfVm#?SBMPIR6h{`}?o{&7XYcym$Pt3?D2@ zQENe@;-tu;95sd3U)W5qb?b38tJsz-@TOS}msN2K{C?KgeOlJ$K+={bu?!-@wt-ak z`{f`^V$2;oVjUtiK-ntC>T>_F)bH2f$M|c$ZicW4hmMKVkHeX3nBdRYZ)PFPBwz1g z;UP&t<`O^nts}jGJTbDgJO@J3SE;T@9HsaO^CF{H$%dt%3vP0gAp|oXIx@X0Bi)Q$ z4h7hg2V%}7qK5f9_$4$QEBXw)86Y@auCt{up|!5yYJ(mnM@N=W=-vycp)o!UnMDMTScpEM1t7Tue@HV6pJO?dhJNZSax5oNR z*=_yb2*oK{gK^f1&R^<9TMbZY3E3?-MG+xMDZbXQ9wgS;1Vw@zVNO_yka_%&NuhK) z8}HHBIHN;(ct2+uFnj6{RWXL~YH&}09yd5Mmn}26+j|DbP~G5c_>FYHHvGz)4ps`V zc`ppWGUh#IovAj8@iuxs78s7?l;ZXK+aj8sI3=LB(p(fCV7hI@Tm$QKLT7^!fQ^Z4 z>IT$3Ala09_Xu-fC2q{A9%K@#5lV$BMaIfGOoivX{RilMe*RgHD?Twdw4Ml2Q;dc- zSVQxg1MA5gzm#n$fjd!TqYv3LRb9JfN?8yMlvie&uK`W?!Gz(H8Tk}1Kt6Z&U>JPI z|IsLn7e_xr`g3X0h7{)+kwtHc_y1b*E60r1{RnAiCO(Xk6|u_gAUQOT#gIK8q!lFK zvwH0EQXd>pj2W{P=e3mp8FIQkK5VCjSX`vSs%e)&cY~n`)kjL1?^gI$ zSvpo(dXP1t&4|{rhA5$?Y`2zNlN5xBz>(~fIdq32$j{fMb=XgF#sW1HL7Fd)q)ir0 zF-r`RMA?{vL!vn>9lF>fs!)s_e9V21zEwTWLoTl+mJibC$nv|(|u zQc`&3P<;OWH_BX>;+`|a=@jYRfygJ2D&gD@gU z@JksEX(weW-7>KY0b6_OpwKwB&97=*o$fn4U<7p5_U`yx-n*at$WEc_nEijH15M6cTm$}37=itT80>MJUQJ|z{k>Iai}9QdN5!}h~%e=)QW)vB#b}Vj{4lHAR*a~ln`q>5{|ST5w_Fkz_hS4(V#^Y z_B12ZyM&|}CG<4IlIu^J!DNg}W|mVRcA7;4a$A6`NYeE5aJaIop)$nkYYB24>(o6= zRD-~UVjjBgfrwqeph_iOkx(y*N-{jgr&1&u;z2mnJ8M`Mwj?uk43}-BOdMD8q7~{V zDjcCK%0YInVh*y%|20SPk^kfG^6Y=-j_rb_g!n}q1(>k`srmKu9(MNJ*ZU|ISh1)+ zA;p^im2qIDMJmTh_dhnFd*bnn@Ur>%7#KNzDVpM?c?%ef3p8mm z?HBIVhSmRQ>>q3wCwvR9OWTfcmiZs!kMw2!SNRUPa{4BM2{zL;ET5!W{G0d2&)-WD z!nwqg(0;%cZi3Kqo&SoS4UU!YoFD||MSb^i;6+cY^M9EL{2&tsfN(DvIi8bu~6VdKAq)SD^$h>=}N+0tue`#-5S5Ms76{^lSAYyRzG#+UFScnC#r(=^W|YPSAe|qIFTu6MJ`m2bs*gtDGYHCSI>pwusQ8S# zXG}lDbka0)yl8}yT5URaa)z|K0xn64Z~)5Ky%o#%!zF~Rw`u3cTH$5^Rh=1N@(SPT zKc@?VirNP()`{L07%@L4hH;oxXHa95_%5Y2G$p!NL8i+5tkG05Z$=5!y5PLA?k^s{ zDvP%FJa9-+eNIp20@w=D@qkodgO=6}NJ0hHy*NQw|6;}WwLPCh0M3q5w~Suxd_#6( zfm6!=3bBsq$WAOM(u(Gjqty4a{5YF1NSWl7)3@pCc=z=^-PhaH5Bs)!wTj*(=HX5d zRNClGWk(L~aD$P9SgX@ zO}W>M1?c-w5%7vp-X>$Z1N25NrXY@@oA;jHybbxh@!q`E`MikJ@->P0K!uVh_jWCw5||1^zX3szD~eC zX#NDY#!$D0-b`pri`TmDn$Z)P&yRGkkLkte(=6+D=d-ME=DstiiFoqkVJhTPXGn@_0rNC_f~Anxdat6u;jv3AQyRXNm4=H5THVYc z`=cPK*jRXlwa2>AL=6D|m-=NOV5i8pf(TIJpWR$6kX5`}7?nwusPx(#>VixS#cs7r zuGf+O53&SNypRh-igf^`2F80`l+^Mqr|Wub{eXOK5q3q@;KRiL#{v=%yAgK%^qC-eX~@zbA#HGFIQDi0UI^TxxLa5_tP z%MxIA8D!}!6Qf2g)_gj=*d;Yu&D_6|YSR#3*t*6}h-*mk;rKqAZ!87jek4K$fwC$^ zJRPUs9j9+r?AANcY3qMc;sjzTxofwWI?=l8Fw$u-7uSX>AQhSwx&{`p^H_u#0c=s< zhdcemnU$80GsD@!ipqk_CgfJ=PeRO!av{C*M8p%1YF})NDTyg#CKOfHI`OFV_#|vB z7@zQ?7SV1Nw-WVzgisbK0^p&hr5R#@iJ!m&X)Y$MR?T}QjUubKD6*oZ<)g?dX%rc< zWi=l~CRtO_vx*|4kVTPMnJkLTN*H-nkWAn_v7*Q-7DZ+yT@+bT%%aHj<5IfbQg;0` zitPBmO$q8j-r^1MQ(3}`h{tg|elAS_ol7FOi1$M{L>hunU)#jtp;g~wXDapuFT#MZR4N2+>YXhjCxGKVspqvCUnm&rVjW8pWM+`q| zxFheCG-EB5hCx6KP}E1)QhuSNR|KX-8|4dC48ne{$;d!uyQBN~^=^3sOO67m(Dk1y z1r7HLcc)n37`B4(_>>)V31g2pxp>oMmqeK$k82MrSP&1bV+Y2y2i@wwh|3g|hpo^Q zyt#J3JjtM3VXi_ZM1`xompKnoZ3{fkdgwR0u@Y5vJWZBM`7lv>S(`Wz*#q?h6WFRA zZ?mK@I|by`v^82wemux;%VNyom$eA$IUH3L+S7lOus_8?tWeAXS?VC0xT@=}q0PLZ zwhJ;FP*&2kMItcoI3CqB2&Xo1M=gs;D79riq(A)>hhA>hy{UjHu|^~1U!4)!$j}Bg zBs$iRAV3YN4D9Ad*SPWCVC2PJrB=u>;YjzGzre3nB_U-!UkT;|waXC*AOqJzx=^cS zQ4?YWNHA_luUU@l;586e2AFEplw@r)z*i|EW29f8zHK&cxsAlK-81Bs!95Vpsg|Z?ba1&@|)IrdPUzhauXSK2P=d)!&Ai^@9}5Kl>1W)z*z`RKG;!q8W&k zCg#VYX(Jt5Pu8sQ7kPf3`U24@n5ux3Dh|vdSBwaB!cxF%We!MwF<*w=*q45AZ=zgATMh93KA< zUl$Gm2b8M%GB{LQH==puv8bI4%~7n#jvJRTO9@&!=(;%CPlDtb`*x>17&JVEL2 ze>O!aL?SQ2B9t=kayf!hzl+k>Lz_+|?5}^nmJmjolMRHlGB>0T#Ty4OnZ{z(~W zc&67%=%+@(Lt>=CG!&5^$tWfQvO~zcqRKec$4K3h$>iF+y_$)Q`~-kShM)rOwRy#~ z2u^moYQLAL-^eM0 z!JSBs&=}HvS_3Yl+j#`tU=YQ^dHjoNI=jap-?SMQvZnv2tJ$k*Zo`*!lU}ocD5W?C zJF)|+lZzH$o!a_)QVE#SkIQmUNXL69i_ojL?RltZA##UZK=;+0K?ZSheMSugW%q%F zvz~nr%u-7}SOE(CB7~k<6SroPU;@&%;^0Pib-G56UDRkUolR>$g~?`^9_*rs1Wrq% zBfC%{h26IrcM6{ySo}2|MP{|TJ2%l+WI+_xc>s@QpW)nTRy9T7aBq%hw@xUFA(Oy` zKgmcuj0Gex1H!D0Tjt|zHt9uEl+I)qXGTHJxWLsq2wp!^3JT71G0$Qsuo&=MxTSC* z&qXEGbIfz$f+mqx_{w=MDml-Eiz227o{LJa=c1DLT;SE<07ZbSC-q#^mh)URGS7v! z+!UAyb2pxg?Av)R>Z#|V8YR^hdoEyU*ZHW2QFSc5$GI!+sAT*y9OkxN3>W9A8O9u*0e5-F=Op2$HW z470LFW8p2D;u4gKUfJvPupX9kdRPyOoF3?ZPA0z2j}rL#8JNuHF-Y&u<*~uwz-t8I z8fg5@jqh8;kut+RdWBpoz&eO2k3Y9Yg}3_(T(ZF=W_<3!HAS38Q=f?Xb50cXhYuwJ z7P(L&aZzo4fTod~2Sufw10^k;l!Ov^!%o84FgZ`I;Q_}|dFMJwM`N4VXz&3|E+#-8 z6a!dU^>1Mj+DI|#3-Eapxr+7IikyG*?M#891t0-QEYd?N=oA~xVI02=+t;(KRYfF} zc_*s3<4czI<4d@rT5dAq>6WM8SJvPF+Y<34YI8>BX^q%!$tnn~h;5y+wX~~A$s{yE z-uoo8vA?Zd)>0%D&<;95;~LKb=3tG$oBK%J%kNfBE;IpG5{eH}xBIbQry8g!on4{T ztid+#LO}x|9krnI zea6~1#<*nP&BjKm##ZYB<3%RZ=m%2;jDC`|QU65AFCJr0;i6<}pezY5vYl~#dv;DE zIaaDjb)+pT5s~c$<1|Sy7n5w)K_h*+AJbtv5yeQ3U~aOmqSnef>2AhWN6s7?Dqm(~ znrYpd&`Cl}ssJQdi)mCH*zMfRQ_`6%Ffb&6N?o-8Oo*1L85kyQoV5#F7arLTsk#^( z0CSbJ%g$qYKy6lDSdceoR6ILy+RAl8lOec0$sz z$alT{(QjB#*^Yd`%6e{;)&Sg%()8;_A{-|p2EBs9FzQ~g7YkH6THyZh0zZ_dcbc?c zngN9(iLzEb(95F8c zH}d-i13&p+SoHlu`jLO)EB5`e2U;zTihUNySVXv%hl63cDR_Y~7(#?-q(o>d%XE$K68gJ_6 z{g(A($Yw(!z<++8EfsmhZ(Roy3*$={;rdcTQ-_8)!C725 zKSvjuR0^*3pt(4b((t!MJd&&g9WBcA=K-w*xiY0=xcHg<7TgM(+IcSB!E zkqy4&3MpB-NGo!0+_W>m8%KuN_M@6&fj?XIMk$rj`g$Hm5-=If>hghX^HjD8?pIBf?=oZ5oslm9kwri43VLzvo-AJ>k zpW)yo)4I2}k-Ip7(+yNGm;QUuI7{(0Gp(;sN=m10ZfD+ycp&y(gB;|#+S={vw7P1# zt}G_vExWR=T~}MXT`>f8rFaFp+Ul$d?mD6PSJa1HnpcxrksHpJ5s2Jaws-1Sfo)LK zx~XaBqJsIt58Pw$6ZnBa0IBeT143v>>y%1hz4m zvO@wz5cW$(y#xx&s_Q%#3LGR8VIK|0d>KXdvLbEaIId*!Jwj|(*aw06kDRd2_67;c z31GO=*)|xI0=DHLDMnd?XhLcdMaKOytFugM1gJC`7?VF9>FaRbp8cmZdY?tr_mqaEedYC*;{8@Fx86F8&Ww%*#XRe^1l}V-O zR1G^4rqXSB9E3~e+rS9*JE4hc5ir?Rccor6Q!PNb)cBlgQP%u=ZO_;a`aW6(+MrV| z*cutGjfbwGaeV7iE-+O~DpICRuhLDh*W@GSW9M~(eIWGOE1PAoL%55iKrGj$JNzYJ zgl|EGW^EF>a8v(*B1bRa!^9+q&N=M@z|Hvu%T_%$WLHJv4>os)aIzW@rbx??mFO8p zp`&up1~%~Sf#)qXQFIS;0thj3TRf$rT}CZ^`NmtDv=bJ zg6*Cu@K{yp6O7`yps51(H@qcaWHJkHNDA9*5clI5pu`NEK;ME5T7D#~2iqprc$OHQd3- zUbVfm@z4PzEC|<~JCWSwq}YTeVf_@X#kG4}NkGHpjK#5AnI>QM_A#TrXdBm}xxe-$BDv^ZpU0rsN&LSH&G z<@K%f{Pb5=YV}65ufMfIGowso5A<&_aqf7EpZ&1~rW3a-F~#i0LEMq#Ku|Ze*7sVB;B&t`i4^daXo_=q9rhq zd-bmt(%(#i_j328DBNvCSnX89{=j=%{}id)_H7ov{1k~F0siLRR8w_jk*Yq*ibr@b zJDIU2W6stbpN{znEEv+^> zCF4(a%!zOGduo+KveW+*TO@vOEK`vKz{1vTNDOAkbKFguOUc5es9QbD8cfW%cV6O^;HOLRa`Vebb@K^i(J!9sVRm#ANK*IE>_ zeI9VNiEE!{j~3%k_W2S!a$-VE`_T4d=0ioICp$b0k0HY>v)K(ayG%fprJ|vmJ-qc# z4V^N>g~^r=h;-p32qdI%2eo)``3#A4gRI`ujd5ga6koC5HuABPCVu_tg5TiQGPa6# z=mvoUN$5rx(cDQQvoIH)l7wp3HQ_A#b<>SzJW}YVMy!2^?CyWc;|xx0zXQ)ZX1YiR zW>|1|#Oz=vN|Mfd@tAFkxMUcvMU5HwcubBYB3Xtz4GEQe)MY(v%8zgR$fDv3mdO=Y zUo2hKF$1wz569zq4mZ*TwxtHc?DWMy@Ze)-yo0k*-vO7`aP&wtR+`f|fKJb$NPZ~M z9vX+t4js<-_8Vd!mvZUcjB1O|yr4~(yA~PIN zSy+!0QdEWENwSEl6k$%eufX|ku)LBDKXmk6qFacIP5KwU1OqZ3iW41$!pdyBPnfpO z?5D(;_yplH)Us-3+7d(?vcqtCO(HSjUkQi6E^A_`G|u|(74ib3){#_R+LNCtoHzyV zk-0ce5;{w0@+7Qb0Be~}4>+~~%+Lo!$J&G!&&e!I*UTPiEFvZ74S(95{YfNZhI z7;wR{{$Sh6m>D<_wL9GusnziwFF#Mzzf1CnTCoYkjozsS2GGUjUy&mPBTUEZ7+8 zY=_@FHKl?9SwN=Ek(5jg8)DWUu2D!Eq*dr+2|{2?p4d_%{rUBuF8I}B=?LTbni}-u z;vpyKGHfRM6gO^(%ym%!EH5M)3_`}Q0M%gr#psrPb4VJSbUTE(D2kSaBR$o{z+qG{ z3F~)&}BntqPWEYHBgXyhH zv`d3w{LL^g_7Z7zg4pmK;lk?Z(iZMHre;xvtg;Hok*Ku{>FM`0dCSFs!SC~5j42l% z_A(knyv`+j&4+)6`D{80XcU)J5$y8C)*2ae`a-}iXi*%qu)o(exB$z5y@Fx4cNHAFlVvI ze&yrfs=*H}J_Xqg1|LW)D!kt2_&hs`;yQ?~QCvr;urvNDz{dSF5+LxCRL}ZGb5z@I zYl99r0z*2;hMBUlven-Do7{&?WA$dra<^qazHuY`c zV4DrY4)oWZTcM`9Ka{I$PMs8Ncs%S$*3Qn1`zB{;=xiPp&Smi>pa>x#puy zTp!w-TyV^$ zz;@HiJzym15!>UoFyhg-E#!o8)Z7;0yNena;g~!lC%i!$B;0x;B6`ixj?5w>khL?v~@VyrYBTS!cx){~GJd$&WDFhoEiB!+r|0)Wz!bbMkl zc1tFM4BLv50LCnp;SyM~N^a8UP39r7^?}}4k0AD;3B`JZnkYuhjax3(!_UQf_-?UV z5`aDQ0^FBn?ssE7n3KT5IwD_>24J(k^#D#{J!qQbo~Rj(G5sC(6o*~pGsML)GifV! z+)}u(a29JtZ*-N+L^k^Vdi`%hBBfv|^Xb{8bbS*c^uu`f0xGutl;9FV0-YQVtw|ce zNinD`>RRt=Ni-pRkdj|99ds)qkK4Aq)|Y&mfZ=U-4rmGTA*@LfixuGoA`{DlJzgE~ z!%RA#N${##C!sNhPniX-ZnYS>C)!g_574e_`Bnf!(3-#RCi|%@N~~7%=vVe;2WFBq zS9?*H{G9FTxP-xjNlHMox&WEfWge!;I{Tvw0D3#t28{T7Nm!*HR5laDeF9cd&ZEJd z)`*I;mE0Gvz*M3#Za^$hniwKM8jkGH3G6rGNHH{)t)POWeH^Wy@tq-t*54M6Zwsjz zhm;UD#I_9~xw2qH5+bGW|Nc4+n&PNY*;mLsJ1g)PLwAl~vCqRqIH&ANurt9BpRR2S zw3_&IOLT3rT_Ij8ryJ)~u}qR^86h!~)J31WPjk!jp5%F_Jwv;lODEYPRhD-a9j;{R zZ#n=e@)C+Q18IABSXGIs)d?smj!t355G++&5-fy=4u{(sWC}(NN12*gVa0p*8fg!f zSr+-|tOXee%&pf$=uBhrTMHp=Q;DzEtEix4$Yu*Z1Fbp*G@@ujaYnjUl=c+1dz?|}dM>?wV z-F(7*If*0m(d%=+OmF5IH2&kF9GRFZ=&4118WkIYT4!%X_0q{WcQrhhFS^@Kx4{Q6 zpt_5&{22?w!Z0f%0aK;>Cbek7`1t9hJGa>3!Nbl<<;TNRiic?0Zg14BRAO*5@laGZ z8;Q)*&xn3y=Crt-XLRKzy0G;ou#ALjq9lI*nVr;CuUU1fB|pMr;}4SYzqn-lNyby% zjHux5l{eY|DwrGlki%E~UndM#x2%*mcp%CtU?JSh2I@U<3ibA7;j0sEIds$d5Lqqw~uT2D~vJeAqO`lIpeu zdC=PbVZY5TC?gAcz}hcyt@NOpog(-fDM7t6cu+*=aJSxuQ zfiV-Td`E&pOw%TbDUoKZpL8ggQ(Swk|GndG)Q_-E`&pZ9rpJt#=>33)wxn)F=zkNi zLy{S&z4!~~zn7U*%v6g@q`g^L3-#?MS5ENM!TcFXTi00NCRx~=s7-w$GA+&!VIm6L zj>GMIFf!OA=Q6mm0v$(6yf?d_S_(l1Lgs%~-N_4p1qug}Om}cdQ#R1xrRYn>bk{TR zDWjuVvq&}JOQAOEBr8NqlA?MFk;4575>+UP{6aJ0ZmuXqEMZAK0ha5Uk?F!rnNo31 zP!N8b^`MF@cOzaD;N)rx8dIczNr-7obJ%(>lp?+k?FIF}4)7BplHi^!=8SE0uI5{I zKZt}YEJwQDWG~o;ZL71?$`F?wIDpo=ms(=u_r?W?TTwjJxuH|l4A5yp$26`KasMPG zX4z;9(Gf6+lFdy71ALAM)oH_Z+Qe%Cy(xZ|;{kn?XC(b0^G&N99G1wVYv;JQOrK_l z<@O0|ml(FW*@Tz`4iH<uKezf?e1)xtC2g@( zsHrSfRmc%`MvPXPXTjO}Kg9$bH�AH#xxm{n|G)vFNOV+2D4!q%f!a=v3yX1Yx#Q z#RFOaa;gweA=1USq7`Di!+BLqx}|F{CyMf7Zir$^+1J)M>n%d0-?5+Q(+((tz(qqI zdyHE5(}oRBCV;05>IR&FwO01a6TgF~ZRTGSEb;j0URLlS@fznp?iEBNUti2OHgADw znOF|ZNX8s7EVE0g3Ho>YyFAg7sAKYo?T(K^ap9qRxnh?ur&bWSL2dF|ZlT+70bNb3 zX3RDuZ7h~CkYx1N(`FyBW+}E-&GJ?M=b@(o3MSjnHhOGv+6`Ik@3lB9P8lUdtXTMr zj&s>bUf~+(AqBb1JJ?edmqko$dQ-Lhw(t*yp(w5|fLVeY!fA96l-aQBpLL9BbyiQ| zD~cF%=a4WjvkK%t&}GwMTbnAP0ZM?_50Eyo|RYv{OJ+8P%*xHngV z+pCijEtf8M=|Rpw+N9wGJ{CA2f*ZQSSS$e4jXIYcOjMxaXKctDSnQ%YhZ9@}wgtz@ zRU2=78rCi^Mf||eFL?3#_%sifa6egbCw@9j_|HM$cQ5~Dzh=b(4_5#fY4f1d0UkmL z4?DIEVd|RLg)fZ@rBpzr)w`%gOjuJ}M)nom=T4GZ5|Ur;7%6hDg<3?Erz7o=uYEDM zM^2IO`Si+dt`|z~KQ_(+7t#gX+bQy!?t)}>pd=Vda#1%g?wancfLTU`lX_#@F59ZE z;pT&pso#aHU#|LIwqJS@M@#zsIy(8yWQT=^*v|U%pX91eZ4z@+91U=Ev}sxDLK0y(*&Y?r}}BDftWukx^IqT@$?10DoBW10oz zC3p@w0^x!<>1n+j8%%paIf$bs7s>Od?byY1SZpcHav3m}slweN_IQ?+n79;Qk12zT z#K%w3(?$=D2SYbqheW`3F~fS_U;kWST0q3&+#!=ia*dU9SV4f=@@6`SZHQ>(6SzR* zh{ZTpZD-T3c1e6=DI+s!FR8I_Y9q0lXn9nL-3=C24Oz~bbk$(di|b)slUG^b(7!p+ zY2Xk$t9h^@WW2}ZX#rLmjDsDvL7+^Sy-~lvz~C$KrTUGBiYuDH0-gk-6Z-I-A7p=f zOmf>Vv$zGu9O91zSH%hnBZd`efRe|l9O)mlroA?V`rvLzlS#$;XGND(M(hA~)t0me zGiSVr+mbm7?p3fOh@0EDY#`<`Yr%LpZq3w^W-QE@nwo3EgZU9QhYFcQ(ycw)(RKb( zSB98<0NV(2BP}bb4tI&_%T!OH=r)5AdytmQkp(n{d#C6Nh~%a$=t^RQjSxxA4Mp%X zfo?vMex-<~pf2vqU1?!7Q|(94cqZVWb|?ob=a2B0#RG|;Mrb2qZ&c#f1Uu!AM&%=& z^294;eibb$o2;gSbWPy6tv4Oy6Q7#k3Z(f?MUSIL6nADZr$mY3N%rU7?)}Qoj&ni> z8ab+1QpJz%bzcmCL8@+$`vvR*lI4MmW`!1Y$X@4{E0NY;c z9Y7bvI0DD%1tjJgV6tEV5!-;28^LE%jX{gpYhp<{00fUk1E~K} zKrj|f7@rW6=wPQS(h83f4^z&>Aoh~uSa!k$%UTm;!0#C^;M0=+&kMH;9w}b-kDH9 zVVHqo7{G;#h)bpxE|m)mGZ!2gW^iT@P}4zi$&D;ib4e@{7u-s7i4^-PW|`VIGc!vo zD=Sk=vqgm8^Y#9mbLS3=`fd3>9^e1tKYBUmbIxaZf8P7&{aMZ!84AAn?k1WTwSU`B zO6+hJmF#Xp4Wug?ObM}DHl_f#edkfh?@+dI{99F81x=!16Y)|)wS8Kmc1aQ6X!$%6t^P~PAk2t%wt{8Uah;6$%$7*D zVOEw-G14fZw_?saw_~8Q&N$0`#6Z1L%7+wXj9!`hbZuXgj5U65dwg5qrcc}w`dkHw!2<9-Hd~LE((#bs zOOI1k9=sFeO3a1P!aoSZ9PyLpu5jUtxbB=r^D3AU?)6|waYalOhJe+ zB|E0@*c9y3L`m{UYa2KqZj7t$v)62(CbC5b4&xeGHCl}5Y>c%*D#)o`k*>6Xs#-1@tEumX0Qk`rKxVkfpC?gAIV!l?BkQ# zTtjhbFSqI14OAcnBf+N$=Y(A=)+!9`X~kwRXcWP57)wiNocj+-VP#X7s6v24`Dqs2 z)?I5QH?2jt;=Qy4)>}CmbYd>uN96UTaUq<3@tlxM+Ym3Za*sXbuHVDKA@S`smT)Zg9@NDijmiLA3>WioV*^eH#n>xeRuu?GieLs7HzOjXVM&&*DEOup<@r#R zwHuMLdWC z7^>OE9OuPjG&l6Op+l81j$@to*Z{;x9LGR$f+|l=gRz9VWP5+u;D2&_0Gdch*b$#Z zn{sfuwD$)n7&Z#yeYX8jn1!m8(2RkN$KJbvcz?@3+km(t9@JkN%g#24$ok`%TOXn^ zpJWOANp|3Cc6T}u1NoxtX9Hz;S~i&Sl0lJr&0tCcf8OZ}j5vt+R{i8By1`UsE{Jid z0Tlteq^v6x52&mZr~7M-vI?i&fQoZNU159A2iNsp+0unUm2!K@pb95B23m`FwNb%& z$(oe%qM1q+Q1XSol46ls9Oa8P5DVhS2N&NR*Bjp*QxxAFm9V?k?ixqtzH0>`Ig81( zjRlmzp~--s+rArFkgaD_VrP_0vTtWc@mC4r@06KkOSyi%yJWN_K@PS_lan6ZXZ6ph z9c*D?w7$dbD<(2`DE#Bb2x~f2#VN_VT&3w4XGT=KPv}vqL5gQ!SDcuJSD;QjdMa`xplT8g_S2n zIfJq(M0ynx8=%p$?lk^jtDQ7W+yqfpO|ay?>RRA_klI!|iZUpWyA{0ZUhY;0vieuZ zZXM6vvh^E%iZTsVP_QMLm4&e=Go~@hU_)ZDVgVu%s0WkzlW)rgx1GUUX!iWIz`z`3 z;Oqwaz@mRzcZHrLKK!O*AV6oh1B%t55jseTW~GGSVlTP^F#ysk>nv6xcW;b1aiy=Hb;J7Ehlwdq<5`o&`=M&k2oj*f%l6s%x6623x^ z`PaT2ssoQpqBRWdksolQa3sv%<{BoK*qoebq&TN?*gYR>lcXq3w18rAY6u2Wiv?H! zflr`9g5{EWBG`s{0}WthUNf)yoJs(G@O<2Crp)5`L5>lFt~})SB&IN{Q>-6FkCEhg zRw?x#H`v;zn z#t2Qf+a#HE3*xG`M9Sp6nNNt=3-{tk>F_?=GI$j8sm0&qT)5+mG-0L^(cwv13Sw}G z1fMP+w-PMN)wO+)x{Cy2)}6sYcM4yN!wJi+A(6%MRx_+ ztSDQ(!ON9K-Bp5W zQ5qQ`{gl!frLi#fg5|41_%>kU<+KD z>Xa6>ml9(3-O(!(089|~WH-(xe5yf7ZDVrvvBRC|3uy6eX-$P6Sx!j62!=75b zauaQ9iaXF=i!2Y=GE2B57R7azx^Bz9a%;^V_Oy*6YT#_8%uui|fjo#cKKI{w(zdeH`i zTxs9l|3m4N(oQ37R@yX-(@3i>CT$wbX(V^Vfbu(yUZF6F@;CAHei2*E)VR}az z!|5HqVbM8*2p#(Fs{(i^GhDkDfR zLt;Lt+GZZO8xi{++z#RRI9SMdjX4z@fsh#$`L)7~_TU=_mPOyk0o7M>V&M_eWxO!W z(QkeCir9^)Yp)UksN|KF0c#panu;}cs4g&KY|U9!rP_yDcCZd^rZ%%Oncw(@cuf-1 z(qfL}vo;(f#}X3v$Cq#B&;ip5IxF!`juEukm*kwvF>X4ShvKY&87f;B!yU6BmxoS! z1;S$`?`8TVOaJ2v&3Uvszl%K&W+-gTM+MQ$_W@BZ;G{#8f|JNt&4ig3<9@m^k~kJY zf6FG~*%e{?ZkUf}IEw=#N>CjX8< zx?+PU1}WjCk)r4{kL?Un7B+G;{THc93Yn_V{makJfNSFBOlBeW%K=TtjYC&!Q4gkh z&rsAj3^1cRn2Pfa*&n=L)&5R@_ zL8>91kz^^C%}7#5%IYw^qp)G6rXximRj;RD8SNse+GeWIbj#!Fjh&<9+&m%LAv+7U zyn(C*wiVGzXg*F~FA!^ra*A9!C(jIFwI9uu3pPaY6W@%IytA=kgx4?8^`lpSNwbJ0 z914d`<}DRPYkgZ`mfIjp_X}U1nVf&bP5ba@IFbvAd~s_GApmSp?z3y>X*PgIuS1$| z#2N$hhQ@#`-N-!6F^g0M`)iL|DEGvC1|T%(Sv7+LgAB8OfqfE8x{5PbBEDSw*~6>j z4PoZxq@yn603Aavts&vAlJ!trG^nN-yOa84_+Z$V&2pm(`DMu$y6kQ2i`?%9)j2{V zg>VA6iNgu0MT8T=B%A>AOWtS+FbFKf1_>t&cdYQnkU)&goTKT#&-LnTVThVj+mwCwdlS6t7qhYkIS!z@u9P9Pk z(>R2N^Kzjt2*v+Hs)MafDo?jIsW$p_CKYIzbeBnmpfag?$3Mj;l^ne$)u8A#siB-F z8_34&?_7sBIB5a3ES8AQjzQ9RU7RQxHNC|>G4`06dKsd~z?exxD%yf779XTsv6pr!+ikZA5fyJVmehf#~xJ#Kqmq8Yky&zHEcXX++Vgz$^u!_cv_o zpmh!*9uqxETQ&xa#nXgPxd1AV-m-RXvs_w~Nam}QO7@6y1p?%4V z2|zqwGyvrSFfa<#7Ez#4RkB7ELX0vsBl-uNij*5A3_4&q^60ey#>LezJT!6vYxP`c zyf&DjvLf8xDhr!hS%E09q6r4}OP=C>e&))U$rHC(RoWI>t!d&v8#kgW(1y}bC>bu! zqe8WiIUAr_z+;XWfN2z-Wceqs+r>r*rD@cRPi0bLtI3my{>$d9fMod@UU?V`V{0(zk&*JA!>M5K0r zhS@sS#~1;*|1ZD?9-%*Yzw+exlkuxp=&IvgkO?Q6F56JxMEWm+MteBS3JJo*kmw&G zAa|A3h^Lr}dt%wO-0@%>+06+-GRE~{GuiRhkr8`E#p!CPv3AM<$ z85)3z_zbL1kj&ymFt9mC#;gFPVQpf>0ne&1oA7xI8U53Un?cv3VbUMvSLJcwQtKCC z5lN0&H&l=d10dQ(M+O3b0u|=cq;jK;9BvDT&xD5bg`qsRGKgk4WRLgyp_*34JJE#Q ztg@n)RF|+$aMIjn4zoqry+tP3Oi{>?yJ0jsfu=MICv9bLWkV?)JEzVG3zbNeT%)pJ z*Tn)LnEdD)u?~&}Cu%l^tn!tg4#{l?%rl5O1a5>?pf~U)!k>kxAUrzPMS%c?cGl1Z zyNTCYAtzV-PawPZ-wD}LsU>UAu+JA9^F$x2b8@%MHo+io8(ADqG;w4u9P}9* z4yjH@Z=*;w>uvUgfz){+jHSZz7cA<5q%&B!QWS$}Y0hAg z#|7`({8unTilEZjAg6^vGi`z$k3A@TcAbRb40+;EoSRTzqNUE<8s@lAC)>+!7LeI8 zmZJkiXxmeA-EAi^7Q%X=4Jis}+M*Jkjg}!_=7QcRZK7j?_}q1v*sn^{HnFn<8HvHk zkVci@N1%t9`eU4<>59@^4IPJ%q&9I&YpnP4rHU0`che#zG6N~rHKR*S-+>@L#UK?N z$zMtd7Bi%%E`vpw+}2-`BW^Y9*k1xo9K^vYmK#8xSq3Muf=9{NLsAlifPGmoC@Hy! z75pj}^fWg1-8d>8M>k=FwR|aFaU3wDVWB!*O&~c(Rf~x5+G<@sbg#yp;P6}%xMoC> zFlF2@(+HR%AlUXMbE#jj+iAI!;LUyf#)j{%YPnSw5YY_KW>{AW0Sc*eHnLRgJc;RI{(IifiX>r@PZMv!Oj;9bpT@fyeDkM&%?RS!1nHfdWx7tSz#A~%&;mlY6De1HvH z(d|B+gigp*HSTTmY9q8yMS8V)ru7;z0{s1L0H#5HwD()m4)1QwZA! zr_)*3E6403UwF~NH(gQ-IO`>chtCc=sk6NP4d>HBYJMkzQ67F=n0of5Aa9oRh>&y>_deAo&0 zb0$9bifoA%aih30e6@fqf6MqZG3R5v~@zB1I zq48KDK*=kdDV-UVJknwvwoGt77d7i2`Ah`$4s>g<k~4T3n(H#)>}rBz$!*CQh;WE?AmYcpCg^>o%Fj5x8l!RU>DAi0N#U|=`5C+{ zIr281W@S%SozA>^>5;dcj_CPkz+J%^r=Jc|GD{1JA0Wt3xGNUDkJixDuq_%j4#-SbUb*=U|;U8cb_SaO2L-Y2M&`q^C2S6X0k7gI|4wBV`BB2art1P@$XLB`q^Tkk~Xc zJ>?Ciq}Pn_NNU)9|44no%*LxXw19x@ZZ|!wDIW|AmiRq!D3MIY*MXhd3cf`C=u$tJ zA&E{7NX1;hrY7M)oydK!Kd-TLTe)4YvS9{Q27g5b-x^i-3r~ zDEqGf(bh-(LM5pqbBN&{NWeeQN1!I^5aJn8rQ?fycoc1Pvz!IUfR5AZ3OPzi2+Ooj ztm{uI5WJvt2#^_<#N$&Dl#O-bR3eTu(cc6lrI77Zyh6C+LEngwL_fYHiV)z~VDez0 zf|KbNkQljuw;E%vL+)hr<4w4UrS>(iL=VlSwcU(jV8F6T2)b2tw2^?Ll3p=#uCVb` z+&QN_f*H}DI7cs@a*>Q%PD+jfR5K|-Zq3zVS7IlMxN6q4){Jz(1d;4U?|eBpP~iVg z@*69+CaYs;%xtv-DHNh)->6>;Jl}fSi9;w`#gRa+ek^0?s>h+^VagiI${RGspnsBsabS`Y1&|GjkMi> zL%VLIlB=K@J_cK5d{L1n?p#hJTdsu{y^IpaBh|ivD#;dKOpv6zJ=22uuBKnYB#t)XjGDLq4ty2r&yvoW+ySXxh*Bql=%6e#vMw8OR2@g zxb!JE`-_9lJNlPtade6b)6$8HgJsa^{WL5=@AVm|bcegf+|Ygfd4qF)SdC{MP|6~hvB>Km{qlFe{ z&Wi@o@uq&AiRZ7a!VH=;(ix3?@l4Fxx-E3(weLo_D-M2}&xpLp7eg+gn)4Z(3iOuo zk&9poKiatpo{(gHOI^W0K#AB{P%zCL2>GYLfL4nB5%!6sOXMjY6FV85^lf3#zpaJ& ziSp8!fb;;V=O}7U5Xd2QoKDU8%0z;Rw5kt+o)K4W^hunFi?WLL!++hxJYudUw~kW{ z+|jS=x#PjB$%7b8sIOjc$2l|LT>437eZ8qKCTNoNa^QQM)JMEfPIvCR&XNP^ET1Q) zvwUR2(DdFdy!5ZMFtiPWUf3Wrw{w=i|^CTlqkp)*2CgUII z^%vjKxiI$#Wf=?VgWaCZ9mI-Sd9RbMc0}fC{&&op)b3W|EB^HgYvytjqbGGrNQveP zWkLufiMG+e41sNFb-jr$XV%Nsr`f8t=n4#!7Qb3Nr^L0epn!X0&BP!eN;8mInO{4X zgvcbjWa445u~DV1i4Z%fR#_&UGbG1ex^8O@J7dV)>jeBDF|s=u$V4 zfV-iC{Nzg$Kan!bU2_Erf~^`_iD2VsFH)G_uoPDwTTbK4!9XREcS^KC1er6bA;5Kp zJ11!fr9_L>G#w$2Q=-Qd5adfu%N43L!|#kecKsEeNo-GLbQ6j(CY{U`lq}%ks6InnH@IO=!H<3d0;y3>u^A^#fh4w0 ztqI=*1+#&3c&Jcp5}T+w1uPJ}VC-wrQnEl3BCDzvn03RjSRo=f9n!gVQsn2}HD-{e z9A^I$b$)bPv_g&ODa^AI5>0fud;CD|-6~73FcOa0Da-m*FLOk3ZAKH3z#RQp)mt>` z#~{to3MO?dE8GbXWO$@94V7sIGs?qQArEF>yaCUtADhuep1nO|!N(tF7>Tur@c8 zuj)!#%tE1LIDzhDo8GXeC_tOYHr~!0>hOl?H{o^>FgEbvl!!@vxf6UaAXjH01)nty z8uMoXz(@61JVhGQ#S=c}5N8Mi(EwhpO*F!}l#yiR0_z}5t;mQ;h9Q%=C%Tl#2bo<2 zC?it1Wg30JTXo}B;63g_W8sxogDG9o?kndgEaM6&XjHY+Y)yk< zWH=996JUqXspu{gzqF8DS)gv$QSr4lzVhu#d#ixL0GhQ?fWu#ZqAX*m=kjckZ+#{f{j|BNhRFN4@$^Lcsjf&Y4cz_m&I^H5PyU;@<2RkP{ z?M3V2U?eE_qFu21;tM<0;WkAv>`p5Oorxx#aX_JOa$C$Bp*{MbUHoSDBpti~CKr3< z4sjyK8VQOsNCy>aabhfuq0V{e1T6@NShF%iWGG|OZKXUdGx~ZGo4VL%c<+i{@jq}y z2fhbHI)d(l0yN916tuVIe{SU5Tf4;5Qmm*FgS@pE)oI?Z!SKv=zyB z3#>+N`*|~C=LaBJSb;-66aPqHg_`n>d3y)-?7sbaw5@FW^&F&`snZ>agB%p*{8Y3j zK^M1oK#%N<4OmAe%R7)o=KH|iNiyqC@cTy%nU8qZGz^woM|{C8#^4zlgWO$uV!Qo7 zkXu9nGs9(?Ly@Mj*_8Oo*7t&pI9Ji8Djz{Oql>|pNqh8F>3AswC-+IfDMrr>$40SN zk8Eqc0Ws8clBEB$fUgg8aHG%mD9y1iTF1XkajJ9SQ5TLgy`n!eC7qaaaEQ_yScl6fIz(K|GSG*<~0dCLx+t^ubc z_NRgX_@xEF6g=uo#GhmXZ4HR0r&7DG_{0x=E{Vqw#I|8y>Ii303&BaL#xb50JH6+o z!80t_1*c1p=mI{>bCYG*XIrT;!$}s*{1?C%V@DfUktC)_SBhk%(ZL7c$fxht5ctHr zd0^e)YSW^#0o{F&Qr($-a%Oq~b$x~`xYw&`GQryRjnCAr%EH4m9%+*dh_uqtA3{27 zbH(@_j&o5F)BAA0)B`=+z74#Kt|rFOT;yqmRtv;d3wCack=bxlAhR3gIx>>%y1A}j{w8oOoG9YAKl7+aBJ1+Jb+F7LCZm}I8)yLz0{=Jbp z)eDdo)bAsF0^Q*FrhMuGA~9+)Cz+ZnvTAn&>}OjZ>ii$BZWu? zG0u0ySMfq%IXhd6)+?JPF zkd^y~(HCYY;x+|pEb&-6Py8)yFhocY>b=}E*SUd(=T=O}V&-1pnOTM@4x1Ep5@bc` zpiwP%C8TykO zKtRp`C*@wglsv-T)6czxyUO7{_e%^Zac`dzdr%@LLGwEo=6361&x(NC%U;mp()Y0zH!oCvr!+hM zGK(5)?OA5eKER+vP07fr$TjTaFO4s9U8DrHfLI>C(5UaVvap8wd1ISMg}FT=P!j_ZkDN!-X!KXX1$=fTU}aYVR(2&|_17RX zrcj@Gb~yL1;JK?a=y`hoX%dFp_sh6=+l*=X3C0Z3XXVSJ?HCe0vl_<(v`|cYx>0Of zt9{6+VVl+vuqv)F+}Yg$TANsvL~pW_S)H$SZdjbF!16{T@dsG=dcv`yNQYMM5M;n=^8(jPLp33=POxTBcjxYTfj{P=>p;>>Pp%GrNOx&dH6# zeXkPk`?Xjcgx@1VDEuh@!Nuw z-Ry6(=EQuV9kpYvjPO1{rt<&YOv64%a}^&X)5s5!iJGJsL=ky{@%{$B>LLqcVJ*`o z_;&=zU@K8W5j05ahWW6$^SjJNtllwg4dbPbu23|H{-|>djETgC0o)OC9*>v#u+=f% zgLH7uoi}b!*kq=HE4h1=NJTR8*_1k)qkW&!XN8&f$?>rNemTDPzB!(F-yAF77mm%r`@wPR`?m7* z`{uaieRHgnb1r;uN8*hq2>&{Lk*k@#_14AcLdE!k8Hy!t`tKQND%JAe8z5 zW_E?((VL-WG^P19p0l+W##>%yCm5igeYkM;@XTPrRXmfSAWSqahS$kJ zktq0-baF7VSY#v)a-F2=OiJGS?J#mXYfJDLdGl>H2hLAr^a>5P5s9J`%47;!LNUyk zS`WtrPguxx0$a*BCCST-RE3OSu+lGIHN$O1;Qj@>FMj)0(c4$u+g*eKi`T1ReaR%c zlGb)6)e5qy*c1Wrp^u)Nahatiyxb~x`gFwJyq&EM9vdQL={ZYe2TylU#b9;eEI)TP zdO?^_Kh^6UWCuI|M1?$#1yW`%US>!FM^Q}P3_#pb74ce(MyWgWN!rl6ZpLuOMujMl!5SB z{Lm(dR1&|-d{sVMlab6B&cdj1K%s3XhS4oy2A2||6bX>Pi{6TDmGMg-fCFZiiVHa^ zs#SHcjJFB=N=I9z2gYf&D$rv%4lJ%w-jWwX3eV!PBXQ4$dScyorP!%$G}t;^zE#bW zx9&0($&2o79wVs-hDa$VFFG(&NgHCo=(2FQB`6R?-@yVF-rN|!v21HeIOS%zjzWia zoN{>YML*M@y3{7igQ6e$R*A4vAylbGC0O@(pk*{jB9{^_tE>3({iHrdf{WZjU8i0ZLHr%`yaJ|c9f$EFi#nXtM4qf7ABrST-C2|&zeck#( zh+bll5e?{?pL2%QUWk0#My6qf2)$O{jX?BX(t5=EC^)|bK1py8wsunN)4k_anoRVp#E24wztq2wP zxy$h%azl7mt`Z#15+--|7VhpY+}&??D*i;_?(xFg2MW)=S9o?`;n`z_yYCd<-s313 zJ-}H=@$KC~w8`a+#)uTarS@J8GiB~>s67%zhbNClBsZh&Cb|SxS2?G+R4)1zk4kle zJx=ptfJ+$HNj5-3#;W`Oennw$}DVZLRY= zn>traXzu9DPw47wp3uH@@q`6!-4k2#%@ex1JE?NviU|ulTf3Ilbar{$WbXoC3U+jM zPv|-k5Lza5EpBRS(*xz7a8y^mvunb_r5$apP3;Sp@taW7xwNZ$>5>WE9UX1WC(@HH z8fu!~mLK2L)Y*JuL;d)sB}+)PG<7a(ZJ$7s6I4Q10jPUD>|NPd46f=bXi_kjACK#kUBw%w>=faK&o%w~WaL5YlWovs&etAu^_@%3+ zwPSqU)cUE-3mTgn=1-nKdGeG66P7h~EgnCgY%t&W+M0TL;{48zWva7oa?NC`va@N~gvA{#+pQ3~C-453 znKOpS82F#yr(V{jdvi}gJa^Q^Vh$>9)M2cpO#<4{923D1mOLxQSi--S*|5GnS^j5O z0hQ2_AHNktG{m$+Apfn6ozyiR38b@=Y8oe5XX6&oskf&iuY&7+{3h{h?`Y3I!Lt?iFqMuBPtp&Q=UVzDow6wSDd>t@&k3P{EYxXl`y>it<`Y zdjah&B4;M%&But7c2%0nIy5#vV6;20PafeRlZ9Z;=DsjBd?6M_y7jeC7w5qYd@}2 zxeA8v6-)9|*4i|;t!aL~4Q0BZxvi#Z2p7V-(Ftz6ZIF0Sg^viNyRYuA#trWF9% zI={88wR=U!lBQ-Z^A|e&8j_orc493SbhLNRU1r3y+pgAA^WF{ABU;}Y*MCo(9vENO za~1rLa1|Vna}{l$;wt!`=UUFStrg?DptTK!=Z!0KdF!|;Z}KNz5$wsI(y9|pyR^AG zD;7&`o0i4&h#$`vVCs-tuNj-_oa z?W4Q1EqN4RD^BC7`Rvk$`s{+vj>Xxg?9A4M2e)@;JC=5LwYJ!sY12M>@L@GIrK(%G?ONxsGN zUZIVBspl8q{RFOy_=%RQgUCCa>+>`;lq;c0`#XZ+d+}d$8_sJdmA9YLu?Q&8eh6&q zDfzY)*^bU^(*lHQ>o$);cQ;YVpkb~b3mWQMCrw-`nVvTv?=vsD@%}#A5})47RsF@) z$ScjgzWXG=QBmYw$o?*(a67LT^G3IAWE8SNWhlXr-kN_yjXF1eY%0$0DO zv$JUhZcevj9!FMp-=1G4qGg?kCIY#*X-OUv9~Xg>+PjmCr$|Y*cjH|{hBy(+cbqEF zv!)gR_>;Vf$H(&9lb>Xx305=gpal%%L%NRE@Ma8|ehus@^GB}2)sda8jwiZKq;reJ z9ZlIb97HhC+~oAE*Dqojis#kATSsv9L#G#Bg!YorGxaIo%yN-a;k4 z&$cWz@)fuZK{lmK!_%@GsQ)19o5)W(OE{HJQO{4Zq`w5$4ct%R*T`=wKb9pF^v!hc z_vW_`KgmnZ05c6js<)2)xW@$MG4k}=^>$iziFiA^?>c^7m3+xGe7L4AKYTjAzYDFOWW~){&WIl>;Jg1bMpA!-8RV zeq;Fc_KXC7;;9_JrtE@_&c%2(k{HIJQYwpKYxy6J)}8t8rJe0CA5xr`hDH74+q2y# zqC6RmbhfQfQAm_;TAXdcBtU0yfc_EvFTfd+eoJ_?04UEk0IT@134CR_3U1lpnfwyk z?$7-!eh2WwIV|hY0%(U`ye@MzN_d`FuS2(?V z&mn%6)jNKwEaiu#6~RcKjAAKgg8(X7=0Bxyi49ZF>0>8EhBYdO8aH|a==f0Iao^t{@gG~ff)Z< zKP=nXuUM3|y;{ez>*)XBlZwR;Y?`~iqdxDMA_GM{8v%In{hpZ3cA z;4gkfD&>Ec_EUbgVoZtgNJ$XZK!lCd?fZ|Hf-L{zy8s|Hom#>pr~x0UIp2d1>eK0P zFnul=;8lj9m!4kg`TM0l23LWBnqaV(4ok|)g3?`6m$A$)HL=X^@9&cK2Y99aK&v&~ z;;*61J}ED?Ibbh|UkdKM(#56Tyq-6l%t{PumwVoI$oFvW@2v2=J-8<6`$=Ply#-Be zU3t`IzP7fuu6APWq}ux0$+Zo&Q)(M)r`FZh)zwX`n^ad{H@U8%Zc1Ha-PDP-6YC~U zoH%J>{lv)=8zxSf*f??Oq}oY!lO|4@G^u{l!(hxom@A0;^aw_>nBg1+%S2{Xh0k zbyFrznKY$-%H$~xQ>IL5oHDhswy~~pV&kO7`o_tP4UJP88ylxi1;nW|PjG{Zrjlvu zRECy&)z%UDncOg?aca~2=9c_|-gIu}{<994J+5NRn2NFE=zc+e9LoJi`5ne@TK3b~ zPlJzt>5qC6TsPoc$fw;_zjvS=JMoQcw|&)4#1JjIjB-n`%e!)2g)-*O%Px^V=G88$s_INrxe{}8WLjL>W{7L!y->ZBtpo^Q9 zyD>#l?o@1u>|m1qBKNW>`g`$!Vf%zn4g1Z*?>wF;j5>aoF_m)!coJI`49@E6uU zxaqECTi$->1xr^xyD0birAI$FaMR0{-h0!TpS^9jr!OA2=~YXgebrHQV~+dS4`*+B z%hLBee&cPc*PVQA)22<9{@#VJeRx^*HNQV?Q)-LaTRdm^j7txG;`YloRa*L(C%#j|MEIsAucRt#1S@iAiZ5m>H3vE%obfA%+q&M?7chA z(r;by&=uc*>fANM->tXwuh;E4_{xg<*C)Tbx1}%n+T=aoS=jisBi@~5>FN7z{O=c^ z`Od0E?;dLD2fqKqVWVgL?9p@HJ<`&bKfe1npS*6-=hwV@oTXQNb^fPEwXOT<1Mjw2 z`t9fE_WQ(wTfg$7ciSwz$DjV|=b!)EFW-Fq-EK?Y*R$o8n{K=3o{G(^R}#ie80^XS^B6w9=PF)ENntSu#Zr;4k(obD|)9TMJnRWjooA0*tqMZjk^tU(4 zE_iYCdP{$!t}cJn?stCw@0%a7^tv-odwSz9_xs|YEl*gwWcprvJ`x@Ga?O@!Ed9gJ zb+vwR)Tmny-tvN_`+wIv`_K2B_ipo+mo5E=VFN$cQugchXKZ=Z(odX!L`V4(>o5A^ zmbWZDE%V>VS2y|VEPdQ{SAM1Qs*P{&65MU+Cm;OXk#in;;oiDny`_JdtN!!gH#ePs zXz+-ozq^`+0uK@T6@D!PQUt{r-N559nHF7?V*RB^36X4Z&`ZSH8Z~P`X#qsSQ2is z^te^W+!(#S+tXRR7(EzUcj@nbeM5BhbdF3=`r68Cu7Bt1=(k6OgWUVKrqBOLcFejZ z;Rs8g^VHf?Px#2Jo(scKmLC7Jb>WPcs~-AlIL^|mx6C?W!Ziyo*$~!SI(Oei*IYYz z(lgJ8dt3VE;lH~3b3YyWrN4x;Ed7&ZFFw%z(B*#^kUG@T4>7{20gg}e(|9aNzm5)- zpOB<~wN?6wIK8cIZ>d?#SXag@DfW~x=}yw4ipnn|t$LF3@_!V+ zOVSHS%ibqxadvf4nh{Z-`ulH{K83u+?aS9HPUAlJNuRb=`rD*MkEH!~xG#n$puJ*v zPu;5gia1R+i<7r-eI+FJFxvChoa=itW)ARrF29l>-Cxq)cdwfMaL1p|m4CJJ^>ybQ zn_E2owG{r~ZYMp|^2f&ZKVGr+`M3VQ-|xc1hj{+JU#Kbn;)~(CjXMvR@N)NuU;WEd zKP-D8^~m#get-SYGbh~`?y=kN4nt1-(`&9g_PifH*m>Pgo;z>C&O2>9;^&K&v>)=+ zfakvOqxO@(w#S_dHr_U>Vds&b`r*vI`yaWbc|+GxPYizj@A*HES%1`DAA6zag+I2x z_2la>%>C<}wD%C>_$pwNP7zLyt*NOwem+x@?ODPX`SzCV7~PC@K>5g|D*NE#KT!j~l$=M7>R#8lg4P_P7bKzHJXQsyiPA0AusLhUX0jIGFKF#x< zrXIyof67&Q&Cj}cSvl7d(n&k2oLH|4xwx(?UMSy4{#}alFD2A7eo1G?DYV&=WriOw zyR}Q9pQY{176WSOAnYZ0nakGP5P{J`#3b89V6K~pRtHmWohMTFq164F=j7%%ctCvE z$@F~Qa2F#W2GBhx9+S0cc0r0Gys-Pktmi#JUBcfBTqO%GhbzytJ|lr_Q#V05x(ZP& z;YC%hZ+mbR|GN4uH}PF2lBstV@5IYVz1t6aZ#Up=bfl;^Yml4s(uCL9sjPQtdY*Uu zht_yI4bJXXnVq-W>*MC_wP)>1dv)BnW?XPncKojIWNW<5^BTUiWlh7oe$^DeqG`&g zepQXP_P>7WgdtVa-rTk7BQxr+pR;SzFOGcUq^6?|@A$=0*RF3m+Iy<$nEVf}KgN5$ z>J#2e*MIW%UsfIa>dU`4?&(*Wj?a3po$!W#=3I|4I#G)tU0NEHm6Zn-=}gc+6*0ix zDgB`lgZ!O?!NJgeBhn+wb|ZdqQfg7q9^4V$6|4`Q3VskgQ~9IvXM-OH&-*W>e-Zq~ z|844(;I-@9Cmn1{(_4xUj2=S|Lc*B z-+T7BZ`?b4L}^(?X3*edy`AnETLcuYYR({SUmg zY0I1=ue!Qs!sszaUAyM`uiUWqrrRD^|42!ua_5oL_B-HXH?Do+`)f*v4y)dM-~C?v z?W?bEd30kc`{CX97&EDH+ChgLdc>Tgj{d}_jyqvqbAG|1uH~OT^MV_0x#P|aPv3q= zd&grx`}yZjs6H(nrpAX0LVrR{&sihGx&b3nqsn(p@0FgF>c3~tEhVE;qf%qa>NAIh z^_459lo~J(^m6VlN)s*eI%dkC03>sX17>&*9H?*{()uk^lE{*v+G zuvD;e#%=?rrTvvp@7eS0UMat4Lj%Zqspqd_4^361g0lzCI&`0&Z|_~=r;bVwuMbxC zAD3#WJi4Oi_QsL@#-++jgZ?EwSDpQnaA4Rk?0LSVGUX4bOf}N^F=gXYLI3j6D?d>- zGR%b2Q@cW@o_AKIiS4D+B_%;=Nm*(6z={!>p_N1XMg1!Wq@r-Aojz2)i$6Fu#2*?C zDd!8_^A;g<5-man+*;xE@8^N9;D`s|3G z^&jw&L*Lm{Ghx5uj-UI>RTp1!>E~{~>w#}Ry7BSv{`}=%Z}Czl5>uv4-{;^%j$d^N zFYkWfn;XCTo@uhJmBD#e9x+{t$*;LAN}}^Kb?Kfg*V*z;6sl-_SEw~J?P4BeShPVPaS;N z;m3UPgt?!&Wc6L&xc8xlH$L{`fx8So_PDqIx_L{_;*)>=V*lORJ4TG0`{^@ozvJgG ze)OB`cNx6vZnF~IOq8E4+}=rcch;f+82rL${w_tHITCak^V-iIE0>c=l$<;}R_ z%G%YtJ-Owu!#{OwY1x2i^n}-5Z||70&weuxn6q%{cOHNG2haWFx0|xIAXv~rAL*9sSy?BVOdxj5|R!p zQ)w2<`TciJA67cN^cbRnLn@C*?H>~SO${s=P&q9%a`(B}#i^5a@A*#ptUJSDC1<@G zezJ6z@*(A7xswo-VI`j|-77u2Vq6NQ2V72J~E%I_s)kGCQAtS$YC-%%J~}@}38)yDNL19kwz`_xz&#&tD3s zl&?H)P|tm3JwF??cUV!3Wtf?J z%AT6a@yX4WS9mE3CXFW)kL{)(Vv86Yq1Dq)3MeNBC3@gk+tc-7kf E1D~LejsO4v diff --git a/sentience/extension/pkg/sentience_core_bg.wasm.d.ts b/sentience/extension/pkg/sentience_core_bg.wasm.d.ts index 3544143..8537307 100644 --- a/sentience/extension/pkg/sentience_core_bg.wasm.d.ts +++ b/sentience/extension/pkg/sentience_core_bg.wasm.d.ts @@ -1,9 +1 @@ -/* tslint:disable */ -/* eslint-disable */ -export const memory: WebAssembly.Memory; -export const analyze_page: (a: number) => number; -export const analyze_page_with_options: (a: number, b: number) => number; -export const decide_and_act: (a: number) => void; -export const __wbindgen_export: (a: number, b: number) => number; -export const __wbindgen_export2: (a: number, b: number, c: number, d: number) => number; -export const __wbindgen_export3: (a: number) => void; +Not Found \ No newline at end of file