From 00e52c754d539f86e5264578621fb60058894b42 Mon Sep 17 00:00:00 2001 From: Hyrin-mansoor Date: Tue, 9 Jun 2026 08:46:05 +0300 Subject: [PATCH] feat: persist sendNonERPtoaiEnabled state in localStorage and update API endpoints - Added functionality to store the state of sendNonERPtoaiEnabled in localStorage. - Updated the retrieval of sendNonERPtoaiEnabled to read from localStorage. - Changed API endpoints for support bot, frontend settings, and TTS synthesis to new paths. --- changai/changai/api/v2/assets/stop_words.json | 186 ++ .../changai/api/v2/assets/thread_words.json | 122 + changai/changai/api/v2/auto_gen_api.py | 90 - .../api/v2/build_cards_faiss_index_v2.py | 2 +- changai/changai/api/v2/clients.py | 314 ++ changai/changai/api/v2/create_qr.py | 5 +- changai/changai/api/v2/format_output.py | 62 + .../fvs_stores/erpnext/emb_dir/field_docs.pkl | Bin 2236085 -> 2236085 bytes .../fvs_stores/erpnext/report_fvs/index.faiss | Bin 718838 -> 718838 bytes .../fvs_stores/erpnext/schema_fvs/index.faiss | Bin 26619790 -> 26619790 bytes .../fvs_stores/erpnext/schema_fvs/index.pkl | Bin 2369061 -> 2369061 bytes .../fvs_stores/erpnext/table_fvs/index.faiss | Bin 2293386 -> 2293386 bytes changai/changai/api/v2/gdoc_ai.py | 0 changai/changai/api/v2/helpdesk_api.py | 45 + changai/changai/api/v2/non_erp_handler.py | 45 +- changai/changai/api/v2/retrieve.py | 696 ++++ changai/changai/api/v2/schema_utils.py | 785 ++++- changai/changai/api/v2/store_chats.py | 142 +- .../changai/api/v2/text2sql_pipeline_v2.py | 2813 +---------------- changai/changai/api/v2/tts.py | 93 + .../changai_settings/changai_settings.js | 2 +- .../changai/prompts/create_entity_prompt.txt | 18 + changai/changai/prompts/report_prompt.txt | 53 + changai/changai/prompts/retry_sys_prompt.txt | 8 + changai/changai/prompts/retry_user_prompt.txt | 7 + changai/changai/prompts/sql_system_prompt.txt | 40 +- changai/changai/prompts/sql_user_prompt.txt | 8 +- changai/hooks.py | 12 +- changai/public/dist/changai-chatbot.js | 242 +- frontend/src/App.vue | 8 +- frontend/src/utils/frappe.js | 6 +- 31 files changed, 2856 insertions(+), 2948 deletions(-) create mode 100644 changai/changai/api/v2/assets/stop_words.json create mode 100644 changai/changai/api/v2/assets/thread_words.json create mode 100644 changai/changai/api/v2/clients.py create mode 100644 changai/changai/api/v2/gdoc_ai.py create mode 100644 changai/changai/api/v2/retrieve.py create mode 100644 changai/changai/api/v2/tts.py create mode 100644 changai/changai/prompts/create_entity_prompt.txt create mode 100644 changai/changai/prompts/report_prompt.txt create mode 100644 changai/changai/prompts/retry_sys_prompt.txt create mode 100644 changai/changai/prompts/retry_user_prompt.txt diff --git a/changai/changai/api/v2/assets/stop_words.json b/changai/changai/api/v2/assets/stop_words.json new file mode 100644 index 0000000..ee58fc1 --- /dev/null +++ b/changai/changai/api/v2/assets/stop_words.json @@ -0,0 +1,186 @@ +[ + "hi", + "hello", + "hey", + "thanks", + "thank", + "please", + "pls", + "ok", + "okay", + "yes", + "no", + "bye", + "goodbye", + "have", + "has", + "had", + "do", + "does", + "did", + "what", + "which", + "who", + "whom", + "whose", + "where", + "when", + "why", + "how", + "can", + "could", + "would", + "should", + "do", + "does", + "did", + "is", + "are", + "was", + "were", + "be", + "been", + "being", + "the", + "a", + "an", + "to", + "for", + "from", + "of", + "in", + "on", + "at", + "by", + "with", + "without", + "and", + "or", + "but", + "if", + "then", + "than", + "as", + "this", + "that", + "these", + "those", + "it", + "its", + "there", + "here", + "show", + "list", + "give", + "get", + "find", + "display", + "tell", + "me", + "need", + "want", + "make", + "create", + "check", + "see", + "view", + "today", + "yesterday", + "tomorrow", + "now", + "current", + "latest", + "last", + "next", + "this", + "week", + "month", + "year", + "daily", + "weekly", + "monthly", + "yearly", + "مرحبا", + "مرحبًا", + "اهلا", + "أهلا", + "أهلًا", + "السلام", + "شكرا", + "شكرًا", + "نعم", + "لا", + "طيب", + "تمام", + "مع السلامة", + "ما", + "ماذا", + "من", + "متى", + "أين", + "اين", + "كيف", + "لماذا", + "هل", + "كم", + "أي", + "اي", + "الذي", + "التي", + "الذين", + "في", + "من", + "إلى", + "الى", + "على", + "عن", + "مع", + "بدون", + "و", + "أو", + "او", + "لكن", + "إذا", + "اذا", + "ثم", + "هذا", + "هذه", + "هؤلاء", + "ذلك", + "تلك", + "هنا", + "اعرض", + "عرض", + "اظهر", + "أظهر", + "هات", + "اعطني", + "أعطني", + "اريد", + "أريد", + "احتاج", + "ابحث", + "تحقق", + "شوف", + "اليوم", + "أمس", + "امس", + "غدا", + "غدًا", + "الآن", + "الان", + "الحالي", + "الأخير", + "الاخير", + "هذا", + "هذه", + "الأسبوع", + "الاسبوع", + "الشهر", + "السنة", + "العام", + "يومي", + "أسبوعي", + "شهري", + "سنوي" +] \ No newline at end of file diff --git a/changai/changai/api/v2/assets/thread_words.json b/changai/changai/api/v2/assets/thread_words.json new file mode 100644 index 0000000..e89bea6 --- /dev/null +++ b/changai/changai/api/v2/assets/thread_words.json @@ -0,0 +1,122 @@ +[ + "yes", + "yep", + "yeah", + "yup", + "yes please", + "list", + "of course", + "sure", + "surely", + "absolutely", + "definitely", + "certainly", + "indeed", + "correct", + "ofcourse", + "right", + "exactly", + "precisely", + "ok", + "okay", + "fine", + "alright", + "go ahead", + "do it", + "show me", + "please", + "go on", + "continue", + "proceed", + "why not", + "aye", + "affirmative", + "true", + "agreed", + "hmm", + "hm", + "umm", + "uh", + "ah", + "give", + "interesting", + "i see", + "got it", + "ok got it", + "and", + "so", + "then", + "also", + "but", + "what", + "how", + "when", + "who", + "where", + "why", + "more", + "less", + "again", + "another", + "other", + "next", + "previous", + "back", + "forward", + "noted", + "understood", + "makes sense", + "okay okay", + "fine fine", + "sure sure", + "show", + "نعم", + "أجل", + "بالتأكيد", + "طبعاً", + "حسناً", + "موافق", + "صحيح", + "بالضبط", + "تماماً", + "إي", + "ماشي", + "تمام", + "أوكي", + "يلا", + "استمر", + "كمّل", + "واضح", + "فاهم", + "مفهوم", + "اوك", + "و", + "ثم", + "لكن", + "أيضاً", + "كذلك", + "ماذا", + "كيف", + "متى", + "من", + "أين", + "لماذا", + "أكثر", + "أقل", + "مرة أخرى", + "التالي", + "السابق", + "حسناً حسناً", + "تمام تمام", + "مزيد", + "غيره", + "لا", + "لأ", + "لا شكراً", + "إلغاء", + "توقف", + "اتركه", + "مش محتاج", + "مو صح", + "خطأ" +] \ No newline at end of file diff --git a/changai/changai/api/v2/auto_gen_api.py b/changai/changai/api/v2/auto_gen_api.py index e939eef..5767a25 100644 --- a/changai/changai/api/v2/auto_gen_api.py +++ b/changai/changai/api/v2/auto_gen_api.py @@ -33,13 +33,10 @@ def ensure_file_folder(folder_path: str, is_private: int = 1) -> str: """ if not folder_path: return "Home" - parts = [p.strip() for p in folder_path.split("/") if p.strip()] if not parts: return "Home" - current_path = parts[0] - # Usually Home already exists, but keep this safe. if not frappe.db.exists("File", current_path): frappe.get_doc({ @@ -49,7 +46,6 @@ def ensure_file_folder(folder_path: str, is_private: int = 1) -> str: "folder": "", "is_private": is_private, }).insert(ignore_permissions=True) - for part in parts[1:]: next_path = f"{current_path}/{part}" if not frappe.db.exists("File", next_path): @@ -61,7 +57,6 @@ def ensure_file_folder(folder_path: str, is_private: int = 1) -> str: "is_private": is_private, }).insert(ignore_permissions=True) current_path = next_path - return current_path @@ -121,22 +116,18 @@ def write_filedoctype( is_private: int = 1 ): folder = ensure_file_folder(folder, is_private=is_private) - if file_name.endswith(JSON_EXT): text = json.dumps(payload, ensure_ascii=False, indent=2) elif file_name.endswith((YAML_EXT, ".yml")): text = yaml.safe_dump(payload, allow_unicode=True, sort_keys=False) else: text = str(payload) - content = text.encode("utf-8") - existing = frappe.db.get_value( "File", {"file_name": file_name, "folder": folder}, "name" ) - if existing: doc = frappe.get_doc("File", existing) frappe.logger().info(f"Overwriting {file_name} -> file_url={doc.file_url}") @@ -144,7 +135,6 @@ def write_filedoctype( doc.save(ignore_permissions=True) doc.reload() return doc - doc = frappe.get_doc({ "doctype": "File", "file_name": file_name, @@ -152,7 +142,6 @@ def write_filedoctype( "is_private": is_private, "content": content, }).insert(ignore_permissions=True) - return doc def _tab(dt: str) -> str: dt = (dt or "").strip() @@ -169,32 +158,24 @@ def _strip_tab(t: str) -> str: def _normalize_master_data_payload(payload: Any) -> tuple[Dict[str, Any], List[Dict[str, Any]]]: if not isinstance(payload, dict): payload = {} - meta = payload.get("_meta") or {} data = payload.get("data") or [] - if not isinstance(meta, dict): meta = {} - if not isinstance(data, list): data = [] - return meta, data def _extract_existing_keys(data: List[Any]) -> Set[tuple]: keys: Set[tuple] = set() - for row in data: if not isinstance(row, dict): continue - dt = row.get("entity_type") eid = row.get("entity_id") - if dt and eid: keys.add((dt, eid)) - return keys @@ -233,20 +214,15 @@ def update_masterdata(): def sync_master_data_smart() -> Dict[str, Any]: file_name = "master_data.yaml" payload = _read_filedoctype(file_name, RAG_FOLDER) - meta, data = _normalize_master_data_payload(payload) - added_total = 0 removed_total = 0 added_by_module: Dict[str, int] = {} removed_by_module: Dict[str, int] = {} fetched_by_module: Dict[str, int] = {} - rebuilt_rows: List[Dict[str, Any]] = [] - for mod in MODULES_TO_SYNC: entity_type = f"tab{mod}" - existing_rows = [ row for row in data if isinstance(row, dict) and row.get("entity_type") == entity_type @@ -263,18 +239,13 @@ def sync_master_data_smart() -> Dict[str, Any]: fields.append(title_field) live_records = frappe.get_all(mod, fields=fields,limit_page_length=0) live_ids = {rec.get("name") for rec in live_records if rec.get("name")} - fetched_by_module[mod] = len(live_ids) - added_ids = live_ids - existing_ids removed_ids = existing_ids - live_ids - added_by_module[mod] = len(added_ids) removed_by_module[mod] = len(removed_ids) - added_total += len(added_ids) removed_total += len(removed_ids) - for rec in live_records: if mod == "Item": item_code = rec.get("name") @@ -297,9 +268,7 @@ def sync_master_data_smart() -> Dict[str, Any]: else: entity_id = rec.get(title_field) if title_field in rec else rec.get("name") rebuilt_rows.append(_build_master_data_row(entity_type, entity_id,title_field)) - final_data = rebuilt_rows - meta["last_sync"] = str(now_datetime()) settings = frappe.get_single("ChangAI Settings") settings.last_masterdata_sync = meta["last_sync"] @@ -325,15 +294,12 @@ def _clean_schema_fields(by_table: Dict[str, Dict[str, Any]]) -> None: for field in block.get("fields", []) or []: if not isinstance(field, dict): continue - if field.get("fieldtype") != "Select": field.pop("options", None) - if field.get("fieldtype") != "Link": field.pop("join_hint", None) - def get_doctypes_changed_since(last_sync: Optional[str]) -> List[str]: app_names=["erpnext","frappe"] erpnext_modules = get_mod(app_names) @@ -348,9 +314,7 @@ def get_doctypes_changed_since(last_sync: Optional[str]) -> List[str]: filters["modified"] = [">=", since] # catches updated tables except Exception: pass - results = frappe.get_all("DocType", filters=filters, pluck="name") - # Also catch newly created DocTypes since last sync if last_sync: try: @@ -368,25 +332,20 @@ def get_doctypes_changed_since(last_sync: Optional[str]) -> List[str]: results = list(set(results) | set(new_doctypes)) except Exception: pass - return results TABLES_JSON = "tables.json" YML_EXTENSIONS = (".yaml", ".yml") REPORTS_JSON = "reports.json" - def _normalize_schema_payload(payload: Any) -> tuple[Dict[str, Any], List[Dict[str, Any]]]: if not isinstance(payload, dict): return {}, [] - meta = payload.get("_meta") or {} tables_blocks = payload.get("tables") or [] - if not isinstance(meta, dict): meta = {} if not isinstance(tables_blocks, list): tables_blocks = [] - return meta, tables_blocks @@ -415,16 +374,13 @@ def _get_tables_to_process( ) -> tuple[Set[str], Set[str], Set[str], List[str], List[str]]: changed_tables = {_tab(dt) for dt in changed_doctypes} existing_tables_set = set(existing_tables) - missing_from_schema = {t for t in existing_tables if t not in by_table} new_from_changed = { t for t in changed_tables if t not in by_table and t not in existing_tables_set } - tables_to_process = sorted(changed_tables | missing_from_schema | new_from_changed) merged_tables = sorted(existing_tables_set | changed_tables) - return changed_tables, missing_from_schema, new_from_changed, tables_to_process, merged_tables @@ -439,12 +395,10 @@ def _get_existing_fields_for_table(by_table: Dict[str, Dict[str, Any]], table: s def _merge_select_options(live_options_raw: str, existing_options: Any) -> List[str]: live_options = [opt.strip() for opt in live_options_raw.split("\n") if opt.strip()] - if isinstance(existing_options, str): existing_options = [opt.strip() for opt in existing_options.split("\n") if opt.strip()] elif not isinstance(existing_options, list): existing_options = [] - return list(dict.fromkeys(live_options + existing_options)) @@ -454,33 +408,19 @@ def _build_fields_from_meta( ) -> List[Dict[str, Any]]: fields: List[Dict[str, Any]] = [] added_fieldnames = set() - - # # always add system fields first - # for sys_field in SYSTEM_FIELDS: - # field_entry = _build_field_entry(sys_field, existing_fields, meta_dt.name) - # if field_entry: - # fields.append(field_entry) - # added_fieldnames.add(field_entry["name"]) - - # then add real doctype fields for field_meta in meta_dt.fields: fieldname = (getattr(field_meta, "fieldname", None) or "").strip() fieldtype = (getattr(field_meta, "fieldtype", None) or "").strip() - if not fieldname: continue - if fieldname in added_fieldnames: continue - if fieldtype in EXCLUDED_FIELDTYPES: continue - field_entry = _build_field_entry(field_meta, existing_fields, meta_dt.name) if field_entry: fields.append(field_entry) added_fieldnames.add(field_entry["name"]) - return fields @@ -493,7 +433,6 @@ def _update_or_create_table_block( by_table[table]["fields"] = fields by_table[table]["desc_done"] = not _has_pending_descriptions(fields) return - by_table[table] = { "table": table, "description": "", @@ -506,7 +445,6 @@ def _build_field_entry( existing_fields: Dict[str, Dict[str, Any]], source_doctype: str, ) -> Optional[Dict[str, Any]]: - if isinstance(field_meta, dict): fieldname = field_meta.get("fieldname") fieldtype = field_meta.get("fieldtype", "Data") @@ -517,38 +455,30 @@ def _build_field_entry( fieldtype = getattr(field_meta, "fieldtype", "Data") label = getattr(field_meta, "label", None) or fieldname options = getattr(field_meta, "options", None) - if not fieldname: return None - existing = existing_fields.get(fieldname) or {} description = existing.get("description") or "" - entry = { "name": fieldname, "fieldtype": fieldtype, "label": label, "description": description, } - if fieldtype == "Select" and options: entry["options"] = _merge_select_options( options, existing.get("options", []), ) - elif fieldtype == "Link" and options: entry["join_hint"] = { "table": f"tab{options}", "on": f"{fieldname} = tab{options}.name" } - if fieldtype != "Select": entry.pop("options", None) - if fieldtype != "Link": entry.pop("join_hint", None) - return entry @@ -578,7 +508,6 @@ def _write_schema_outputs( ) - def _has_pending_descriptions(fields: List[Dict[str, Any]]) -> bool: return any( not (field.get("description") or "").strip() @@ -911,24 +840,19 @@ def _process_pending_field_batches( updated_in_table = 0 updated_fields = 0 consecutive_errors = 0 - for i in range(0, len(pending_fields), batch_size): batch = pending_fields[i:i + batch_size] desc_map = _smart_desc_map(client, table, batch) - if not desc_map: consecutive_errors += 1 continue - consecutive_errors = 0 - for field in batch: field_name = field.get("name") if field_name in desc_map: field["description"] = desc_map[field_name].strip() updated_fields += 1 updated_in_table += 1 - # Required checkpoint commit: this long-running schema enrichment job calls external APIs and must persist partial progress to avoid losing completed batch updates on failure/retry. frappe.db.commit() # nosemgrep return { @@ -950,10 +874,8 @@ def _process_table_for_missing_descriptions( "consecutive_errors": 0, "skipped": 1, } - table = block.get("table") pending_fields = _get_pending_fields(block) - if not pending_fields: block["desc_done"] = True return { @@ -962,9 +884,7 @@ def _process_table_for_missing_descriptions( "consecutive_errors": 0, "skipped": 0, } - block["desc_done"] = False - try: result = _process_pending_field_batches( client=client, @@ -980,7 +900,6 @@ def _process_table_for_missing_descriptions( "consecutive_errors": 1, "skipped": 0, } - if result["updated_in_table"]: _mark_table_desc_done(block) @@ -1037,7 +956,6 @@ def _build_desc_prompt(table_name: str, field_names: List[str]) -> str: {json.dumps(field_names, ensure_ascii=False)} """.strip() - def _call_openai_desc_map_once(client, prompt: str): return client.chat.completions.create( model="gpt-4o-mini", @@ -1050,33 +968,25 @@ def _call_openai_desc_map_once(client, prompt: str): timeout=180, ) - def _smart_desc_map_openai(client, table_name: str, fields: List[Dict[str, Any]]) -> Dict[str, str]: if not client: return {} - field_names = _get_field_names(fields) if not field_names: return {} - prompt = _build_desc_prompt(table_name, field_names) - for attempt in range(3): try: response = _call_openai_desc_map_once(client, prompt) text = (response.choices[0].message.content or "").strip() - parsed = _extract_json_object(text) normalized = _normalize_desc_map(parsed) if normalized: return normalized - frappe.logger().warning( f"OpenAI returned non-JSON table={table_name} attempt={attempt+1} preview={text[:200]!r}" ) except Exception as e: frappe.logger().error(f"OpenAI error table={table_name} attempt={attempt+1}: {e}") - time.sleep(2 * (attempt + 1)) - return {} \ No newline at end of file diff --git a/changai/changai/api/v2/build_cards_faiss_index_v2.py b/changai/changai/api/v2/build_cards_faiss_index_v2.py index 881e032..05849ac 100644 --- a/changai/changai/api/v2/build_cards_faiss_index_v2.py +++ b/changai/changai/api/v2/build_cards_faiss_index_v2.py @@ -8,7 +8,7 @@ from langchain_core.documents import Document from langchain_community.docstore.in_memory import InMemoryDocstore from langchain_community.vectorstores import FAISS -from changai.changai.api.v2.text2sql_pipeline_v2 import get_embedding_engine +from changai.changai.api.v2.retrieve import get_embedding_engine import os import pickle diff --git a/changai/changai/api/v2/clients.py b/changai/changai/api/v2/clients.py new file mode 100644 index 0000000..57191a4 --- /dev/null +++ b/changai/changai/api/v2/clients.py @@ -0,0 +1,314 @@ +import frappe +import requests +import json +import time +from frappe import _ +from typing import Any, Dict, List, Optional, Union +from google import genai +from google.genai import types +from google.oauth2 import service_account +from google.api_core import exceptions as google_exceptions +from changai.changai.api.v2.schema_utils import (ChangAIConfig, CHANGAI_SETTINGS, CHANGAI_GUIDE_LINK, ERPGULF_LINK, settingsUrl) +_GEMINI_CLIENT = None +_GEMINI_CONFIG = None +APPLICATION_JSON = "application/json" +MODEL_ID = "gemini-2.5-flash-lite" +STATUS_200 = 200 + + +def call_model(prompt: str, task: str = "llm",sys_prompt: str = "") -> Any: + config = ChangAIConfig.get() + if config["REMOTE"] and config["llm"] == "QWEN3": + return remote_llm_request_deploy_test(prompt=prompt, task=task) + else: + if config["llm"] == "Gemini": + return call_gemini(prompt,sys_prompt) + + +def _post_json(url: str, headers: Dict[str, str], payload: Dict[str, Any], timeout: int = 120): + try: + res = requests.post(url, headers=headers, json=payload, timeout=timeout) + ct = (res.headers.get("Content-Type") or "").lower() + try: + body = res.json() if APPLICATION_JSON in ct else {"raw_text": res.text} + except Exception: + body = {"raw_text": res.text} + if res.status_code not in (STATUS_200, 201, 202): + return {"ok": False, "status_code": res.status_code, "body": body} + return {"ok": True, "status_code": res.status_code, "body": body} + except requests.exceptions.Timeout: + return {"ok": False, "status_code": None, "body": {"error": "timeout"}} + except Exception as e: + return {"ok": False, "status_code": None, "body": {"error": str(e)}} + + + + +def local_llm_request(prompt: str) -> str: + config = ChangAIConfig.get() + url = f"{config['URL'].rstrip('/')}/api/generate" + payload = {"model": config["LOCAL_LLM"], "prompt": prompt, "stream": False} + resp = _post_json(url, headers={}, payload=payload, timeout=120) + if not resp.get("ok"): + return f"Error: local LLM call failed ({resp.get('status_code')}): {resp.get('body')}" + text = (resp.get("body") or {}).get("response") + return (text or "").strip() or "Error: Empty response from local LLM." + + +def _get_gemini_vertex_config(config): + project_id = (config.get("gemini_project_id") or "").strip() + credentials_json = (config.get("gemini_json_content") or "").strip() + location = (config.get("gemini_location") or "").strip() + return project_id, credentials_json, location + + +def _throw_missing_vertex_field(project_id: str, location: str, credentials_json: str) -> None: + if not project_id: + frappe.throw( + _("Gemini Project ID is missing.

Please Go to Settings Page and enter your Gemini Project ID.
" + "Check Quick Start Guide 👇:
Click here
" + "ERPGulf.com.").format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), + title=_("Missing Gemini Project ID"), + ) + if not location: + frappe.throw( + _("Gemini Location is missing.

Please Go to Settings Page and enter your Gemini Location.
" + "Check Quick Start Guide 👇:
Click here
" + "ERPGulf.com.").format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), + title=_("Missing Gemini Location"), + ) + if not credentials_json: + frappe.throw( + _("Service Account Credentials are missing.

Please Go to Settings Page and enter your Service Account Credential.
" + "Check Quick Start Guide 👇:
Click here" + "ERPGulf.com." +).format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), + title=_("Missing Service Account Credentials"), + ) + + + +def _get_api_key_client(config): + try: + api_key = config.get("gemini_api_key") + except Exception: + api_key = None + + if not api_key: + frappe.throw( + _( + "Gemini API key is not configured.

" + "You have two options to authenticate with Gemini:

" + "Option 1 (Free / API Key):
" + "Go to ChangAI Settings and enter your Gemini API Key.
" + "Get your free API key from " + "Google AI Studio.

" + "Option 2 (Vertex AI / Service Account):
" + "Fill in Gemini Project ID, Gemini Location, " + "and Service Account Credentials in Got to Settings Page.
" + "ChangAI Quick Start Guide 👇:
" + "Click here
" + "ERPGulf.com." + + ).format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), + title=_("Gemini Authentication Not Configured"), + ) + + return genai.Client(api_key=api_key) + + +def _build_gemini_client(config): + project_id, credentials_json, location = _get_gemini_vertex_config(config) + + if project_id or credentials_json or location: + return _build_vertex_gemini_client(project_id, location, credentials_json) + + return _get_api_key_client(config) + + +def _build_gemini_contents(prompt: str): + return [ + { + "role": "user", + "parts": [{"text": str(prompt)}], + } + ] + + +def _clean_gemini_response_text(text: str) -> str: + text = (text or "").strip() + if text.startswith("```"): + text = text.replace("```json", "").replace("```", "").strip() + return text + + +def _handle_gemini_api_exception(e: Exception) -> None: + if isinstance(e, google_exceptions.ResourceExhausted): + frappe.throw( + _("Gemini API quota exceeded.

Please wait and try again or upgrade your plan.
Check Quick Start Guide 👇:
" + "Click here
" + "ERPGulf.com." +).format(CHANGAI_GUIDE_LINK,ERPGULF_LINK), + + title=_("Gemini Quota Exceeded"), + ) + if isinstance(e, google_exceptions.Unauthenticated): + frappe.throw( + _("Gemini API key is invalid.

Please go to ChangAI Settings and enter a valid Gemini API Key.
" + "Check ChangAI Quick Start Guide 👇:
Click here
" + "ERPGulf.com." +).format(CHANGAI_GUIDE_LINK,ERPGULF_LINK), + title=_("Invalid Gemini API Key"), + ) + if isinstance(e, google_exceptions.PermissionDenied): + frappe.throw( + _("Gemini API permission denied.

Please check your API key permissions.
" + "Check ChangAI Quick Start Guide 👇:
Click here
" + "ERPGulf.com." +).format(CHANGAI_GUIDE_LINK,ERPGULF_LINK), + title=_("Gemini Permission Denied"), + ) + if isinstance(e, google_exceptions.InvalidArgument): + frappe.throw( + _("Invalid request to Gemini API: {0}
" + "Check ChangAI Quick Start Guide 👇:
" + "Click here
" + "ERPGulf.com.").format(str(e),CHANGAI_GUIDE_LINK,ERPGULF_LINK), + title=_("Gemini Invalid Request"), + ) + + frappe.log_error(frappe.get_traceback(), "Gemini API Unexpected Error") + frappe.throw( + _("Gemini API error: {0}
" + "Check ChangAI Quick Start Guide 👇:
" + "Click here
" + "ERPGulf.com.").format(str(e),CHANGAI_GUIDE_LINK,ERPGULF_LINK), + title=_("Gemini API Error"), + ) + + +def gemini_client(): + global _GEMINI_CLIENT,_GEMINI_CONFIG + if _GEMINI_CLIENT is None: + config = frappe.get_single(CHANGAI_SETTINGS) + _GEMINI_CONFIG = config + _GEMINI_CLIENT = _build_gemini_client(config) + return _GEMINI_CLIENT + + + +def _build_input_payload(task: str, prompt: str, question: Optional[str], + db_result_json: Optional[str], user_message: Optional[str]) -> Dict[str, Any]: + if task == "format_db": + return {"task": "format_db", "question": question or "", "db_result_json": db_result_json or "{}"} + if task == "helpdesk_task": + return {"task": "helpdesk_task", "user_message": user_message or prompt or ""} + return {"task": "llm", "user_input": prompt} + + +def _poll_until_done(get_url: str, headers: Dict) -> Any: + terminal = {"succeeded", "failed", "canceled"} + deadline = time.time() + 300 + last = None + while time.time() < deadline: + try: + poll = requests.get(get_url, headers=headers, timeout=120).json() + except Exception as e: + poll = {"raw_text": str(e)} + last = poll + status = poll.get("status") + if status in terminal: + if status == "succeeded": + return poll.get("output") + return {"Error": f"Model ended with status {status}", "details": poll} + time.sleep(2) + return {"Error": "Polling timed out", "details": last} + + +def _build_vertex_gemini_client(project_id: str, location: str, credentials_json: str): + _throw_missing_vertex_field(project_id, location, credentials_json) + + service_account_info = json.loads(credentials_json) + creds = service_account.Credentials.from_service_account_info( + service_account_info, + scopes=["https://www.googleapis.com/auth/cloud-platform"], + ) + return genai.Client( + vertexai=True, + project=project_id, + location=location, + credentials=creds, + ) + + + +def remote_llm_request_deploy_test( + prompt: str = "", + task: str = "llm", + question: Optional[str] = None, + db_result_json: Optional[str] = None, + user_message: Optional[str] = None, +) -> Any: + config = ChangAIConfig.get() + headers = { + "Content-Type": APPLICATION_JSON, + "Prefer": "wait", + "Authorization": f"Bearer {config['API_TOKEN']}", + } + input_payload = _build_input_payload(task, prompt, question, db_result_json, user_message) + create = _post_json(config["deploy_url"], headers=headers, payload={"input": input_payload}, timeout=120) + + if not create.get("ok"): + return {"Error": "Create prediction failed", "status_code": create.get("status_code"), "details": create.get("body")} + + get_url = ((create.get("body") or {}).get("urls") or {}).get("get") + if not get_url: + return {"Error": "Missing get URL from deploy response", "details": create.get("body")} + + return _poll_until_done(get_url, headers) + + +def remote_embedder_request(formatted_q: str) -> Union[List[Any], str]: + config = ChangAIConfig.get() + payload = {"version": config["EMBED_VERSION_ID"], "input": {"user_input": formatted_q}} + headers = { + "Content-Type": APPLICATION_JSON, + "Prefer": "wait", + "Authorization": f"Bearer {config['API_TOKEN']}", + } + response = _post_json(config["URL"], headers, payload) + try: + if response: + return response["body"]["output"] + except Exception as e: + return "Error: " + str(e) + + +def call_model(prompt: str, task: str = "llm",sys_prompt: str = "") -> Any: + config = ChangAIConfig.get() + if config["REMOTE"] and config["llm"] == "QWEN3": + return remote_llm_request_deploy_test(prompt=prompt, task=task) + else: + if config["llm"] == "Gemini": + return call_gemini(prompt,sys_prompt) + + +def call_gemini(prompt: str,sys_prompt: str) -> Union[str, Dict[str, Any]]: + try: + # frappe.clear_document_cache(CHANGAI_SETTINGS) + client = gemini_client() + + gemini_config = types.GenerateContentConfig( + system_instruction=sys_prompt, + ) + response = client.models.generate_content( + model=MODEL_ID, + config=gemini_config, + contents=_build_gemini_contents(prompt), + ) + return _clean_gemini_response_text(response.text) + + except frappe.exceptions.ValidationError: + raise + except Exception as e: + _handle_gemini_api_exception(e) diff --git a/changai/changai/api/v2/create_qr.py b/changai/changai/api/v2/create_qr.py index ba8bc66..5b08ddd 100644 --- a/changai/changai/api/v2/create_qr.py +++ b/changai/changai/api/v2/create_qr.py @@ -11,9 +11,8 @@ from base64 import b64encode import io import os - - -def create_qr_code(doc): +@frappe.whitelist() +def create_qr_code(doc,method): """Create QR Code after inserting Employee""" if not hasattr(doc, 'custom_qr_code'): return diff --git a/changai/changai/api/v2/format_output.py b/changai/changai/api/v2/format_output.py index b162c55..c0f2562 100644 --- a/changai/changai/api/v2/format_output.py +++ b/changai/changai/api/v2/format_output.py @@ -1,6 +1,8 @@ from decimal import Decimal from typing import Any, Dict, List, Optional, Set import frappe +import json +from changai.changai.api.v2.clients import call_model,gemini_client import sqlglot from sqlglot import exp @@ -589,4 +591,64 @@ def local_format(sql: str, sample_rows: List[Dict[str, Any]]): result = format_sql_response(sql, row_count, sample_rows) return result +def format_data_conversationally(user_data: Any) -> str: + # Safe: CONVERSATION_TEMPLATE is a hardcoded internal template string. + # User SQL result is passed only as data context, not as template source. + # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti + return render_template( + CONVERSATION_TEMPLATE, # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti + + {"data": user_data} + ) + +def format_data(qstn: str, sql_data: Any) -> Dict[str, str]: + if isinstance(sql_data, (dict, list)): + db_result_json = json.dumps(sql_data, ensure_ascii=False, default=str) + else: + db_result_json = str(sql_data) if sql_data is not None else "{}" + + sys_prompt = """ +You are ChangAI, a warm and intelligent business assistant. +Your job is to turn raw database results into clear, friendly, human-readable answers. +CONTENT RULES: +- Use BOTH the user question and the DB result JSON to form the answer. +- Use ONLY values present in the JSON. NEVER invent numbers or fields. +- If result is empty, respond warmly and suggest refining the search. +- Do NOT mention SQL, tables, fields, JSON, reasoning, or steps. + +TONE & STYLE: +- Warm, conversational, and helpful — like a knowledgeable friend, not a report. +- If the question is in Arabic, reply in natural Arabic — not translated English. +- Never respond with a cold, empty, or robotic answer. + +FORMATTING: +- Start with ONE relevant emoji matching the topic (📦💰🧾👥📊📅🔍💤📉) +- For 3+ items, use a bullet list: • Item — value +- If list exceeds shown items, state exactly how many remain. +- Keep answers brief (1–6 lines). Lead with the direct answer, then light context. + +CLOSING: +- End with ONE short, relevant follow-up question to keep the conversation going. +- Make it feel natural, not robotic. +Never list names or items in a comma-separated line. Ever. +OUTPUT: +- Markdown ALLOWED: **bold**, • bullets, emojis +- i dont want too much gap between the texts also gaps are not allowed between items listed. +- No JSON. No code blocks. No labels. No explanations. +- Output ONLY the final user-facing answer. Nothing else. +- if the user question is in english reply in english only very important. +if the user question is in arabic respond in arabic only. and if the question is in english respond answer also english +""" + user_prompt=f""" + QUESTION: + {qstn} + + DATABASE_RESULT_JSON: + {db_result_json} + """ + output = call_model(user_prompt,"llm",sys_prompt) + answer = str(output) + return {"answer": answer} + + diff --git a/changai/changai/api/v2/fvs_stores/erpnext/emb_dir/field_docs.pkl b/changai/changai/api/v2/fvs_stores/erpnext/emb_dir/field_docs.pkl index c180c6568e16c5b9403ae7fedd2fed62fb6e370c..210e1088f0f9191600e0bf06a043394a6659e874 100644 GIT binary patch delta 142984 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

lWW%qPlh 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¬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 kQ~bHdpQ-*#^XFcF?(^qtR4Phk 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

0sV%y=4uSan~c?bM*v3y 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 gyA^Jfci95w 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 z�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 diff --git a/changai/changai/api/v2/fvs_stores/erpnext/schema_fvs/index.pkl b/changai/changai/api/v2/fvs_stores/erpnext/schema_fvs/index.pkl index 18d1a155e381db7282984676545a8a17bded9ff0..dc1cc0270bb68ee1805042297164f4793ea233e0 100644 GIT binary patch delta 131718 zcmZU6cYIdG((v!}l1@kw6}@ za{k-*P`T>||IYp*vdNGx(Wuu{||7(pSXTf@7~6SMlFH=0yQU zT+T?}9%~=AjkG`DzoY%0I{&5*@DG!+b(UFDkbfjQSVq-+=>d;~7HM~2r0;0pa~yvl z=z`Fg8R8%5+aJ6Ef%Xk)E&`QGheoE~%Td+y*CA45dXt>NxU%%5u=ezEFnlz9)X2R_ z!^xiIzmNZ3kNgYaACGdWb~^f30gI5SMx^gp%rflVrvQ@U`vxBoxW*q>p^xbWzY`G& z*`!DLq6-_onuWIE(AR}8*3ie)xC8XjsI(%2$+#>7*&79F>7&bx#6G_N%FU=| zsNMVrg#K6a%L1B-FA>CaY#iMp6aP(Wc?JKi*6IxY8}j)LVUTnacqgd6ksjSzlKlVw z(Ur^l#_fxATG)k8ojzZ`m7snWv-D zqdImMK@9xGpx)a%UCG{?jcZK}=?6QvAjQrZ4upFyEB1D-oNx zaoPDzVM$%WqtmN>ONYyMa{OEDbz;If5fhN|Q3$?AWjT?JE*@h0N=!tV@4Ge;rEU7| zNv=FUIoXBQe(D_o^O!#2(Z0UZkUZ&e)9VqXN6kRCOYb-{KmH;8n^{Y#B`O)^UwY7- zR^no%2O-hE*}j7!j?xR@`Pn{$o$Hk=#`pc)BS_so^QIBlHz{8c*#7g6VoT)(pJqR| zK<}h8z`p>&w{77D0rR*Qd7KFi7QQbm$d|fkj4-n=vlva>vYL{Ijcy)hv*Fd0{6PCW zzKx3qAVs5>h;)w&)CgkBrg?Mv>MdO-KxA7+Xi@3;m-Ru6zn{LGmM|-|Cw;tLF`hog z{7}%dhAj>K;D9|3)O-_Gg{9wHIn~pi*fKQAw`6rDVl{3Jk)rY15QOJTTKAiPh)=2- z<*Siq_YR`P%1bX_811FAKBEDK;}-{@AOQ+oR)}xNH4MV zXK_2@{BlJ5qP9I30A-{Apr~zzulDu}I6nW5;xxVyuR)M!?Iivfv&+5T_wSzLS#8Kr zGiuHm!}smpzXj-9!tzEte_yrlFaqzlzno{Jb7?@2^a}?Xcv_xa*0H5|MyjX9xkq3O z8+s%pzpv&`zYC;fiLbEL*XqzFu^}TzE(BQa@K{>mt|K++- zJ?rx0=wJP4OQ!vnf%I&8?jsLvl46}1OyA1$q-nLkKmxV$#Xkk$zHvPr*uLhMGK9a= z<Jtq{UG-2Y;a~uW^CPA&=k=cvog3E&deF(-tl>1{Ztiw^_^RFd zM^ z-xI6nC1iiQ%Ms9wdxG$d_hk%oCSn(o%{;7>U$lSvuKV`|Wa3%UR^qL5fBlLu);=Vi ztKXv^JUyjek^?Qh_7j_^m-w^=eXMylTHO1jui;K<_8irq^b-GsdLV(p5CzQ!oA;3% z;v4_3AQa=7V>O^+>l^$cr?1Y7#o4zro}Jw%N3rFK81!K z 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

qXovk#q-80s!x zM$7KFfHgVwPzdykKeRS%Nm&i8JvOo&;msSB*IborRs{{iCahycjePsXD`}aCLvUqn zFySz%ibl59msRPQu-?_&v-V~6|JfJE)WCJ^*lh)~iSzs*QdC1*<{=L{*s$AY-$#eD z`3c%OPY<{nC@d0GTQk{+np!dvKd_dE@fegoiDvz3YW^%&ZEbmL@PKjNs5!k%-mSjoininiz=}x0 zB@MMHM8P7Bwd}ERN7sVVD9%Wqh_6!_g_Qz;&g;~*Vq4P5ER=q2s_jOUW;N4J<401W zhE_0d(_FhN9)x(ZS)8@-K`pc}!f0Ac4LvJtMk^AiywB%a3l9;TYA8g6#cjciU)tQX zS<_$qHSXU=>p*b&wAIk3z#F&ID94+jw;X9l<*n+Li$&iYDA_Ri)M)Z&c>Yormg z0Yiuwy!}vZ3C;2LYmFQ-eCBW{bt!Ig#v2H)LR<+B_XrI`Tx`imEqm@FFi*le;Dn8% zw5+NZSG1>b6yJg}S$1-@jw z)`oh#o}iJN@zi%3CCwyH)X0z+G08EQPFE-ibc3+C8TF>8*Wc5Bl;1F@h74s4kc z6T*CZ+$}7=SIeGH2w>v6XCYB$pSIKk#;In-qA$T-==-%zMBV+a)-wBmD^N!r)P5Eh zHtr9Q&^Y_h4DWq0u6Nda+nPhLdccpa`jY1-?X?I6%6+&{>K@Wo;N*WDayfA4VU1oo zPCnu?b*GO`TglBSATze+O-pIo^i$9{Sj+vX|22HXZ! zFl{Tqt#?`LjwDIDtYwc-0E-Oh3GaguvmK@L1+ha{v}xi_rGAmMQ{T1If!nTX6A@It zYucY83KZKfaa~)39WGsWb+|n@Gz#=5-vj~awDDcHv_hVvid8QBe|PnxJ-@^KC?XOY z;Jnui*9{IjrhDY`{Rx6x?1p78oNlb;9Sxl%Ebgv`9$p@GPop$MHv2y98t?x=%OMKw z()6wvK{Wakl#u;@X@7fG>J*$pT-e9K!M%8+N19Od0_d6=o`vm%$F7j(yPjyS$M@b- zjh?0O$iFp;1@PI=HTN0V<9{?EWf8zRH7;oJ-@X7n1c|u*r8dlqIy$G2NUdILu4m}d z8&D5LB8__mHVCe;$GwP17XMbu^sEqb*AP(MciL>4@bY_Yr*}f9-XcQUen=mP-59)w zz3+jBZ;Wxi7K%wT!+(DIUC#{Y zZ^9YS_}P6TFH{VxZ-uew4R8t?1?Z!ZDNh9Ghdd+4mCV}9RS*3-v-jTxKvAwBoowmg zVEqE&aX&;~>s>qsLXb#@L-l?h8astCTpEYzk45^&{RD34G2uFSxLDrYI{9nu2%TIE zFC+9{Ja}Sc1Xrjoi40|0UVSnyX?9*cdrl%S3)I1Yn+4*`d~QBH(u*`EwcW_CuSX`D z9;v&Y&=XO5E^lAQ+TcMkIz0$sYYOP(v{?I*o=RkCTu?tsn-Wn-C)b2uVf{J6mWt?P zjqn*ob&q!+OI)}Q34W*mH)NsW`Y~a}@PvLpq$xFvhog+Q_moY!^RcES^mYh*V+s9h z6$wx%UO(X(>D2V4k)M>-mtwD`%&W5Q;eQkn;K- z4{WTdh>cw<=zBelSpEVVn^zhJ6}cLiYuF1RVPnX|7!X<4=BuSgYG8(y1E`r8#T3t?zz)5PJn6|TSqq;Y83Ml z^tlMRcuhU~Vzp#~f%DTwAA@s9A@&fWN7udu5_iGQ$}R8pnS| z4%YV`q=>?PhOu_jp)TI|PxV1K>+4T-N;J4tPbXj8+4?#PaCV@9p1n4LBN*Soy??7A zZ7Dz4NDuKI!#-IUKWPA*H0mUjV9MV_U+E!KQVFLLro(IhHqo~^c<>EPbvGAtUo)Nj z8H*Bi(RBoD>=etufuQrCfxyOmrjwIzbPFA$Zjc9{lMgYrl}>k(|L3|#SsT{^9*`oS zoUQfs9`u}gi_{3}O=UJa9>M`t+UTu3-7qo()G*nRHoE8mW^tXe_%6Mzo;@`Ls2KMb zT=Fh1UeBJ&4!xnI2FVwucGORb{F(Rwj?TM|I@yAIJL%6oD59(F zKoSrd-aqAJ|NQ}>^$(r(xnegk$3QJf(tq^+xdHxJ=i9sJ^gw|b?6?7ao}b zQO3P@^dtvZnLheTgmbNr{w4LV-%oe%_SOCM5nep7$_5T?F;GuMqQ4rbXHQ80_*g&# zJIRAwx%FU>P8RZk!S3nfLv%6&XAadxXDNG@0_On7&-q$M4UJbFrgtQfuynYdAyS&5 z8HfG#0>L4yh6H7&HjJQaloubVyUzzljM9(eV(X2D4H02rL(i7+ z$LiV3BEkx>D#q#ly2UPxbH&Q+Z*?*bzZmaI?@AN&><`jlm=xmJQBGD>i@tg=>pW4{ z*yrEri$q-Lscz&%9c=@iF;VY9codziqcfiePXXmaWM-$T1#dD{rzjs=FijVuNl+5t zH}D{J-ezd5%nUt*|2AE(h+uipOkJn1+_UsK^tEwz7S;Ys)+yEC(j1zd?f2>E@#Lv< z^)INqe~Rw)IAI}*j?8miF|0%Ze>NDrGI}H|912{#fhamQ&RL*85*L_J$a&K04BWbq zL@ZyvNcVZjkX#ZT5_VdmKlMPy%WljvkT&C&>Y{~JmLB^;K{D4FsU1R%~|n3^FGU;^CPzPdwsUJn7Gz5cx8Xk8J-|><^OCJCUf6h15=k?rIS1J z=_)TRu>uBmQrGC&Uk3rJVet!S+ljoqaINm~_W-e->cg>{fFyT^hv#N~>vfFVaC3uR z9e0&A*yv7eY|^ur-URT;g=4_^xe4$qyIH^Hp@`$C&l~U5hj^z!zaj#`SCqwnf@jkWcN68f zxkoQY#7x*r`Z6!MPai<1CUrjuZ{z^KgPzN}ECsp{?D@Sp^Rt8u@9rlJ2Oh!>JFW+W zv)(`I7`Nk9e$vU)#s?nK`_fFAhruGinP&X#qA}tZIQ1e|I;Aq^MH?n-)iiG?dlir; zkoDdZ7Rokng)98S&mgSc9@VEILrp#A8baW)&@sBlQ%`^bF9IA`6B6ss+yxdxd*#g= zsEyqIluk(|jZW)t3A=`8b=T*6{a3hhaDukyKqvF;2qil>OxI&f#3yX$d7X^)nHTiZ z-oEI~MCx=u8?7k3kX-zow(tpS8X2UV5c&=!dcCFZkh;h(J=I%#Hv#QHq)^wt z^&_~i#h>eGI3>UNkA954HoVY7y+fT6P{@nVUy_vMGhXRQgzU4|L`8P|jh?-VHHeVd z4Oxfc_J8^!aYwOSg@X;>`c^MQQ(t@M>Pal(gR3~d{6Gr8ybOabzNL~ufy^&ugRGaP zia|PZN!9pAU{WZ2;n;I9i^*GQMwVMcH_Fg_L8d{8#j8tN2K_0{HYgszcl#N{{j7X| zJ5#qTiU?vi zdxIRB9d1yv@#tIz@f&}i+Ylb8!vsz#3OqY}TONb_OYA{j<8Q?JW;`3LCC2 z{nQryU19{@;$^(qiTof3w4wU#3jjv9aUi(q|A5+m|PrHo>P-H2Et zioO=d8R4F_GR&ky^4*CyP&Z(yrHvcnBCu2iPEu}eLb;C`{e_X@3LVr76({Qszuhuezylnu4^(A0llYLUh5Pdi0DDZ_yeN@*V zbKd^c@I(Qy@&wVOp5e*hX!a6>4nk)o@-$#$>KpqJ;TjDLGClarhK45=iWMl}$0Z!T zyWK8$7(dq75S|wR)=-TC;TkNgse$%7ztz-m1#hQB1CtYY$>soCkaY7BlyG*YFmUfb zpBbWg4n;AX@)J1iceV3`vOilGBgu7F$8#}M9*!j5gptsoqTRt^XbWuNwQiTl1E zTma&fAya_2&x|%q-eW-43FtS_rC9Z^JQORBPmP@Jtkocc48zxhjNU|no4@vdPFh}lDcC*j9xsVnEx5h4!G|OX^ z=#=q*#82am?YORy6F~S1vZOq|g~eXlMB@Y%nqwJQolJF)Tj zmByD2E^OIK{?B1S4oLfNtcmy9{!C@e{jU4VE?8>x${%ea0Q+gV*~E@)fa}2Mn@XW*nqW zylI9pgaRHvA12AfrXMlLV_D;8(7?ncJ-eAdhBZ5H=#2ehtnuK6Wptk&hP^+u8~owl z9W}^l5_QbLv?-SRxIv|S-XC{&B~-E z^d31ZzJSBPX`YjrmyMY?cEM#sOvb1{$r#ZufFLiLKrm`#MX1#g+EkBVXMQoPluW~B z@2?mgadfAv?%Jwf^QdAK@TCt<_}O)12ln>AVUUkD^M-pZieT@J_nc*|IX z<2q*=$MB=X?*>H-tUnAf8L$GDYsX=bs1U)5-F7+U(d{g`^536^n*eOzH7Na=6}@Nt z<3Q#y_d)X%7^4Dt?O+GsMtoqPdCepLGCXfb;E}hJIEOR0d}ti^z(C&}QQ;A>6L0hw zv}Tb%u_6QZn)k$|OuwfF`aoIYGdd5f(%%LpbCq~*pux=|{&5-e!#{>66qK9?UKPO} z9`N8p4@!T5HTl1S|I7Q5RNvKCU%JNPjaUD3dXhrn@lVM&#t$A?=!JX##-I$11^*co zf@|{D*oeFJ{;iR{pa$@?vR@VP-g6U8 z1U61G@h)cdWRsG+@+#&L4`%qB)EUNds^(OjELAnpKfu1!Oj2tr>ZY3--q6|ZihV}j?e zVSXoy+=?i~5y1HbbHBiADQ~hk=txa>EBn@Rcd1it^8xNeqdKN&2g3Vo=T{vOWS6=o zg``V-YKlpq@K(7rL~*g#NA*lJSJ{<%CVJ;MuW!1US~nY*l)ueiHZ+B*%s})64f05x z!Y8bMV>1PbWi~Nw&k7l(LpL>72pj|T6r8d-)tZ7p2yJF&|K&;t^gMW+3~eU+qnU|j zDjS(-dSar93>KO-zsaXI2dq7Fpzy!?nK=uI)whL70r`ZMUMA020uwfAWv&vofI%q% zc*hJHH2?T>vj7Q``mN3E_45JSvpLjgUcHU!n)B`2nsj*=ZfEYpiSM;D#XORV_|qQz zbbHeqNKSRi41DN7a)n8q%qN~DVX?S;olS}@vnffYm<;8X9dMrP@a0`h%B^C&tGUw) z$SJXUt1HkSAB6nT&Ge@0u8oAyY9mM_I?&y0ON-Cf)7+0sy57?~i60xkFv%tHO)nFD zy1c=cCOOX7u-@iho>`q5s(e--U=tj@xUcEWHIEK~!ZO6H#|D|`gXWtDn=KJ7ZVWXW ziSnGKmH}=rH56EK;@2icCCp(a-TOO-nLjzp;ol55KaoX*5`Thw@61SZ0e0v!%JkUN zAVi$h?lWVYHH|h&qaX2&N!C4IJ;wB847ha$Xh6lhiLCM~2+nUBXI@2$PXE?K1)Yx= zZ+0dkU!On%h@JY*6r&(iXaGP##B!o3s&W;n7C2T>DKo{)&E8C+YloklY`Up2H>Q~0 zm+?+nf&ZqO#}S#M(?}Tdz0=LQ-o12w>zrwp1j~<(Vc0+F0Oh^Adu%Kik~x zVFG-n2?OcwJv+y&P3z1(*YsF+SPsCMg2&G@6FoZ`+)9mRn^Rnd9>845Uva*fy($cx z?;7oZr~0n|BGpGX(M9HtAlQ0(FEym_bTvMf>G}@t{a`jnNWAJQvlGEwwwja*K4y(c?hf{Pt%F3$W{Qao@YBjpMSy){^Wp3Cdt)<=4%HeznEdVLFfiQ znUe)xi)ULxqG+&o*u;7%tDhV;y*ubc*KvjdKfAj4^`Bkfmwz!`XVKlGphVz={f}qu z=GhaZtgy2uP2oWXti~yvhCu%~Z9!ZW7u3I}>SuW+z;sZ3L2>(080N8+!p zdRp-}Q!t*L37lG?!N=fq==m)Onx8Y*WS4;O&I*bGAk4bwP2tfU3=V;3pV;=%1rrTj z{^5dqkMg{iO!1u#^mkIPv44xpL?Rw^#TDAD=T#ytPrR08F|@nxMb~-8i2#P)Ff))9 zD%~`Nh$lR2igh>Zvs>m`?DOH4i5X1nXr_4^iJ$hn>Bd-g{z06`7u_~pb9>#NW+d&= z@jGw>i{x-#`6C87?wJ_g;ScVa|HBJTRv7jw_<)Qn_WptSclMW=@v&}2Plxm$KXfPNMol}f0I7R2R_dd zL^uC2%Xrxs^P7Cs0yVaHzz#6<-*|?#0GyulT3UjE0tCir2txTt zvdF?ZDp@4nHptc?k$Xcn6F@MGx~rKGX8hJ~gL zYinBBe@jY@XV1F8!*v`7v7Makl@=briZq0zl_ycT0v)M89t`cg!66q+t0{lAXv;@aEEa{7^CDjbG&~L&*!Y#b)xt+`U zidbPxZtEt(O^UFDR7?2j@c!Y^DKQolu*+ku#6AIeEpk6R%KJYAe+aVC>8$0qvi}w? z&^Bg}3kSqz9`+%>MYi0rNQ?BI6H%5)Lgr$$B|h5+0z1JI1pILUONgz)^IWJ-fK3HH zve443@E=m#b zPCIoA0xJTTuH`LM=GlkxmJmUThiV1U9Qu$Rz{XW_8F^S`YoUlNi}Qomjn%4J86s0= zqyT^8Ea6Ra2C^E}tW^%O{C+jdy>6aWw*-?gJ`O7r;F!<^OYk9pfGPx=0&OPKYFaxG z)c%^5==gPxqf>1SLHu3ILgyS`UfY^Pyk4~K|LhOey)O2t%hrDNER2=1GxaRAJ=p&G zmQXebrodm0Kx=*Jb5m!R8d$4^rDJ`9^$p!a-Kmj*!mWhU=jhQ_#`NH2<-Iv+x}r} zX3qeNJ-_WA!Gc>_@N>YetRw+(HoFSY82hhiMcc(1e(p|GrM1QU|Mohk2j^0XT1#TPCm72}C5abL-A7vo%e!$XMqax>&+5 zpn*`KG6N3$_uVanx9gV0tEamE&yG>C0qD#B>|wRWS$K^vtbX*hrI+PKC@Ff+tLR}6nQ#9aYv{k8QB3D#(sXT@;4I6pU!JK1%(h0b$ce1uhA z6b12gyp4vt;SAZ`=!Q*%-QnI2)Ulp_V$%TI^DEyfu@)&Q7rU zxPO~yk$Z=4oMg?wzp<)QEOhztqEju((%@;+tXMB@l!EMRTIh_d1H5FWdzdE8ve47P z`pmWj8y6U(E6AhHi(towCR=W(dFmWjYLD<)RS1h+b3K63662NI-NQL0Lo;0+ra-#TWFE`U49Xr9aeO)M-+i& z1%Yzfv-l+zC9T9PwSv8L!2k*FS+`}bjLE&+67oLd;SO_tZ_l9utDEYwNu?E*keC3y z@Hq~`>iWHviOlrr4;Dp36IPP0z$&eB&wGj0R&k^XZ@0IJ{=*r&WZEsS6Cr#mh2T|hj8iUjcXY9H)76kh2`m`Crm=F%76 z2il2vB4d_;oOA{-d{c6~WgeRa9I((u%1<7!#5aOKXQwh51ir0mgyZZVU3F#HPr%uN zppU15nHc~Z3o>?`3bpzdA9lBJ_7UqpB<#$ey;om6Nqd+CDuVrDxtSkTj(LR-)h=j~ z0iL$;$1Sq_`=4-$-SDJ^?k*m23Pi7n82y?-=kox6)oFl=+_LwKt356~Yhi)_OZwG% zg-z{$bDOH2a~Y}pdG{|77c8Ne5HMnC_+3N?HVZfWLRpbbCgitVv=$?z4;Sfr<~J`{ zVsR}P=+q||bH$=CR>iAU_CoS-O<)BAXou%a*Q~|Dir|OR&%=SoM&-J-Ol*W0cqBV{ z-CBe69(KcOC(@%d6>)1~2Gx9ApUdow+{6w9m$`~@8i_UrGiRW$4m*D7jv+oDiK zg+DC{Rj|%?EYbA=Q#s-sA$)b$l_Zh(EFsk{o+TdvuEb8Y?^_$i)le+OY2+V2up$ zO9(c@dN8Vj<1oF~?*sg5V(?3g;hwL1`9DfWa;L1FyzOYs|)84wYUjEM2ZrFQE%ruO5ix|8IMnTWqsA_@MyrOm{ViPFYloQ8`$#xKKAg`*} z!SvNkwGVjt^K2gQ^QWB%Re5#Yo=^R*7?+Gw@$ z-1%&`Y*)MdHra0tBkhs2o}*C&oo$G=Nq1WtWB-AWW)-l>3>f{9O}f^=k7@C2U_o1S zx0a?~8K3rvP4_^3=y#q6Q&Mn@v33vIjQsJotM?8oZBwBJ_Mi+cj$bNkSMl6% z_^`ivdAlJEpHaaUb0Fc!Er(bS^e|bDN;Y{1c2}|~fHtkNO?GI{DlQ=#S0y%Pan)?{ zAcR!6Pa=&otJ{b1V{Hvv2uFhOE&xA-x-7w-iS4m9ZS*oSvzASF&GA~c5J`<^HO>Qv z!3eN;YTFla*ycL6@UAw#3{~cLI{j9cI`NI4+LdJN{-C~1uKK?k*rJ2D4E@IThlaGl z>_8*pF1Ea}O(_^-nz-!Jx2e4!p_OdrZlix9aDyP)%8>Sr$ku621miKE*@KDX^IHI` zBaEdji96V|RyOLQeC+4;RB8)oV+#)x;{i!W(gqEOjrs1b+=z8*Ym+Y7q@7JVEf48n zM|<`=!+AL$on%8fwvP5FFQORW?mrX=7TTGPB!AV}Cg(jH+l7|MI(BurxM4RJJ$|XX zP0u`7o1QL>Dtti)kQMG_i%Kh??);t$&eQTsn{r_6-ZtuO@P5Qb*A=_e$EF;fjJ_^E zEa+!b-s-IW_E^ut60g8JZluQ7F;XKoYoLwZEigv$)GJ?=Mr2M;svayF44A8vc%TxA$mmzJto`vSkMGpNQ!_n=KPQ~cDOyk zM$46L`OZE1$rIhbbev?1{xbJ1d#B0vZd$_>TgdoRCobYdE9}stJEJQA_`hDhn_mX1^T;U5UcT4G}jWN1 z_#Jq_>0WD<0mw$AUD!IWwEz_wMn(``oi-c6N4m`fwv7YB_JqJS0v8qo_c5;8zUYUR~&I!8eAMMeV9sO@``;WXQ_{%=`qlC$S*aLC%@Cgs2#t=mM z<0#T;s86z*#r^@0r4KGo_)~2E@{)gv+pEmqQ6jwI!qccy)J%B>=LS18dmikfCDCA?J zgehdj(y}QV35Ja9ijc6Qaw^Dtv43(Zw`Izw#3V2jJ&wPGD=2C3gAqzl-2~CrAjp+~ z=oiNU<%k!hkeqWUO2DvKQBZK<3sfaH!LUtJX40=zLy?P106C+N>pDw`V5dw)Ru!bs zEe{{pBSJgdO8+1g`|;NdT4?M-x$LnsMo)5himQk%tLiBq3p|9B4f0;F#3}G5LQe>} zi&ho{KKk+5ykD%cg1X1#Rp!Vum!~`>m-8v#A~Da;uOP3(o5U$~0!{HnC|eM={fBtv zGh9m31Vu0k9~Dr>2PPl01ty2~oP%MALzC3b{eeO;Siu8J4V&19smOh2+{Uke_FfOlNQ<%DH)lx_nsQkJBzjSRnJ}hq?1@#q7tE#=ij?FMAjLFUFb351Yp85M^e%6tpiIHW zH&#e=oX|v(&3Dkx_ff@uo0}>D|ALK`AzUc45x}*znIiiYK>&I+(eJN@W;9!!svu{~ zdp1{O|73s-{g-f#Wp66TZ}CoVDQj>o%k>uG4z^k}yC!Do<%w^z0W_8M=0?EJU`T}N|?$`VC9L3>{Yn07`mvRc6Z+p13|iz?Sr`LS~iA?+WVW-4t{LU<o6k&Myus4ut;7DK{5**`7 zKgDA4eF2TH`Y5DHUfDP6qTJ9Awh+PC)nAcfOu&AWJ$pQd^_QmxG4Cs+S-JhbA~V@= zcB+EVjI%u%sE|ar{sZM|048*0!d5v7h4Qk?gT(f&8?02K{kS~@E@U4ZK5?iL{hu}Y z;nukJ)5DZO)UN4pMGh;4jSE{0b|+{T$t#XjgpAZ+lyV8zS$woYiko|*74qd-F-A06 zzWrkb6)=3~Sb>)12gZr>e)v-bd076_XG%4~NW^$?p&l5o2u`=dM1>fMc9Rt1cKCqF z;w9$WrzpeZHC3Q+wa(LFce+mtp2@_~E;w&bR~91RVP7cZ$n*4ztc}nArBZ}IsXtQ* z$k!Mt-6>tHx+YV|B2s0RB6}%{Q0URm5_0g`v$KG1JqM16w0#g+4NN@+z&^YRVG3W) zRWfj^TF-+mz+dJ9r4RiYwNU9rzwRsoCLk~pW>Q?UM3I8dz{e>Xs-R+otv>-j{gpxr zQy#NSnM|Xt{8}Mp4llk!87}@?Deg)hyISc;|9!MZd7pkgT&pnpHDNvck|Dv6=FCli z{lQBj+OhQ;74&c7%Qq=&18*~iGmqXZ24k^Xl^3|?7_P|S#^owdVy7e96jCnE->#tM zn2p|{px%*p{#I#1Fm2eWGz-9l*ZcAkyTw&mdXFNfVFU(nQFt7GZ?BRK$6)<4lq>S> z1ToA);V|kuCE!sgs@JFf2v-Qi&`ag$!B&Nl%*}p;3#$A+1$A6JZofj_GQ7x-%6ma* z(UZp?js5VGatu*2>wqHCB^5sej2r$p@32BiyZEIeN-F}q;!$O%|B?NDl$c0Hli!ZIHzn{i)1d#q&Q?zerS#AnA}BmPph24S|6plpWe70AK6K2=Bn zhVnzodF(LZnX-sLD)mAMSZo)MgmiqJmqEJ1YyT=C*6XEm0sGW@rIZLxg8nxHUimx! zuYztSTY9Tx&0^qRjtn0gnN20;v_p3Fsy`Hif{>^2M{G_tKucIezGNA9bBi$f4NcVu zuwkjWm=c2OG$l2)2CloGrjp@{P1aRXJhUrovetW((q>2mRX>L`hPI||v zj|oAY^QhAT1Q|9Djw*J2EuWf;&Sl9sbv<>s6t8x`U#xlom7caruc_$3yS1PyUV$!! z)W+0kLt&NJl0HRL*+Y%$yrI)O(1Xxh2)@^3lSg z?W0SnOK}g1lvdBlv?mI+Bi1kh&B(HN?{J0nWzrI*^F{(z#%rR3`BQe zOD9Q{oe7}wxUbs5kH03V$lb8{$tp@$e0qvHG6DI!gQntnLUS2a}GqySsu z=Y+?P18b@zXD8NDrMh5XXVYN>$QPP}IdxQ zO(mH4);cPw4cM-_suaEqrxYB4^84CWmhpy)?*$uLkI0PItgnhUx@iMdFv*`aR7o#V zt&vLduF+V!&X29{M$*t4f+qe)Cp?LHr%lC3T+O$`XW80hTxVDG=L&c!LrfvS;B8dwB0W3xI(^I5FxAT^+p#|rG& z;Pt^o94vB(N?uH7hGbn-6^5$Fz_ZfB)WAdL7f|P^AE^N=JC;z7!yRPhH<|;P?~TFA zj8LxzAjE3w2tfBzR$sPZq$-=6DKgq`z)y}+-@@%=#mA_!FCN6vcGcq3$HBYu*2gNz zG0i_w0}5oQS?mV{z+e$Pe4N@q-Ubmdjj&*5qG|KPUHR@+sX-SG zKSJ6E9{n}g#U(*%N^F<4xLiwB6g~K@rCAro^JVHogn->&p`y-+XRcHmApk7@Y8ACd zJZ_Cj*&cX_wd!d4xNcqG>8!+1qf~YyAORc&s|Rq5rPkr&JjCG9jpC+Qut}BKM~JcZ zgWmjM*p^7BI=lu)GK$ql|PaVZ4Fr+N1anuW*h_7^OxFrAQRYewG-~~yyHQf`BBeejKbl$J!Xsn zSJKQA>Wlzv=uHGu1)@a#g6m{;SbAP{*w?32l8t7aR!R70xz7^b)6c1LAV(#J!ErUu z!hRJvpLN2TTu`Ud&RzaRY}ij1)n5_%wU<;BIoO2D!6(cwm(E9D5f3=qa8)Hc*SufV zx&f;1(h$lp5BLMH>|Rr+$b?w)w3ooH+*fn?u@C`oZ48UXew%(*Wj|2ZiQFLQ;K#Ao z)maE_+zpi?P|n^^D@j|OB%-3R{iznwZ?SwEj7YZV7QMN=&uvv0F*n{(cOo|UfP1Q3 z$rJ{`qE=AWt*pbl`LLBgMapZZJOnGC|uq~P=lT+G~`#20MvYrz*PnGjf`mumX|(kV1U=TpBKb6=^QaU+JjQq%n(-27K_x-xHU8YARMNX2|xyL(&bq~9KT>`asoturQPGf_o7uq4*rg#36fjxYW1ZP zlf)KJ0ZPbpwQ$xdFXZQKlr2XjTYf!TESr{BQ(2FYHXWya9@4r6r$%`PyJ9ib{+q+1 z`1)u~qz*Y0qe&6;01`Y{P$(# z|62s0y;lN4nHt3tf>}a>Mt6c%K$H2BBr460eO`Y}Lur7871Yp3z;6}QY8(LvZH@0f=h5$BSJvf0fF)%-r8>RoL z^|gfHM>L}R(m-1(!+CX&pHK#PDZa6xCNp3#aavyRj7t43dk$8oiI#_tXsii!O_`>e zoMX~oi*Lan{T868RadPE%W_sCBh$-NjhLo~%{3B#S*y3S8%P?p-qw(5VR>65bLzXLnoNn3?bj_RyQ3JVDJ(4pKTHoD#-yT_((h>L`}JlYr164=HE zz};i3aqnnSZ6TmS2-xQEjTW=K{ks|wV5e@H#8W3hZe~AmRmbicX(7t?(EdbB6z!?C z4J>x!Ge2~@H^AP#p#$kRqm)R-eu&M@Mtz`}>}fBpmqa%Z5Pl2naM%GukNTAWo^IWH z+Nbh568ZqF(5fXJwe5X0P_x3x&Z>nC_<-1M8s~$48u7}B{WY@fCJqqSX}&aV7>zLJ zeJzQ8We(JYhA(lDR+au6Fjy0o%n?IG*IplL`RU_?p_<^KXAjdV1i-+U?7d@Q{imlx zY~A6`J5OPOO*M{OR_UsD{m8AUk4DASg+%Z#YN*@(Q7dpGZ zG;)tPJWFsXvuA7PWEw+R%bX7faM>JSrewOoFl_h;A+Pf^QVZOer=`&}?G|W~o*tMQ zzev14790GB(}6AM4di-$A-(xLW07`&AYHgbldUOmh^AkF9M~n7id*EuQrHCzI||vTDCd`|W>?KuMw&`~yg4<`av-@*FT!)_5~yv|qnk zL!Oe=U!zHh7GO20Ks#mD17-%U)npkD0QN;T4qx{ZGM;V_+{w=yHA#;QS4mO83XXGp zlU6FYER5g4ujMvtvZHSB)MoRM5N8tLA@Kg?+#Goal^8A_DEk5k1=E*b<;o6wT zEhpQPsXdVg@O=n?sXdb|C(8le(){tU;A;+k;Jx6=u5m(>{Q9A8vLDtBe}nJ-d*L>3 zc~bk5(0uO{U=nw>)0wOTyy2{%DN!~30Pjetj{~Q0{GQ3j=z_BYp9{8)uudw&QwU-6S_}|~Owb)|)HO-Q=w@Cm- zYw%~o`JP=CO!}!82Vp3g&$H7`9>m2iY7}@*G5b z?9B_T|Dsn~PB#3J_Euok);i#`u*0cQ`EsWh)KjSGTaUFg8QU0%4lT)+aPW!tSpYce z5perB6na@z&466oU;hc^sHVOGVeI*zLZaOLmxhKgzV>fzTwsXB46Y=92;S|VEE#s& zv;XiJ7^{vmVebAsh4c~xb^E7UVYWa4)pq+E@ao-up*8Y%lU01Fq3Md1e5FaLLE!fK zCkyJ=|J4=;u!BMD{zNlFI;wBE3Fi0zP)-EsEua+?>U<}=%X((hNp;pNyDrD~0S#d! zJA#gU<<2~LARs!2z6imrkyFQ4kCn-#OWB^FBWgCOV;!KT-XAI|-xaRY>&lNs=qHJs zRz&IZ=vO^e&l|w+#tGnEl^LZ+@N`YDL(MMg`n!QZiQ2mK8JKLOCcG%Tv=fCyzOEmes+bh6g+bNO}IwHQJc{n+>i3A(t13dig7gL^fmDY)A` zOwhl@Q@*YMjDe`%{+dqFXzL2<@$}cRLi!{52xLsn8Xwh|iyXTEi+fGa!|D~$yW=n$ zis&Rd&MvA8>7Z0`9iMb&l+fw6H%sazXf@SK=?eX7Tv``?v8iQrVzBF%)rSQ(rq&9$ z@$M(;-^p-oYy$fQe}}W*%IQ*)U%<(HfEmAi9Tsh{kDfuzwmV7sL|p&SWPK6MpSQgJ z5iNU81^o|P%k+vmi8Z4t>B2c|Wo4Z-oKvdkFK~p(Rdq^T$RAYG$uP)z)u4~8XHET? z45=UB&ZpGUljMDY`+7Whl)?vKt)6DL+4Bql)2OYZPLHpvtxqE0s@2s=3^Cr&=^Z@( zhE99{D_dVjrzmDN&`GMh(?BQIX-`8va5<0p4Qf|m+M5%N^zU#fvl{Da5Z}K?0>j%x zCzb&+-_q`~BB?s+vsg@X>dY=Rr_E)T-_*a6ZV`}9T$pS3Tl#E7YumSVbQ)ptEp*9v zpClsEp`}P1P@$!M8vB^7#GZt=)}_*}5cIvzj!$o+Zw$-{f#&%!QjA?~qX*vVF^A!8 z9Pkdza=ooCnOH&1;>Vujx8K@{rLAbMONqRal1PW>5AZ{WAiXVa1wn*3z~+wno&Z$n z8I2#m?xZinr8VuWqurP1>ykxf_1@9R;F`CqI6AMo>R08VW?U@+T2>zfsH&Bh)!dgm z2XnjYHm}o7FF>@?tGkW@2J6v7{|o2p+*6nQ%afRO4o(LSGpLuo9~)JFPmodm-a0A{ znAJy@vID?I!NWk>KW6k5cgc~yy5J(4_SZ>)S9yS*gN|3NG+hql08C%^+2(;dX-IDl z6jZqO1HClCe`%18S|+wDZBr{71j`_l*T;)1A!CA$npw7cA`u1Wlk|Z! zQK>0eSAXhM{a z8aho|0|d5ZEnR|q$~v8_>U`mPy*f_IuWZocWayH~5gNOe+az$WeWQE9W*F;&%`ne4 zC=DYaxRIWhk>Yqx9h*)5%_z%UNtZj zxjn@1fW<+PpGgvOAuQDwcJO1%j7XEE>I(gxrKcfe% zo)9q(0g}ANIb9gK>Yvwz)vCh7?lDd`+;>&3@NqH#=aV?m*T9bb4QM zT}Q<~YjZ+`|4t?r zd@^v9#W!T>Km1#l zGUEd17-)mN%ReQag|19`4Q=mOeHsjOEUD?I5y2BpcN(eFY1zmvb=nI_` z(??(GH*sA%Ug_Ne>)Kl!1b2VZnQt0W{!vi*Vj#Z18ZTEikgG4-alA*EK^Hyio6V3V zM>v$N!M=tI$n{mU#dx9Y8rzWF_!_a*CWj$88o`3`3BvZ{avA}%!I(L4_rSLR6)@D$ zVV}C;2KozgBf=o#0?QL={D+!AD@QP;L>XuVV=to&;+k$L23x$v)%*^LnB|0%xsq#(4rGf3m^o*R~X6 zCQX-G!N3cT6|HDUxe~xRU^AR_Tv(k-2C~ZBs%!{;XLc211dSC_&1e%?oV5nnNbI?+ zx`9>_)~SXO&?A}avKkGlX^=s_LoFlV3Ilc6{etnMQ;i6=B{n>jm23^3_@!za#5>)q zEdbk5$B?5}U}G?!BSJw+@M$@6uu7l0Ht+d{A$-Ud)-z<|ov8axu-7+aDFzC!mj+e? zKYrc7Kz|S3tD!-RA4_XwNJWf5Sb~fI)cmh+wRY@iV*}MWYBs&PO%N21z0PWo1JW06b}Sm+(U6@JtB43G4NH;qn#{b+t7YbSrN5FNv=j0L4% zjRIitnEbZUO&-vyl0{>MS{Nj0U1~x13_IA;2-tU^DmKMw=+J(W$bQeBnGG(pH3VnJtowKwf_!08e$5E zN3%|?4U4VqU{IVvuZ{+~FR)6TjOX&|!mj2;NQfq5yBJc6C!m>(CqQjD1!^1n)QgB> zP2Mqv;U*n?hjxpv>S}}nD27V$;F#MxA}4?NuCYGw5$eSgni!x-Wo9uW2fN&zP6nUd z!#EgNC_SNzdK=+9y_X@>Tyx$d65&I7i|d|U>|>CoY)@Z9s*B`bOOSIC0D^O~wVyE+ zQCh#h@lgP>=`CTq{fXFL0}LtlIEf0&;|-v7Y(3)x z16AIv?;r!c26(H%hVX5lI>abN7tfv#jev}8ErusNbEvTtfgLi;SWFj8p5aDS`qg%X zQIdX*A88OD%x{k}YSD-n40&5)xn6Mc8QI4*!{y0@!j!bBOQ11?~je&@W;hZ z46>_U7;9_^;0F>GKy9H?UM@CnqLG`Q{nY3kXn|GbQ^&&`gFiRcA?QWM8?r-Z5|n=T zYjkZm>MxfOjmlUaV!87 zWHSI|PgyW~l$maj+UU%5V-HR{`wIgVw`|G`SPCOfg}-FRCYi*`lhk%)DNOcF+nAy}YK}3F ze4|&+Gsqe+ZN5>MFtB}rLHu@~g$8L@+b%Ma1a=l1q=ss<#2~#`(XWh20etu+fXy%zuk=#Tc$tUcyti9z z>_*h*U1LZ=EMOWdV zpV^u#f$jC5xr=Ya+Pv*XLl`^yZ8Ah0N!iVY?8gispz{QRfWG@!g(-HcaREViy48>} zmq2?=hJ)=}?vJt9?secxQ)Zj7SSA=ORZp$f$8_TFY|rAhdh9UJw8YzeYmjAveY?{@ zwKJc(3)u1iS}7UjD?rZ8<53>_WjDBI%Qp|?PvDt*jCYYBc!dn(!@%~ZH3we;gk^sY zFZ9LG9PGt+#w34zeB$>88A{mG9|DX$Yz`E4!G65penU>u14`;jkRt&H?e2^2jjlM6 ztnb87Znohi?0K1=j75Qk_!Yz0v>mWfUsng$6L2{oo65NZhR~-qI|P)AXuovWkm6Ke zI;eM_{xk6n{Fk4zpl*<9oDa-{q9bAcm@yNFyMHWr**@w_D2ZU+&aTN2| zAgjvd$ASml^CT#6Y#fudCHtgU zM57s7q?jZD^;OLUG?=cNzx}7D@5=7q#k`Pd3fGCLme~_~uxGYOCesIw8HJA>f8m** z1P4K{37r1zA7h%awVUA}Mn#)=zWCW_Qyi;#v1ZVdHF10vfrN%eS?qcq6StVJ$!pFb zpc~{jDP=HgA7_%pQ7PU;=?mPb%}w(5T7GSMgao_|hfCK?1*UT0@9Gdgf}`}OA2OPI(|^7AEN zvye`Dlp<8J_N7g7R7fpjuEHICS;j0&i!GaI3Ynx!IWyo?jL83vO`J;(vhYDbdHwm4z&WK&lAR1o=g3PbOfDJCi0)bb|j>RH|jCTdGr zbVY%an-xvcx$LfF<_xT|)=@ZUdts>Me^n-g@qenAu|di}m7?E_fpqdI!gaKoAk2By z&DDgPhBXQKtY|G$ejA_!xnCazM@V_y3^=Z1f(Em;NmA6|+9oNIm)9{*;#4E+igDY& zK{)5B^|H=g$NFZDz?!Zeg0x0B6(;z2*uV^^ZXWgk>cR$)+X(04#~Q(oNuGKlT?2px z$;#qmJF_+SAx2?d6B8|sd}>p(7j5?QX6Bbcd|?z7&hTAxlbFNlZvvpWoLO&~vh-Jh z6o1ejGDH=RjbTULHfLeeo-M?|?a)#jA3mU!Nwz-zV{0>wK&aBz92@`v(=+%GfH$)# zUX9Kj%!|~aW+yY?RS#Kd*7*5+{5|%Xg}=roMFU&0p|g2ZK7At5j^Auqo;@>H8{mDf1Iui&G*3hJb2r*ozNWi5fN&Gn(+udIun0Y( zreH5KAm2|9gHoBe$inZL#D%fRz0GI-^n5}e)1}oe?rV;g(L{Vw&t`IA619S?r_vVZJpI-I{=0~`cX&;zE5Is65>q6}_#3X+VB9Tgr70+Y7apngB#Ir~F+_)K;k8<#gPtDE&aG<7r9Bcf! zDLXq>BzL|k6JetF$D6Wh4ALlE0bUtDqAU0038s`&4Ak&`QVD3V1F5pnB$Fh$N|Vii zTV_R+w{WO0>&0|PpGvO-yEE04BVj6%$b~J@B-!N4Fc6`po0|i8d^8c*l&L=8H!?tr z?5EvinZt}|KHv*85ADyC8RpjkG<0zw3cmA9dU#psbdy}oK&T67!LAm}54i(pnQ|Hp zFm%OuP~8Z`VGiOjDGB-0Ic7JUk#(L&7+_83n{o(?$Xan_4O|;77nlJhugF;8fAw8C znv)((U1a`>MEYovAVW5EiAjcnT3-p!6PJn~3CqNrANjR;7x&}o*L0(@JIhU3E5SCd zjsY&fpUz%M?;QJSrAb`=>Q$yg%gI=6%6vKV(@b#a*N8A&dY#!NfZ?#sStED`3C*!xdkra zz;Glk`M7qu*(dnbS^)%ui~nYu;HHLdH)jW%q23Ui)&15CIF!YQAP@_`;X^oWr{HGZ z+hqzz-(PlTT@$PK0zZiRnD|}rZGesU3oPSED5<~L>qfE*-_wQ9cl;nQ4fTIbl+*at z{boKKjfMRLA(C(%|DQ1-{Un^mk_XJQ(!Xp>Js{b#`^{WD<)Ar=AmN9yo`vE^1hvHc zY?9~^brfD*B%sBa<|TQou%<8;dW@|ckry4fpbqeM@$QEc>X^;G32rkhj8=-lcE#(ykD{y!y^|> zvLsBtL}T&hmjRBzLQ-G@N8bYq`Th!ARygI$tAWc15=QtcKEE0Beltf%R3;Kx;73#} zpZHC@Db23|n};Lz``wfckr3m*2{Z=S>H6-xlX?6NQz%bUZ<>E$rv|rzkGr4Gg8E>> zn{~HMSu-pWTi~cm@0j1=Fum@IyQtMYQ`WAeKLa|!#&5p^2eZe0a}@Ttbzg9Wdmjin zV*W#uY#AdSnb(7>_Z|9hl=R0Wc(JBWOcX?UgFnpi@^OMR7k-%2t3Sm0aunv=yt(Nzc8yH>Up1+@CN$J;zwTr zGbaz+oT+hJdRw6&jOd!zFQ+9u$Bp*c;%7dzZ1zu>^(KzhG@I3qwsuW+i?k!da#%8Y znY9p}ei#MiCSE<4l}dn254Y-2=d%$O-t25wq?L)dpB81wRx6+s2n1$R6$>rNtc_}+ z3YFE=EYjG-=oW4c|3|lko~*NJeNJ=Tu`D^^V-lv9@Bz+K;b41pzyx>EPtGk`g!mEKF&Tk3c zzGA#Znqb}~!6FHe-!EX*rw)}0TKE{TyoG3y>_s69xqWu1utm??jv|&++X1Yb$q-dK zx}g=puNSq1v&!>gSwIvmVWE_|wWO64T>bZu!l-ivE1W~Zmo`DFKtDVGD}zcJZ?c8o zM?(N{ng8q;-sITq?Xs4Xf(dYsfwlN?X3l7r<@bQ^TV6kBbb4h=hu~bR6=EzS(F&-b zEBT41EsHZ%2o$VfH6~21uV_h$HMf(id42grojy0VHDG@L^w34yTRstV#`4Xaxu9@ML0H4NeqeIszvA8K02F7h$8 ztbT!JC|Y5w0=20XyIk8MMf;*U*73jsi9{qGx^U2~uIl z2G-yBqjf{^Pt!)Cb(O}j#K7q2>wu#VYGOUc{dupcC9anh%`D+;vMyCDdv$Z`HPQeb zd&`QTU%#}l#FeGAvT|kn-x-o2qJKBME;s|KN8f8>UBzjdwzX2ET?NmhrSM*1)2;0U z6)b9RS%Fq*PvGW(R*~#_2Qk*cj+UHB0Ok#Q<|q2|NeX$6Nr#|}#g5K&;`sb7mhdoK z_l_krAG^C+C;#^b1qZ#gS@7(8*OF39!1yTR;P{aEs1Q5T%_7Cz)b5rnmn5?;FS7`# zKu@cqv;{B_xjy)Se$&fBQ#h;ko`vdZ9@*O>Wgwf<$C4^O_?Y!27la_!ICT^oP!3L6 zxqjBJ;0El2)VA0Rk}H+uP5WE2#{rCl)+B7Qe}IK%H{LJJl3iJnDWOFF53(={`euc7 z7-&gC1t9GONFUJZ%K#Yo?35W~Wd{ED>m>W_MJDof9gPC4=4e<-nfI+IHfFHZRNj;> zV`9+g=I9Z<9#Ss>&_SjD&tykFXz$oh_{TMCYwRK~}KkGiG)4^7MVoB+-0JWHI z!Uu_+983N9_Hh>3k9f>ymK>c19Vl+d?{MvNL9IWIx2EGo$J0XhHqd^PP5xI^*xji?+E1GY5#D#F2|C<1 z-4d?cRc44sEB}`kveL|$X-NV%On~~nMY8~!Ap`BktmO9)e zS=L(w>XF%&FlkkuYmqA8W!8_q^DN1E5{fRBhA7&F{v3F|%PgRKj~82Lt)cPGF0w>Q z#=cAbb9nH*0}#V!)cv?Sn^ZeGYR0yY3jn!9umQ_}W=brz_Q`~oSOwz8{2uJJW!4W! z3b&V8QnnC(={?u^KPdTW`{+%{N-)K$W@)m@@f*kjtMx8b9%k)tx$2 z-D2GcH1l6F4$YbpCKqvmQ`T&|h1@S|xI?@u6}|-!0^RA&`qrOirzOk@)pi4|BT1g! zV+{%RKo`Hx(1VS=k*x_knqd*cy!bmSih8a4-V$gS>GJNn^->6ffOal@Zpf+rCt zYj-7Z5JhGP9Pj4)mwJC9bNcw=B|urQZ=(%(FYdx&%PN zXAGBda+KPQsg1$iFY}%y#T7!t!WcmW3|;#&Cs`_we*mK)B&{D>7XrhEwF0|G*@I?I z_Ipm--~%67WN_s7A6sNPWG|jr=!C#B{}4>mjz6tMgp>|{3nq>A{KrCT2(R%Bm^$fZ zn-TU^9D5LEN3i@a;mIBK+?tKxzj5SnPY|Ue_wSr z)wan)pq*n&7IipM9^{_Ba>mXDSqEc1Hr}tZubn-cyiFPV!OB+%kXAmwjXXXt8)pkvyZ`6xp~pTc6mZ~mm)Sj68vCMJCP9os+ic>hsAAD zD)HhaZL)0hb){^QNcfJ@HfdOSW*K{N;JElQ5TBoDlb(S;FJ}jsO*rFz<%W-v?F=Na z8Ywn$Up30x$dB=w6>K?i1FQpIkqZ@V7O15lhPG)KQ;GVr(+5TO|Y|UTe*~=<6 zY4~?kwMoS{ubM6S3c}9+7)Q>MtWSA3jhWS9iPA{y*g@b*^qTf^q^@l>?Sp{^&1(Q1 zu6x}^ojhMq+ipgfeptsA4`tgovM@cRo_z_&>0jS&Le2IxfK?+#5*yi)sF)0uv>RuO zOK)Mrt=QNu8JM@rkjQxd8=KigoPkbFZPI(yXeLf^o>UvvIqXiVEpr5vnF0IfeA6C} zKuv$smi={;F&6_i0{??pR_$$@Vaqdb+l^!bfCAW{DMMIWw1i`VE1KNOmPH&$kI*AuTiTnDnEun|CX=h7LN6D0t!R!yqg;e=1SmhtVF=%gNJ2Jh4O)A*g z9cFI9V*(Uy}QJ3HWE=O)}IB=mhx%04}-w{jf*;U+HZ0@^a?w9(E?-;bBjkbPV@;*%7quPv5f#(XRo0 zY}pwQ_C4bqyw?a6M&I9W1lgE|)(fdDUutfLU1@9UZ0!I$j&+EJaIto&xi!Z7*`;K{ z#q0<$MgU|#{*}h&xdzx2t-<=F+5h5>^?TozjAih2E`m7f{sXfvfsa10N7ABR4EoQ| zplgd`cLv*Yajfw}>^(>=jXt#Bp|x%pY6~6nkzqFRg9|^hg>mGc;kMBJ)E{X-lb%f| zmv{l5&A3ls{|Ak-SK{~yqiwP)M~$Jkia!`*=LnJ|8dabpUCZWJo78asjupglZ=6l; z5w||23yI(Q%&r(XYhe@Nj5ir?lM(*rc$<_vD<{~bVOcQIu1PDrI?473KmSa&r7#9S zAhMkwj&-~Ixg(drWrg&=h zq}$c;+tyjOU@AVEZIilT>s-49^=m!P-i7#!o==wpzd7GNir@H-g?4QkVX?iH{@T7I zi%=7n+S}>Bd&{z}wpPpSy7b?|74|~>#cHh*myWesuma~++XrOg+}J)$pyJdTdyf3g zPc%SiTC&zgZ*Sgaon4IvpS_-linZGy2&mLXc(mjZ61%|&(>BpA@#f!%cZ>DdY@@RV zYrBPb6IN}jAp9EKCjE5uHk&*^?{2e`1LJn757B6_Gf)hwO14xsJV&lbwswb&ZYs-r zeM`Dq)@LV?7H_-Du0_aMup7pbC|aZzz->l5jI-B9+diAV*G6%NO~|mxO{epBc0lX{ zrLmv#276;v^IzZF69VI7C@8iVTf;5P&i!Do!EOJ1pIGvQ{o*VP{n3_G(hxZ3rxL)v z={4P02F2va$EW@QTk^q8rhEd>GJ@r9=6=Ml9<+ zcgkLm%l+|GaB%~AKqY2u{^Yd%9fG#)OxAN8aSnD0|EqD{UPZs|UdXz?nqRcd;675K zncpEpP`&ruCanE4NDFiK51z&U{>&n@7(x@m~H^OWxr265LN8#Cu-# zv0(P9J`p!&;vaD5$ftJ9Q@CVts-(Yc$*Ch5(jJ@xdjft;{+muJ*Pa4Tgt(~skDZ@> zb$DjWj!)1PjTrwvw%~6 z{mjoD6p7fdFemVALKXos_Oemg9NN)_*&WHd0%pPZ&PF+$WimlC%)FL2r;~xpyOPrp z>cyJjj^G~}ML2TOQqa?;01+LDbm(oG66K&SlnqlHnK@<|i@<$z~iqQ`Hwov(ri!B4W5Zad-pwBvkEox6ArK47d(NMNc_ zZYRis7swUwcVh#ioq%wi24}80xu?y^9}tvn%7xDGYre`VC)R<9Os;&kChXg zhxDt|Yt9_{b+DjA<^gu0kVE3eFNK|G`uKMdCpZ3LRxyXo0oS;|HwyGaD=L~bR|c2?Sy@+1R-aB zciz3SBQCl5Rh)bT^scJTuYnbZbpe9vR12UweIPmyzgOKMT{;h|>68n!wdz92VQ4F4 z#on(whiTl(b^g0tKh$J-zq$f(X>T~ht+2cG9Lc3D88CA;XMV0UaEb=zOLz&pF`xy& z2Kh>fmx^rU5bMPg8asVy_UTQWLG&xKnL`?f<+D@8#PgavvNsychh;VWae3{x9J*jx z{kI*IA6UH>4yiPXw{(O)=18logOb>WXq^{p>j-x0c{^t=%|5$>GYNmOqMZc6>Yaf~ zWIC9UumOUl{K@NdaRgsA=^aP-imd1g*p(@w`E8&G>~QT}Cr@BB;+YXg<+?i$<*7)u zf*)J-aCXZdF}xAKz0uP-9Q+0a5OB)6y|ON&)b|_`3iz?!&S_fbs=f}&_k2}9M-Dj# zrP&j3YtQWJMDRKT93!}<7rl?!lynY>ssyip(AHjO=eaO5HRx(bGG?6FgrKQA^G9pM-FlP zdxkqgfHy`uXK9mfk8+3w=99(!vUZ$9g8bx9oq#c}`3MMZtT`U&{_D@2#Ry!(&mGjz@!aE`LIg>T2~J7+)o-Fh z>IHsflG7UhV^yX&XXH&KJ5(9F5qtsSYafc&|jkOGBrS8x($gZMH*3&_lBwQnD^TH%Ht8zsz-J5w3>Jcf?CSZGj^> zsR4D(h07Di`fi~kYug~g)laO6ANMbEjw7gZ7Yjm}w#505O39Dk_nSj?ONSJ0%v|OK z%wZWtpvWr@THtGkv`>e>cGl4rj#%N4Yf7h;Sx4{6Dn}?+|6c8sp%oQd3tU0~D`=gL zUjtjcX`Qpg2bQ;5?~scRU$6nLGx?6mNC7yoeYs5zN#2(>IjF{Bd%kf z+|NA!9=J(mpcCsy$7dVAj-~zKyhCSd$6h*9d`^awD~OY{9&jNY{!Tn3{l9lIf-NxK zzWqMhU7on#SrTjkI-C3q({#sn0Vj&*|H)}Y8`kH5BkPn?P!YrX9fYSeutR8J zh7ZDxdhJ3uSHs5`v24)^I1(_h!U`XDI?5|fJCHYyuRkoFJ67apVz_wBQAe1X*JcW~ zj8{DF2-REt6OI(01{a?ncAxq)5a$~w;ii-)N%$R(8+?plGfp`&i=Kjy7k2#ew76;b zgENkB`RRSm5oW&+&pYXa6YCe}DH4r((UJVAlT+{o@&{vuYI-47?Px~9v*v#}-{QQ+-(u^co;m?d?ZyQV zpY0I4HF8 z2``;^+VQoo#Jx1-Ut*1Cj&VtWHZ;tQ3g7`t58y(#W^+?%fXE!~&p7z`9IoUZ37YUJ z(LR7V*zue$YODF|T<%9i2Du|#Ini3O2(t$=h?-Gsv&qIqx}$O6h$weI{x}xplBI2} z;!5u7$;=O`M_imxU8%?%a8BRQC%#E@-xe?%E?GD37%nOHR-0~s)3}-oE?#t|{>E|z zWBJ^6g??j&>k0%O@?6Pb7S@3wh!;cdP9JJMFSkoK2VWEIb|L`uSb?<5vF=t}+pIhU z32&X(CAOE}$d?6g^*C2H3P1$DpPhO1Yi>Ae5$_JdA&$hmBsI@UaAi)fJVWOuZ2naN zcOy1$^_qJMf0QZcBB#dV3%R`szA1(OGof$WO)m}eEi2+)lIWk};PKnmqV5s-o9~U} zf8tw68=bk~3e@t>o z`Ff?5yJOd1s8pJ`NoQF;E+QoeX2n#{Iim~0jF6}*(Kp+ zVih;2I`G5NaZC&#$GH1`)!YlX!p7Czpd=Z#4_JcE4FG?jTD&adh(guzBj^r^JLq4_ zy@4>adEJ%WsQ^&F$|pAexVDShURJ4&D^-vI7P2iwCHjpxX!t4;{>Ho^D5P;cm$bSy z>WkA}p@F-Lw&L%G?%cqoj`8L=*1pDW7&SZ4#FaxFf$)8kFU=Wh=B^G5lDHmTNrd{3 zR2OwY{AhERIDLNqO*iQCllm0$WbEw(7<=PwL8??+oV>7_VaDMC^SFZI3*ZV!+DCaNo^>I78(?lL zkOR@e&)i?|7?1qil_Il1Z88Ujg70vnj(17B+-`y!&^vaSm(^(CM0zQB$w{!ec+HHM z><-6Y?8Ow9Wb8*%T_I!Fn(hWXzba4(wJTr3lr86Zx!LnC+`S0g?isXl&cAep+BA2% zOM)FQ%iPj5Uzb@~hpoqKmt?l8b6oPfG3UCnV!Hw*|MF+!<>$e}A|rC~YCm&=|MBE} zHwTS>VSyWP76B}N4oa)C^W0p#_98c&R@-E;EAzfES1E{k#NoOvaZk~3)t0(K#j<-@ z)?&_l?G~i3ua>*71qh4myojH-SJIWkORj>40{ZDR#;I&TWeT zu(a>p$MRlc>^UMo{Rg)Nfq8$Q;PhCZA6?m=UV$tVi06Ip$HcPXKe>w$o$&`;sTgH4 z#OXhUBa2O6Kj_LjH=t(>sq^VMw97M~oP`^iemo{8OFiU{!vW785{%xC!}Q?swMVjU z*I#~iNi)DFXSyPz!<^&p%;0`u9Qw4`fW^P!qf=S?u8=EX=Sf%Ax>mqgi<0)K6;)Wf4=>KOI8|o{ulR8c`OW} zz@fSy_X@Crmt5J#2Wa-wPGSp8BU1XZI|qk9blD{v%&sdgDGAqJb)O+HtA5P_X4`MB zlz#yB0!zXmCiY)*(WJ)GekYcPHM{Pj=LoNMBkRC4zv;?ZVj}0{md9Ct=DywkyP(q_XrAHYLtOWeXo4@2v<-mR1JVk7prwV@NYQxPUhc z_s)9FL*AC%ea(~I$10+L!D^<%O%h(nLp35>Q^=!ZGpDdOG%&@+eh>`mqnN)@)RPlf zfp#9_y7B!i1{jm+;MhuWZL{uLs37~Ngoj=c>}W}k-kNQtJTefnT4e;hdCPhMqa_A- z$ESGVtX!feYpyEN+kzjH%6WU_=`oBOzZFXIG7zb^k~}2t5*~%xDD1 z@zFP~S{-jKBH&&fFYvfx5I3|0kK?+Kq7akVyetISc-Ot*{fK=&tmg@Tg%S0$mOiC{ zN9u3>Q^TzDajTIRv~ty2SOC=P^>*X`o1k~Uj}cjL#?UhaZyz<9{n)a)H^D=sUdtA`vsztPnbZosMC zypx2rB0W6RL-1lfy%B`cmA$;R^s7y8IAnpTeD73T2e- z;I#;LMXi!gl6=Vfo=`~b8R+Gq$u52X^c9#4A0S*;t`?y#lxpJcU@_UTAz71M`q1kZ z?1~l-?5Yp-!ug0{9%-)l<&Qj}0-H1U=oHlVkEhH!&0L zUmP9t-wgf4lMP^%Fo_5@7&IbZHMa9@C_Z<4tcP3+|7DyfbZ`HDD(Me zj1j@!K9SdE&)zo`ws*WY5sy~W3Elz%`N2d_sOSEjYo7(HCN39ppawW8I_`Ue))m}1@4|uqNMl0XMUZ4`Fy*&en@i{Oy7R*$*3ho;Q}IUIejZ&1SC` zZfEoskEC>MYZfaujeA0bH@1scC47fRstFeJt%s`6^qt}fy1vsRT|3`J?<)Ifw^;Ou zJ)Y1St=TIcM_%naZzW;r*7u&54R<4Kzc(s?oW-YoZpbI3KjWjDv%CX<8`6IA&?d>A z{p68k@b`f%CM@QVcrbP z=2H9@Fa3XS;FPkcsloyF`{^NLFM8{6(nA-;o3iRs7E%vi_T)m(Fh8oRuKWhbx?UkV znoYdwp_+)-`W4#ZK>Rnl0NJ8z9;u5b{7xjo+g*nn=YNq1_On0L1lIXD;DKj{R4na3 zgBv5?P45dC=&THiFzt^yypC+%5HRHRyX~1X;)m)ivjVVVgKv3r0-Z2i4wqW{wkP?d zrCW<-a^RWZrM$M~Y(;lzcE_9i}zHv)uZr zcNj5WhNb2UIjn!45J~T5-Vll;>}lT6Rh;RUe4#jWs3*@fK$`@a-pdRM6IMyP6DSv za!4@zy;8)KY;^e$Jyv}ygh&MGP%(tpA+J{{BwMKfGiba)%%Cg*tJm3!nAi{!NqX@R zIHFVz%?R9YXv)D(zd!f0OI8Wt`@y$Wg_DFZR<9lsoXF%FA>^uf|C)fsz(A;!!-0UM zOk+=zqE*(bAyl>L{5otRj`UvbP+9slzm7PutmGRZwAk^udLhB`SF0bAGv24Lw9~+^ z`h)XA4dEk>cCk^YUI5n#hXB{9O+qIEu%VQN-CH&dy@lP`nr0zM@dyaS0CHRcdYV+9 zkS~hWtqD5FD@8*J>u5sIRoPIUT4Rhx)eX!W)&1pgG zqc=mO?Mi(MP$?7YqfS7m2oOjxZ_|1@vf*;U?HX$i^ z6^e5Bk>)t;vbG^TFvQi{0*CB+yAa*+2in8d$dFyV3$6UCg0WJu4H--nc=RwR9U<{O z{g&_PBp024TiOpw#|D1x2Hva-+P|Ng~%2AX7^C# z07!{FVO0ncA7DDHSI^KMB!CjVLZb*_Yu^ir_cppuXaM~;v2RESbQSx#bGcjj; z`XJc9aRWkR=4q1_LKc=aeLsXs3Kl(3e7ZZ3js!dN0bL60+d*{P*{Z=}AybEhgide6 zhoS89(MY5RZ@?I!-s?kw$R$u%;$QyV?0*DtN3MdGl1TM2;UoKWcnEb}y#0ufoYWS! zU59`e9Ad`E(2s=B4x>X-f>m&VEDlwfp_SxP1CDql=`zN3#EKw*usi%8j5v`$>&4wF+M5uo{VEF zMXZs(Jvr1QxIJjNDm(rEk@el-RTa&{Pbf)92uUdS^cGZlhlD0YQF@aqHK<6h3et;( zUPZEW0wTQxDU0+7iu9le(uo4nn<5>)IWwEz_wM1J`<&;VJ+rg3v$M0)7FZq+QB&5y zq3H1yJ=#A+(TOnEv=C}xEMmG~fg969q%Up#IwU1bRbZp5WOa6B2B<1BCS{`in@auJ zZax!~5v1>ylq?d~o0YZObebKSOcQx;PUxiHj2)aCIv$`FCbJ{8S~NEDvolA)g>z?K zXjHJ7UtbxUEuJ5eoa?Y!3qYpL#fva_We2DddlrP2U~kdAxeDbZI*?4;(u)a@{m-@5ma>>xQdLKJQkxjFPurZ+mU zaEw@>z7`LChdtcnV$EFG5-Lgr%Dt6TSQfo4^b#AzY!|A;v+c0XWx(X9Ldc2J%#Li; zG`KpZ#QSh4?{%>N+;K7kX7Rwz&~^kgepl$B#CtRRM0ord?|sUXE_8|)=^@F(4a3Ah zY;5ZLZ&=kmq4@~&?4A(XJNfp#px;Z-S$Yk@*{tQyp zn37-FACj+btWcJUOd>>c+`g(L@q56aK)0Z@_bpVJ{J;1XWq(GdGNe&&@g z(L;tW-+i9*16F!fY!s^-5h}v^egpFF$QN+S$Fzu0o|G{FJM~;Z3ShduAb7L$p}E9= z_b!B_veqEI+Q2k|JlKeoW|?r>!6*B#kVuTGcqt@hWLGGQR!#RItmn>`LlhuT=1Qm* zeK_dv5V<)NSSK0p4W&K7?-5o&n|&>DltL!8by((E>QazjDp*gpauy64u9~ zw?f?sV%0kVCI(uLgTTHgp(s|kMuB|nXmUg@R;xyVg6!_iPz)RPC{%)-zbn?hbuaW| zfSaGhxcG5_`=L}Mz?So$pSQZVX$R&j$l$}Vss}Ty?68X_cMNY1$z?!Z{;z7Zp0#M4uj)H95Tq9MTxh0ek ziz%om>|)pGoNQE-QWs$zic&I>25HfX2q)W~TOlv=mKbF(5olzrB95n%;}qGq2Qz~X zHXPAM-LtE#{v|LvUVE;azG@<7W>+>l4_m&)g#XHWIa%|(N;3A!^Jb0wNIoS%aEcLs z0_*(m{EAe6xB}G@z%IefLsp7IA%)It+)!ak5WJ@;t?6l)t^{ltWiiYHVRU{R(~-^p z9ttYXH5EL5@^O~3k-n_%C===Fu&XSQx2LjHe++@(EdkLA+`*KQprC1&FDj^zah_+s zrUXyk>l+F_;1%9bss@c_XuhI2 zHR8)lDDi~x_L53*db&|c5l78jWfXCQm{?Z1PHzX5SHx17Q$cwRt;;MuNs(e(E5JRy z<3Y8JD+;S=jSh#va}^cZ^p;mr#DVT*WrenRUc9OzUkm^`yI+?e^-YDmw z>WVmb7pkeOrT_kTO9|?cqyGXW6KE32Yu8e~!Dj6IJIZaG>7(x|W9ZA)b(HP&q|{S7 z)6>ZM%2@g!S3|)rFB^(xY-eNTzO?2b{n@`h2Fd?d6M^orrpinL)~%T$Otu%A6SuHK zEfln@v;8d%avy@XPL^=$)JzaQxtQdw%zh#ai%YAc>a zm$KW)5^VG#(C6@Tkg^mzfBSt!N+Jf0wjCrwVxv%7MN0mwKqU(B-G4K)#j&a%*-`9e zTV<|KHa5SV7~aJ8S<9bw5F{PfQRynPdpWE}iLeTGQlz?^Fi_mB@a2*&5#89Z4-{D$ zgBk`6q*PWI*A0y^LEp;9mi-mhek(FI7Aud{Lr=k-o!g=`;eSr>uVtge8nOr-cz zuw3xN#)falpg~;K!r5@PClQgP)O&5JGMW&bKTV<2+x+PY zYB@alYvnC@0%uOo=kUWbvbKYmnF_hRdFd3Gn*at_&bbd0ByK-Tc_-Kc&7RN#E+C$* ztO8f_)QK$U8U{w73s1d z5aN5FX2RA5uMjppFJy?`T&R#Pyd_nUE1ARWK@m-xJzb<=ND8~NSS;s@-zpyyaqE7U zwbPzls z+;sZhg%TrvM=3FR-ex7=2Fs1RQz4JanVrfD>}c89-E?%}7t$3vIk3We0`r_w4z2@6 zPxQEued zVZcV0eihPS_iw=dNYu>ZwDq%-zY87U@Cil7cgwDy6eqn~f6%gHXHJRM$4)Eg3S_^W z5&!HwE846+C-(o@=auU+B27={@ezq+ch17kt_zA3FA5CfZ#DnF!J3N-nN~Vwiv6qM zpGs+>#i+lOw)AxVk`lCoh8>3kPV#qf!ED|uigZ;hYz)m!sw{o?iqep1P~)nSDTxb6 zTNw)M*YKK>j#C+bT`1(d@C~IgbvxvySQUKYE#(&dH}sAoXUD?P!>`7$`>sO%p~?3G zS{39F{+Qk2tL_ISLwWy*!|(hfb_U+yfzqF_P5)0p9}r*vP?2w}0s`UK8^pLVe(<$+Ex^l@ahQM9EYRzODH?>>1eCU%%%sz^d;DZ&-~t;ra;I z2D9Vp1a*`@QeLW{N=5@-`!zKOt%^pktJwl#EA#6tu0VV2D%C}MEW}<81Zd~pQ2Qd? zniNurO^X!{Fdm>gz`wM`XDqx|tiye<=DJk@p^Vqma5lGy+5kaZFCymPm!c|pc;*#T zX|tVHoLGvtEuo6@*|?Ib794qIJY?QrM{s3o`x)~W=30h*48Mi3hQ{& za;ga7E>S@ZDDx0jgEiWGv|GZ(!>oF<*g~v{f0=CFBvnc!1Er#M7Q3k$en@N!&jN)QdMZ&-jb_$Ab|jlxS#2T1EmIM)I00_J zXtih~Y>Ei*%CAuhdsamqhSNQ?s@f&cIobfRY1VDVrK+h*B+eB@AN)oNsNW)QZEql0YFb0}&%g-L4v5XaYoy`{mG^F} zigUcvR9#J-A9+vhOHVbMtHGF*FTL>u1jPHH3@doxsv z%;ifTSov7&M=BV#qMe-Vda}AwCi>{pz&!8~Z4nbcPy^2Des6i8SWg6?^Sb~?tocwC zy5*gZK(@+sow2AMgfn)6iwsuX5h0i*=pDC)Og+D(;>h@$cX z0{f}EiYhvr-a~yMW8bvChuCA0!FYDGE?j)^Pfv9P^8dnKs&M!2?hV{4<4Pt#gby+5 z){HZCb1}WIO2^rwebu-C8>dZ!^^VQqn$_1?Qh)VY03gm>b4CVv!Y}|NPVq($Go2ANT z0jSa7*B^pb`PomQY(@Cl*($k5+23(p<8 zROx;VkUmh9f?ath zD#rfs(uY+F%VQOfs5fOHf%PY#`9U0?ouPgk0EkX1g!k_;b-Rod?qm4wuU}QNl3)By zeT1OS99K&sfq3o{ppN?gvBD=+Ik-U7qCgPu{h>;C9)s%Wm!iOT%}JJbfe<`6F+rNl>m60TfB;r0 zTx)=R@VD;4umT??!zw`pe!j0B$GMyTk4k6kx&NvdP{JoaP(Q4LL*h3Rf*I{Wj1nY z!Z6Y+N)s-}?a^A$(i}Dem}6uPEs{ORt)V)=(_%CcvuDI=e+0;m#D7-n zS|&bBGc>Y4^fa|V7+t0s=kk%37E3^;+ZrAJM><--Ivh6vc%q31RQ<};$dFjb(|Xf) zvl29nO=kTHYMIh{NMe3TBJtsCS|D66{!QTYf+oQhBHRn3-_R(4v3?;f5SixJ zrr>=GYhwJ9iilzNDXPiB6G|*}$z!v-t@Uu$znDfRgrdbYjM`+eCA4EQ_s4I5^*O%` zOfOx*a}=y6B}!_a2gZemBWM=E{w%4j3%o>k6TaMAN<*s#n@~DP{HCc;B4u6~fyn5x z8lDB%`{lG9IB!~cjWX1(mDfrmp}Co;6$ml|n)x!`0z{V9jEbF6|2YH~C22DQ7|}&G z8(~y`4+h6%hl(18Yw*^UwE6+I^C|+rBES=sHBKy4g;o;lR8>17lZ)zF_}!ztTlc1h zZaOx%nnv2!r0N=36_(AfL6gN(YieXyVawjqXwMt=wuW+r^{yo_>-vtCkJxL(yPA9? zfEBO?GQNBqIb2{~i<+IOqsc+gP?*9`B*vk1{t-@iLmuk6+3IDn`B{zcwY?+hzY)=6bNCyqNxOXEDNVIJ+^VmMBWO|sO?Z9UG}MA2 z#CN*@ljG;#Hqzwd8;rxhPV}xnEqfXh1M{U#v>w4Z#uE_2sP&#kAtJ?^iB-$rY_3HS zd(>+o=*pY6)Wjj7cPlM1Fv0y=z^cz^t)&J2_YT4u$6gvFYLR?f8|_5E`j+`g)>!to z7ZW$TgAib|J7y7Kd$QJ(5GwY8R{NE)_}Aq?FLc=eI8UQeKGJBHIr))>5f410vo?hw zbn2r0L{CM!X|K^!lkS=mKz-4OEW|LmZ&!Y`AWQ8A(|fIl_7Sphlb#xFoMn1xX!hrY zduzK1;Eg`oJ{ir56cT~NxZF=$BlA4gz8JLyhH(Cv7S0a!7yHcoPsE_J2rGWs-jb2QO{AO1XR6Fl~Xb{grl_RGL35;ZcA6kw*@ zDy@!+v=^nO04?^8(a0_^c&t{A5MDP_!jSC=%6*I7T=Y`rI*kO%S zO&E8R7irmoIHRkI1I{Unwf*u`VCf8m_4T(JD))Tq60zTJUaAFx6fTbY8wn+e=S<)__hVBN5ggCdOx5sN}1aCzhI$ zCTKZry%umC0TvL<0Fw~SinNF=z}julW+MWRHfUtr*|$;Ki*%W?NqaZYSxtr~hr`1oyFGNE>JyY>uQ-PoZWqe1Q3r3vNu^lt4E{g?iu z7(A=KmozhO{G`dX^D9&&uN2Ne%b&GCL`D41a1GkDcYrX>_i4=t?8;xX-{@)70j-og z3M^yc!{UD))V{-3Y{Fq$@x03stqXm4?5HLe9In8Q)hpnp9HY^*HOGXeJo#6xH9@)h zn?`PgBgeJb1f}~4EtrUN?<0^u*#DA~S|@52dFs_MW8M{x87>NL&r(locVv!O)I|Vd z;R$i^tVb=do1HzQO-8c!JgZG2;raBu7DrEcGPQ2h-;h6nYq4F-B~32#QGrcwleN-b zi;L^#Uy2yTPWOm0SdA;BmT~oOO)f+aQ-p>yMEB#XLjA0JO_S=zf}fxQB;sKsbjCmZ z6rvF)UDuY%1H0D|=nU(Je|$r11^mTLZM3{%MHP%yw*@;7xg&aQe^-+u-Jqnv_n`U= zy{GM!L?#pp@Nc>9abF7e)2maG? zvs`b)6<}wkgV%oDf7)Q5z^vFqI(qQfM?w=|BOVJiVZ;;7#A#sjpK9n@?bQ?#D8pC9v$7KY;vrQ8VTiKSI-X|uF+&%TxF=10xGZc~(-ly5X_T#_L7#VY^ni1(5~Tq9VEJ(u z=2hk|3S7WW->s#zgQ#1bj>s7W^;Z@I=KCU~FJIT^5Qlh$bYUW^U04?xvOSCF!8F90 zE|e>XD-D#~S5!yMg$*kvIBHOF{f3McTEeiSloDBEpI1_^LtXw|N+$)5k1V6#rvLhu z)9(c+v&b)0;pT)c2UM~>wy8pp599qJ6*zQ^I$k|Ilq)4k$2Gy%Ch0=Y-&Rr2O?@1w zq=#N1pI?m+VdSeqT*O~i(MRG3Z1kIAsr0R;=O7rLRo6vW#?2Z!+9%kpnmTHO{J>j! zz>5eHq-YlWuWIRZ80qGqxk zwGPJA*1>z;EiRIss-ri=1y`i5zAQ*SzX%47Y~vEkVs3rGVlV4wP5r!vdIuWl^G0F? zU2Ck%9<@qTb8lx$SndAh%2X|ILQ@@&1#I+tuPiGFaDyvZTY>>$bKCe38`n&ypvRic zbuuRM$t`rbm@t@m{c0G{30hS6>Q=fq{QlBfr+tXEZKI#UHJa2`$4!)3?Q}FnvFGh{ zjM89t+Y2Fatb?8`ks}eyTd?G|FpQ6qb<}HEu}%VH#0NT>6ZnM>bU6+&5y~g{d%(0$ z^{5%Ab~R!dqjNebmmozj^&@>A;#0k|E>$>BWcQW;UzYv^x_awleJ;+=#gBCne^#Wc zPU_X8u6iZ{INMD}^9oPzuID1gINU?;M^80->2huxcs|w$@O)EmVD0~1d4MjKNW#vs z5KZbAxpSs;iHqk&`|85W+OwZ77n)0Cou1n+hmS~Y+Jpd#p(sm=13L2B|6A*B4OPJBMNmv&w_@PjR^G2kVjv%O|m4 zp#lN@K17!c=kOADB7BLb)#x!$ISES97_9HdFb%nei52kvFd&{x3ye&_FCibZJ!{th z^z5g@^}~q9!4bL?qYgcxCkNYK9;wffVUcOhT?NwU=l)Q_@z5xJJi=)`S|@W}na_1J z=d{h?-)jdwJC5k7;;mUfobl-RDC|8HgcMd+BX|9U6*Xa z@F50ll4~sl`hQI*Q&UESa6Zi=0R3Pq9NfVq)|3cc{w3+$@?9EEi>4fzt z1=g4U7tb?Gmo4ewpPC2h;`T0n! z#C-kp|J4-}sq_Rw4Zjp#kmX#U9}LVa-Y<1)N|EUhyL#OI523=8B37VC0t#6*S_Ed0;;z$Lnf z?pXVsF2@+afH9m8yZLjeE`>UR3%Dd)Q`~n95CgL}CpCupDs?w%32fRP_%F|L{e7H{ z?#p$lv^t2C)OfHDuMk|y9ULNy%-Im{$4#DXCd|{9YX^7;h)4d%uDXm z+f%D4zr3<6y)ux?ji50T6|43R9%L0HIoS9B$r`2})b|HSf+sKh5>8$=D|?6(IR5t` zU3T!p0I(7UwuKO+W^7nB$dA2yM9-AzIK8Q$BZJ~OW!V3(cGf6Em#-B7=h*8L@|LJ*$%=n!D#=tCJyg`T&Lm5YR`(s$A56lBft7;5&c;u#3Z&00)R# zdW$t_1F}M^8?CTXH}!b7CR3k^(yjWRx=09_{8yIHoPUW#E}wT<7m*puuILn*G3{?s zA(!>KDlE}`uj#@TGV!`Df)%&i&`S^%uing(qc3jhZv;jXb{!;DlRHAAt9qCCE#+Q7 zW<$vZ-`nJmi08PklS_{E`G?d**63fN8msm|{~HHY_`l!|OI0e6CUArb`7VPwNPFdx zIGR0vL>d`8{a7bY+m0vt1DWzzha%$&NT@4Mb&CI<^Grt%DxdXSr-Gqu{tI0yk)BwF z&Ra0hNVfSU^|xu3QBPI^L?sFY|94w(=9J84>_QyxW;4jEb3MBur?f-JhF>-U#|2Rb z1K8cGdR`VCZb(s$J_3Hwc#TJZz}|~-9obtE2JO|=BaLqYlM*+b*eimCM;WLPvt3aJ zsk>{UjnTC1%fuKIq2uN;C@JVAHMEWyhQ7*gIfw8FbDu+^rJ@g35vy<(us&EHfF;lxSS3^JOs zQMw^n5dZ|1Ge;0m78A3ASXa}aqi$`>SRlCBHa@43^>PjJ`S$h<*|?U-);GzT6R0lJ zZgW9H_>=V4jDZ1SLy-svqk49~ZjjYv!5apr&RQ2X2uARtg?uG&xU~u|V zUSyq;A$l6K(B3L>5c^oYRtANu@Kddg z4`@Wy+89gZ*{OL6ijT&$HKd?|L@E=Jr!7oJi)z_*b~qO5ln$r>`pIe_Mo$IRvyqI213Vw$8&TsCJ+YGyBb^QsX=$6FImoa^)%#~ zEdUpT9^l)%GDxfkf!*cp6IlCY>ClER^Yt~zD)6YU@hQ=}PygTup-2R1<)tC->BCP* zkaO)*BZ081Ho#~aq!b?0GDgE#F`Q2MjMfl4^O+f*K%MRK8O(tC*H_rGIxmBx?+bKq#o}cYGeku55vjvn-nedJ}WWYKnpI99buFXqKXxD z{kFXSNZ11dknqrkkd}@Td&aWSMiUzOlh2KEM6%Lf8d42-xH$_-LlD~UekDlu>?>m! zH6J?GKqC`xH4cQDJa6eSa3wAFIPiAN`^+2$hpRtsLy?@3Q-KC=PY~kl(FEg}{NcUv zAhIx`=49&#g;kwo{D?dqHrYs|ZYxhQq-b8CKBifXoCA<+O%+@8lc_{uer=jjlLlJi zYlGZreA*17Q;BMf&H=fhO0t3B>?9@W~ho4F{(uorD7aLy&Cag>;$PvB0 z0vM?I5~CJTdhT~d1`@ybQbX82k1iuU5NcKhkv~?BAfV2}j;u7Kf~T+q+Cl#K?N!Eg z1bJq)A&eXM))<2ctzPSl5%hFB&A3H4od2HWEkCls7@QqPR*w@5mbAqnBeDI1@nK** znQs9DCT{_jzzAx61~~jPwi=TVLdR_e?p3Vvb|E{9?J(}+D|aV}Rk$M6AV)Hrx0|*n z)-FAunv`S5>L-BNeG+u@@Su^O&-u})K_fV~Crbi$|H*ib#xniqfX)ZsUjuQvZl73` zX}=hisOio9M0&RCfKV%@9;9854LU@lUe@ujTqMsYF-RGJ7Qw$hVuP>^(do^zfHLK|DEQ!D3jv-x$2G;w#Fq4z+8VeAs688eiOgXgkx&HuGkl?DadiRZ$ z*z)0hv6-Fv$7n}0Qt^S1HqrlqN+u6r(P)q@89ztm;O{*&ga>ZWBjY{%k{^C-h#1+5 zPl5XagG6Iojc^mT-e-nXa~ym@hehUn9X7CFhqcPZe^&E?EkmRZ950TGyA(nMnmW2FKU z0#{P_hBf?VV`&p3j(N{Arb+xUv21|#s9ZxilN874`0`3w%o|(Num>gGFvMeG+^U;vJ+ zUR7%bRuIeV3}UX)TjnBZ0hgay6O2KP--1}$r8P`YaC$+KF4UusVvXK5x8r2S)H3P3 z!y3Fp9M3AfYf1^8kPz}5h+Vw4nU0^_t(~=`JJdB#<6l+knSpaFR9txCLGtA(Gbj7$ zeVC!o>zlh}c!uU%z*EpX>-W-gys-q(b%LT{mLeS z?}j!t@%*-I_R9aa5AX5c<9^0M5`I=)zTz4ZgMN}Py5#9W1PwN-#2B)57Z7A z30&i2$v$smlC7*=Tl3q%1VJ?hC=9VXCMPe|-YkOi$l7)wsJvB2a}iDL(`56wyhfoM z10Im@P$PUra(WlM5{M3i$tUxn%uM|}A%@_o8xumlxg+TzjVVPD0f@cP!i%I6F z$6c~k+VF1X0m7kP4|8h}`)3NcWqX-Zs6~2jb77#x=ohec`yKEZea(T?EO-Ab;L|=a zE8>6b;HRck(G+m=b4zJ}Pd|lg6B?$4$FL5&p=ced;BK-R&5{P1Ba!|;3^b)GR&ch? z0oT0Z$o~556%L}h4nFNp3^FkWhRqusTpPQKW)l!L4KdLY!RHP&1KtBs>!BlX*XzRt zqhA|t+BDLrk*0_pGDn#~^`8nm_@w!5w2;ND$QLFVHjFQW+f;eX@M>Y}O$Vm8Y7r zuLdp>@~?%0FLUvV(@avl+0f}Gnu&OmuT46%@bxpyc|?OIGfnat@w60>XtI*wO@)a0 zkv<+6PWK-(Kf`hLokdHA)thZ@kw2kI4L;c_%rQ$-A6@5W=?&NC3EpD87Z52~@Cu{y)<_3+KUwdN9^#Ju;qtZj87fp*^im{`7m3 z^gh;PqhPpdo6LZlBz`sQH8`}7H=AT(QMgHAIC-|10UIioNWj(@8`a_m+7o%Dt!82X z8LW|jO&4#Yg~-NjC%Mfh>;S1L?GF&E)5VvmKJ~8bH2)+HIk?*l*uNkru_V;dK)7)J zuFo3&NID3wwnr#`{N&!OUAEfKX25&_VRrQ)bqv2B^H;w7Y*Gy{U)zQx$Ospm{7Ruwv4RL^Fm${FD-=LIvK&pdC&6WA3O%m(!I=%N`$PtP*VNP3F+ z%apH{g9U(&pVEK9BKqi(`5$s~`^#CpI_nCIMy6HfB#`9TerZfheztWq6lLjq)kJGF zD{{?z5?~oBjp`&EQUtTc&gYQew&lSPR%Avc~M&CYjVa z+%XdZ#gZ#pX-?G3N#_$65&Zvj4wge8nD+vce1h zXA1M<(1)NX2EOc68q^j1av)ruz-m0EV-NG5m;p~s(`4X0Y?=5}==jf{lIUR0wFC|ggkIb;hed3~`sTEx1baXa_cLgVmkj7^K|0v@x~>n0>(ob? z;jFZ6nT@jL;h#lVBJ}5aq=gzkJCw^JvsQYPg>DPJKHB;S-j!G+Vcv+afo|8ZL zb!Is9h+q45ZEl9FfHX|R+#_fK%)B7()BhWNepd7i$6_xPYdDIvk*c)?A1Z4W83H}s z5|dfXu;@&{yPHpyB{7qnvNspMx>W$5SjHO`#f$GMl!eLu!j^oqQ6dl!%GVJIvK6)PSk2EAeWe+MF7VYE2{L5cEwZCEbWwz`EUFdkRK`dSu20NB5h15y1u9p=hS3d_l#)U+BRRhHFz z+amHbtOYzE+@$ipvl60}Ze7QrfPhda2QrbC6u zN}6V{xKUPqh(NS@VfX2+thgiZg+IpBJm9qrX z+-M+k++?66+{Gl{ECd4Z5bWFjO9odkx$J2nh*Q2X!s3CE;f9FK-i@;rc5|eKx;&ph zDr*;AG@3RxHvMxe;5&{VFA!iGzp%dX>CWnZY2o3JxnEh2a3+i~Ru$sD_s0^oSd($q zPHY`N-pZ62t<0$W4vU=(!s_)2)<7?-U^2Y9R3&6t*zKyjjyeR!DblNfX!+hkIBnMy_JxIrM(@>#mjsH zf*(JtI@6j(PbX8X-t<&wmL=>=U1pP-z}wBSiqp%9bFEKb>8CYRJ6LxpAJ~WHTb%=3 z?iYMuyBAoQ(iA39xH|j~aRm#lfMcV~co2MPsU(qD+eH=yJ5^q6HAgJi^lyWcdap91 z+#)zg)HoOD3td$HOTPCzYb6b&-!eMjIM0pb328`X^=fo*&-4+XTC-{gTgnZ|VwpxLMW0HtP z|DEJ@Ix@@S?Lk!prqK^@nC3V8szkPiY~)TWL&j{;epqeTpu#%vPtV$AksGPrZW6@2 zbb3&7CDE-H_z_f5*d_zS@(=zy-fWNc1x>-Jy|CQ|CJlod{B|?mDbbK!{F&&>kL?3K zmz$!M5+U~AZ?z+c#|~J+xzhcR*nR39whrPvs7EY0A}EPYdx&tYqe9BYWCSF561#T_ zEJ@f=xnn|$=4roLtEkHk$AP>^=q|sDC)W1_@jh#O(vlA?qLKqbgZ)6*+SZ-2WHTBx z^LH+27Ri?UW4B|a&R7&MX`Qu-QFryvS)b5T`g!X$db)bS+JjGQZDx?!{Avy~rN5sI zeaPnRgF6|k|0NXMl9wzw)fEEc{TdEPoJ&uE1+HDTQgN7*u2?eyQ$Z2p*mmY`kZ!W> zswIa*CZUB98yvqT)cmQ}#gK;I5NZLlZdoVfNoIJ*Fn;*PZHrtxk8WF;IHPCpSic9F zgFniqf=o*uSq6W0*9!VAumZ%zXd42uhKA*1rUMS>zT2%3%lO9%XTJ}Fe6fr7t)AFH z<9}$kWHtX4N0P!1Ksl2+dwLion<2pP+)gaJo)8|zR{clHC`*25q0^2vd}JL#nD%2K z7n~>7MHy2108K!uurFI(2DLp!g!QgxmdPgn8!DSJ*2)X_*I12kCK^1mC~1ndes0OB z9Z)~PuSbq(wR|Bc9{DzEm9S_ma@q) z$_AIVW%m!`_lPZhbXaef~QR478kRRHLeme9kMqX%7m* z+6Ze5+h3}dHAgjS*xwNauGX~aOvoy}ZA;}?AijJPAbYV6loD=H%a%=_kl}AY8Xvp_ zv-&$Wg*32k?*>71stDBspj9lNT-z>0$nrY2R3kQ#xgkh$^kK1I>)NPi@Y(h3K*~-< z+?G;WK&v+z*ee3O>DM#DceuT0+>5r^$PRWq8`04ID%cdVoBXC6jtk`TVBH$qQuUTZ zDl&lpTQ;$G$TNU7CSEoNy1d)eril7yO>Ht%-FwfL6$`(>1j6~ZnH`XRqiaKDgBG@& zAXyQ!i1CZpTG~=sFbI}TfDCt^0^zM}be^-Ft!y%trM9-EJ0HPFv@pS8KAQad_w9p3 z`%!IeijA$?&VGwHU`l&Cmh8`|9qoto-<(dsk^!<|6uaN|r5mw@vD|Gp4sJvDW~|3j zlkFJR^FwW~O%Y>VIMsf|bOfaP7b&M7u1G4v+NJ$k)_WEA?|m~ zm&~$1BmC?+wlH5N&$asnFg=zR$b^{Ym~W${l--(dQ!K^x1@=8$c;^?2f6k=Zff%ku zA&6YS@52|{Qn`6B*eHHf!(u_m!Qa|7Xt3Lt*qI17^*j4zfIo0cEWHW_@at08sRM5* zs~Fz0<6ENhvNk)zqS%7vHhC=StgyFJ2NA1mIgwe^zW}(A?6uW)8gkpo)%MC@2XLID zGP~>7+LT7HZk-^@tTbD86jvfc9+|+l%3mih$`HsP?RBC>=>HD2|oa@BGRc_#UOdd?Y4ZY3h$^dg+vM6@nVzNi)!CD^%=YgkO_m+}$^H}3Nc-8APt#Dv!FQ%1vOo3L zbarH){bgW+u(}?$`05u@<#@IIwlJr(KS08QRXIo+4KI1f-b&-TaoDzLx5%AgZ=wJ8 z9ka9&DW(nH3Q(13|p3YK7tDdnt zQo99b?V|K_@SGhC8SuUVMFNNQ#s%7$`PmD09JRl55hh2T)lT&wdlK7M_>*)tUg)o^ z-fLd6Rs52*yKGY|dhIJhE*JjWrmVcUt2PSK)NC z^1A)U|IS5HX}lp9TcIWP$PIfQa!{|EAkgHdRGtFc7PxIouDqnubpFAY^KaU@n0?2l zD8_qtK+z8X!uvI_E!t@DTCtV)Y%(s6yf2G#IGcA9+|R*6Tbsyv>))(BGWtJzFcE6( zLmMsNyvrlIr$p-{s$@aqd}32Mpkq($bwSLqqBySA&ItwJcEB*W(DleOdo0qV^>e#F z^>p}!EgiW1@%xu=OnU^YyjCl<-KNHlSd<;ZoK}SL57`_M2DmdjJOyY%g(+g42=-47 zN0N5{oC;IGOa6MeLkz_#MmUmv1?IBf4DiqTAbw|I1=y57!SoI3d^)R9$Wd9HLU~M< z5$SZru~fVmDZZTTHc4&)OHI6{5c5prY~ z3lIsDpb*0XsxuR%(;8KLIb3sOCl$0uuNJnSQ8ol&cm7x%h zQ!v1=VGNi)F2Rw^1b{UbRzeVo1s(D&6n@PS+H|ki9a0r|#v6{XQ9Uf=ETPF+P{jEn zIOk~p^TF}v#he+`?s{>jCOwrb>Cm>ohnI3H(tle@J2UC2Nm-{PJ&i8sh!b6r3QiyT zZ*HO^r`5wEOpS*m2tRP-+&Wk&?Q1%@_+Lp59fDc0N)B0Yi&u6i7PD{_2X`4BQ`Jc# zsI}h&s5l!7%qJ&Ix>4HvT;aw=_1XxkKLXp)DMtI8SI9TpHd%V2jnQ9La76{lJ03=4)Cz z!jv+%jnhlu)Q+ICC+!?MB;IN7Nbz1tGnx(rR_o}HA^mDc(e7NbgUSs*(@6}FU;Q9U zgx&hknMflU+S$oXd-8-XS<7>KS4W&%GP-4bd#<}f=L;U)(-BsYI=ujjv_?engO|M> z^1k2bK6Fdp5x1zUpSJv0Vw((FdV-7>Pv^55=mb< z7%;-@F=FMt7$Zc{-LVcGLRs7K&SjZ?SbPB?eKLXM9;-BwzGKBE3EtNyJEUr{VN;xw z5`dYDpw|4zsSX`GhD~#J<4#t6x-*$3LfVK znB}ZOF#BgY%?OM$$Eg))I=TuZE|%T^9Fj8E$&bz0nt6_7F90u33e2qEiq0K-=R1p0 zQgvJ4Na-%XO7SohY>7_eXIy6KgCk{)CzU~W z3C+h=M~b`g$+9RLCZXiy&Nhb()U3>QM>4d*-qs#iq{I$~PG<*pIAroav{Oh-c5IjP zB7hra^E}-xNc=~-gC{R`@<$>JKeWfWKs>qjC+8tOE#K#Krl+|5PJMdnaKI@S;Mk_s z4M?fp2SRf1L1(VCj+kGvAY~6w3doYlBYVvaiP zsMDSq4xPLBxns^k`fucKjvVilR2FYrML<8b%hsAr_}%$AfX!#Q2%9fXIN#&!S3D`^ z+WAB5<6)<0ALqAEW$kMn&N!Jep!FT0bcR2yZ@S0CvqSm7e=_N;^Nrl7OjCmzH9O}l z#}U0a=gcAO=UxEmFHKQdQtJ<0bkL{C=VXGW5NH9V>FgPO3+80a?>KQOmqA8c{nL@F zyuhZ=Ca=qfUUEL6p6*?Sol-_@RQ52JH~2eiw|xIElW?ics)x`xqic;fW*@` zo$LsbUA*PcQSi)dN5tgay#t#Qjxq9{vnqf$q>GB!%&$I&XtGE59kL~_{YR|RMgI!j zY03lVAt7PlP&NS-l#*-`^;qFss9w9gNxg%MhVHZq=(}PXT?rz1;8{}{sQRnk>x^&uN z55wKR@nvR&JBVJk%jJ#$^mI?V>Qd@iGccoBa zSVbtovH27eu$@@I-GQU4A9Cdk0Z<|)!ghd7zfxR0gtOMF`!v9|nAnM}#%L}cSa?$% zVEIs&waqHI)4_BVnwUYBOY*yi?MfGw0dnX(_hIodj@y)oecE*=(U;v4Tv=N!i-FHC zUx#s^nlrYbJ4+_cbPIBgu)%w;xl$bxU!b%G!v?-A|GK*{Ff1$*058}0<6!IF5ZpAS zklP|K^;i-hwurk6>3FP&OQtXuS?2FXh}!{A6``_mWI9C=dYm z#aD3YNVq1^4Tv&GK_3r6nd_u1PtU(cJBnu7~yoT<`$u5)2q93AO!5Be(`})HEHHpp0`{) z4DzVA-5=?jqqW2$=SALi@6~zH4+J*4L-x~Y(7isSH#V0neg^MDev6e0wK4-Pc5?$+B zyK;I041xl@S^@$&+PD}##m}^HT>|@}tt%{6dD^>|b@j6S!Edmbq?tgDL= zIjnm(v9_9a7ptOL4_CI5024F;UT@#iMZI!am0mPRR;{;7$AMCPT=^PU*rMaWf`jFr z?)9Zv;fMQy)R#wvg#sFXBIL`Az^xtlWKjrmc;J%=*6cHv9OVrL zxpczkZ3nyJpnh0yQFTjm8%R-^7yLyfs{QelRpR!)# zT-m@?j%vyDnFwS3W;|`qtmy<-ww1za@^9CHRy7PAwzGkx9fY{;L6qgJ^ znNwXk?-p*6+6IDe-E^0%7h}IB3CIS|2#E1=SbL47eGSMJsFbS{yO<|77r*t5E9V!$ zI>8WPZ1+ZrD;0_WE-43-iSMw!)bLI5qP|qgDQ-TNHp`7+;hkc@a`<2NaF)v4w*mvh zz}^5A*8= z`0sdyC2r#Y2l<5qc-nVv$H4#bZv*9;Y;Ysl+skO?H!pV!5h6ubxWD;`q^xv*lL%HG z{S$~r_$rqnvZ7o#T z*&K+0jegqXO7%vPu<8K58nfAzvcdp3#9N8cH0SPji10HWVD$2IXh9I+KL~;M@CV>? zB=I&EwR!$zn@dNB%{$y?^7;e9_$fB-R+y}@JKe*w2n_24xR2W9(!spzZdbaqA&Ft7 zf>G&WlG^_$HmTNo0(v9NjqkihmiTn9`y-B~(ocjiEBdpLsMzxzqn-R9lhTr zCv^7%S$n}j_auH_?2voRf8Z|)WnG@Q?OBr( zu9Ub2lZv%Ho1BAwnw@mN#eN>26di8)BOr>)W7;RQj$|jEM-*olPPyIillrG!GK^Sf zNTcD_S)tFfLg(nOWrfa*?Y`&*mz+_o)J35@l+Mf&?5qA10;kts?w^4%VNvLzm)!4U zrdae31Qyo6?5>diZu$($qc~S+m*i1@yTVmF^s1Qe8rQ@&@%)-#nA6wk6<>J6eZ?u# z9|X_KJ3y%iH^p(}>Mfzcue=R9We{1vEE%+4FJp!E01(Vycik;G{R{57A|7$qeb)=Z z!6V1ff1%%e|GLv;V53UHp%mVcZFKYlG1i{{f$k7M2ZcX^dGIi}YMKs*wSe{YM!j%z z^3Y>foUFYk?q|fvbDxSaPkAQP#_rEw;ko#7pasM{2II$9FT}a7$xF8yLfACjn?RuK zY#td9@?`g>;$J*9heuX&{3nk%KQ)JyV`ZO#TP!N%cKY2~ue} zKJ)|;3nzFFkn!Du9x)m#_L_$_OIG4_kB&qo-tbWQ=6MQvf(OSH_T?_JTu8d#gm;%693Gv=>0BJ z3{&?3Tm(B@(aXa&RPq9=zUgm3(ms{F6a*Pr#gj^VfqlzQ+(!WSt9WA&si9TH>f@2s zyamLZE2?{B9#5{}Z3ys8%{-CLjEs9Z_}ewT1R71(x4eK+43hEd!ik_ZV2T#3(wCK3 z_Ve2w+P+v?Ef3XVKJFc_U4UX?nI_~?)%HpdCN=7KnE?b))I$r1G@Y8S9$Q$~qmcT( z^$04fQ{R*7yMbPF#RS_EV8fd?@TvrQ#N>TM^~Z)DnR-8K^oq;DFZ12l87$adbc0Ojxmfn)fqorjhnexSW4Cw+k$y#RI& z?Cpb&9-aN_Bn#|nbn+;7lU@A4+lIqi@S%q`c-HVEk6d4Iojp0H3Is*`Lly2<_}HVv zJR8-;L)Dnq>FSYdlQrq)9hbR1eIl&QCfz+WM{&J}Cv3`YPmeV1=RH00(46VzNfDt* zklES@7VF(lV7~t9Eihfw$CJ&yewIAI2O-|qTaJsNV?U4L1lY0uo)o4IOtb;$0uVQ0 z%jKVXLQ`2YK(I9%D0YAzpLxGXq^IO}?CRq|o>WE_!b-LRT>l+^XRz0t7-ZfMPc}|M zlA)g?fgrvc>IDo)89M|B_SG;?N~Z=&VALvp*m<}|%6ZHPvDMrfA%xD#kscmp+0;>D z`x`#mJB$M`CUd{{PC2$2rsyz~G$ z`awt#e)isYA^DXFf{I}i1=IaKk$99HndDsxd>>YrzUP-G!!9VZO>&0Mzms6*D@^sI z2zDR_rpRN@8{dN(3^k?+=Djn`dxBWsoGv!OQ(p&mVaR^z|S#>&rjC#?D}pq-Ju zxzM9<+A^tvKb%FR-LUAzo|GHnQ`t{)$F9qN>&b3?$inw?+~FnU+b$7O;MNk446jUE zN}DNrwA3TR{*7g#!&A!xdptz*`}r2w4R{6W3xY33Z9(3 z%DW*C8gtyCkrX!yAES!{KZfPmi$P_JT&(C?4^4xt@H(NB6i)LlApbEWzq_Lcl60cstuEp?2>$+ zGCe8g9U^Y#z}m(}1OD{>KrU+Xmq)&g2A8~m9~pr9#f(Q@7JEVCE8fK*N)4b`V%xtx z9{AsPKtpM?gmCuLRWC1Zan%#)eABOa@*SZ`BBA`wZ5Y?D*9F}s-|(b7=_D360rqQb z6mVl!KLsC_yyL~Ngj=5MdP~CSQ~c=PTb^`R2<+$ykPHLw$ZGS)9kEPK-t~qBBx3xV zu&PS$hrxV#-;?fVOG=s%R+!8wyzf6*=aK9GdQv(U^tH+YzrzD>qf93BcPD=bwTKqH z0Is?IpO+#xpyK?!9>EAVJoKgnUium799{-oKA^<;Th-nA2|3yKkG;h>&8?nzQms-j ziERL!lAnsx!sDmjfdKepIv6VMJQMoUn&)Bx^m{=X0ju#+s1MIydi(uOX6{cQi`2NV z1YC-|O}2!0gItW3rPTO@2=-g{1X);%q;z;0$(H3vm?O(*%tyx$Kh2piPk!fBgv302 z_jY)~4>;nN;R)zhVRs`E=!|_JG65wgUz;mIF8={ch(V{L;4W%jJ365dE_&WCcLI6t z`N5b3;X`&}6DX~d4UJ2{mBT)ZPYBRoP465P@T{{Y$TB1hQDbg zv>~}Q$4wi)c!sXPQAtuclV$A~cZFOz8#Ctz2yOe4pp|*kCpqPQK=tQ{!St2D$!qlOQLC^vMu?H!)T^p-03~1)OQw9T3w|+7wtg zL?X)m2kzL~slry3GR;VtFCJ{YQsWcA$2%SDgE=IG-3dF)DuICzOeuLf#O)b50}|q) zCf@~7Fk%vgrXDpD#(9>LgzeJMo04HYY!sg$t^=Zay&8UiUYp6Bg?-kXPT*^}xZ0u! z1nbm$uu<6GbuZ$aRgZDpUS2(W4kB&t8_+hVmZczHh(yfAPWk%ce%QBmQ{(uCuF9n( z#38A)ls+{dY}wJ-55O2;I~L#*yS=gjaUqV%m=R4c>GY%`-^s>qY|d7l1}9i_Py_+X zIBoMn9N{s}Tm z$Bcy9Q1mMniohtsO-}hN$nJ7S8HT&tN%s zPW_W(IC|_^!;9wUVEbpOMc%=o<9T%1E7l+n%T2!t_-%4XQ|kx64qNY{MDIPy&;qltHWv)6#T(#6 z^)fO$q=2aGdjs})m?p93^Cl`obyXqk=U7RY7ZO&K>W{VAR&;9Ia`AeDbrhP1hu`+NZ#%p5W9bQJ)9sWe>!!l zVi!qR<4!c$(&vG#HKirlJW>p__R8q+-LP+W@>W9cl4DLiw`V|^NcsR4SeUf^sU*FW zi=K|z3o#~!G(tiF9ek%wTf-g(9=sKbwt=3-M7v(|zZY~z0Rv>3je{>+fB{~RU4gXv#_gQ|4US16NT zZVEy;SWl;BY17KW9F+o;T`j?yv6R zmsUsnu~%M~UBG;&=E^Yv(n%G55#su~cF_n%_a&nQc6FOt+JA=w9r5oW;vIid-}?Ue xU(4ABMu~DBD*p@O6fEu$bzhbA;)2a8hErGe8MPzpvh0K#(ylk9ENKP&FZCZu3I8hS$43(W>w7A{ za{k-*K)K@w|IYdK)7M*YHdu{|Xy!dKYXjAO4ESMcB6<^=&p zY>o)uZfh^Ljj%uBzoYz~IRB>g&lW0W=`6Fvz-$rhKxtL;rTIS;TBKb85xye<&v5+y z!1F?5MsT(W-@c&r2((XdGZCm%DkLK9ZuTmkzYdln(i-Oo!j+{ZhPI=R17V}+qk685 z8cy~!-#z^ITEssH|5&6;wNp{Q3s?kCF(Q0NqnBdu-uaOnKi2<*z%}}`GJQ-d@Pmj* z@J2n-7gfmc)hM_XhrTX|t4w=bXafydTBIC(Tq;^g9D8Pxgk#x|XsHn!SvA1&Ei9ga zXpSz?o(A10xtczv#O|k$hNTn{O!_4m$lfqOOB+>s1orX0Ekj%NzU)Ip>R~xr{gv{= z#j%M^0|A99M%sjm?ZuW@e;ZqTIV%523#&}q_qfV`0^t%y$OIy^T9gPP{g&I(y?P(9 zB{(T8f;IVB(R_M^P~Xhjx-V~yYdFih8ZQLs(rAE@x7N={m5f@Ahz7BB^3q4s&r8t9 z*t(&#^!fGPBcS>9AK{oO4LVYf2Mwpu$B4$|MQqZa!5ojiFnqU~{DNcFHti|)kT$5) zqgJz@5c)sOE(vHRyhISwuyIuL4E#5-#bx}rYRl93Z}6Abg+bB{;GMvBMp{%WNy_&B zkFH$KH+FA?)56YwCTI6`ZGFcXpVqhy6VXcF184=d`%{3LUIb8qvA+E6|H#_l%QzL8 z7TKYj2x7o*2KC<7@p9JQY-}rPNITG}HBmNiXK`ziDr-2D)luYl-^kxA-}EjwaH0LW z;vS^+>!ypdMK1%~mh~`wtGb`Up2K=%l{Yebnt~k+_QP!{J8K(jTE0bJB@2j2hb33a zbn1B&=~Ddb|HNse6yV*PLk-^-y*CJB(}NUhi0!i-=fB_Qwa_8BB~a8EnWNuY?2z8? zbk+{O_&=%r=l*-M{+-3Q&5aFdsRN19lrcM5?oH%`afEDGd`n|!nPLKMMU5g2@*qUE*<@TNQnZB4GLVc6RtUzpH z$7ba>g(Y?li%P5dJsmFJiE;0+*YWXZMNB}-M4kLAY&z(wO-z0xSVEfHGf-RNif1dT+ z0=*MY1OEa9-_`}|1gX)HmX^u&4yJ~@&WC0 z`!+1yP1oZ`$y;K&hZ4*kc%wc6ehG0+}mypVKq#QfdPJA+7k9 zU&ZZ=^~)aRi`@E50F<5#fFidVzFOPP^|CB?2)kEA6HiA_yTdoO)cl|>~^Ho-q-KMX%7l;?KrC)aI&iiPTK5%%Mg1z*N)RW ze+E)zo=|!JMY~Skcnf7TZp&L{_{J+So45% zuD%a{^7NE?N)EKNT90j_Uc!^+^s)NsC~@x-zlA%c=`&P=(uzM1@jwEDArhJmHun=b z*f;J!K`6#C$7(>u);H)y4qxpTi?VKK96PgDj%3Re$vrJGFE@$p&W*#G+LD=;{Z%(Y zaQJIiq#S>9QS2-YmLgfI37s#zEr^|c(t9!;9=<<`8@TTS-74EUN+q!eOOm7;BAE0; zHi2QaQ}s}G>_JYOEjW-boW(>+IoM-an&5z9Llp@XbUs{_R)|FL4e-&bc!Dlf6Wf?` zK{-n{*)N9lv%myn?}SBhSioRJjTf>dmA*>)Ns_oL1G;37BEmHc22fvTlddCH4g967 z+K|G6pGLYJhXhEdFtL(>(!b)89V>>QeGw$#Vd43LB@(c_Q+8=Lp%IZoszhJyLZun> z^)O7@OkXLvq!`ay;Tno$HzHws)wbCZS+Ajf*?9llQn0v|=rLLp^-9jKHees}NT?IC zV|gVsTXrw3Rz5p2`( z5RKI;C`Gf+%Y`;!vu1`wIolk{rWcd^S?L1OIHc;X0@68wV!r6qNcN!+EUZqgob6cZ zq--`TSWwEq-hPFo--O;QF+`5!(A}g}SVg2;*z-vd>4NjYj~10CiTL?a>P7I8#U;{2 z+1e74pccll_&jzbUs_U%6N#Cy*@|NDXM-uR(nXx*dgjN@IO(>CSag^fNxi#%t>j|w z`bJyq-uv8ni3l+HkT56AAW|Wph=_pOjgHxF-AWqWRhAz2ku=i!8!@>qVoeYeM z_}t!?ce?LbdNw|zoJ6J{-%wu4A)Nqx{K@NYu zw3bAYk*}{U{UY{8yNWOPT-xUSdkJ7E$0X+8)swOjrqk<7A8?CjG>}S*YmHwGeDB{9 zw(5C9X$y8*(@4??$<2+WZ|SROQ|Tss1vGP^@_b)N8|iN+n|n#Pxj2vzz@l}=Z?u%6 zJZL%w63yGPJFt44R?;Pra?!EC6%Jy)t{I=OL9L~I!j_&X6-9XSu5Bc8Oz}}|rNV^J znsySY@cc-7>1X=ejE>S8`l^^H9TCte#p2I_@QLaPWGK^xIF<)>b>XtY-K4i!kt>Cl z9CZim(euUZ9@10fh7UcYmjbF8HF8FAfbH^IwXY>|(!s7pibAwpqXbHyY z{@zl$04cF<&Pcwt53JII4%~k%YB12M?4cYiyq~m67?yqr_Sk7=Lk4DV#H#g|_7JB1 zrC&rqc-3Lg!-M1yR^mlAiv@lo^+LWF^^KJ5nK<1qB8pWTL^7Sf8YJcRbU1U*F|xr1 zV9mdmLV3#}(mdLOr{B6ev?_R*=UPcR1gG`MBtRELaUd&O#|U7ZhI>&>zZn)uy%5!7 zEpl7zQd1=->oh0)fWuj?BeQeijBZ@T{0n%p00{>t(#L@$NH|uIFV4;5qs}52q`CBQ7#gCCDA=!?Pkqi%2 zl1$(>L`M6bM921VQWx=HCUt}pgnj0Ymo^9(_@qMa@IgOFCxs?799_^k0<*JTwN#7E zoFGld4Ue2C2}V^Z$6ln~D<_7O^BuUXu}+huZix49lQM7qQe_P0w;FHOv&KQW_YjHjBCJx(6$CaSDYoS@(jjX+8NAVG}f}SYCT~)OU#y%1V&Ei z2QPiIRvgeK`P*k7Dno|AdS`OlTmWx^iLl~8qLN0X(j{x)!d41|3?$)v2_BVd*w z(7rmY0IrRUhi$$*PrOS@F~=h*|LxDJ50WDI!}(GXB2VsxndGUrNE%IlJGNM=N?+NQ zN{#8O{W6fS;=Y~P8XhGDu=GvYy0hsub6M;|ii92z_I|m9UNHXtM`@xs%9m04mt|r#+NN4&zi0 zJjacR@YoOAr0D|oiMkF)4yHn*k)>>x(nXlkS;ZZTKJZ03EsISbm^+lE?g1St+YV`4 zR(NxhLLyn?t&+)~?Qj)c)@zsa77t0!-L4v2e~*N&Ush?ags!$#e*4Jj&jR*KqC;tH zDLaZq9-#Y2o4*;a|Y^$%+t5&z=`V^kG=w%92tGR{5T6v0|G; za{9(R(^>zYfeHH`mI7JxLsE)3ZduMq7I|1g2N*kf*k$;Qze;G+^69@x*~OVQF9(jt znH*h+cQ`7MDZ^8bNo5JWd&e{R==}+gSphdC7@P9uK$ej%6>!9;%|D!yn$lh;oRQ8U z4GaG+T@>&Pt_k!h_J_1n_-jHcVE=#TjORWp zj`Ukr+9a0(D*(F`xGNpNE_d%r*RpnD0}eQs)IDjV)67%ud(6DjOlk-c8G-2UvIny0 z2hw*QL|O&79nL(ErXrY*52f<7lm(BZLG%^;L?Qq`%GkAkD(BZAInf z^rzF3EDEC1EVcxwKL<=13?W6nFRl0L~dnH;ESNEFU{O@Z|W+qo?R9qt_s`SB_xWE36aTn#%JV^ErPrtR7RgT9~mZh z6(Rdl>Ve3Oluh5niaA-4T=Gl@Kei{A{11Mt4VTfLU>$SI8}KiId1S#+UYa=(GY5vj zYV{8RVSQZ9&13S)A)?4ic?MkC7-nLF^U3I$VkIMF&yjU}p$;gN)GRVe7M-}!gJ4f^ zror{q9BlXFa6dMuz8c2%=a#dv^`C;goe?efL=wM&4{@z*^Q=rn!Nnwa$V)TlJ|oa) zr{@o5>!t=-Z0e`-9D&88Z=4&Bxv^y>U@p}6jSnFa>`8I?2VC6H5^`Qoex@>OpJ_7n%7E@a`d1zU=qPXi%m%;&CS^{>x`Sh?JtYK@Q*um+b^aHGeS&>Xm0UVv> za=ii|gXC#aQ5KxJrJ3VqrCty?B9|8HQ&|>tlhO>WP9)vjDzf10DD8yo2tZO*nVcwm zQ8oE<&+5~20yiLp(0EzYQDgJL_F~g#HRMNGm%ya8?iyH~n&P}=Sa9Ra?Ws{q#=tT& zYs>G1@zFDZ`;k~>>xleW#&O!xtl2-8Nl!@sTqdu~qPnu^sT;5m^pFGfKe)`1jNo1fi?GUBx4kmpE&EI&s6dDujz z3x(ZCAdY4mn#trxobiQ>*9B|ST>e#rn#Y;T;qZWFz*wzY$QV;(QcD>%exA`%u1%a! zxRrcG7@J-u&}Emht>w1D?v-I+RYtJtGj)w0Xd{#Jg`H?Ci|(Y9tsqM}b%fcI!^2wf zeC=hA11UB?pobm0bdb>v&dYa{XVQr|+DYy}Uqw61u2X4K7vO%R$Ahl2d-wI~E_bFS zobKTfW(lW(TM+(dXM+2)lI=i*mFppAXXARx(}cyw)&=ro&lObz!`Y)XAm<8q3(v>K zd@X;A6TbNxWQ(}l1A2hGg+V6!c3}2~j=vy+=E&7Yo{gKop^r=k)s()n;ASkt@WRCz z|1V0w*Y=aiFk$=plYr(k2FR3$!kZ5CTj3txJTWf;UABiQLFn#L36%R1rOW`Vp*AnN8jaOYQF2CJR8MQ*{Sl~%y9T`ONs)_6G_ z!-ETD%mL!P7Rk9hJL!ZdX=Jj0Kuz{)u}nJtnk8~?k)jEmVB=tp!^n(Qii~z2yPHCC zhwWYN5z`q@GLgFVqdXqh-|Hv26fGfTg?vWbU%WPP4X0PYLeRh7xC3x%cs;+ItZ5=B z$Ojh48Vg$`WAKq>tdfPmP8qsW5k#FTK>@7amV9{}@#79Gw?_U3abLfN*oMtm>nd>_ z*2x$LVujXwj&RIm*hB^=9Ln1Dkifb39HN3%(&bS& z{oZu>udEAYiFtE?YuM+f@l!v`q7%L>ONjwprNplw=zkpqx5t%L;B>2UP#z~hNH35t z%IOrq-en8V#%x2jS>Pdg7|u8Kki1&x9s48fOoziBEg&U2M-&GbWZtuezsY3M1|E@b zW#zZB5VZt<@dY>@Umb%>E$*m%N@%CZWwB%OU*ez9qgwGesYlyS$N{ud!6)Sik-q3V z9djDUd;UnSGA#L&yx&;}Z*^L(Mq?J7kxSFpncw9Gw1<&rNnK&V=i~=Y|Ly1HWa>2k zf=pgLcK@P$OrS-ub6ecJE8@8pZNMeK?U~A2n{BrWPSdj>UQN8R+BV@3>kRKYmwsqo8^2%Ug(Yr~i>J z6L~j0l+Oz=(6)3yux*dzZ8&3}$D#~|lLEmc&0(@qYh9dIGf zh*8~_GCF2i-B+@Z1yB~; zc{wTLfHiq7>e6K$Q!;`zcq7^{ETbiyQw)^sk5DwW{i7Vjzj!MzAW}Vfmnn~8KgiKu zdON<)#@z;xIP-L?Du zl)XsO(b*I-6pHyPWO6?ASA?iH2(9&C4&hjg6g1uvVkN&e!`Li;C6JX4R62@_c5*nW z`=LMueJOlLkTTzcHePcG6nM4~JDpv*CDLbPCc?Kv6w>!j=TI=H%Fcu;=&a!z!W1{S zz9XkXuH!Yil)rIhN#TmiS-F+J@Gl8@6v4_WH&+6)9dT%pSJ{CZ5tI*zo^?It9H*x% z8GupTAm@!prL(6S`a72vfPH{v$Fr@`%0^*9v15SWmK0D-HYdL#8b}F4;daEKDW51e zg;A0Zaw%|B+NVmo*fg9*iPZyE4jT5uMn{K$xI% zis%mtngV}yps@4h6o#AKzr50yu+6BTkhhTEtEkwX`D1Oc#c^bT%1Q=~w5q^~6c&Zo z9Cm_C&?`a{g$S{&b2SCcI9{!~lIQ{8LSn18mE8_btZySlaQ~EJWJtCGP|1xI z%vXijX!~jyV~uG^BZFWrjE(`fVL>bHf61vfjlEi;ej-hr!0o%$0*R>7sluc6Sn6 z36#=RA@9(st_nI#SDoml(D^yt-Mzoq-5$yt5dcOR5q%_Z`<}|VtX5<>vLc~_$+~^* zis7hUib0Tz^i~?t*YG|dbCI=g^i^hy^iTN$HWAXT$=lXofN~Nkl=mCukg%E2$3O^V z8>mpK*`xYD}zD0vA7WADm0hcoWJLNcn{A#q~#u;~wQG~}spj-6~hm$f| zF?o;gl?0l2_c#ST`F!elr4s$=$Pc6w@F^1%((l>AiHhhLOdkxO8cl(vqOG}nk}?RV z51*`9;vOZw&lkm^CtVP%?^N+xDDU_@Bj%<;YTk@#%1>FBTpnLT$V(zwO1zze4VD0Y_8ML1b7<1V;aqUHhehm({KBB#{P z556R)>BVeiEY33A=T293j)Ku2mTj)`FE&ZZ$`cU*xZ_;VpD;S6{1pRjMVLg&mCcmdTA7bwR?;FyYoZE*{ggSfia3zdqV)s0m$QTS|>6NyWJ%#_iKl^KX} z&=N)Pu$0I2RfJh~sX`XOqov9l?EKF%SB#xX@r+{dj1IITcsj`bUG5HB`=cVbD9h6Y zxOAmM=TT+|n|cZ^i~~Q3k_L9;BIude%Xyc?9)1h)hkYxQ?E=X%K7|A*=tLqgewFeL zF|58?$@<&}tf#`zuhJT2he)}^H_?$SVy$?j%99Tj9x@s%`#R+hBS(2u#`<4jkw>BB~xxq6mw`bVZ2d zu&4165HJ4ORi@aYUlfWZPC2NYM#8o~T95(xQ6gd12+bWAcrVPO)>^kOAs>(CGd_Epm=3$2gCzPeMj>@Op3%2}e<-Nck z!H2;d>Uc&GylOC=lj_pxG;DC^-xbl$PHG0hZ161VtjQk=MT1}cp&S*Uj{Q6o4(eGL z{`{=6L}V#6@|-q)@EqJ#!niZ}O&Z5*UQj65&SqRxFl55|UQ)!DDe+75N3wob;j-{u zR>W6GQe#5EWM8IRfvj6v&QO+oMcE|ImY5B+kgJ)@vGE!l1EIsyt{`vv-%!L{ncz#n zb-1{0HsNTd_~0H_@|QfeWJoLT7qDOSovEGlB=R)V;F4Wmzv!5s_St(HggL(kRVBMZ7LOi+x zrNv;|FKt6}uonL+_vnKRh*#cKs!@9foUQ9lFh@$t8lF*-&JSw~xwFu?=0UPTSnFDmk!q@# zx{>v^w(5E@d;6(kfS>|HeSt_uM+Mxc;$`7j)_a99<1Ou_%)~w;DDmrp_l>%xK zk><>2YD@YmQb=`OnKufn;`1ArpgoBAO+{6T5+)W?$!pZ0xQfOA&s##JfH2!wQl)tJ z%or7;a;g}ePag^_+Nmm# z$9W^giZ0V^wy3;1Nf0>E+kkbjQ_Bjfo7P^@Wu*HR)e9o2oX3LH`|u`sSQFFTv{?Jf z>PmA1bp_{z zAp&Q08mgp1-fc((N%&49YW?y6RNp?1P)xY<%IKztqZr7P)J)mFs*tYmAIG_ibbREqq+X`^1noxar8 z6?q5RsaZX1YAj1xoQVu_$cIgN3bBp}kaRV!gSsh;)vd3t8*=JXswPbXR)JPAs+FaI>)>AcOWsYk0$xU7L8Fe95nct zvFc(P95v464r9D}1KaM6S4UwR?>RwjLA}x^st>Vo^CWe-7ajB_#*BxPG+~PRKqS(c z?|_k=Hoju2%f72lOj8N|>FKH)yvR0FZR5^4%Vi@LHCrWrV4#mMTlLhZdgsOf8^Zr| zu8S-mnXCpA+OwDoV)Q)qmSs28tMX=byk}5sC2*`BI01)d#k`2Y?24`Xvw+uu{>=X~J&>JV ztOm2)75r_sAx)*Y%;c@=XoBXqU0vycmXYf21;54J8;7^tsb2A}2wxcBin{KG^&+?O zJ?awrYPCLU6Y{fA14b9~xa^%DKq{5{F~~h|P*_Ih zDx&{V4KlPNR4RoIxAuUJE5G<4Q-}6@ zq`D#9)sNMM9zr-3P-x_yBfv4EpQ?jAJz|65fgn=;vuElzM5=|)fue|N^%v?k`g--! z)lAuj*Xk?8boCqe)w0Sm6=aIsAceP+X`vq>1IPE4Rv7FQ`V3s ztg)ie-CtbQP`_unH4USh$-0Kd68orYSzVBhGB6g7Ep4BrZG{YKqJjOOYTHqldz^+@4m*r~vzSKpu?+=FygktQTAc zw&+S8ZL5bZHqUe1pSPn_wm+{n+tcX0Cu5`XX%j?PP{JgVmx$257umoUl}g&`%}6b) zV+nXVBNbl3eWn@gR+M&31U9x3Ack#!Mr&)3J~Q&Wgc|;dcH4u}(<-1uV|U-D8ilU= z6wv+?dtpW)bi#K2RYA@2Pzvo90`pTL4a=vnQH8avVK-n6rv?gJT14B2Sam9@Jr$>M z-E+giDK@T{whDU{FYfZshvFKk*GEfehdkp3oP)6a%orFq;c2$)>}*LbYxD`|m3|nK z0b_w)=;JL`8y?=>h|vx?Gw@Zh+81~f*!wu`zX14?n`)@W#=5zN&PWVwmn*GhbyL8a zoa!e8`o&*bYqq$IhPE9WQI_!L4a;e+f;F?ehCve6p@K%9{9+Zg48$R*k~WBNm{?gO z%j)YYbWB*Us_t3)y4wHji(^>ey0-7Kg4l$)eh?R`t}XSD2i$NWsMow8=!l z!i}`7k#I+|f7U)lT6@VuFS?FK^vU zyCWWiII>WjweW$>wNS!nY6}hhC~SI55~#fQms)cV5uDm5M1)0cz-V96%(PjP-?C{u zTWhU7!Rg&bLk|LP)K;U6a(1Sjd$jkqcg5qT4%!Q($m)*TEgCm7(R0$ER*F-HIu$t_tEAMf=~Loy#BPGd*ht$?|y6=;Nm#*8!gE@n^QiEHyosq{>%CgCSve* zL$t*-$GdMea=-8y!=SLGxXI~nAeahKBsko|H4JF6#Ur$=nTo(X@$Z2XHjLD^2<#Zg zAcrB+`8#-RM``2+OZd)3I%c$n=|DW!825_fO~z`U(_-g;uU+)Oa`F-Q;&EDQ>hXHK zMoz_(KWLO9lQcmivtjr|7t#1hBxrc#WNiWsTRlZXp9)(zm2PP^cA9&y_MT1`IBz{e z(>+wgB)q9JwN&JqszRvyfloHqWGSMa zjjX1Bmb&CSuuS{KLusc3BD=X3&OA@il5t$qF)1HBM2Fr`hV3Vff;9Vo za-~4h3hjmmI4bPe{l}GB){usCPsBjb_l7g^_p3B|+f{zGb`CKJTH_V7PZxv4LNr6y zYUDBEYhA5u(K-!PJ&SX@vCU3pjsxof_3pa^0@>2J(RtbEgPK2! z*`TTHyG>e4och8hx&_(NRQG!AwV9MD)@X~CH3b0HFt&6i%o=I52L38do2QC1pJ^|- zGY_ezL*mE|?XEzlQY?0|^Agg*?cbeR*0>hTvAII#9KY<+rg;Wp`3@Y|A~`yk`F6Wo zSZt4$HG2@i#CFR>qV!&Ei3f~RyNX3!guT%BX&aFae4nee%-Zh?)R70YU&V!u{R<>C z&ORjFdtZ$0l{w$mW)Pb0|Ff&UqAFBK>>7Yhc7|d#SvE?BHc>s<=}rUuEvp4{deewkz5M1eN!y_P2-v zMe>VZ(^g}Li`QHoZufPK!um-!KtMWeeCJKApy#M!O^a-Qy86-XKjD595sC44UT22s z1_vF}J@R?~20<=%!y*?>H`d~|hAt5ndq+cmE|0vcQPLrsb&qz9_q(rU7ln2ydPR&N z8vYGR$i9EHe?2R8%1a?G?9-s2p1k2hO(<~zbWI7%#CH56S4i`nk2Tl7d-sV(k5G8T zzZ!Y|`K)J}`{?V@b4^H41aMA83tIg5FF+4LBCdO>4fUdqt|%l@%h#Ig2fFwM)I*U- zV_$&{f-CHPH#~yHz0)#0E5uAS1XSm}Hj5^_^g-L*4&)CXWU2CrZ5d7$Bo zVw|tJqEmqOt)kZ?u<@GiYFn*zof21hA45;4)>un-mD?(|zME!v>!;uG%z)k{oB@rW zUB~l4eXx2~D2rMTr=X#~J_?!gxW9hTGjeQ+%)MOsz^@bg@Pj{;;0n~qmJSNi&l4W^ zg7r1t#bek5iF7DL@9UwlQwGDOaj5=Cq<`!$;B+1xrjtL5<;kU!ch(Nq$;I$8T>s63 zC&oc=h3evn5T@nPC*hK2<M)eE>;Agavg;RSVaP52ekpCN3iuuj$ppI$`w z`0}x!h5Kyar}A(^7A&S86;=!n=J!ETQqwp%%6NNE-k2*dYf@Zqi@-M&*S}Sf00rap zKVfRB<}*Dh!YPkr|KP!s-N|M!b~>kZt`!d=|QwnQ>yEpJ3ak4sFpFcb(5h+F*jbHgOH2W z(6c^00@jiefvItN&?s`SmNj+EcxFMhbc%qQwTTP(o7%cpCOQQ&oWY=Ryfw13K6fD@ z6!tTewVei4@Wy?v55!qtf38zn!Ogll`Qpyh(KhRJQ z_8!CDnHWE=51cge1QcA#*H~ZSAyi^o(6^-Xj)^Kx%fo%|UK6Lisa z1Z?b-#=wD~^PqviMt`A`lW$aW9b;?|_1DRV7}HXxJ1N_jx<^?X+Z>*YBA^_t^mQKe zoa&0y2k*W2==^Ew5M(FNi!Qmry^y2ZlqhLcs7#M#+5NY4(zamLSjn?bYlt;$sS&JaT z3b6*pseZb}&X0A)%B=5oG7i5Q=SuI2|Ty_1W~bVOA#9-X`gkSa5MR&Cd4ubo6-glsWoW)ID3W z?)5lf*@+I!b6qj4I{|+-7`!QZC@dVxS-gRmIX2FouRjzQm|oC%!0HU#vVcS^U$#*9 zdB~7d0-g0_Cn+Dosj9d0jpuD3uxPcyu4tI?(z2kv7K7OF&lv-cZP-KVt(s%jN5Q?ymDS(i zPHk+|vliL}@JWTD!TGrn@GG-Pzv`igPEibO z!}>T^>SVXs!Y%qr4|sg$gxy+h5B`)z*36xQuTRqz@km200H<6A_Ura@z7Y1`R$cTf zlwo+2Vvoby^lP4JuzHo#$j@)r$=S~v?a&8%r$N6W0>L+v#eRWD(hYVI<+!<9FH6LX z-$VK`FR@qePp2kj9|&*c0KWsC%eo8&x)AKSJvs8R_;l~?Ck_K1!VcT7`G>JyKkFE` zJOc{s3BEXrZ|LUSK{5LrDB3C+vG3G`YCTrOwPY8SEpF4o{+8r9g zHf@0`{Nt}6tlk~bry@g5IqDih;IYs#y2n$Fg90xC98d$&=uh7P7DIdG%^RqM-0q}K zDJ2b0>F)@;24{5F=X>pUxN>lUHfKR6^Xv$vHaJYzeRTL|Y{xmBjP)7k^-|ux=*>jx zbUPE8n+04XnZ=%7)Srn+V(p8d%X+H#=ZtAYUeHgv!nokDVFZs=jO(EB%anYQL}hW-wFJ^E7@{S{>> zXTe#yeoGev+gS6$#iQk>@DA+m>b(AZ$=`Y&g1YCnjzL$x`i}k`{i*Oh*ETA0Uzg}l zCI0bht60Dy>ISIeUp~kb2=gD(%J}d{I#t7AuOE}T$S*$8TX{DD?LeeZmw)xcxUa>Y z>8Us+zwul@N?+?==po*rPQfSS#b+-`O7iKi^h84T>1(1QJN8D;TC*BNNX+`oLvib^ zzEIpzEKcEI!?(QC3)0kA-@AGe3;*aU&M!Zb0x&n-po?#bWKbaUYuO;{rHNvYj$A@D zo(oJ0WiA|h4rVcVOU=l1Yv@L4nlI2aD2;ek3Co~A#o7kN1NbgKgSelS^LJ;;8(@f9 zyjzH(lRq5Oa+`y`VGmZq54nW<2jzE;X#nf|AYU047G(5CPMREKcr=%kJWwPTNB6i3 z<%W8_fOOnF!A92iFF;19P7%eIWj83k!QX`#e|U~IR-eGFb=*qq!9U@F>_#t;L$ksR zN-Z9h(;$B1A95MOb99)%DLjE^hi}bokbjBY&tv?HSl`HNQ1~q)pYg~;Uc9w}s>15K z{~Z?2@ zUoO_Kt`Wi(e_~9>k;OkXzN8JCSis#d7F5vq(=$6>P6(|)A!9O*++4_Tb@4}q4L7D# zzNkU=V&P&&)@lGi8mvx%5Na1U#H+O|nQ+ty6_Qw=62yqSVM(JXVK+R+h@`JYu|}9@ ztyGu-$#*->K;3|)lrpZ1i@?GZI7!(#;ooNw33*Nr0;fj|LOI-ag-*tD{1 z)eJWU|50`0GX3pX4a3b1y;9Q=^+_Fr%z68B!xII- zIuk^bx`ro%qv=Z!ItZN=&t0F5u4n8+gsay#$n@Yd8W^5fDAt>RpOSF+?pE8Nq5Nng zLwHO8SVQdzgln+SCI;H;{ALrw6}%l23`|boC7J?S<8V28HTS18oh`DJq8;;BYBDqF)GoYzW$be z@sZUXYLJ~BIm|tmuZFp@=iYF`<6Xmw53>dXPr^^rRAEsg4KW=Yo{T$hVX=oi%D`wC zUp30`6Xgt)B5065l3o9fmcuuVHYoptT^&Pc@m*t$+=S_c?~R=zX_mz(QOV-~iC@MU z+i+bY#)I$`WJx)E`HH=?3C2O}b$o(R(A&$&Z@^xkO>!@lLX%yYX-qLFrH)sdYIwu3 zDfz<*hfEv8;!md;6wY9|XBaO$*kEKVXbv!1&6!3&?_O5{ws0D;B98C<06$hG$@oJA zf%g!0I=jO!JFBSs`LRy34RQ%fKEvbQOj!pHWuUuTglNiKW1DyFco!kWZx|7h6`5y{ z!#ireQJm=Cbb*nzng?)ka2gz%$4da+!3*6DD82~x7>QhIu`$UzkyGh`!+@65rS3Ar zO~h`O;uRLr8$h!dvD`@Z!hn| zX$`3rY~)&l0t$WC5ts4)>kUfN$f=v%L)&wUk%2Qb zN;B?=XpHRyRoXjlHOQXhe%p-|9_UooVeby00T}0DYUNn8Z2wP#}(5-dyU)32e0=U8#9Sna_Li{?H#1bcsQ7x=?}IAV~~B=V?% zX;UoMF@p;Cd^qOr#=YYPMN7_{FkEN+N#iBbbLT0yDdn`=dD2W4r z6aO%>J|luNlKvOm&Hc|BV(wfyh9N6J*I+Hr864*fI!`w>yK&w?)0dsP;5~9!Y5|9V z(>w<=FBvm%?EFiHn2b@Lk};xQ06|_fhG5i)3Q(CNq=_ERPXA_D$r*;tK3q0B;OLH5 z+_hD^>QTkYLZ{WWe%RoE?WjqCz+;dduaMhqp52%Gd6 zP1#<-|K)i}s_&{RFI{8t`m6srJ&7Uk)ThK7<0lU+^um33V^D_1{I>>$;2OU(HsEf3 zcxPlSp8-5AErjwYC*K>3vAypHQe#=kk93XCF-2huFZ!L7I+)s+`^-cWfsK_+yo*^~ z*`(yIJc@bPgBd;^b%wDVsyPKGOHobq53sK_lhoP@y6L8dH!{qUbXAQu%}v-n)-uU> zd0?3o`dMqcA7A;ID4MzjLTbyOA@@B$xjCFw>$% zTDeRTNcVENB-|5jlDlDHZc~h!mZt*f2y=NJbGf))EOO8$SN5J<}?GwZ8$U<#~hfNiCsO}h4OMw=vGf6H%@s=wwF7w5^Jx*t6Ym~wQ)Mdn&g>(A8XPD_%4nR ztucb7_5HPQReid8ewF~RdyH-8XCZUq$L z2;f}2xliD=z=XN8Q?p_`b?1&)F02~Lrms!c#3gfum?{!XO>dM-RghBlM^)zm~Ym5oR+Ju%S) z1`Exc-{e!80oI;5Q21Z@!kmf3>eJk$fP8!lFO#P)h6x+DG*=2+z@Tsdyjlhgnt%GG znV*D7y;f${YWaZene1v5uh!ah&H1)%OuD=awKezR#CO}8Vjf8a{2>p1s-5W#B&Rq< z1wOVXxx%E5=3~#2uryrWPA0{c+2ll1Oonoc3^-4A__EF>QwIL)D?eAu`p~dIzVeZ2vUF%_f`IndFlAuBVAUU0(ldlN@Jk zXfN|0&#X?xR6eseunCS{)W`JZnnwjg8JVqy&Nugk+r%?`z!fM05HkRfhG*6RtZ9F9 ztGHuhi#ads2AHCeT>%rkaa{IqOw!GcedCIlqXSL!LGw+6%od0iH-?xEMS0FrN&~l- z90Dvk;aiiU66R2o?)@D@&0n15@b8A1pUEOZ3BSO-cY1_5A3O9OX?pBw5F$=$_vz8j znnszV(GUO5Byu6IJ9wvvz}qS2 zF+}FbR1$`K&or}+cQ2h^wr8i3VBJuwEd|MQX@*IGHWo0;yoey~%`$g+m;fJT!a%xv z&&)P!(K>U@F+G+YKK^&6;Bj-!1ka8JwN#_nrev3)`!iSaSD0sJtpNk)yLwyTsea3W zNHymZaarsF^97<;WTCk|5VoG)OARhGO^u5odjeM$y2uo~h0uuC5jJ9stL;+FV)M?0 zhO^Q0%}`ctvDp$yF>f&-j8i;V;_~O2r6zf&c(oJ|99gLXaGiWP4p@?+&u9KY^>oq3E1KFvy<|#xbWt}O+`T;7Y#NmSU zYPs68O)~r>fxW@yfQuVUA!`EqLzw{jDYxyLOgGt~SE?x{JHU@CJ2e6JZg!>2^ewJL zoS9~RKtyJ3r5)gtw`KCozU?Mi5GmXg{O>R+KJ;I=!*o-J&+IhY;i`GeZa82Fal;<> zdKkOc6k;SWJmU$3T^H^%g_E$2PD6cZn}Z#`oEZy z1pbR-n}Z{1uy)AAiYcoeA2PkW>O|aehWx*}`uVkAUEr5~GhGMLog<)F;Dr5-W$xyg zpkp`^BDV>Hu|2pYvEsIaN%F2S%rtmTcdOI(3uy@G}Q)6q-xXMVv@2<*P z;SWoXAq5_2?xam)r!i+%M?yG zo|~n;Y>c_msjuOr)Ole}^++zf2%yno`b$%YSj5FpSi>1OcP9KCxZeb*(N^u1InV!8R#SOfrj|EO5xE%;isgm_yV76HIM$(n_xKKxv|MQLiRjbWj=!`hfu z)?brSc>v%(D^k>zn@&H#rlS$}y2`p341$AZ|uvuz2fN^vaX zekN_Y_*sJOALmvRz=1=uSrox4@9&~jKENWkRmnh0%+muQ?9>v#af5;^)SpWSq@A3DsxFSLM`;Au;4HY6##DMw7wx$ z7@fpb$lTW|8mW*k=~0o@)wP!UIR>7y!S83mpx%ypZ)hF1%o2 ziyRzg5euafe^tcVLP&2YX1TU@qY{?jCI#%V_I2Zu)*0cnLi(FiQwz0%7}t> zZVJ3~NsYAxYXD$jtsD5e!SFTs>NqPIk&7>7VNwGtR@%a=hnZz8%80sN#%d-?5%5?$ zwG09(0GKZ2EL8B>$8wesRf>ZO22mXPkRHIsR&*J8XeDcbh%AfsgBOogt61qGQ>G^a zf8#7+O>zXV>Q$|k4zm1SRm;6@o>sF2Gchg}s}RtAwRv&4P6e+(X^5p@nJ^tJlc7Al!PfP$If0Jf3UV*g{*B z=WAk3B1Bg=wO)D{2E+Bo5?nT1-^?QK%;GOBQm5Fu=9XY40jBs&C}uG1^toHvLfMQS z{uX-%mMaTtVZjdqx3m%k#M!LMKx6E`yd`ZHYw)EzQRP-vLqcw9YYRPk{JS<5X~OJY z+yB9rD%3c0hqNc6@{8@Q@*d`ass!NBS!S8MW=9Z_$j+@gxy;ri(INw$ukUOLzkvoq zg-Q=N@IQ334BobDCa<3C_CGsD1qh%o|GT@@3TNTfzq0z$*XEv<8=;eW0T7WSRDobH zAh@Ep)!x&HbqE~nS((1>$qVjhk^d~9zlAD44;)|##cb6$-{uD{nOl5gq4xnqB#r0q z2SPfSh(hdXr|QgL3*9sP{a|+mtkt*HQzTf!p`I1P?c)64Jnm$dVHP^nd9mSEIZ+hE z(e;Ael1EtN3}`pfiY28ai)dd57v8@ zCD^^d7+pXfby^5JHYCY%!_QM@yHb0&&#FvV?40AdY=Iii&n7t3;OFLA2dLXTW>GHM z^m&%x^8st17fh5o6Lx>ad`oba!`1239sp1#+tV8UZ|VYz)bDZ&>Flr~i#(zTEGr0} z)1JjGwkVM$dWjX}r3(g4aL>9fb!AMhWtNZ&8V7fn^NV{96vKXZx`2E0rYim9mr*r z&=1$U(uu#_;JxM8Qv+U~wA=JQyo=G4-l^_^s=JxA1Xh0w?F6ruX1VU&FSlB*Wjtz| zH43L>@3&h*76Yh)lVP9o?65GV$)D`7#J2)*45}2sd#t^%?@)}T2Vowy$C^W5d@pDx z;)#r23UbmJ!0?^Pu@<>)=D*)Uw<$ld-}1OHfK}iZfFKxdRV5r}{p_kMLw^Cz76g49 zmCQ^B*jSRW!xX62zvz&=g|iM@Z;`Mwe)V2`aU|_w5~vCGo8@MMR6gnzK2*=3aXNV4 z#vQZB^6z)tC3b@o7P`QA_(>4GB4YG=2A$3U{FSEwDss!7)2{ZolHS& z`@?Ojde&v6a_8K?grB#B0z<%vrQnwl9oQ_)@C#vuH=2<1a=}`JkUn0Z>zUuUXo&^4 zV4zd8VDx2+LR%HCSXoQS!!?0b37{RGI9;_C2`hr1N5$%;^GnP#5HR* z(tGH2tF1_nQdGwI;|-UF|JnK9zg(-R?JbMK7v=x9 zD15;>-L^#62TbLNbA<5C9aoY>+_i-CyEv9~7`PHU)w*YG5LZL-6{nGZdf%!;o7d+b zl8UVT1J8b7WrEQUtt}oX7$(Olx<0Z_dK$6NB{p_@?2$+CKHd4Hb8MXb#9AyKCoEoo zZJnQ5Gd)o80Sq>N`md|49{AT1o~MGJV-#=!cKZ35%QT74>E2^S{&S6=*Z)~U06NaC zae(76<=5{c{BB~aa(h6XmUejjqY;PNm*rF6 zxwKyP-qmi{2TRO8jB^Vcd;ms4&)mqW0oL3ib_QY-AlZ~B$BW8#AZ{S9qS!(7)l{|j zd-?NBZt(r59uHA@HQk;^{Vp4J8h)`^mW}6>Pqpo#-l1q|H1)R)RyLbWie^E7yBv*7 z46xDa=81te1#0-vAlr@6PYbs5(p2lR+u{@cIF_&ow&`YwExfM;QbBknf_=zgqlLg$ zh0>I4UYJdn{HUBZ`Ve@hT($JY8p?}?xoxtC%H^@qYU8=`+HNVY zw)t$b-x@^NBWOKGA_+QMA7zv7wkF#C3n9(SZ<84?>JyuEtpT6X;@N-#w&-pxMZYsX z^)s99fd&O_@m&pQWx5`C;%ry%9a_q!;tlM6X<8h=SjMjGx#94!f3odtLN=;GY|LV-+T=k9u4bP= z8fR3q58=m}>b4M~1mT?@ehPJIygdWkV`|vwWn^Yeo9>!pHEkif8po=i0}g``VDZ$l zFW|6EwQb?8ZCq)p&F^&jqYicA8$P!y%GmvWJ)2zh|J1id2XSeNM0{*O8_f1MB<^C% z8rhVVF}ktKE`6HV`w&`*rtUUoO8{;VL|bXnz7g5l&4^$;`U`syk$hfrV0DDCqy=#Y zo7&PwU6hac(w;(X{;lobJy2271`dOb`QeV-kacWhlP=k~txY;D4{mQqdG&Y}DJ}O^J=JD|WHBO?f@(eO!K+-`A#G)|vh6 zF`k7bT!y#ZNR4l!rG{+g02{qse84yMR3h}pfp%RYX8pmo=zL_$Oi1Vlgveo4@mu>> z@#d1wg4%)zmmX?++;8|c9%kO@Y$884%=W~-N;9lDIV-QO@{hyalg1j2w1sLnpvgP$ z+@r<<@tcjZMW=6RUvw&Lo73h*!+nqTS*-VW_6B5|yrW&VvBuc{h-l-3cNm7Kv8!V} z0=YE92k!{?mp|c0zrx4at3)nCsf!)DPqOo}!11<_C;?~8`6+AcaBIAcmMh!*gM0Lo zCb)m;FwqwMW$yd-j+5+Nw1&yHkOc%+2s~s?1U`m(Weg z?=H1nzv;_m?(w>rVvD}+(hTcCMx_8ro-HRd_?jPWGWuD?6}FJ;2|N)0C-8vNz2-`r z6!iBiNp$lAt8B`l=l51;PW@_)E7y0gb>--qb>0&fJrjPlVc~jPsJ#$Z21R7^2G1nXbX?3z&o%oZxlbh$u3L;c$aF6?!7YfZV!5Zu-jq_$t7?Wvqwkbug^T* zVtXC>_@I6C4j6~Z+dsRY!gaBx{yEsvt;Ef|-8Q&Ik!3e;x5XmM;L8q+j^Z#p-ou9Y zklg{xpY3!t7CvBirsgnhkB8{+oV!#=1fRawPNEe?@3&tgQSu$IFN?4$_^=+aHP&wt?=4 zquwO2*B*%y_UX8vquS9jM;;TGbp4E|lL&U)@hGx%-Z~y7MS7JH5#iGh!?f3bp;hwf zC!*@n@aIoP$+6wg;n6`5U&fq?(%9#xqsW%h>P*xtd5zZ29Pxb2*(l-5u=rfm$MQ=G zp~7IpW;Ag+a4P%0kIcr0UVuf&BMms1J3j3qJ$U?|i<$dAYm^)d*6=|CjVg%#LdGeK8zYm5b2MjNT;Db$!r$; zCp?xuxIE!6vHdHG|1EB>Qct5q$iszaQ6;FE@*K_$c4+n@>N^>kX_w&=G{Ti|HvW2; z&35I1Vsf2cMSUgd;>(f+8k?1UO+?6Fy^fO80m1Xr4=CSnHLI*bJ|;?-LRKs-i?WGe zNYAPW2|Fsgg3K5DC%bZ6rhH0P0z=W`_-nX=k_JB%p#;@U5P=PXTrr4AgCe;_`qfKn;=m7=`;X;6c(_a{4&#TQaW;)II}Dcf-^tbGv$ z1p=O@C@cy;?kENuEztx7I{HC%IM-jr6=MJSixLWHQ`x^I1*wIVR>W&pcGc|~%~EK`nrUUA5`D=4o6 zAX^jt>>)mS##L1E)6&*dQo8?VX_#fiM^v3Eij;o?WVNzYYF!U+p+>T1 zbrpOicuYNo^Z}gJSNhVfMKn~T#Fqdmrp|&fpt4^>Wh0_@MI!}e3O1p!LZaiuCW>sn zgMPl>D)#%fsS@xn*i;EZh%y=hTw9wdvR@GdrB@aG{%&YSvo$FSa>l$zb4B)92H4Pl z3Flb;mV*2i@AS5^7T2;uZz1krtEEC2Cs@%|0^VY+l>nRlsIp)E+F$0UcSCj9M{N{T zYOo4zl~=gv3hfkp26=dUWm{mc@%G2gk2}!C#2$2{i;!RHq=XZZ+)P!v5}H%qRU~(C zSPEwCxY8d`(!Gl^N2c(^4G99ar1umut6Y9hP%rPQpd$cV)a^fGqQ~l$u0EQ(D~oXz zZF(pH1pqg)}R-KTu>Q8_rG@5SnqeCj%9d z=r(+)Tn)g4u1we}TY*q+c6pH4zV(BZinJfMhrosGgTp5cRigj1CO-rl*M54KGKktW z9ihmfrm%5gOTg{~?IL-FQHqd}8jMyh;W~?sQAlxfZ;V2|JS)eFMk}^|te^sh?;0o2 zvf|))ao&%7svr-`fBHon7pR) z6vCD|19qp|^x&CH9OHsR_Y7qb0v`5-LXJGozR2A8yk9DX2$cG>lz@DV(bJvM#HwpB zg)AbKXDhOoq6m*3^E@FNuQewV=+<-Lh)CN9(bmA!Q&8-~s}Q>IwEcuhEN?p7iU^VqgLSBVl&MwM!K#5Dk2sqM;5dM&0@o@Y7!@q%h?%%atiK+N!S= zQs(fYE0q!Azg6O{)|?u(XWXc;Fk;uhB;?!2J8=B8qtnz*rcF; z6JN1eSr>SlF~oVyw_-3ByH$CKYmVWH9D-b?JSBTNx=kVF;)3l8YL3~M9SZ6ldFoE3 z3Bj~+m(nZ%6JGBtitQ0sWy!sYoSG3Bz{TNl{QZ4O794~1OINPQCl}(Hg~DOom(4r@gKN|btC*?Sz zWcEQtq);k)7#KJFZ~hU55_$1UN0n9tc!guiF8?EYdW@Jzel$a=6PN(CJUD)xUlbAs zAN(S2+8<9SQerlc3Tr|X*OimvN}ha52{@xdz%pnfd}x=SR!DWz;fxYbr+&;iB^&+v z?1JJE+>3tAWOLSEq@&H&UZVZv(=IEysMWeFikvhEhyW@W(sAKH&11qOR$mm5uXY^( z`MOltJ8bu7(fL{bI!ZPccTFJ?+4=)`E}2{zCZLC2coB2shLRd=F=Ix29G`a+xFDG% zu-g2cTZC}F`nGZ~&|p9dGoCNHt9(j(Q~17M@Gsq`TbiwVAn1AIL*;}F7rB}~_K(p( zy9vv9q0x*;$QqE(CiO-eA z1X78YO2A^fWE7<6OI;2r46psGgjmm4$_4CG@3m4aI0^dS^ndN|{J#pinQZB$k~NEg ze>pOIY*ZGNn9~kf)vNwc3`#c1QB-} zLjbcM{DvUSa%f=Q*HuZ`z@~cYUxD^$kM-O0tszxh0MBx&LUqzBMtw{OO3kHC4-jP7 zd^oDu^^H7g4my{`5hqm2bsVoQ1# zQe_V{s`Q>_0~*E`R`IFjg^H+OP`_P8RT7@p6jSdZcIFjVx64Nh%eIdxp)SKcC{$8C zC)1uN)s9%hq%@;StFkMm2wuh(Pb!8vY*wN=1ZOkKr~!xA0i__i16w*ts_aYvwa0zc z4u1SCNk#64El5^Ty5cj+s-uE{`FSpUl`gMdUVS5o{}pf{Os$~G!9QRS>kDK9|BJLN z%_^yAnc%UN#g6b{RRrC$<5g8sgsrTm2Am=WC{Wc8hxw|yDw`BwOZ+_X_;FwjmE`Qi znyOSQ4D4(=i~u=AvoWW(YV$5{s#5uGc+8d<(BfDvRSHE0$0$Fb8vdrTOnhr?mDC1o zcO6vRZ7WN!tKxgXhSno8<2CB5;*DA7KJ<>)EYKo3Ggvj8<9pUt4Yo`vO4x`$ue+PCNYq&q`tVZw^9o4eb>~bgdI{o^o zv$~glP3)qQrjy@%Po?)Ut(!`k$Yb49bn#=eyQ={UDuzJ=6cH?~hl&CStJzaMi1e+! zPt*yHY^s#&9X79x0G{RRt*${-Wb{^r;-XJqSZv^~!5iLRZCW1)aQvp9N=CcS`>SND z8!$i(2)!8m?Dt?Fe4x(5Da?VYkwqF<1UX}~+Q;%(tji!ZppwTL?AYMV!9*M^a)?S^ zOlO8r~zlEc)%L*|!I=PAS0fR!DKsK?DV5LT?R|61YJ#_@2 zTM4TV+c-*<&CL`o?Kj{jN2_n+cCw;lRoNF0Vr#o-@oD4XU3vRsmE@S_pQr%^GE^=0 z0|H>M2p&FOZ6I%hh@wVVFk8{|1>r8=`Kg*pG?e#qbtL^-I6<|7eJMZ264;PaWwLf= z8R+frSWKCzlFLQ4FV&|=rxj+YQjBMrifA?PN8shs#9?IhnJPv1mk~AC zaiR(HRE3Y8t)8K$tj#<%krpy#zFL@mZCjuUxgcVZNPs5`#p z8x{3{e9E_~&@s;6qM~fU`fsJJ;T^d;Hb_4BY$)5+S@Hv269c2mXgS#N?Zg)Gc{{`@ z;E#6xhrm(fShQP}6+#dR4F(1HJDhLXqb3th?(P-$*Oh(ZmN}R%AYJgCN(SV%->c-S z-sFc&q_)|w3h&eo2h>l4%cxmKgX$4K!O`+Dx1!xaLIUr22p;3W$;TY%7Y@^9!&V(p zui-T|{V4ELfu^VunsySf?9Gnv%zD2E(WbkPsb{gn>Dla zEW6j#sWKtfIPE2{EBDnLek?@5TN^{AvESxDRM`&{b|NPTI{0zib#*pE8+Svc2$Zuo z)QZwpCy7XDY=5dn^xG`YMkA6fzC~{??|oYpM$Aoj)Ln=T-v6E|S2u-0u+S9_a{WHB z*!=1P^@HGCOBw)`U^A#7LlT7km>z7l>#<78(H>7!sRT9n+xZpMp&Q)}#$Q5Ax%rnW z1+4=dXprzH;HUl;cP4}IGbvy_i3+Uyt!Dj@qa7RdkNif$Fj!+9hxy{UDwi|&C-DUv z{F?uzN+tx>=#`rGzjO-C(D~GF#@yFxDsIG(*J_&ogPZ@V?Gc+>`f2oo{~V^t>K7OS zvwGkVufw2ZPK~VEMC^VvtCm8W5uaU?Ybzy{#@7Zrg&Ifetjgl}T5M|$?JIs{JLL-yj#7OM~j-DE&<)G1fDw>18*l1OgQpqG?U^QE$X-HYDwXV@|YiIyK zI7}xKfDGWI^Yer_e!Psgki7lB5l#tm22TAVq;(BWjq(n5#R9ASz731w8=^IlPULWmCPmN# zNMHhi;yHeapC_>zy}ztbZVfL@rsvU~<5WssP58Z8aoX$uJ;Ok^ep&W^3jwtEia{t- zqj*9vOGwb@PSEmcGGCHJ#o4jXn{Q|+4Y08M8X5`st^AstAU26%b#`oCaHMXrVG|;w zSkr>qR{^}EgA_K)Ur3W2zmiyU2DcD=OPBk=6BeIV7#_kWg*7tHtSh1w2<(R+uuUt> zUQ8pIXLm78l9~aNHNS<6{b6jjZ2Xtv8W|$kvl5!*e*`P{Yqw8N1Z-g>LGEP`s@$)X zCOKxn*V9M_D+`My=CUcAc23E+rQVu3qo~)6+a%x#k zPKf{$`1RYN6`BBedU>Eh+-S9;)-tgAeY>(HuxXVvNu>&&)O)~@Ib&k>>}*kGZ9jJI zUPW6O0NO|R@grOn;L4*_=Pt$ z*@6kf;+uxe2Gtg)v}7GkO8X71Fs2(@wWuqA%~KCfpiB(R59LPbe_DMlA@~uED8Dw) zmdS8l-Rmcr0bYu4YN*K!7)(4MH+V*+e3vyFtKCG)#YZ;Qgu13wQ%%l0>957N;E#D5 zP}Hi6)`Vp`E0K}uRfB6~mrmMhgmQGMCMhf+)I*07kl5&Yi>w}-wlOXeYV~MeNK0Uw9sqZbt;WBr zN%e++3L#*d!#7&YiuUhmM1Y;TY7$SK1o@i%WL6!!X{3cH-Cg?&F;TdO);6%%P0#(% z?Op(Tw}uX+o3_a>w40yWr?`xmR>qzJg zutKYrbkw%@)> zcrV&y6-UtFVPPXRlC|!S)R0Bwhev5Wf;2#;eSe%6qu^!eH-@fQR%EOu`L4kmQp~Rf zI!=QO;4O@3Ho9M)NH)DDDF3x`dDtPu5kA)#-f2<9{T{Az?#s#2W@(Qjr7=y0y zVdFLO7vOh3)wat`{ZMY6@p&dL9!=0T20_Psx6QuGnw|Zy5zg)1NpR8n6Q@m~^|Fgo zw11JRFHhA-F>rC3wvdoJYKArxf3fFZXs9IRw`Xcc>En)BT2uO{FuKs$1*VaE#F5#8 zOPMoAJ15f^%39_EIDpIN0y8Dk4TfREM+kYHuaR2d#(Zr6P1A0nCh6&csqqWP`(v@e ze>xr5!d^hG=NHkN&(jxc7YNctOEuY=0*7eE1;~qCe3`gKE-Zsxkl|#$ti~pNt&t?% zXN4wg!|PURB(RQMB`&M>tF_<%*9ep(>ccj2CUHhHPtS})qA1$#6RMpR*+Hi}lcJzelpOTN=&KQX`v=D_XnBLI7CX|5J* zax$brIoB>cCp)%Zi)Fw3pv^?O?y+AZ6Hvzk|G7$i#Uh6xNH@dQ{iKnSWc@*4-LUsh zhyKI(_*LV7J}kJsDMvI?lD9qz*N=p!GUy}*Eg`+<&%|!=VaGI2rg;e0#@ue%+1?E8 zi9CSsLjX+enJn2^wkw*+A0H3C=HLh36Rzy)Cp5{gA8IN4VcqaIyqE8X+q~sT?Mp)Q zy;Fcm+}TcNG7s>^vx1T*oy#Qm^BPIh{ND?~qXFi8{{`A`QTs|hy_-5gh#<~6{*oqn zw*WlNfhhfN{KL!eP9XrtuK;=Augbr{-UruS8YJU?f7jMwiw)N_OVZvZ0T`{ppAF}G za$Q3M5#Mn`BhLc%>ZT?|R41`9S-~e3n{PdkvjfXL0-WiF-KN9Lo8Hmp5iED_2IU<< zGPsxVe)qL^8_$~}K;Xb9u$o@(O*Lo8u%CHX_}uK#4pu-l&hhtI%R zb({(F`R6L27bB?KKhp}bg$k&)+uwj!@AgZrk-wX)!Yd6;SFHGJO-c;{x7RzM;4t_XU($ea(o}q5Js{i=*U;@ z%9RTOqO<9X5zOk@b$s<$sT{hL?Fl-fW|KPB25Rc{k)rb5;X1vp{CI?ZlE`Ugls=z+ z)l>D{0sL;72;Nm0QF;VV)AZWZ?4qu}7ieY`B`Si9gmGc*S;>yTRdgyI1`Nf0cwsVB zJqL@lbUXnp!xES|Wb3m3R8kpKe?ipuP(b5L&%~Z8~-3d7ne}Mczr=|uf{e7ce{rP`c6FM z>+``Fi2Chs=#S~I{CYh7b-aN7NInAT(=x|LHRfW+&d1{3&~veRh4gMX%*H}GiH>s$ z>q0sxQB=n#of*Y+y6w&4dNEo}wGz5QzZ#d+gL#`b!*PN)??_7xD*HbutXHp4I6i>rq30E<@@Exbvws z^(1*;;J%&!9;NUBSgU7QZT2D^z%***~Y@u+sH) zbc$kT1D&M0I}LPVo%S}=1DEsI-=UrrroB1QNdFF(GP|*^2J!tzBrv>9bYdAG8!qiG zE0m(6K8wXPr_StBbJ|>X`7Qk$=@tR$#D%%`ysghc5^4L6j!q*izJ)Fs?~{^99)gx4 zaX|T&`f2QAwi0_1-ddN+y+Y9Uemg#`jlL-`Cj^@3#Yi!BwT&KltH&OJx3T}bFw6C} zx@2MnHH#m6j^BQ7CziIdy)Gs4N=hOfqCdb79fI_>q!k1a;sD=v)b|FULeFUY_;n|J zIWDbfs*ZMFo~LsrmDPJ!CxdJ5F5>9C?xJ6nhnjh{7-(625TMdlZdPM|&TP!>rrW%B zS3MumO3!XO3K*<=cl~diE47C%`Ijd#>l~a89A;2Y{Qx$q_P!vayuEZ(95Ac5E@cOR zje>`Pw13R#Bkq!;eRRP^HtnaA0kOMG%-DjHz>ZBpPIZ#mHx)1e| z1plQ$I%=8N-oZhzG4vezhO?7H^lb?Cw2yRB)V3cgx>X$}e&ijlOZnvBQg{gWNU0IJ zREZt-6$*H;xRE+K$MJ(Bb#gjl@uT$s&!3PRYT1_l7yvlX8Olcwo1sLp^Od8bS^NZD zV?D;`EqtK(zA>4vO!&uQS-iq0x-bLo9H;M>ca>qu4u4$!&3Jtr;jYqWx@_12{9}>A zE0cAo7ST1A!D3J6gq$T4^snXHre+ohmO&`5PY_o^`a~Tyvuw{KA_~qY>jP<`5>qp; z{*-C@ztT{%W`I(^)WovRC%j(PKRVKjI? z9~cmSBepKgyqkwD67O8U#k#N+&s~!F2(4VIQy4Tay-XLLniZBqJ9(Ed5_0q^*rb_X z>*WcKqbu~?NQYBa>IY=76Mq3*Kyy@A^J=SgQZ@0WYjkqm=iS%pxdJ!ufYZ=v`dT2c zE$iqK%UBYM03D;|NT+x04ep~&qaeg`ZL z3ja)&kPBg{zOaKITc$^vtn9Af6}{vgAOpVvFSA=WWV~T%d-xW~o^}OSz}U4=Yj)}$ zeH4OX?A3(|t;fDh)Q?SvTPpwo#@t^y3S45+_j(sv&zv6wolW1b3+eUB0bQy`oRrKk zw4N4LIZJcaDGD->bohzb2-fJJAiWxgfH6ggIvv(K()jz1=m857)~W|6=qca%vyM_V z-*hbVPTiKFccx)-|DrP)4_K9+Up}D=zs#2>1!sNtlz6!>oz}?<|NI#}VD*HEaR`v) z)z9g|&{hAuF057^F6eTMDO^SGIPrY%ue$6qmc&wg4?4_=Sn87Af&l&Ovi>Hm_sA8& zNo~5SUzVu}L+v+S2I_!tbuxPP`&}nRSL!vvLO1(Em)-1ug}MV-576m->2)0y|E$do z{S+cP@ur>_z!21s2l4bSOf&12zR_>R>fhF{;*a8YbSZ2Kwiazf(EK}@Sn$cfQIhY8 z7wn&Vy6o`}y)g@x-;5_c&?!#{Z~8Ek4Ic3buquyBR-u$4k=fX9kM(bG5woA@^#Y54 z0D3qqkY}G6f9VSl_6>jOQY0@V81W0kr{pleL;7!hqKs^as2AUmrT^%uE@j3A&@s>k zdzX7gJPW_{OrJ{I*zbApX{JDXm~7^!mAbHtrFDlryp<4Q=1aN&*|C>8DW;FT(r@Cr zcD&ZR2G+H&CGl?EFf23w&QsBFoQ07)+dW0OO9|TTZ4TK z7m(wtXp8XzSv9sXtMN5rt4%gTax{Vk;}eAK$7eSJW`nVF;qHNN0V-gqp~F6P!VUBn z=0=1;#s!uu()bTGfmV)SDjQ{>5sbZxGKg!sr5JSS@MfAJ#G?+n@kNkAFn<5F1Bl3H z8Yd8w&rIV7I%#`tL-wOjq5ytqFSE)(n|>ig90zqKjdy{x``R^@1PBs6C$L%9M_F^T z`<}4|F*rYDph&{|<}?B>4OE?;t1-qqGVoBG-A~pvIo6P^P7D(QOw47Vikwf*ZTuDN zh`to-@)~$h`HVP2oTjz$hLE2(B^YFUUZ2kxLD(pf-;nb#f~ZjxVpmfO7*bY*BvGs$ z{s%#f<&5Q13L1h<*jC6`N~3isVssDCs~^|T9~L!)mbG+o<5O(QwwIu-Vbe;2n-5$v z|KDhHJXZoj04{oet8eq`rHmrM#gcu<2j zJXW}ZA>~Q{=YVhFq~pSBS2U1S=2j&`@H=xV8zX6~n5ssbz~Zd6z(!)v<<$(dlCVzI zjes7>T%Xx!Pz{3&@*Qd#0aqBP&F&YGACqE4ur0CSDXe&F@Wd}s%OKwAUM&IGj@pJC zy#gD9`5X}nQi4y3o z=^Tj)@Hpw)&5gw}Nnr7J{8sQS<1;+c8{aZI1@@!)iOik+qkMD>yD|=xe%14V#be4l zMpt=2t8yld6=-3Qq;;tU-81Y^OCw<4flBe9UIq0xztYMOQkd1okfI&nIXUl7p9(~Y z+Q*c(#=hVZkHOh0^{$bF)oN#agv;2|&PWVUH$I&>PFhT;4Qu}$cr?Tm43B1=S{oKy z*TJATgPt7?bYEZ)3kchX$&=S)V}$ zdJXVagAL)^K5d9mf-auD9~l7|+gbuoc*am;83H?Gn6ZQ|m|P=_D)g)ENTWFYnlQ>B zKA7JgZPcU@OO7?J$}lzW0jq-%LG2P7?XdetAmY2@$3`0N=F^Xj-|@%APYklFUKnR= z3E&437C^nB5?&5Aev*-spZ(P66=;E#=2IrX9D_eM)+6YJCK$3qXA+cy_v?9Kvv(&N zJ8<5(Nrue9e;JP1W!Sh$hRs_{HY(7%rcW`_<#nZQ2272dDyAzr%{U$a3bGl1vZpkd zJxa|mNNsdxhOrl?o%4l(id!~yrg2p|hvj^cE$s_f%F-{5_41U*cVvmjPoK;(D3G9J zTHx-)`~`VgjcGZuvxjrcY^*FJPKCc>#%7ts%aPP}Wf@HNP1~5lJZi2npM0ZN%{Ryz zFnxhhkT9@)p+Wq1??nb_Slcc(k_2{^7^H@3v(zBHSmCdX$pL)$W#&0dHZ2GR%3lb@ z(ytBD3w2mw$U25{sJ+8RAFLFl(tj0Dos2xnVt~ys6tCnm(0G|g;Jmk6W9&iH=U!__ zK`uUB_~s<+)OanZNSbWSp|OhVjH%fE&^obId)JG#P2FI04$O;+y~S7Ipr6^ABZ2Mn zpSg>5V{P7clOc>9eK#8-j->RrhU~`-AfWREf`GpJSeYqyt8oEAc(&D$GM7MmOooH) zTONq9*q-&^OH*o_u|y^qEMHHpHpFz|?{3fJwz}^y(6q$c?KH?T!FKL4Q0>g8?FP0y zfL2OI`5KUO^Oq=({kjL-v*nuy@+a_&y~cY;5WIZ4@ljy=2Q&v?0)*v2HZSzW&}{7G zcgAFYeSFgQ1{q4&vmXMCJ!}pXb-{i-{{cfz(gRBBijX4#2kqvI?v1WEk*v?8P)@e- z73_JbpNz$Uh4@v(*z_H+QD0XB*As9#Ae+j$gND$jH9HKHi)g=e#E{}tV7hineA>^% zH}GG7&V;%_hH*YH4~mY2`Qyec9Pa+{;AQ(Ll~5AF!cPPdns^3YV?bymyD8WWvQnPbg*N^&lrdC)AKXN75@jnc-Ba#4Owy?o*n!z?pI?l{hEEz z2)bU5?UlJn-A2b0WW`5DM}kwmSByw~m<%+Qs z+YGsCNTnjcXxS4=S*NB0?g#&7tdZ%*Pqsk&a=^*ao2?m{FOnVl-3T}ijcF~moBwgm zAg3GN`MU94kX%t1^s&!d-V`@DpK;45NBer{wh?fio-qI*Bij5TrVvx^3LfLmT|+Lo z1FFu{Op5Dz+>2$6?;EJ&;8h>|_tapyF&wt+Z+UaGX%C6sS>8v+GsIEMV}q$uV@gB-vLy%r*z@~<%#ThE$iqEU&D4Ksz< zJ1vVTq^})W&5vpH>e*nwO>FK+&`*$%fV4A{pVwz?4z#imUr-Y|*tzVn8O z&&P^``Necc3J6THf+lI$`V}(C5Xz1hHc79utB4sLxVrrs^l8ORWGMOhVz60AC*4aB zDp~uICOImklrmT2j=m~omZrs)PBeu~(z%Qoa4N=R3uZ+#f|V$3hBMGltE}H^zhcf2 zLrLpn+U!9#a8^5-WVXc#izb`0+NZq8w^I;$w=8Rt!c8q_lCGZRE^nf?ltot%IJsHD zB%RBiie~n}Dr+8tgSHQbTJd)!LKy$2vKbqs3{)xl&3qr*PZ6$TRRv+ruV$_x+%&8~ z$Y+IXn)2HKWy$^eC^$mdH_d?KIwoi^YndcP9jRrKB6&q^^CV6+s*V`9eOZm40R%$jw&vgf2$-J1hXA~pP4Q}^b}%ne zhZ>#CfLA?arCICe^YQoCYZm?nn;Z>n#l}?gn0)#~q8-24@?5!cvV)!JRIw%RnrKF0 zW4f5v5%`|(nSmz7SaZ0dSzseH?52xhXq4Rv>r2 zsgq!$4O4Qw-Gbeo_f&K*DdM$tFp16{na1x6BGCZ{bj1 z){E(oHjQ2fc4wL?N5WJfkqcX*NwUe8VIV@yFux7p@zEq;Q>OWV-$(~7vY&R7WehW- zdH*lWT(mz^XPRFJ(9qd|DEQP_^zgEhX(qXvflwFFf?ds@7jg&AHsv%LVCahRpt=!= z!yLq6QWElKbIqSG(~ZjRtT1J*1lzPG2Dku!I(rqp zbL^*8CUN;|R+|njCw+}6^X1G>Gr^%>Bf@aW^=9V)hQq$i9J$-aS-X?N=jo3jKEoUa z8nTVc;D&m8qq#A#n^;a6kpqGGK?ilrJAohfZ#G-e%yHkEb?H}+EpQ13h9hyw$FCr2cZB8_6zwPZvJl@q@rL)C4wBPUBY(n0atC7WNZ_ zNWyjef5wEglW-b~A2iQO|FW_5fMiP_Fmv#-hs@Cg2|t|qEEGK|s3qoSlSGfGWAN(w z@UkTt<|TQou%<8;dW>y2E)LPiU&LANal$0cWy6!^Ra|e$Q)YDcqgt_Ch6NEqR(`21$f``sKVQJF|&fge$^eByWUrZm3> zY#xr-_YYGxL_&=JX3!X5r|WxiPvP-5OrbnYxoQ55of_N?xI%rOj)~<_8jO08^7}|9L(#Ls$Y+3cS%>n$9sX%?#;ZSC5u7HLO@WwT`TGHVe${V)p3 zO}ttTD}?}=5pLC{&SxVmyxH0ANGk(zKRwEltyVxO5D3hsDHd9iSsT?t6)LNtS){Rv z(JkB@{*P`6Jz1)0eNJ=Tu`D^^V-lv9@B)u?}3q;oL+~7lvtGk`Y!mEKF$!iJTzCyf3nqb~J z!6FHe-_K{&rw$eKTlg5U+y!Wn>}3H9xqWuHpheHyjzX4H+X1Yb$q-dKrlA$VuNSt2 zv&xGinLrdSW}%e2wYZfOT>bZu!YH-870w~yOPe57pr4)pl|dzqx7ecZqalE})PMF1 zZ*pw*PH9U@!34O+z*_t`D|@ud@_NAct*DJ`bOZSKh&_0UF2hHT73h}P_)8U z`D#%scDa^CiuT2|EvYUF0E==JHeX&x9Fu-^EmSS>_Vp~`dC{Z3^#rM~V*~3c{%GA$ z{L{3NXkEE6EHQAwp|1muKB$RBN}l(dTH<D=SBq|D7QjBKr5h>w+_&di4D^)>R~frfsdV5;V{jLyoZR)^>sn7Pq%7Y4elW zfG2SEK&wc0y@MF+P)AEnCEySC+|Tsq(-bltlMh23iyf(S?#3zv*eAEu2+--$MN~kL+cUHjqv2ZAm2`eAN1)3qp`%ygHioF9XM{OkZnva0m87 zZd+^y*_Dd(ru{707l6_f{DWgQc4>K_e3TK6N7-&gS1t9Gu zh#%1E%K#Yo?vxs2Wd#2B3nlyQMJn?39gTdf#u!*isSm6uHg>SpRNj=%V`I_W$p0M- zxRD1#<=(>yR`|?N`)GFLBWnYmg;7H-QZ95DW|8YrgW(oAcC9!+f{ab<;z$d%dF-cA z)@$r`aJ2P`evA=M+4`~KpY*_n_Me8 zYUZ|&^T87k!TK+^G*)bxwO=N+#L5sd=J#N4EVn2M>h^L=N)X~Ny}R$R0IfJA2AdYR zto$?*JY%I*3;|@XR|&d#vDzXVz`Zq=oJ|9+i#@Or&9=g{XplX!1nP9oUuTi^ar*j9 z?&9SJ>n$3!`6i2ercyQoA0{6O^78XX<0rncx>1KJTP(>@4_4tnUL2Y=B}^{n0;jCm zb_*F^)^LY-NXqX75CXH%Gquy7WtSx^2vzq0ts_aE-D?dA_CT+`ROrFR-N@2}9ZR=} zM_%%s6-B+)e{Ts(w!;5!>(_5~vu5>9$}m4ijwb=n*;re9zI$(^2!7g$f~7D#Mc8 zQNfe;T_7KSU|#UJ6&si}u>&aWan^yqSg1v2O-~S}d4rSIenNqD+LE1ez>5)6Lip?6 zZ)B~>lFwR_+z$1*FdKy5;JTAFhE+XhO~G62=sD{={#bq9k~GN4ke|WN&zEuwj>3Tp zftOC?g+Nfh`87CM*fT%%gx}GRAWXYt{e>I;>=HbJI9avrYSEe=w55J6imJ~_| zK?-995is=T%b0AbJpKWUhLE&=Xk7@dv=x{-N*^+_vp=%i1|RsyA{!&W|JWjHA$$46 zLcar+@uy&ucKl^6CZu$DD)=(i;~xtRAiVl>;Nzs5ZD!b4aqK~u9l`Rxf=71r3u_L7 zlk24r)$YF(4BwqsmW^!Qmo~nRv+mgEu<4IsHi>s@v)E{2WJ9ysbfxvmX3Lp2fxs~5 z_rowdoPCwuCiPyg95yNAnugn@3HY%Qwotmyj${7G4e&q)~$+H7IEfDT?$gX`iWRuXzdPdvyhPI8NAG}ely&2cHHMgBL zi@Z(g2f(mb0FYKLuZ?UyFCAwK?!0fjE$p-B5^S`D^7MT68}bO0`vHcK0ucTEI1GvN zk%e#y+c|mRf_6DVcjrPjJrev-VLOo!|GJ3S*@s1K(j)Pr#ceWX^YtZc5<>Wnk~S$- zc}6LFiF^?!`eF}XkZ6-?fxjqY2iQwMm0zr3c(R?21XjJQP25-YayIf~yheFj&eZ_x zz*po#1snN0zN4Zo+m=CE*bn#Y-AcCPw3j@y#&7ZLRb`u$`a7!Fq}7{W)t1}?VdsC0 zBmYR&yBwUxjB2n%X^+_PL%@~jHS85gUE6BdhXM_nR|h&=|E7&bgF+H`OeF?|uSKn?z&Gt5cRU<|c8`+X{m<+|U8)u12YhlB!*w`)}n78wg$aw!7 zo7F^|flf_rQgu~tCQfm#6dN@->`sa;a|D!(0sCiv%btKh&3Ma}U38N%{Q@=umxEYV z^&OjG%QNrTjbs9Vn%AHlLs(n1gkyp$n$pUag&N3+&^RJ5YG3)1*0zw$Hnp*d`}(LY zp@+3;XG?xY$&`e_><7z*?D#EMr60i;XkTMHGOdG6TGu%pY*It@?nu292A z6aUnxbMOF{Ax}3PxImknx!BL|iY4~wB5o}#Yc->$Z#v`mJw=n%aMoxw8O38GhT zFOSpM)NVFDLp)D+JA?4>u!l`*g?l~i2-@~%@7sguSO4C&?EeS*o_-GAYXk}d?(a8( z1WZHgg;bU&C8xu#w6%4%uD>0}Iz&T+Si6**8smNK5;EapLIfBi0J0zQN@MdJ{cQ@+ zV7&*}|Kg7I{lJ#&WAJn?hS2GL12Zpy;UC(gXi+Z*{by)Uuf?%DgY9`Z)`TJUUZj>r zAKCBHS~m{0gJ%XA>$UUVvva?i1MmL8I+eIDWzy zn@q`3W9hBp560Trf@Fzy6zE9TvN_Hs&D+1@1aaIOZ<9yFtxxGf;-is5r?QZQ_t zXSbk!t>@dj5r5GO=yKpU7ud(}8{e_Wu0b+J^~LoLXzomB0D91qe+`*V*Xc&D*TEtJ2_e zHV{#2{{Y* zz*rJRi);e8&1iaY_StC8XEXNMDDJR{={9-hq<&`y#6Hjy`&n+VHwH5Q{k=UgFg`|q zVvBLr-Gc1g5B6Hz_Rsf=B~Lsc&ce_iZAl9av2uR)0PLGq!;NK7KaSjb>L0Wvx7%b& zApk8SSk7kdaDMfWU4%ADJ3_eLdK6wvr1hge+aClF>Q}Dky)x_sYBBA&pj#Go!j_5} zC#Ri-v-9v2oSkeZ?Va*c@fOB!b?dlL^dlvg#=KMZ23+osr-F;?-yMoCWAi7c?e7q@ zZD%r{1rWpF<{?yO-$6;CnCI zWIp6!S8bscY4w{uF@T5C8ieCL`~$G)U9-ux@5(h>N_7G9=0G3rKkStV-n{EJ87uhW z8<|(mwwpE?SQgz1+|A(U;Jf*b`3(>_>$d$3qNdRuB6Svb*Cx^NOk~JSbqRGPl$hW+*LpV75`8DyOY~8;$iuAKScTgl^!@``vvk8d<$iB-)XK`pp z8)kJRhYFYlLpmE}bC$~l%`n+o?(9xFF7HZqN2nKTggb(NXcXbdc}hVuTNa4uXrx1L z)6^&jb)jsS;>gS~OJ5B3`XiCx!R7m%@Xe~zo3NLlJHoUz#c(>)q92)#6d?yZ^HM#2 ztL=OhJP3YXwKUra=cgU#bL!mLbMOIUZ9)Q5jdD6c7Cc{$c)uGP80`dv>qN*nz^BJJ zpAvX6xtwq4*RkBrN}6FDQtB4jBa4g#r$V8^0EG zqUqz)LQYQn#jGL@$ze)S=SF}$AvplJrf@b0k!yJv%!O-Ojhq2l=N+u?4-*FWWYYS0I*dzEl)1i zv8;oy8E;h!_rT>M@&hji&YtcFu2(AKI0RfeIhkQIBq=^UYPE7kt*a{cI%6@BXn#0{wH z5Vyka)^j8;vSh%_+3b0_(!ePkm@nZK>_-0<02`zzC0;7BkwdH(PiXA)q1k6NaR$+^ z$Yu^{99GOp5fjgE?#K>kFdtUZ^vC73-gfAMW%b{2P<~+bS~#TADB98y`k14wG7m~( z8=`eyq^%>^sTb{>c{KZ+4$fr!#R_*41gob4mB@53GhrjdNBNW2?(7J@YVx~|a1UA8 z1+XhqMDyD~5!m6{drq#vXv8xkj>>d%q!bUZP*knp#}?h4JpnlU{4w~gZV%^3@Eg=T zz$xqW%)E?J-gihS;KzG8r)iz5`#31y^VNMFIm#H6W>3JAJ)?^g!E5(-jNqDH0+WT4 ze>yf95Pf;2M7JP!K@Q2~Gimr20gsIQ{B7$szRuzcSfrjsLOAQ=K#Nrjnjz@d6k& zEnl`qZ2B|@m3X}MbVu+nb7wdK9X|!)V<&WzJ$x6kgv_1k$OaTp)cJAwelx!ROTc(w zW;9XbAed|TNYl(*!yBhLCYw9kvDxZ0=R;g+0t>znVXNVa!rpaeJ8Pt&%aZ34etct& zLuSvza~x8#t~fVW+ycMOb7m8+hAeQzOFw;~Bl)EPbIaA5l~n;nw8FKu>Ejm7qUqp0DnXsM>_|tip z&eV>5bf);+bSFm;Cj+{}g>>XQ@sRZU-boL(z!3ZP`)PN1;sIxAum$LB@-obr{Ou9P zV)qX^Q9SQYP9xf|-Ul67r(6~lF}&{~cuE61gcfG_AUvnnErN43VyqF%7N3A40Rtzyy5`|bI0)wN5pf-3jItB7mqpS2vhUA48fN13col)^;Z9cBZZ{F#pg%br~C}W zS@$H|l=37Af535rj}dI9t=X46ZTor**}u~(hO zGuv(Gyzsiikv?1BaPrY) zBX7dP5!gNSp{fz#LN4mtf`R|%wj=uzCPPLMkUntiEq9$G(zI!pfgy%j`M39+5mMMm za@q21Mi#dK>+-;vg$Q`@z@b>G^oResW@bPT{np38v&jJZzEl42=)6DciL+k*jP6r7 zJ>bnzvO`U1Wq2fS`Ln zA@i6w+;G++-W`NP9F2ELYM!0o%A8&~hVD$*{HuKKCT!m74fhoOD3#wuPL0PGaC;Ga zQw#oQLf^KVRubl0UdX*9(LaU0e0A&2Ps6oXdyS4DRtPP4L-OTx>f%5G3~;76k4m>4sTq4s^Nx)*ST zjjOpqNiu9dumq_M0Dqubye#90qSNss=njcH=vULdfiSdr)0N$+08qcMCpQ1MmW$e6 zRWTHWgP#c40!z}-z-@wA~kFL0@2h&hh6 zzp)!e%?>tk<)}s=eBb0tbB3C^YXXBLZh%)3q5d<)MO_d-*4!mdpWlDW4f_0~JcHC2 z`#J%}>b@f=HE#=-nEcl*h!FVMmacHfywr+Ff?sLv62Hptw{ZiU*(^W8d}G0|C>r?V zb}pJbdG+=#Sz+0N4lda?=5%!Fkz<`)x!^o36qQW~8z3YvRa@%S+2w(K#Rzh22KX4k zkH726<^AA#zvmm}{6)U`o{MG{p4inDf=FsNH=le1mjjzI*aH2eZ=1Wj0qz%r%B#H( zJN`otw`rgwnvywuC2a$1*vlocFrhb59Dm;1tw~#3t*>j+ujc(=yX990Bgseg7soDj zfSVAU351utROM&W2dDhL%9k)@%lTeT_Tme79|E^$Cas+FFI}NF&6(zsV8=@{wpsUN znXSrPm;7$bd9JM3E>HQs{MmT9`S7sFh+MM9PnO_+Jh{NlM&n;t=mwlc0E?f4(yH`) zHwUk^*bS%EHd*4zyf4gE0s{*_0ai2eD7(&F=W%B$&+}CIP?D zgs{e}#S@31}MB4?xais!%IJ~wD=N~~#$U2?y3+adsL!1wNBc`q^C9Fd>)gWH0@ zyuV*?daU=4u53>)PnHS9^ZpNFV%dnF+$D(4_=B!ge=-?D^PjB8NUw?K2AU(paldi0FEsx<9HS&59?Aj@p6hUiG1Hno!LV2=Y;Bu~? zasNabxp-E*SM1I?_bP&Y>^wdGeES8LtTgQWudY-UKDj(bP2f=7e)00L{FhwW#s_Hj zGfiR(%p6kkvO5=tKYZCG8_e!2E-4AuU3H%$Fspyd1ZLasu9R{B_5!QGASMo6bJ3*6 z2K+%R4{LVaMb8ml^+x7_X@1j{6T?D&O+UUIA^PE#*bsi(EfTmJj*o{(HEdPxOQ_>h z{H}PVZ`}nZ0l~EHyFwsd{lF!syJ-&v03#o{y|ER$``9IKiuF(2Eb>lNV3-3LC;9zP z@#@ZP7kcI{qd9;6#}!Jio-f=_Xod$bT{3>$dIjfG+H0tK?uW|Z43K~? z1}tFi=0FRqmx(R9jnSfKt@ak;{xk~n@OI_#S-dX6QPGNxeYR%xF3JZH!o9_Dh3rVA zo?==K4;dOB8Sagtl}wKC1lzSH(tAz+tyR1N!Ko6`zzB}`y6*hGrZHmaR$tRaYB~2J+OStnALxi8^N>M9yxCF){gfxK~%)^i1vBIkQYb) z_0H*?qhIx7yx9S=37ZF(6&^vTsNJ6R&*jl`-ZQrsknKvBBs@XNqLaVm~22PSU;YHoQ)x~?BIOfY}`BR4G(!+cJ~cWb|0&N z0tTy*1~*A~0T0!PY;6ILj?LVH-q64loBBfhr;lP@x3DMYtOD&khH~TkSp+a9)4}mo z;@W22v`~KbPcaX@BG|Fw9=$c&N_b=-WHn0(cypKb0!B-W>5eb!g|jk=o~*g5KyM3v zOe*8;m8ZwZZTwas$xBD1-b(V60FVQ=0FclMz3uqJvYs8J8}LER%Tlj}bT*~4r*csC z>$Lf;D|l0Bi*8l)NJuY zy)6OK#Ahev3%Je;*6`3;%G8=33JdIDO^-Ar>2G=^gD|5J9LGoBxT>|ib%=m_wY|XO zigDY}5zK5E02tT+gf`hx6N)tZTRPHy@r+LqQ2VE6Kv$oPF_)YTSP=R_OH{~ zTPzL>CV^cz&acC)|Kjx_T!GYlXUdsE6Q1dUzuV zrK@^+>*!aTUU0|)Q~BPhxDIaj@ovx{FZ+7BWJfZNt-`{Hy?21|?pCtK^4?Lle z+B?w8MU!3p5a=r~89qR`t{g2wohiG--N9nA<3lnhyY!LQHP{s`9@teM>V@->!#vVl z@yo+Kp#qycGLt43jPjxhifyAaY3$gTOzM0%)|12VK{qiA?q3`oQ{D{y#FGtR6)|rJ zHW)NAPgS<-9jG^Vdz^<{3;%VzCvo1b}~1($%Y3ycxL-Z_!mX3sw`6}E4J zHwlkc(}~_f0{OutPpIeqo$SfAERxxA8)7+pIC#sco{&iIP0PG#VrKm3QhU@6;v->` z=u(TH>D8rKdVcA>N53*=c>#eILbT6nY(f_Ynz_BzcLY<98Uta17k&7=ATf@&Uhx;5+{orda;P(RY#=dJR!j2&z zV}?Pd%h3&DJ^p%SCMm_N_T+SK$raJU;rHUF*LcY^y0*@1OlxVsULdRE2Jhp*-C_>* z!&XlNEreIh(v96O1hpZaUxy&FX4Cwta=*Zhwrd?o#D_L{69R9UA6(w)v=_-f+w7s; zfHnEX3%Hr3e+0wha<*QCdT$pTNO;)b^W3p4(Dhv&>Du{jdRN)-Jz~)#_j*EWw056(9C_96yj6sy zTi<(L7Tk@n1K#KWa+aL-xgnpB{)&%o&T{t$Zbvr5bDx*5#%So#bi!MM%c*!$TtckjDFJc$)1H(oI+@jI=NGQ_7ufZT$8anDJ>%WPAGgoa_0A5S z^CWqvEQE;qX+W^w>GPgc&8sY1vLGUUR%$4M?Z4&bVe_s-{+6P@dTIZA1D7q0nkpRN zfS(aE_M*2QCp~;oyeX?MWg_*+Wlyf{4D+M9>dNnctn1~YquHdZ9;%6W&EKFc4#a<_ z3y>|o=8?L1;vYmJyxn!UasC&HU_bjyO<<|N03LW&$iCA4Gq^GG-1NSXfzC{t2-E(U z&FjeK4*^47-`k!!Gk&PfGRgxxHu#n|H_!>g<#4IBZhMkXT3HMl=c#ux>0;g8%u6EU zp4WqDrSbzWyF@Fne0+m&$c|6IjCpWVOfkOkq4#!RRbyVms!BihNLyR-N#;4|@TVth zPhm)m562<1)r$U{SNhwNgXH}terz~4LCFV`)L|wgJj<=0c}EcQh5qr#G!XSXlNq@B z!Xt_P>`PBLvt4>6-c45HUr*BiL3;YJvGH3{Lu3kJhr&XV%?2RBeEC;)!#;Fx2reC+ zih{o^mXtDl_IgM*^TLAA?Ki$;D4aQFh;$?u z%#dI#s@fsh$H2z`SY#M>80>_$;kb!zNT__Lcp+Km3LP+-0z3F6Jz1l3F_A1XKU66M zlmYF!p&V>e&d?Mbsb+L2Ux1Xt7+e(nD~2LCiwU(2t`c(yIuCbW3Gf{|kU@{DxWfu{_g- z_|P#NY+XV~rA^$GFC+{dhu#RunkGO6265mZ*$Ra2$QMC+X^6lyyTR?%s;rrZ)hHM` zjbq0Y3e}*o+ZP7p;D2L_gc1U1O8-3*zEefT61Nu%3E?86cql*iWKTWf6uaFN;alkh#spx zyX#07?Q12fEhI2AZAdOfYs~lWlU@ci6pIP2pmx=g=PlsH#Fs7r$1i! z2_-9s@crQ1s=!G?7^_ta2~K26^$>DZyk8B#VqhRt%Hcr3QVw9xlA=}Cvmq3+NqrMG z5l4EzR;V=nT2Nb@SXR7l2rYIzu3kv6{8j6R!~k+!0(zQMo0unx)u{nG$SZ|I3hQV> z&{gSBt{m+3(>!r(WGguD9X*HyZvPP+lZH8SnLb$T^X9Z5HvFv+X}eP122{#~`lu5S zDgp!&%saH64lP3y>DTR6p+dn9et;Fk7-(y@V` zyMZ_B4ELXpnH8)9i; z7YU$P&(LT>*t+*a;=PUT9qLd2P3jX80$qiEa8{&M&PvQ4pEd~gZ+!m{nR(g_2q6p0 zntl*MB?XHfC_ddCNJoO5`H(IJwsR02ceZ-4Sje;?A)(XT_)#dUd^8g2!RtR3sQ3C% zAaV&5miV`SH~Sw!+>s04l})6QnDCK(IwFL+F5Z4*NX}ym+pa@E3=T1KROm-SXooQ& zDW@v9Ko*5U%+N}5sR2j4V)S=7tFtLbO}23?+!I&Ehg^0fJx@2pbHXPfva|E{<3c1; zvfksxvF-F}Xc{5>(Ptr904xhD_a8bRGKOxU(*{K4Wn-dqnrz?LPOC=RQ3W^+MY_i1@uBw^pB#E$#<5jatdYMnCDbIiJ!rTp zJp)J{g{Z0PKq&g>daU9LQ6v#YP7fg$#=>U^61X!X^#92E?(nLL=HVxlBqW3+lzVy$ zO794vNl}#Eq)H7c(!2C-p;wVCoq$L$LCPXMf+9UAf^?#Y^eWQfn=`Zde(xUsxzBm- z?#|B6&hE}mTauTyeI1elrpmD~l`}iLG804<8I#h{{^O+nY&V+)!U)oLYjP$D>(0(R zZ92{gO`(arH#c<3uf`6|3!Mm13xnB_TFo07dD+>cV8XdGKQua6%}=R})s`#>Nyc?p zt@$9*=F%k?ys{HSiMsadsswGQNJ5IP=-g)gd$zvYl(_gYR4$lHbJx zrrqFg2|gL~tPe#J0(NSsMu6HK3uX3(rX+PomRxMX9mqPA{#7WBt==3e#LVwQRdB#< zz7L^3j8)ngA}dm{O(Dq`2KHp$Z|FpKf+wtEa}Fu&;o>cZf^+n zoqWeWknbhvEUmiWY}VrE&@X;1soj)c%E!RH?hk;fG)lum~mi#|>h%C8>}$Y{p>e7uUYzukmP6u=%9`g>qA1<{;b`|xE!qaNik)8PtkZ;l|Mq{ z3vHbiXUDzMA<4ktgYx5h08}Jt5)`05?C4aj|i}`=Jyhz}EY) z3*py=2O;^bbC@{1DIy8bJksG|Xo(CEL-4V}TmOYnUCAE(7kcCaWcMD0$T#cOEG5!^4Zxnc zvvU-9(1s@9n8rN^*#o~;z6j+bnx?%J*N=6tLXw*%%(x$&g#9Oeqp7nlD5(G8)54U1 z@B{PaJN5Yk=Rajp?7*f0$t*!u^f@P#O~GT1-_54bjf+KuD>vnFqoNeKq+o=y3u$*X zLP1?3KNhLT!4>6LlMP5bNLZ8)Qn}bs5RIE-l&UkgxDsM9`4xp->JpuujgC_4Agset zN(Ry(HChqwWIJ*yWM$qOqwFIBjfz#o^>j*{BHQ+W5zxSfBl@IUR+ZJe3`)mqFLcuv zO~lOX&SK|cE4G^O-&EO2%u@vT(Q{F)BGD}NTB;VF@@HFoP5N+d%z-n5n!zJ*11%(d1 z6%`e6p?g(Hp<|vGtD?wn0f5Zz=OsvaTOlj?)T&Ax^}e{8BJSMqx=JVd8dXmjM-6f`5bW}*fvCoI zHB#(W;#qV_yS2Q7jX4bR95#ntmVD=L zf2c@7#30eOg+NHG6l$YL!GGl_MFE!mH!DjVtMZ8*#a^{h=J{k}3)+g|O=_39{8@WJ z((xUXE;759#SD}PD}P5t%ESo+#nTE4mv)Zm%7%ZW$if)pFn}y3*JXEf-p z&%>P&YoXF_NDpOsVBXPq=hs-?w5Jk4j#Qr5d~7d;uH&_PXEMd5K1zpR1H1`hgM72y zjx%5M&B4y~QzYk`atw1HV5Q6bmG2StIiD#}fdOLj1FUs&fFi|?fcO#zQAt?VzoDVA zLj%R!b{(XUKSh(luOAchfeWV(QDm(Vrb)2*)S*h)Yh&?`wC%$bRPV6q!v))n9HG>s zRdINv!UB!p=z?b%Qlhf6nWGi7!1MZJ6ybWf@^dAi>h{bim#2K86r`1U@JmGs)AW~; z{|+eB5UC?kge@{w;Ph&&V41Vyl;VU_^aMptm<3YsGgwXlB9bltSgp;bOjM*dprI2= zr0I9^`6Pv+i)v3+S`fs=QxqZIYtxi5gy@3l3fTwQ^OgBNyRp^tmDBQaf>a7%H#rP>m3Aypr1ybf6W%)|lz}vZwNu4J=h~pq z#h*FfE01w8>Km16gi6~@3b~fDu3Ho-nz0;2Ci(8@>wktBv3DrpY<@zv_t;J@WW-)u zm7WCS!VgMmc@Pi>?fa2H(@6I2c4Y-l$?feVL9pFBlt1OU>G-`1DMtK`l4Ekc%SyZp znj3eQLKc;?yOfvM(eiV9=<32RrYUrDV1@Pu<~g}6ya0@#@L{sEk&xB4;XY*%j{ELD zWv0x-%um3;p?)nI%ai@EO<>&@zbFrbqr#vj`;dZ`4tDpDLPnykhm|M6s(wII@<|0= zV>+t*KoC>XLCll~-gl4d`nA}yFg2DPx(Ncvi{r{BxssoU0V`epRqO_PegpPLqGp_+ zqo1AnUC01OPAWQ2ko|I2{IlzvsI%t0IREEdP_D~} zG&z&YM2+8*7@C=sOZx5=r2)~P`c)-E+AbgrVi>SrgKJ6}PG$UcA&~Pz zH-`iM0$zC6*oY^Jls*$`;Bf&pP-13v zpDCo!to>Xe%T?kFMYuc+eyIpO{ft*c|5+ncDO3xVy1NM7|UezeS|lEt)INX6S~vZA5}i|tZW z+zXaZR|7`_Wl}(V(f9vXP2C+}QrzgV2D}+fhw?;2C5;X*WT_ESVo*?)`iT*cP#-yJ zlDy%F%m`QtUNV(}r8RzsGXwkj>-W6*ShWLS4Xge(ycprypmto7ppN!O%1h=~Nol}q zy`g5KRnhQGHA`UI%J@2yD^MT1T6Iw$3%-{F0owTjY9FLqUYq&gKm!Kkg~c5FQbZ*S&-|h)9k$bp5litl#Z_@X8(%`z zf+Np}hsYc32wq8TH*>+F9IR3)6o5M{hwA#okj<)4*Q5r~WJtuSt653i$7RwIuahsJ7aecGh8aRMKjdw|?{JrctO9Kf|&=m%;a z`l``P4f>=cHHOJRD*fJEtsF!MEo4~wZcDWs0U6dxT|i?oTB}mBJUEGdgX?>r$skeW zZKDb~s6<=Xc5p0p+NtD{8P=W_48Pc3{V3Qc>hSh-R3q8Ao1vPdE?@T0%EMwmQ9-E{ z?PO=ylhjo*(Z`$t=7C0ZL`?cf4H&EYzT<&lJqds==nNdO_G4AZmUljZy;bI%nTzX! zJ7Y&!KC?bmF}j=g?5vU+jt%RgN^Z6=4fKepUw>IwRaPR3%nu0cr*0~W=xj!J^`(q` zlX@Ovk4XmO*|9qC)Ww4y>PqDQMLktv?%mT1xL3xNE=>p@eAKO(XY1r(dLNapv&Z_V zaRD|?o$kj2`?$i(s&BHye(JRVK+F#@0SNUoXi!tl zt(K;*jx#gQp{d`f=jgwl$!g62c7DDG7B>$_dYOquJAbw+s|6rOgP(s0YUO1=g|Zap z=jNzn9%cW`RWU|}rO#7Q{B^6@H6qQsD{KLgSF^L%0{4G+L?37I2X+qS30?&d_gxv7z@!mVdRn92*~5O(GXtv_?%2AR9k1!hcE(Oab2m zX3N&9i?K=Fb?TNtO+RfBFScI&COBSv^X6u%x&&L!*btD~Fqg#t??XyIS*|>45~pr~ zO|a=kwP#@3lhR?@{X*8fMPwcpQ!;xLi`%RY#(pMk4l)3Gj6ijCBW6{&Dr>dMGt6&< z@XG!c7SFD;FmP?!s;2tzc>E8qNyasb!i(M0w}~UN&vunmki5`Nbulr`;aw{F&hWI| zDqYT)lcw%KfEUtK;X9)3RX?WsqxPxyWU`_^N8@8KMoc+&`zKX;UjzKVASngI3YjUt zQRm2>?^j6)cl;OiR~aTHpYYpoNLeUMch3*1iNTq}Y^VtP)59wI{_s*qRC3E>6^^Pm ze2w8j_D4$#4+d9Zy9PnHtjDpoIn3Fv-8H6#VG6j z4L3BIC=4T!Q|`d@V<5)eE2SP99p9QDN2vd>#$MTv`D@n zN;9eDj%Y2Yd=8rl{Nh(*V81~Lf%{f&s&B+nP{SDIQno8qh2Q=*x{oU|hmyfbE5#BPx)<`2T%FzM}n!KMv)`iZwY<9Pm9?tp|)#%btq?m?|oGiAuc3fT%@f%^uE+`GtORw@A1BFWQ z658j1ap8RlsztCrOK9r@g=m4o!hIz*RCKV3rGmt7k^)&%=9d+Sv;kNMyeLJ{2h&s!Qt;}xYe*;H3eo}-qZ3BdyRZwlWz&I0@gwhn2#fe zXUuC-wX?M~*)JM$Rrs;RIFwF5!liHMBRwZuvphC0tNy)~o4G5rTa-`DcV%5TK;x3EsEHqZgW9b-lT;l z?hUYT$qG5Ug?RrG9zX1h===P6iZm8T~WIvag+(xH;{`1~#Wd zCJ}ZdX*~#`q919sUK@-5f)4aT?+<`IH7fZNjSikupJ?a=!P7fwQwc)H&e~7(Rk*A6 z27NW|ra1xB7mv(D4CDQF=T-Bwl&&zn*Sc$;APYC{q0w1dx~GPg0A8qPknG9p?4z$y}HGmsRZx!fkLjtX=Zr6dC_ z_Knp@RWM|nR+bQ6KVFli_zI*?#OdEML7OAf6|-gFYDj(<8)B=UdQoi4LqBJzKb40j zYApkuqj?H3Yd%TCP&^hrSqs=f!{!6ML_;!$A{A*NlCm;j(m65rl;4DqZaf6bzS3Yt15GM9CK5e!}k)W*dTM5Gg_a-gYvIKEP z>lFu_lb2`*iB@ElHjL=JVzsu9zIv|(nMg(=tRGB_&$f`tn`HEF3eu7Tk`doYC&c9I?2w0K~!*;^JBNnxINM zcUGH%WbbiKn@pSMvkO`redWr~x>A2b{{*hZdNG$ZIrB$3HluasN_!(NuB-n}ViY^m zJ;q?wuaH>A)qgZOH$6-d>e3M1Pp=B`v(7b5N+k=XgK`j?hn3Ji|LikxP@H^STP6?e zUI(BvtRMdA4RI9kmp8RB@`@FSF;?Fe>^$_2=(XKl?Y^`%LY9H=LG&4RPumyxAK$v} zeqRgdDHd;srPk&FZAJX;e=`rV8V})EkwMJda1ZjZmW50s2mjM@vK$5C^0Bisz>vTG zKW&IlU{>@IT|Id0V<8E!kxzt}F!HImTCoMsG_*GIVb8S=I5X`03ysu2lU@pOaKtNO zxy|kLo-}($!t}SPc1%|N3HFyGn~sV>{y3W+PGw=?dXOTRaW$oy9?1$u=t13xpZ_9V z(<4~QHOOo7_(iA~yX)wA*wRRS95PLb9J>6-Hy9{bW+Pu+&Zb4_begx0*6BjUd*sx` zd9pG_{KvNE($Rv-ro`$fk?>w|y3p6g{@Q}T5MYG#<(v9k;t;Q(F0^K~3h5$fwnt$-7@1hZg$xF9rGS$Ai|8o1 zu;E1oM-48f-;l9FLkGNQKj|U^k1K{`n>>U7W=s?-0aZh zfQq)qHkS+XVZ5KW0*8){$ZJM~awI3}xF-0zL|w@F+biffsgHvd_0VhN^Aq$Tj69Wz zi}xja#W>0nUr8W+h< z*VY^0f-77{Umhf%pBDp1wrQzlF}I#zu~+pnr+$6|y*&-|MMJTIt~JtSBU?pE!?&vi ztakssWlA78v5Ah?0ygG@*OnFdyumB2EkJ>=rA>T@jc=-xA7qVYI_Verl;*meUl=sM zeu50>1T`vrO-o%|et&7D(>cW2wAN4K8cl4Y;~~ndwmNF3*o(G0I&QGL?ZhT=yuF?z zk)u3jykJRfU>Khy=_uE*q8$auh>vtsC-93O>9T8LdB~`+3w(H|f2K#xJiWUiOCOWn zNxlqGgDIcr^AVqFopj0208P+3Q>s7o_0FgIJe;6QpX$OVt#B8euB(pv z6`s~j&q17Vq`TgizH0Q;<#;!+hO7m?_rdecy@0p>cj-arm^KMJ$K*6AU*yc5+&M0u z7wMx5%WIFmx}1EjJnQ(vb~!X6xsiANOec>wwqbzS5f=~CWeF0x!W#v46<#q*XLi02 zgkEghme*sAQ$crd`!@(z*|8y?%HBI1TZmN}qJM_N-7rL#bXY!({j3!T==Y(zq)dlG zJc_UoudC5xA)6AUr!iQcPhlQ%3>Qn_!{I+rA|2;~dE5jn)oVyyfqo4ahTF1kq^$7^4)fk=hd8I$sQN_=SeW4$~qQ_t8 zKl>j%?MwYjn$Fr|^#}A-b-cbfz@x`U!YTk(%gog|ByTk9HBqMXJPfMuYh(a5U(KQ-y(U?&36k0irf)x{l&E8#zOl^u*8*ow%_fI^V4N zTF2WWPnsz(fKW7DdJzR0VeSgV9kOeJ!RcQJ<(ocBpNPF#$vR!J9w);BLz3j0t;^bV zuvyKAkaFx7(rel*b&gIBl!NE$eQ1<7=IN4)8uW{qC{oq|&HNZ8R(yf}`Tq)wW*y-T4=&N=e2L{5X0`B}^MOls;qkHVJ6-lWfB~b6 zA9nNSGF@_i1ha4nc)GaHSRe*QbWUyrIalgz(h}J8z3^YI75axb9o<&wQo426Qc~hU zLA+9MDSNa^KGA(T`v)b|h~%L)`dFHdMQg>rIcS~UlBV_e`plE^k5s)s{nzk&{V07o zoAd$Hlx@}}M?cttc4f}~$r+J4-@PRhq_$OGLXCF)Ky1Y3Y$MiS9k=Tl@+?qz64G(N z4iJ9jNldE(&%$Hj-#c~LMbYQsR&Y~9()Qb}-wnX^Qh)$3|IuvD9vxjNSlu*TQlbI~ zyp$n`276)q8}_44`hRP$UX%t=Z=arqvk?1}j&6ed$WP)N<|X#)?Woq&UtU|5UTKK$ zM$j0YikWNj#n>i30E(hl{rij9RKIAE*t$}0GJ&E>w;TS zQ#QOR#LV73s%OY_oY6$kkwHS8((L~-pfya_<);R~pf&&$sK@p9aA07m7Tm)ZpU~-E z%%A_BDWXN65@g~P|A59=X*#-`t6=&GC zb2=HPxqAVQIvGO8k6=gu0gY6w@+JKziHZ;vz7rS#yEt+gZ~#xHcUa@ruvchxq7_#1 zrXJ7MX6V!WzInAjbrB>o<*&?5bHQcWa{2tfb>XeC{EChWDmMKek|CG(yed@DeXi+3 z88Yd*E*u!Q-q4E^6|dgR+(%#D(hCGe5_TPSs>XMONLS@9@mun}z@80h7~oM191+iU zUniR!>-~V_MAq=!yE5oHTr>QdVD@}=p*1p|#_ zTV7Frn`aw!Wg$Rhr$F%kv;k{Qi7du$#PMzxgUmYDvl?=kJGgQ9sU&b*;E6DR-My;k zX3^n>9c7TbyEfVw zL(9H&j6q&IZZ6{#68&i|gRHUqWvr1%wJO9Lz@m`)GYuC!N4UIGB1TxOF-ICuB z1||IsV_<;TkT}9YPoF(+8l*N^Sis=aS*t>Zoa-9U^n;6%iy7c|xCbs-W)VY*u_(`` zSAk42etFiS2KgDEDr!7LiX1CuNY-EAoh>1%{CjbOxOqYeL-Ox{9{qCyA#N;bNVx-` zEDVf3ScWls(H%glUfCKHEv1UX*RzuFleM%l5V>P`X+u_QmuEHhK++7*IQ=OvvW`jM zQH_yl@4RJ@5E5I?SVd&tQQmkgSMU21K)IA?kgS|q!H|rKfFzzNP$81Vt~pFC z0i_Xa%eEXJviVAm9IWg8JSy8W4P>F+Z$rTkl?~D(^r~V=E)M0{@q-}7Tm;zc>$i;` zWyBx>1uVH~;Sf?;)ks4k)UIZn3NS#&BY=MIn$XP$HH?MQMouXy{4$>Zoy-;0?p;ID z9F?EB;U)qgv9<1dhMb|SJS1B1UGT6AKLHXexiB7F)Q`dF(i<4LnNiEY!-t=(W%MQ@ zH>g7!509;DkeZbZt7ni!w{d-gEEN?SyxtQYJlGRNJ4)7bKm#4vu@I8O&`mp6W3e`{CRUjoMUxc8sx&lPq#8Yq7hYX zZ7h{%r^aPSNE*||_*L!|FJigcz;raPnpI~bo5&h*{v$)u)51!;2l+qX?+A9{V}ovD3qCPq z$0Q)3pF)D&=?T>yb~4V%16s^r)A7rAw$8>x!eB-hV=H~t?`HHN)%orohMdO*;G)+9 zw7n~X#2gXWUGCn2wO@uVZCIG6k3m|2$9;^?h~B;X1xE;pBS0!I1+h>c_ot1VYo8ej zgk9AEMw1|=@S2uB2F8jmcFG`HL+tDzLy9Hx(f1SQLeneGHqJmT z6K^>lHZ^(P(qiD5TI_M)?U)alIUFumf82(|Iiscl4c?t7wzJ0*4M>Lmzw*t!39x0M zOUD#8G>d>%Hh5F`?+KFb&_qc>(R5Cm#LE;udJiq%gRn?NxpK61`B zNcVngw()7O4~)x&*5vzAah@T$9s#*a!Aox=edwL$8&d25991hoSfMedhKJaK-{5GQ zvj+lJM^7^pHgkc|%BK^%y})=u9}5jMBeK(r=pTMM#YiJcELdWE8JMurB_VF~_DW!& zW=oBlMCp0o8RL!jj z7%*uoumpNl>odXPpT5nQj1W3(H}I@tm3D}|v*=FaJ{GyVXj_G6Qw_2tv-x}Icw%kS z0-{M-cD!B!=-nqnH;)b(dHLKQjp{Ul^LsOQz-~VoZ_rp~{2Y+^p#3%2PS@`ji!${W zqaszkd4NdIb{`aC#k50o>aoFxY1GR*9FY^}`6Py22B1aoua6qyzIf}HAv+F%dbg$P z@{-2^RcW6nOFBI$h+s>84IG}3-NU~CVd0m*1-G{u9TXr#Un87%JYfhI_+!5dk(Kp1 zWjv6U5u|!>*|a|l$@Q&#S#;EfzhN1lHpb#~964=B*_c2@)fvW!l{()r;(Q$z7;4V| zZ}{Bb>Z}palwj(I4(ALsdhvSajjBZ8$rp@GfzhLH-K9%Fz5W-)p27GfLvs3nHQE~( z3v2DoFeqS)J^s@`%NsxVmoY2Ah?u|u>PPaKe`g*xTdx?k1Jy8tgAbOKy=tUN)S?Uy zSQffw%)o)Jx@Jgz6`&Hkidm`vz_RPcR2e`MKb=F;4P!=N#OUXZfYHS+0*Nh{Cp-G!N)eAifrSQWn)5N67vp3i*%SV7RM%Ie-XR$2AZ%O|-DjWacks(ZQgC83oU`u}Fi6NY1D?9`4 z3k(vKan-|3IC`HOQXX>HRI~W+g+m!X`NAM4VpjDP?ckdolT2HDahORw&0@2fc)e#& zvYN6C>}POb)xzQR0W-T9xF5_Y8s%^(qZ=t75@CvS=v<`PDTprGv=H6TqD<79Z;3XO zi9~a9nsm4fjWOl-Cd$KB;w$8^VcA#{FD=P&CT+I2;>=%&R9kbKvV|5HCk56nUnM2pGm6woB2#xkq3!4;vifZyEa1r$5c!@H|{8A*5LT?Who^2o0=)E z#kF;_DdD%!FlPl@;Oz;ae`=YM!yN2*2{eI`td?y`(NX1D>0g2CvE5saNmi_9j`_gn zKYq_ONxQ{bCYZQ(S>gQVQRL01`Arh2Z@fW8eCL~{FvsO6XbM}mUdSXp1YcO#JVMy_ zDr(AMuI1kXKRSHHF`WHa%#_}6f_*px5ZqG|ICD!`GnQo(H-A6`7L+hi*}_=Kz=Xgv z6~1B(+iWUjZpN|nC~ca=ACt-iSdUUTlr>3kobi?^?7R!hnPlf>Ys;G%*y)T!Q_AO5 z{w*?DEvgQyf z{r8CDS;hBFDd-b|L|y=~i`6pIu*uz8nM=BT9rFzSRk^MixVJ(UhNm6`WS%y&v!6bM z8T!1QxkpBh-8%q^=D0>cqXG3z@~dPy8=53u{L|13*bbUBg9uQl4o()0OuEvqYApC} zSQ8WPZ_7t~Am(#)QvsQb#@M zoVn6QbTtnW4t2Ym+k)6XSHLXW)0|2*(t4ST0yW0GgrnQ4y0;1`(*;3-ruZ% z|FJ`#nNpThz|D_0r2#(s44zVGkQyGt+V6oxb|`|oNoF)l9B7V0`u{M{lrmev-8vgQ z{fZ;|YtU;PM7bV(+MOJ1q7w|8KP0#|_7uq?AZ#9Lq9%gR8)gQq2O|GN2jH$ZM+ip0 zHo~-Nq*0?x;XGuHHiP0nC42Bm^V=A)7qh}&n55V+z6>5yZ(-yQl5*o$fCi2`=QtBp zwCw3Pv2PxRhf%2P+63Bo*~N*bY%GFpW<8uS04tJZoh;VkrO9G{;&-N)wFyL}X{Kze zfyagXr=p-`4qjopNrE>UHp4_U5pVppNtYJBVWv5sXwZ0;Nj4*%nhZOdEM$1oz-4}v zj|ckG{m0BfIIcdkY00p`W%=ADX#|`Miuf^Y8Wy+bN%Yz#yTwr|cC`sub ztHoiuYK=H^Ca;BERUR>BY}m5_+U#FvF7-*wd#%qrR!60p`2zL*lnWf{)9U2UzBftk zV~sZnhO4^S446sc*T7kWL;G}#Ng5V~o8*U+YpWU1p<>zutc}i5&3~XXkyqSimJc9< zc@wbelI^q*+4vo_Z}W*eVb_$-2XNNu?C+^Q^{(tP|0E7Mw8sqSzaUPr1mxC0xN!fj z#~S=dG6=7_R|tRn)V|D9w(8GjKz#vzcJ&~34BL`vp#)2zGQ~c*YgZBlD;DT zGUeyyU;&`vr_^7th(5V&{)gP$?(a-qoqYvHBhxBlGVJ77e_2dSUbbxvBx>n%)kJMH zD}2p-8ekx_3i)!?0vTc-3VQu*YIuokdKWQ{quO;V|~ zzhfo@$VG{VuCFSmA~K zGllwb*dq`W11&q20&xXf4ul64SoJ4#?P1#>k81vQmf|$6~Fa_{HkSTaxE_c{XM<@Nn-ufaieRmTZv&3pLn!I20D5)^qa) zTW5qrkJ#GRYjZPX1$M*o7<>dZfSDJ@efIxHpO+OW;8^UHVvWFUZIo(l#g9swMT$UA zx5Q)?H7vRl@NT9RFuB3K-#__$6!`C!m74~9-L@jL$fU*83|Q?=&-#z5+4-#)`YQ2; zHIBZvzG>ydFP2`wB8Tza1v4=@P{@*BJ1P$Zgp_tff-FTWyjJtGMP920mLL&c`g?IJ z#0wPzLLsM?EN%%kR-Y0ya@Mk>MMkmer7Ur^YgF1ItykqTmK+2E7=-!RR!5fv3Jff3 z2~WngZ&||Y@lHAGZP8Vt6>wz)?<4;OcE2tAvqF&FF*gF1ovdg{uK+`*cv*tNNS5uB ztoazeCX@e@tnjQ-7Wgkc(TZbvDqBhNB*fSCW4Qg^mQ}W-WR?ICb#{IsA6q4p;M3o> zWWR8zhwkPG1b37d>%wxdHq|V=f$_NN*4OeD1c3c#IuO-=(qOLK#IWrAX$`9ZQe}DF zcP%1MgPOntGQNIdhUE7xyi~ID?~9eVyOxC)H@>5`)hf`UMnzZ<)$3Y6N_z{;k$-E0 z|3kcHJ(5x%DYEo!$aCMjn3YQy_IhwFp*j2fWMmEDf?o zR@5|u#f`S|f(N426T44qWvw9?eOguGFt7Yh}eyj54LTL3%E#DG;FcC&WlxOjJq^eJpd4@-J#0(cb@1!4Ub ze^?#Z6`%Lm{L$CoJhI895WbiDL%bpbkKjj-EEgl#dUhuHm`*F6yZjQ20mgfsb zXP%;q$I!vXW_)f1Y{&5v1OjZ+7uGjE-C4aaExa5u_bcl$&V(`6s!ZJX;W(leYdqfC zg|*`+SQ#>-VIqgvDX>|+InmmL0M1Rcg3dRX#{p~Qo@_}8Mu6BuBU}z65}pF>r&@!F zl&7azgXD>YAnt8&dBEX+F~i!1-BthES`@5?ZVgzi=82fxZ1g(`*;wkkp&Y#QH?Z+z zvnsQ!+4OZP+3H1KwP#yG&(wJii3z;zT&oxrPMT+Z_F6x!Al1$}i;mzOz=*K>9AXke-QgSU%braV>h7V9n3qZm z?p%rF;((1Hjly;rAm)GY%Xrhh))zDdr}x2e8<;e7Zt&~Pe6M%|cIjuLFF(E?_*|}v zT1tf2?|{{oARa$x3FAt)!{YR*d&D|~^PnEJWRIXky6qvtHIIp1HYPo=gD0|kr$Lj1 z9hE&Uq-dV{tF@ZCY<~jCi-hj{yZB;#P7?34MyD+K(jrnhAT&4+gsyGxkhD|yx;he_+4Rg}7`ci!qxUuhStH|Xo?MQbm9v2__iX7kfI(3JjuF7z>* zzaQRdtoD}>a7$daY1hS&M%)l$0kdvdC*?_I`0g+^EO6T*)6V1DRtC=KxjWYHf$Ct7 zvMEW^(#Mv;pWn5Db_+}aaVgpchpb^?d6?;d0lLo)E5yAuwiJ81NP zPD@tfUvVWV^bmwInX_kvL9`hH4A1Grvg--qQEc^pB#g48M;03GScAvbQG{tf5&MGk z)Vd@?N*kaFNagltsly=Or|_`e{oFFylz&5IlE+!O;Y}N>A3 zDEK+b5v>+41;yiES*X&O6=joPm@~|Fh+Rr#v1P#pGB!N*Whb9df9F*~tW9YMqG|bY zKAl~1Y;)EkJ3CvK)ovz_024@Hn*tXTnzJ1ZAwg@70l5{T@SbdTsx)8FiGL5_?)~{xJ`Z&yhnuHh!}fUq}__Xv?zNXeer0!jm(GuZ$KD0fWL&9d@sf(aj8l! z`&6(RW~;?+K@vg#oh|XU(5!p8?HklVY+hUF*u8wVlO=#U-ue(mf5j$+PchXdNw=70 ze@HOK>$bRp7d7qT^j{mx=0S|`(R&{nf6uW$qk21BTNr7Q66_K9AG?&_Mk5mc;|+Uq zfDLc8Xp_Y?99T>Y}zVf<7u{7od7>30s6JbSY_*VU!Ii zWy|I#;4J_Bdbc<*#*)%DUD?}}u}PqSA8h;H($a=0##&4YDqWJ~E=%2SpJ z1lXdny;Gh6OfvDR8PMhZCN_E0KW}1_qUzoUwk%lq872_UzfJAH?l-0uq&8@7%K?%V zFpL;mywSpz@`8c0bOMC9`xFRoX`}I+?P_V0sw}0IExiK?N}@#x4)f9E-+yQyBHE8` zW0P-eowoKn!~s*=*|DU5PU&DjqW|W01eOet4ZYa?zAxX1Ercm>yK*oax;JAzmXc)0 zupS@VLvX{t`mr5w49sYbBL#ii-ne$Gdkj44Ftn3R;$59jZMqq=Bc1KQZ6mE!K8GFb zLPO+hy4pdDA*QEj+#j$i*WJD?Pm}i#Fuq^LTlBEyq{}eBcs0Y8`+Cxb$Vc|FyVCft z_qGlCitK9()w@L)5(mg}8V_%85T za%VXZhs$ugYRs>|KNc&!d`~Q<+%~I(52lN zX_GPfz$m*U;rMK{y_UXKe-3mFK*Kv(>J)(X)|WPgWND(hg!R3z?P-B&!$cJbXX7`vl)|-qMe-(u=8=5dEISEd zux~zyPyrOn5w7uH}ej#p>jUW9bu|Z15^Bhz+@B+aJp#OIrY&xZg2f zI@=yZ_}O!9p}tI-XZHoPd01EmyI z45jSE*67@<^{%iews3__7K_>|?H$xX#A;g(WEKf90B$6EV~w4P+;(b>y(-uNT<0kD z?uKW$0ErhNf`h55TL4bjmg{NZw(GEx$Aaj#GZNi=^Lxv)(trDp z+oY0V6@If(1;8twuoHuGhE_4ZPyX%iwn9yJp0umb*Yi`E8*SX_%+exfGR4s7`@Iu5@xZSL} zZvXMWbCFmIU(Ll@sEIv#!=8^E)bl26XmVA`Pl0vw-L@rDUScV_|6t*Qn|2On-?7Py z@!lN}^aFtK%?+%JI$C^cY}GxRl#8S8%Ue0z&ASTj=b)jjMdZBoZ{`^p{hvLA2sQ4J zjT&&?`LW$YqIDu=vY>H3wJ9Ia@u&9sAZD0l9M@{6gnaN~U>H2|di1$H4r$Wrh24*O zI`Yz%F5Le3{RcUwKZaFav!&X0b0bGA$_`;pOG5dFERJvk+?5r+0yLq-6tPYOdyvhM z_B#Mhi7B9vzZvcjL$L}Gj-+3Kx$HX=?6W?I-&t5bHuXeql zkuV4fG0dkrvv7A>tBRH*G)Fd4L4CApVf~q9Lg04i&voke@X~FE+z^A?*mM+jX9zrT zGTU$(AhfH7gZ{7Vg6U)g$>YB>kHGF*4)PbQCJHeJpl8LUTD#he=SRicDL#{wTw(y2iIZ7t=@qOZnfoD%dkrmQ1wbcM?~z3IPs zKL72km&r!9A2Of7khlAmw~76Z^N{ zcOnR8ty%(w+O>m=i*=ln%i%riINhlEnYxZgUoY!9QPe!Tfg?G0!*ro}s8~Y>_ck8Z z$XP>;QX4xb@oV{n4;(zw*yLsoS-*!hcZA?Pu|;rcc!z*3*0gjay&d!e7YduNZRH46 z%DmQ2Pk~cgg36w@b?B0Kr=27DdnL|nG7wm;gF}k+s~tqW^GOa0H~efzF+hIxqs%Sr z*2m5y8p*IuPEIWDi zextXOEx0lsgD?se;4Ox}j-;M|wANiEj97UsKyGJ|d z4#8%RaU|Di*mCazWUT$&=Z^HaY$D_>@Sj4*!dYK9lDYvX`X4YHmVNc5Lq>_juN-t3 zVfI+D@?MS=ThZNd4qZZ7n+eX}GW{_50z&FPk@h`SaT2v-MJEg1*QYonYO&!{ol_Ek zS&Je6{HSRTT|0(PclO{(R&9neg(lgW;;y@j5F7%8K^p@G6XJ`+6WwyJkQCC)!5qkj-)RDD^D`atY3@n9s3qIOK_*^ zy3morU4WJ1VJKJ=jmFcx=tw?)kwdmrekMh%6c)L}A$R55O9WYXR(x(<&G3+54F(nf>@1RAr4S`rE>H$_K)ycr#if<5n z;e79qq#LnO@Z9Z<4w)tPY@$|t;pWUECyv9x6~K}*?f6)Jxs}8fR{94=iW*NWjph=X zk8O_RcjJ>~aTW|h$y!EA88KWyx6H9i7@=|Ugsk5@n^ZF( zqhiHn$;lz973xw=MQ4 z-2Dd&Ga}rn+XqG^5KaWbNK^Db}rLyN{aQbeP=Npp)VAYekT}s|EF^@}PYmdCHF8mc6TEkj~8}H6~-cqy7Ea^hElEhJ@VYefYSn9qKJ?9%q;GrFu`h+a7jWc zRMM5qT5wnw&m3CKQtp1lGFR!>rW;QNr;JO{CuhsJbdC9?teb&N*1Y9jmPrN)0^kk# zaxPs7*Oqq!TN#9)PXMRP^_79@e*Vf;&YTU|D+2$1mgqD!R0{u!)si z$;twPVkg+Zpw=*&|Ke{02688Rc7bG!a5`0W3sbcj)m+&T0!~st`9R4UG;=K1J1$-Z zdDOe^kJRQ^O|i&%;rCrR4{l;v)-e|RYg6mNFfZ3~rGQu8oeD6(vVFDPgGk94bzHO| zvl(?=if$cO&y`b(15nfpVZ-0+i+yEx1K1`4l!AC3@kCD6M(*T5A!>+THUY$bY~+%y zs%m5RG-9DQakmDl?RvN(3Ex;O<-FA&7i?#<+QTu2F7dn$?b@ z#kR(0k8#OWip9+) z6{c^#-lr+2Z*fKQ-1|3u+yr?~Zr9iC5hNfDGW z&6VSB;Tfszu<@;*;ga@Z+}E@NvLQ1A+jv>by~a|%2ITTp%+Zlu$`zY~-}=Ut;|pM& zpbIh9E0F9;i6VeY%EDw~8RnN7u{mDkmnt#U&BIb>yD==hV+?2x|H~TAQkeTrU|@J1 z@!Ru!v)!6By0&xNfR3Q_URXQB=emoK_3e3dNU=-v#HO`&zKenr>$Sj@{N4e3Oec`E z1V;J$p_n{u;6isPLa`RnO5!gUxot$pi`_r4EOCh|nZf`JTBs3B({EkL5dh9GKW~6v z#>*{r<>%Vq9Du|DJoP)bLx8j5-v!Dw-sncMcbC)5Z&~3MBt(j=bbs>^NnYjtCK2o{ zv`-)!;j3MS$fm4z=}tOgjW{1Gu65B!%)-{WQb0{2#6|n>dn14>>s={E9}3ZGjfHtr z-Ps6zeX1*E*#qxTKhXeI+PuL7@{W z*$jw*m44dnO8G_-G3x*pjoso(QDFca{H?@jnsN6#MEE%mF#20`X+aR-KZp(Q(GS4q zNaF1-O7r~bc9*UWTXwol<@E=I@k4CfZ7^BmcDYC7EikMj;68e{OBeGldtB+!hD3&$ z3Pz`iNox0_IHX$b4aki!H@@*2S>m&O?vFT{ia!y;tjNz|N7eSbUlErq{>3Fl@0bHF z8KJu!%sdMYxu>vw(ZlX>|AW6e?6#w39ge!PrUNn)`~ll25@^6NcQMx2(%qoKuW@rf ze$!t`{f@gk5Pa!hUDQi5>o>7<9{(m}>_aEqD>Co;>VBJb*c6eSeRk5#%{o7I+p)$c zT`6!4CKYpgHa-viG(F{hi~T$~B|6;tM_?;{3&TF4b|gFbBBB_(c-rlXP3oO-Nikxb zC5eVx=Y%}Z3ZAFGmKVGrj{71PT{1?ol9z<=P%0yHV_*HJ*l>FO<^CBM6DEZocG>+- zW{SlRz_GC2-|kBJ?)??u6|7%6ECg_hB$r z9K3QI`xpAn^RGKy1~$3`TuPygbfaS)im~?i4`hb`I=J~Gn1_#otER~aSPPh6Z}dwy zI}bf^#m(A#>JB1Cp7%_QdFpc^Hg+eqUW58j`u2|AfGKSW2d^-4O)H@mdE?4a^Y$9Y(NCxjfn; zhQxZf#94zl4}~sPCEg=zL8089Py`IgXoA; zm)IX%W!;%c#k28cs%OeGiNXJ%J$Wlzc79*;gq=Rd@Q|0-FYqDFJO=vPY_;jl#F5vq zJi5=7u)V-K!tnlAwkKtLPlQm~OQ5WV|KU`3ynsHhbOm^v8p}Wto11NRyCu&_cmWTEZ=S25CwOptAy2;jLs)RjNGEx% zosFjy_JoD!Xb~@H7AajDI48E4N2-Q1#k??Ly9>p=_#kyR42AGYqolV0skObNM_P=j zr99FN^(^fT4Dd<(cGwwW%X%CKb)c-*fWT|zJaX}1t;&082+vIPQ1E1@6U9FZDtN!k z6vNPc02jfIRPb`KjTODXs&DcekhFItFBw5bR`#USUZCId1NRZY{mR~0L~2+SvHEyq zRc|3N=gMjxsmGJ5dm95hQzKWTGc)~OHvVo6FM&qW1+tJL30 zEc^Lg4|QKGwWfz+F(3b)*ET@0unZGoscLz}36tuzy^H_?xYa`q@HCy4r!HGm$2*Fn z?NgVavfA}LDZd-YHCIf~JpnenS$(f^phpbeM^t}o;E}3#P{Y^u3^XgGG=yHiY2@K) z$SXDWS_OFoy^IjpPffgKh*z%UX@lY2TYFssgW2#8FdU$ngGILWmIo+@HwYZVUu`|q1o4CIJUQqK#OQ@^ za$s*Cb@1r!S35~ySG}W0v77ADN8WZE-olSP)WNd`pLk^YitFUbF;%cp#6MEueT7dw zy3DiDojnwddF?J9nKoJDuHFfm+tVh&+HBm-Lv<9_yL&>X?Dp_T(tgpyBMZ&ho}T0p znh24t4Pmj~?GN+yS1*C-;@+OD?)9VO0X}TveY_R87&`Rz$WMSB@8?Nw>cB)Bfi3`% zY@aJW^Ms_bc7R}OHc*@Z-3NKUNTjFWckJrZ!Jd>x7Tij<0bIX~zc<8dMhr54s3$8Y zA;{2=kw6gN4f6sDr1YHv1p8{ZCxuf3CD3aX8+IDuk#HU}QXDn6Mv6^m)hG|IvTWLD zar})K;~l{XZt%H>w+e24;a!%3>ETxOE$s2>4rrw@ub)gpUQraJ9honx1Ma)hbVkM#vKYF-gc?j1#T_%Nb$h1Lt1q)@7N5&0)-1L4hIZ1Cg& zIe!(2t3gIO^eDbIURB3e~xmE@Y{-#{(NGcsuyFfc3wM zoxk;O-iPwJ3+@7g9e(kIH;!O+Jt<%nKP9LU{f8$dT!;N|bY6#DI03w!<+KpHcb@hF zYBUTb$4Zya5a#@cvqB!^kI#uA^ZFOyz?0TA7}5Mg08oOQe-}OZ!VU+CpGFc3zq%wg zq`DcNcLKqy83WL8B|)r65Z6Az5OZ ze>@)e-#0)*YP5uK_S01_H*bE`6XAR_u6gn!p@|}({LXC{*RR(F-KN~|q&VqB7B>;j zYpfJ7V^%v24NKhdVpzg0Pd2?JqW38_`uCP6y%ho{dIAK)KpAOm{^pVqz*3!v{yk_cG!S3-Pv@ya{kcQWfh0%@ei zhb7=r~JVS_%60q6M|;pj6;wOCA~0^4C9qcG=hYcFSUe;{y6z0J)s(*d&Ec}yA6Na zN@z{{)?7OQFRHw!lR)l|Y>X?=N%9iz$YfmH6vzl2MY1mv66B*B%nZJb+s6XK^7rIV zIE{3k|3*SUR`w3TQblwjwWY-_zL~HNYfdll|H``hm@KO(J`;f&!eF^TTjnLj) zEF2;c<@f_nY~6HWtIC*Rq|BEL_Fk!pDPZ$XNBCfjgy=h9r&*;i5P~VC&xC|M<7Pop zJk-=XAqqx9s?gLo&4vk{6{KN@4D^O{SQi^5r%334s9vi^9i-c4a_3;b^-rhpF<`|9BxluQ9Jg0j-#Zs^Hunu^n@g)QP%K1Z=V6yTeReW% zYUjnOx!tHWuz=1)G||HqaADV4M5&m3?Bodt@*$gP<61b07%k0lw04w@7@@v>S~#mW zKZ6xKIrUG0;pnkv4KLcBgB_ox5qX9~&+`b{E7mX%%T2Gt)WAB}2EIy*Bk3io2t0$k124gLCXnEgouLEkAxXq~(#tT2o0<)#RDK*HGr?+c|{+j4I ztdVy`JCGp4)ABCZ&#tQ9GrRk%^>8y!{VQoMXBrSGZTcIHpmsMI$=kCN;`gs^hLgnP z&!$P$>?R3o-GzWHeID3aQ(2nLBgH^#uZ@n`1N(F*`m(%@aOv5-L&`+j`>?>mr0q{9 z>7`n9b<949GcmFilG<^l72Vbn=<^I3lMy`p0ErqiKSzVZ6FUANT5Rbv=Nd0e z(3x_uoje44_3Rn1p^iC9nu|?U+*%9Uv7P7H*KYW7@)JY4`BPK~4`zN2PO8%3U!Y1} zRexzjrt~X!og#d7yhKOGA4808{~9CRt{D_pd4gsXavX~L-+mlU0`XlQ(3&dU$35y( z-x$qI&Hv8XlMSkx2~O*PpMQg{4w%H4g72|aMji2k`zJ-$(9XsUZ!QUqQggcCU`f=W76~n1(2aMX0cS&}_jaiqWvo4SCO#BZ^dEwIl diff --git a/changai/changai/api/v2/fvs_stores/erpnext/table_fvs/index.faiss b/changai/changai/api/v2/fvs_stores/erpnext/table_fvs/index.faiss index 3d1bb78b4442b8499dd223e6b71135d763cdab03..34b68eceb8938c1aab7b1ea8410198243497ec51 100644 GIT binary patch delta 39062 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

'+(n?r:Ct(r,!0))+`
-`:"
"+(n?r:Ct(r,!0))+`
-`}blockquote({tokens:e}){return`
+`), s = "", r = "", i = []; for (; n.length > 0;) { + let o = !1, a = [], l; for (l = 0; l < n.length; l++)if (this.rules.other.blockquoteStart.test(n[l])) a.push(n[l]), o = !0; else if (!o) a.push(n[l]); else break; n = n.slice(l); let f = a.join(` +`), u = f.replace(this.rules.other.blockquoteSetextReplace, ` + $1`).replace(this.rules.other.blockquoteSetextReplace2, ""); s = s ? `${s} +${f}` : f, r = r ? `${r} +${u}` : u; let d = this.lexer.state.top; if (this.lexer.state.top = !0, this.lexer.blockTokens(u, i, !0), this.lexer.state.top = d, n.length === 0) break; let g = i.at(-1); if ((g == null ? void 0 : g.type) === "code") break; if ((g == null ? void 0 : g.type) === "blockquote") { + let y = g, E = y.raw + ` +`+ n.join(` +`), x = this.blockquote(E); i[i.length - 1] = x, s = s.substring(0, s.length - y.raw.length) + x.raw, r = r.substring(0, r.length - y.text.length) + x.text; break + } else if ((g == null ? void 0 : g.type) === "list") { + let y = g, E = y.raw + ` +`+ n.join(` +`), x = this.list(E); i[i.length - 1] = x, s = s.substring(0, s.length - g.raw.length) + x.raw, r = r.substring(0, r.length - y.raw.length) + x.raw, n = E.substring(i.at(-1).raw.length).split(` +`); continue + } + } return { type: "blockquote", raw: s, tokens: i, text: r } + } + } list(e) { + let t = this.rules.block.list.exec(e); if (t) { + let n = t[1].trim(), s = n.length > 1, r = { type: "list", raw: "", ordered: s, start: s ? +n.slice(0, -1) : "", loose: !1, items: [] }; n = s ? `\\d{1,9}\\${n.slice(-1)}` : `\\${n}`, this.options.pedantic && (n = s ? n : "[*+-]"); let i = this.rules.other.listItemRegex(n), o = !1; for (; e;) { + let l = !1, f = "", u = ""; if (!(t = i.exec(e)) || this.rules.block.hr.test(e)) break; f = t[0], e = e.substring(f.length); let d = yf(t[2].split(` +`, 1)[0], t[1].length), g = e.split(` +`, 1)[0], y = !d.trim(), E = 0; if (this.options.pedantic ? (E = 2, u = d.trimStart()) : y ? E = t[1].length + 1 : (E = d.search(this.rules.other.nonSpaceChar), E = E > 4 ? 1 : E, u = d.slice(E), E += t[1].length), y && this.rules.other.blankLine.test(g) && (f += g + ` +`, e = e.substring(g.length + 1), l = !0), !l) { + let x = this.rules.other.nextBulletRegex(E), M = this.rules.other.hrRegex(E), m = this.rules.other.fencesBeginRegex(E), H = this.rules.other.headingBeginRegex(E), Y = this.rules.other.htmlBeginRegex(E), $ = this.rules.other.blockquoteBeginRegex(E); for (; e;) { + let z = e.split(` +`, 1)[0], O; if (g = z, this.options.pedantic ? (g = g.replace(this.rules.other.listReplaceNesting, " "), O = g) : O = g.replace(this.rules.other.tabCharGlobal, " "), m.test(g) || H.test(g) || Y.test(g) || $.test(g) || x.test(g) || M.test(g)) break; if (O.search(this.rules.other.nonSpaceChar) >= E || !g.trim()) u += ` +`+ O.slice(E); else { + if (y || d.replace(this.rules.other.tabCharGlobal, " ").search(this.rules.other.nonSpaceChar) >= 4 || m.test(d) || H.test(d) || M.test(d)) break; u += ` +`+ g + } y = !g.trim(), f += z + ` +`, e = e.substring(z.length + 1), d = O.slice(E) + } + } r.loose || (o ? r.loose = !0 : this.rules.other.doubleBlankLine.test(f) && (o = !0)), r.items.push({ type: "list_item", raw: f, task: !!this.options.gfm && this.rules.other.listIsTask.test(u), loose: !1, text: u, tokens: [] }), r.raw += f + } let a = r.items.at(-1); if (a) a.raw = a.raw.trimEnd(), a.text = a.text.trimEnd(); else return; r.raw = r.raw.trimEnd(); for (let l of r.items) { this.lexer.state.top = !1, l.tokens = this.lexer.blockTokens(l.text, []); let f = l.tokens[0]; if (l.task && ((f == null ? void 0 : f.type) === "text" || (f == null ? void 0 : f.type) === "paragraph")) { l.text = l.text.replace(this.rules.other.listReplaceTask, ""), f.raw = f.raw.replace(this.rules.other.listReplaceTask, ""), f.text = f.text.replace(this.rules.other.listReplaceTask, ""); for (let d = this.lexer.inlineQueue.length - 1; d >= 0; d--)if (this.rules.other.listIsTask.test(this.lexer.inlineQueue[d].src)) { this.lexer.inlineQueue[d].src = this.lexer.inlineQueue[d].src.replace(this.rules.other.listReplaceTask, ""); break } let u = this.rules.other.listTaskCheckbox.exec(l.raw); if (u) { let d = { type: "checkbox", raw: u[0] + " ", checked: u[0] !== "[ ]" }; l.checked = d.checked, r.loose ? l.tokens[0] && ["paragraph", "text"].includes(l.tokens[0].type) && "tokens" in l.tokens[0] && l.tokens[0].tokens ? (l.tokens[0].raw = d.raw + l.tokens[0].raw, l.tokens[0].text = d.raw + l.tokens[0].text, l.tokens[0].tokens.unshift(d)) : l.tokens.unshift({ type: "paragraph", raw: d.raw, text: d.raw, tokens: [d] }) : l.tokens.unshift(d) } } else l.task && (l.task = !1); if (!r.loose) { let u = l.tokens.filter(g => g.type === "space"), d = u.length > 0 && u.some(g => this.rules.other.anyLine.test(g.raw)); r.loose = d } } if (r.loose) for (let l of r.items) { l.loose = !0; for (let f of l.tokens) f.type === "text" && (f.type = "paragraph") } return r + } + } html(e) { let t = this.rules.block.html.exec(e); if (t) { let n = tl(t[0]); return { type: "html", block: !0, raw: n, pre: t[1] === "pre" || t[1] === "script" || t[1] === "style", text: n } } } def(e) { + let t = this.rules.block.def.exec(e); if (t) { + let n = t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, " "), s = t[2] ? t[2].replace(this.rules.other.hrefBrackets, "$1").replace(this.rules.inline.anyPunctuation, "$1") : "", r = t[3] ? t[3].substring(1, t[3].length - 1).replace(this.rules.inline.anyPunctuation, "$1") : t[3]; return { + type: "def", tag: n, raw: Qt(t[0], ` +`), href: s, title: r + } + } + } table(e) { + var o; let t = this.rules.block.table.exec(e); if (!t || !this.rules.other.tableDelimiter.test(t[2])) return; let n = el(t[1]), s = t[2].replace(this.rules.other.tableAlignChars, "").split("|"), r = (o = t[3]) != null && o.trim() ? t[3].replace(this.rules.other.tableRowBlankLine, "").split(` +`) : [], i = { + type: "table", raw: Qt(t[0], ` +`), header: [], align: [], rows: [] + }; if (n.length === s.length) { for (let a of s) this.rules.other.tableAlignRight.test(a) ? i.align.push("right") : this.rules.other.tableAlignCenter.test(a) ? i.align.push("center") : this.rules.other.tableAlignLeft.test(a) ? i.align.push("left") : i.align.push(null); for (let a = 0; a < n.length; a++)i.header.push({ text: n[a], tokens: this.lexer.inline(n[a]), header: !0, align: i.align[a] }); for (let a of r) i.rows.push(el(a, i.header.length).map((l, f) => ({ text: l, tokens: this.lexer.inline(l), header: !1, align: i.align[f] }))); return i } + } lheading(e) { + let t = this.rules.block.lheading.exec(e); if (t) { + let n = t[1].trim(); return { + type: "heading", raw: Qt(t[0], ` +`), depth: t[2].charAt(0) === "=" ? 1 : 2, text: n, tokens: this.lexer.inline(n) + } + } + } paragraph(e) { + let t = this.rules.block.paragraph.exec(e); if (t) { + let n = t[1].charAt(t[1].length - 1) === ` +`? t[1].slice(0, -1) : t[1]; return { type: "paragraph", raw: t[0], text: n, tokens: this.lexer.inline(n) } + } + } text(e) { let t = this.rules.block.text.exec(e); if (t) return { type: "text", raw: t[0], text: t[0], tokens: this.lexer.inline(t[0]) } } escape(e) { let t = this.rules.inline.escape.exec(e); if (t) return { type: "escape", raw: t[0], text: t[1] } } tag(e) { let t = this.rules.inline.tag.exec(e); if (t) return !this.lexer.state.inLink && this.rules.other.startATag.test(t[0]) ? this.lexer.state.inLink = !0 : this.lexer.state.inLink && this.rules.other.endATag.test(t[0]) && (this.lexer.state.inLink = !1), !this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(t[0]) ? this.lexer.state.inRawBlock = !0 : this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(t[0]) && (this.lexer.state.inRawBlock = !1), { type: "html", raw: t[0], inLink: this.lexer.state.inLink, inRawBlock: this.lexer.state.inRawBlock, block: !1, text: t[0] } } link(e) { let t = this.rules.inline.link.exec(e); if (t) { let n = t[2].trim(); if (!this.options.pedantic && this.rules.other.startAngleBracket.test(n)) { if (!this.rules.other.endAngleBracket.test(n)) return; let i = Qt(n.slice(0, -1), "\\"); if ((n.length - i.length) % 2 === 0) return } else { let i = xf(t[2], "()"); if (i === -2) return; if (i > -1) { let o = (t[0].indexOf("!") === 0 ? 5 : 4) + t[1].length + i; t[2] = t[2].substring(0, i), t[0] = t[0].substring(0, o).trim(), t[3] = "" } } let s = t[2], r = ""; if (this.options.pedantic) { let i = this.rules.other.pedanticHrefTitle.exec(s); i && (s = i[1], r = i[3]) } else r = t[3] ? t[3].slice(1, -1) : ""; return s = s.trim(), this.rules.other.startAngleBracket.test(s) && (this.options.pedantic && !this.rules.other.endAngleBracket.test(n) ? s = s.slice(1) : s = s.slice(1, -1)), nl(t, { href: s && s.replace(this.rules.inline.anyPunctuation, "$1"), title: r && r.replace(this.rules.inline.anyPunctuation, "$1") }, t[0], this.lexer, this.rules) } } reflink(e, t) { let n; if ((n = this.rules.inline.reflink.exec(e)) || (n = this.rules.inline.nolink.exec(e))) { let s = (n[2] || n[1]).replace(this.rules.other.multipleSpaceGlobal, " "), r = t[s.toLowerCase()]; if (!r) { let i = n[0].charAt(0); return { type: "text", raw: i, text: i } } return nl(n, r, n[0], this.lexer, this.rules) } } emStrong(e, t, n = "") { let s = this.rules.inline.emStrongLDelim.exec(e); if (!(!s || !s[1] && !s[2] && !s[3] && !s[4] || s[4] && n.match(this.rules.other.unicodeAlphaNumeric)) && (!(s[1] || s[3]) || !n || this.rules.inline.punctuation.exec(n))) { let r = [...s[0]].length - 1, i, o, a = r, l = 0, f = s[0][0] === "*" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd; for (f.lastIndex = 0, t = t.slice(-1 * e.length + r); (s = f.exec(t)) !== null;) { if (i = s[1] || s[2] || s[3] || s[4] || s[5] || s[6], !i) continue; if (o = [...i].length, s[3] || s[4]) { a += o; continue } else if ((s[5] || s[6]) && r % 3 && !((r + o) % 3)) { l += o; continue } if (a -= o, a > 0) continue; o = Math.min(o, o + a + l); let u = [...s[0]][0].length, d = e.slice(0, r + s.index + u + o); if (Math.min(r, o) % 2) { let y = d.slice(1, -1); return { type: "em", raw: d, text: y, tokens: this.lexer.inlineTokens(y) } } let g = d.slice(2, -2); return { type: "strong", raw: d, text: g, tokens: this.lexer.inlineTokens(g) } } } } codespan(e) { let t = this.rules.inline.code.exec(e); if (t) { let n = t[2].replace(this.rules.other.newLineCharGlobal, " "), s = this.rules.other.nonSpaceChar.test(n), r = this.rules.other.startingSpaceChar.test(n) && this.rules.other.endingSpaceChar.test(n); return s && r && (n = n.substring(1, n.length - 1)), { type: "codespan", raw: t[0], text: n } } } br(e) { let t = this.rules.inline.br.exec(e); if (t) return { type: "br", raw: t[0] } } del(e, t, n = "") { let s = this.rules.inline.delLDelim.exec(e); if (s && (!s[1] || !n || this.rules.inline.punctuation.exec(n))) { let r = [...s[0]].length - 1, i, o, a = r, l = this.rules.inline.delRDelim; for (l.lastIndex = 0, t = t.slice(-1 * e.length + r); (s = l.exec(t)) !== null;) { if (i = s[1] || s[2] || s[3] || s[4] || s[5] || s[6], !i || (o = [...i].length, o !== r)) continue; if (s[3] || s[4]) { a += o; continue } if (a -= o, a > 0) continue; o = Math.min(o, o + a); let f = [...s[0]][0].length, u = e.slice(0, r + s.index + f + o), d = u.slice(r, -r); return { type: "del", raw: u, text: d, tokens: this.lexer.inlineTokens(d) } } } } autolink(e) { let t = this.rules.inline.autolink.exec(e); if (t) { let n, s; return t[2] === "@" ? (n = t[1], s = "mailto:" + n) : (n = t[1], s = n), { type: "link", raw: t[0], text: n, href: s, tokens: [{ type: "text", raw: n, text: n }] } } } url(e) { var n, s; let t; if (t = this.rules.inline.url.exec(e)) { let r, i; if (t[2] === "@") r = t[0], i = "mailto:" + r; else { let o; do o = t[0], t[0] = (s = (n = this.rules.inline._backpedal.exec(t[0])) == null ? void 0 : n[0]) != null ? s : ""; while (o !== t[0]); r = t[0], t[1] === "www." ? i = "http://" + t[0] : i = t[0] } return { type: "link", raw: t[0], text: r, href: i, tokens: [{ type: "text", raw: r, text: r }] } } } inlineText(e) { let t = this.rules.inline.text.exec(e); if (t) { let n = this.lexer.state.inRawBlock; return { type: "text", raw: t[0], text: t[0], escaped: n } } } + }, yt = class Xr { + constructor(t) { _e(this, "tokens"); _e(this, "options"); _e(this, "state"); _e(this, "inlineQueue"); _e(this, "tokenizer"); this.tokens = [], this.tokens.links = Object.create(null), this.options = t || cn, this.options.tokenizer = this.options.tokenizer || new Ls, this.tokenizer = this.options.tokenizer, this.tokenizer.options = this.options, this.tokenizer.lexer = this, this.inlineQueue = [], this.state = { inLink: !1, inRawBlock: !1, top: !0 }; let n = { other: We, block: Os.normal, inline: Yn.normal }; this.options.pedantic ? (n.block = Os.pedantic, n.inline = Yn.pedantic) : this.options.gfm && (n.block = Os.gfm, this.options.breaks ? n.inline = Yn.breaks : n.inline = Yn.gfm), this.tokenizer.rules = n } static get rules() { return { block: Os, inline: Yn } } static lex(t, n) { return new Xr(n).lex(t) } static lexInline(t, n) { return new Xr(n).inlineTokens(t) } lex(t) { + t = t.replace(We.carriageReturn, ` +`), this.blockTokens(t, this.tokens); for (let n = 0; n < this.inlineQueue.length; n++) { let s = this.inlineQueue[n]; this.inlineTokens(s.src, s.tokens) } return this.inlineQueue = [], this.tokens + } blockTokens(t, n = [], s = !1) { + var i, o, a; this.tokenizer.lexer = this, this.options.pedantic && (t = t.replace(We.tabCharGlobal, " ").replace(We.spaceLine, "")); let r = 1 / 0; for (; t;) { + if (t.length < r) r = t.length; else { this.infiniteLoopError(t.charCodeAt(0)); break } let l; if ((o = (i = this.options.extensions) == null ? void 0 : i.block) != null && o.some(u => (l = u.call({ lexer: this }, t, n)) ? (t = t.substring(l.raw.length), n.push(l), !0) : !1)) continue; if (l = this.tokenizer.space(t)) { + t = t.substring(l.raw.length); let u = n.at(-1); l.raw.length === 1 && u !== void 0 ? u.raw += ` +`: n.push(l); continue + } if (l = this.tokenizer.code(t)) { + t = t.substring(l.raw.length); let u = n.at(-1); (u == null ? void 0 : u.type) === "paragraph" || (u == null ? void 0 : u.type) === "text" ? (u.raw += (u.raw.endsWith(` +`) ? "" : ` +`) + l.raw, u.text += ` +`+ l.text, this.inlineQueue.at(-1).src = u.text) : n.push(l); continue + } if (l = this.tokenizer.fences(t)) { t = t.substring(l.raw.length), n.push(l); continue } if (l = this.tokenizer.heading(t)) { t = t.substring(l.raw.length), n.push(l); continue } if (l = this.tokenizer.hr(t)) { t = t.substring(l.raw.length), n.push(l); continue } if (l = this.tokenizer.blockquote(t)) { t = t.substring(l.raw.length), n.push(l); continue } if (l = this.tokenizer.list(t)) { t = t.substring(l.raw.length), n.push(l); continue } if (l = this.tokenizer.html(t)) { t = t.substring(l.raw.length), n.push(l); continue } if (l = this.tokenizer.def(t)) { + t = t.substring(l.raw.length); let u = n.at(-1); (u == null ? void 0 : u.type) === "paragraph" || (u == null ? void 0 : u.type) === "text" ? (u.raw += (u.raw.endsWith(` +`) ? "" : ` +`) + l.raw, u.text += ` +`+ l.raw, this.inlineQueue.at(-1).src = u.text) : this.tokens.links[l.tag] || (this.tokens.links[l.tag] = { href: l.href, title: l.title }, n.push(l)); continue + } if (l = this.tokenizer.table(t)) { t = t.substring(l.raw.length), n.push(l); continue } if (l = this.tokenizer.lheading(t)) { t = t.substring(l.raw.length), n.push(l); continue } let f = t; if ((a = this.options.extensions) != null && a.startBlock) { let u = 1 / 0, d = t.slice(1), g; this.options.extensions.startBlock.forEach(y => { g = y.call({ lexer: this }, d), typeof g == "number" && g >= 0 && (u = Math.min(u, g)) }), u < 1 / 0 && u >= 0 && (f = t.substring(0, u + 1)) } if (this.state.top && (l = this.tokenizer.paragraph(f))) { + let u = n.at(-1); s && (u == null ? void 0 : u.type) === "paragraph" ? (u.raw += (u.raw.endsWith(` +`) ? "" : ` +`) + l.raw, u.text += ` +`+ l.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = u.text) : n.push(l), s = f.length !== t.length, t = t.substring(l.raw.length); continue + } if (l = this.tokenizer.text(t)) { + t = t.substring(l.raw.length); let u = n.at(-1); (u == null ? void 0 : u.type) === "text" ? (u.raw += (u.raw.endsWith(` +`) ? "" : ` +`) + l.raw, u.text += ` +`+ l.text, this.inlineQueue.pop(), this.inlineQueue.at(-1).src = u.text) : n.push(l); continue + } if (t) { this.infiniteLoopError(t.charCodeAt(0)); break } + } return this.state.top = !0, n + } inline(t, n = []) { return this.inlineQueue.push({ src: t, tokens: n }), n } inlineTokens(t, n = []) { var f, u, d, g, y, E; this.tokenizer.lexer = this; let s = t, r = null; if (this.tokens.links) { let x = Object.keys(this.tokens.links); if (x.length > 0) for (; (r = this.tokenizer.rules.inline.reflinkSearch.exec(s)) !== null;)x.includes(r[0].slice(r[0].lastIndexOf("[") + 1, -1)) && (s = s.slice(0, r.index) + "[" + "a".repeat(r[0].length - 2) + "]" + s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex)) } for (; (r = this.tokenizer.rules.inline.anyPunctuation.exec(s)) !== null;)s = s.slice(0, r.index) + "++" + s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex); let i; for (; (r = this.tokenizer.rules.inline.blockSkip.exec(s)) !== null;)i = r[2] ? r[2].length : 0, s = s.slice(0, r.index + i) + "[" + "a".repeat(r[0].length - i - 2) + "]" + s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex); s = (d = (u = (f = this.options.hooks) == null ? void 0 : f.emStrongMask) == null ? void 0 : u.call({ lexer: this }, s)) != null ? d : s; let o = !1, a = "", l = 1 / 0; for (; t;) { if (t.length < l) l = t.length; else { this.infiniteLoopError(t.charCodeAt(0)); break } o || (a = ""), o = !1; let x; if ((y = (g = this.options.extensions) == null ? void 0 : g.inline) != null && y.some(m => (x = m.call({ lexer: this }, t, n)) ? (t = t.substring(x.raw.length), n.push(x), !0) : !1)) continue; if (x = this.tokenizer.escape(t)) { t = t.substring(x.raw.length), n.push(x); continue } if (x = this.tokenizer.tag(t)) { t = t.substring(x.raw.length), n.push(x); continue } if (x = this.tokenizer.link(t)) { t = t.substring(x.raw.length), n.push(x); continue } if (x = this.tokenizer.reflink(t, this.tokens.links)) { t = t.substring(x.raw.length); let m = n.at(-1); x.type === "text" && (m == null ? void 0 : m.type) === "text" ? (m.raw += x.raw, m.text += x.text) : n.push(x); continue } if (x = this.tokenizer.emStrong(t, s, a)) { t = t.substring(x.raw.length), n.push(x); continue } if (x = this.tokenizer.codespan(t)) { t = t.substring(x.raw.length), n.push(x); continue } if (x = this.tokenizer.br(t)) { t = t.substring(x.raw.length), n.push(x); continue } if (x = this.tokenizer.del(t, s, a)) { t = t.substring(x.raw.length), n.push(x); continue } if (x = this.tokenizer.autolink(t)) { t = t.substring(x.raw.length), n.push(x); continue } if (!this.state.inLink && (x = this.tokenizer.url(t))) { t = t.substring(x.raw.length), n.push(x); continue } let M = t; if ((E = this.options.extensions) != null && E.startInline) { let m = 1 / 0, H = t.slice(1), Y; this.options.extensions.startInline.forEach($ => { Y = $.call({ lexer: this }, H), typeof Y == "number" && Y >= 0 && (m = Math.min(m, Y)) }), m < 1 / 0 && m >= 0 && (M = t.substring(0, m + 1)) } if (x = this.tokenizer.inlineText(M)) { t = t.substring(x.raw.length), x.raw.slice(-1) !== "_" && (a = x.raw.slice(-1)), o = !0; let m = n.at(-1); (m == null ? void 0 : m.type) === "text" ? (m.raw += x.raw, m.text += x.text) : n.push(x); continue } if (t) { this.infiniteLoopError(t.charCodeAt(0)); break } } return n } infiniteLoopError(t) { let n = "Infinite loop on byte: " + t; if (!this.options.silent) throw new Error(n) } + }, $s = class { + constructor(e) { _e(this, "options"); _e(this, "parser"); this.options = e || cn } space(e) { return "" } code({ text: e, lang: t, escaped: n }) { + var i; let s = (i = (t || "").match(We.notSpaceStart)) == null ? void 0 : i[0], r = e.replace(We.endingNewline, "") + ` +`; return s ? '
' + (n ? r : Ct(r, !0)) + `
+`: "
" + (n ? r : Ct(r, !0)) + `
+`} blockquote({ tokens: e }) { + return `
${this.parser.parse(e)}
-`}html({text:e}){return e}def(e){return""}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)} -`}hr(e){return`
-`}list(e){let t=e.ordered,n=e.start,s="";for(let o=0;o -`+s+" -`}listitem(e){return`
  • ${this.parser.parse(e.tokens)}
  • -`}checkbox({checked:e}){return" '}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    -`}table(e){let t="",n="";for(let r=0;r${s}`),` +`} html({ text: e }) { return e } def(e) { return "" } heading({ tokens: e, depth: t }) { + return `${this.parser.parseInline(e)} +`} hr(e) { + return `
    +`} list(e) { + let t = e.ordered, n = e.start, s = ""; for (let o = 0; o < e.items.length; o++) { let a = e.items[o]; s += this.listitem(a) } let r = t ? "ol" : "ul", i = t && n !== 1 ? ' start="' + n + '"' : ""; return "<" + r + i + `> +`+ s + " +`} listitem(e) { + return `
  • ${this.parser.parse(e.tokens)}
  • +`} checkbox({ checked: e }) { return " ' } paragraph({ tokens: e }) { + return `

    ${this.parser.parseInline(e)}

    +`} table(e) { + let t = "", n = ""; for (let r = 0; r < e.header.length; r++)n += this.tablecell(e.header[r]); t += this.tablerow({ text: n }); let s = ""; for (let r = 0; r < e.rows.length; r++) { let i = e.rows[r]; n = ""; for (let o = 0; o < i.length; o++)n += this.tablecell(i[o]); s += this.tablerow({ text: n }) } return s && (s = `${s}`), `
    -`+t+` -`+s+`
    -`}tablerow({text:e}){return` +`+ t + ` +`+ s + ` +`} tablerow({ text: e }) { + return ` ${e} -`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+` -`}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${Ct(e,!0)}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let s=this.parser.parseInline(n),r=Jo(e);if(r===null)return s;e=r;let i='
    ",i}image({href:e,title:t,text:n,tokens:s}){s&&(n=this.parser.parseInline(s,this.parser.textRenderer));let r=Jo(e);if(r===null)return Ct(n);e=r;let i=`${Ct(n)}{let l=o[a].flat(1/0);n=n.concat(this.walkTokens(l,t))}):o.tokens&&(n=n.concat(this.walkTokens(o.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let s={...n};if(s.async=this.defaults.async||s.async||!1,n.extensions&&(n.extensions.forEach(r=>{if(!r.name)throw new Error("extension name required");if("renderer"in r){let i=t.renderers[r.name];i?t.renderers[r.name]=function(...o){let a=r.renderer.apply(this,o);return a===!1&&(a=i.apply(this,o)),a}:t.renderers[r.name]=r.renderer}if("tokenizer"in r){if(!r.level||r.level!=="block"&&r.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=t[r.level];i?i.unshift(r.tokenizer):t[r.level]=[r.tokenizer],r.start&&(r.level==="block"?t.startBlock?t.startBlock.push(r.start):t.startBlock=[r.start]:r.level==="inline"&&(t.startInline?t.startInline.push(r.start):t.startInline=[r.start]))}"childTokens"in r&&r.childTokens&&(t.childTokens[r.name]=r.childTokens)}),s.extensions=t),n.renderer){let r=this.defaults.renderer||new $s(this.defaults);for(let i in n.renderer){if(!(i in r))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let o=i,a=n.renderer[o],l=r[o];r[o]=(...f)=>{let u=a.apply(r,f);return u===!1&&(u=l.apply(r,f)),u||""}}s.renderer=r}if(n.tokenizer){let r=this.defaults.tokenizer||new Ls(this.defaults);for(let i in n.tokenizer){if(!(i in r))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let o=i,a=n.tokenizer[o],l=r[o];r[o]=(...f)=>{let u=a.apply(r,f);return u===!1&&(u=l.apply(r,f)),u}}s.tokenizer=r}if(n.hooks){let r=this.defaults.hooks||new Zn;for(let i in n.hooks){if(!(i in r))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let o=i,a=n.hooks[o],l=r[o];Zn.passThroughHooks.has(i)?r[o]=f=>{if(this.defaults.async&&Zn.passThroughHooksRespectAsync.has(i))return(async()=>{let d=await a.call(r,f);return l.call(r,d)})();let u=a.call(r,f);return l.call(r,u)}:r[o]=(...f)=>{if(this.defaults.async)return(async()=>{let d=await a.apply(r,f);return d===!1&&(d=await l.apply(r,f)),d})();let u=a.apply(r,f);return u===!1&&(u=l.apply(r,f)),u}}s.hooks=r}if(n.walkTokens){let r=this.defaults.walkTokens,i=n.walkTokens;s.walkTokens=function(o){let a=[];return a.push(i.call(this,o)),r&&(a=a.concat(r.call(this,o))),a}}this.defaults={...this.defaults,...s}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return yt.lex(e,t!=null?t:this.defaults)}parser(e,t){return wt.parse(e,t!=null?t:this.defaults)}parseMarkdown(e){return(t,n)=>{let s={...n},r={...this.defaults,...s},i=this.onError(!!r.silent,!!r.async);if(this.defaults.async===!0&&s.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(r.hooks&&(r.hooks.options=r,r.hooks.block=e),r.async)return(async()=>{let o=r.hooks?await r.hooks.preprocess(t):t,a=await(r.hooks?await r.hooks.provideLexer(e):e?yt.lex:yt.lexInline)(o,r),l=r.hooks?await r.hooks.processAllTokens(a):a;r.walkTokens&&await Promise.all(this.walkTokens(l,r.walkTokens));let f=await(r.hooks?await r.hooks.provideParser(e):e?wt.parse:wt.parseInline)(l,r);return r.hooks?await r.hooks.postprocess(f):f})().catch(i);try{r.hooks&&(t=r.hooks.preprocess(t));let o=(r.hooks?r.hooks.provideLexer(e):e?yt.lex:yt.lexInline)(t,r);r.hooks&&(o=r.hooks.processAllTokens(o)),r.walkTokens&&this.walkTokens(o,r.walkTokens);let a=(r.hooks?r.hooks.provideParser(e):e?wt.parse:wt.parseInline)(o,r);return r.hooks&&(a=r.hooks.postprocess(a)),a}catch(o){return i(o)}}}onError(e,t){return n=>{if(n.message+=` -Please report this to https://github.com/markedjs/marked.`,e){let s="

    An error occurred:

    "+Ct(n.message+"",!0)+"
    ";return t?Promise.resolve(s):s}if(t)return Promise.reject(n);throw n}}},pn=new vf;function xe(e,t){return pn.parse(e,t)}xe.options=xe.setOptions=function(e){return pn.setOptions(e),xe.defaults=pn.defaults,Ho(xe.defaults),xe},xe.getDefaults=Sr,xe.defaults=cn,xe.use=function(...e){return pn.use(...e),xe.defaults=pn.defaults,Ho(xe.defaults),xe},xe.walkTokens=function(e,t){return pn.walkTokens(e,t)},xe.parseInline=pn.parseInline,xe.Parser=wt,xe.parser=wt.parse,xe.Renderer=$s,xe.TextRenderer=Lr,xe.Lexer=yt,xe.lexer=yt.lex,xe.Tokenizer=Ls,xe.Hooks=Zn,xe.parse=xe,xe.options,xe.setOptions,xe.use,xe.walkTokens,xe.parseInline,wt.parse,yt.lex;function sl(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,s=Array(t);n2?s-2:0),i=2;i1?n-1:0),r=1;r1?n-1:0),r=1;r2&&arguments[2]!==void 0?arguments[2]:Xn;if(il&&il(e,null),!Xe(t))return e;let s=t.length;for(;s--;){let r=t[s];if(typeof r=="string"){const i=n(r);i!==r&&(Af(t)||(t[s]=i),r=i)}e[r]=!0}return e}function Df(e){for(let t=0;t/g),jf=dt(/\${[\w\W]*/g),Vf=dt(/^data-[\-\w.\u00B7-\uFFFF]+$/),qf=dt(/^aria-[\-\w]+$/),ml=dt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Wf=dt(/^(?:\w+script|data):/i),Gf=dt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Kf=dt(/^html$/i),Yf=dt(/^[a-z][.\w]*(-[.\w]+)+$/i),Rn={element:1,text:3,progressingInstruction:7,comment:8,document:9},Zf=function(){return typeof window=="undefined"?null:window},Xf=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let s=null;const r="data-tt-policy-suffix";n&&n.hasAttribute(r)&&(s=n.getAttribute(r));const i="dompurify"+(s?"#"+s:"");try{return t.createPolicy(i,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return null}},bl=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function xl(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Zf();const t=q=>xl(q);if(t.version="3.4.3",t.removed=[],!e||!e.document||e.document.nodeType!==Rn.document||!e.Element)return t.isSupported=!1,t;let n=e.document;const s=n,r=s.currentScript,i=e.DocumentFragment,o=e.HTMLTemplateElement,a=e.Node,l=e.Element,f=e.NodeFilter,u=e.NamedNodeMap,d=u===void 0?e.NamedNodeMap||e.MozNamedAttrMap:u,g=e.HTMLFormElement,y=e.DOMParser,E=e.trustedTypes,x=l.prototype,M=An(x,"cloneNode"),m=An(x,"remove"),H=An(x,"nextSibling"),Y=An(x,"childNodes"),$=An(x,"parentNode");if(typeof o=="function"){const q=n.createElement("template");q.content&&q.content.ownerDocument&&(n=q.content.ownerDocument)}let z,O="";const P=n,ee=P.implementation,V=P.createNodeIterator,se=P.createDocumentFragment,fe=P.getElementsByTagName,D=s.importNode;let Z=bl();t.isSupported=typeof rl=="function"&&typeof $=="function"&&ee&&ee.createHTMLDocument!==void 0;const Se=zf,Ue=Uf,te=jf,C=Vf,pe=qf,Ge=Wf,re=Gf,B=Yf;let de=ml,ae=null;const ve=X({},[...pl,...Fr,...Br,...Hr,...dl]);let ge=null;const nt=X({},[...hl,...zr,...gl,...Ns]);let ye=Object.seal(Tn(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),ht=null,G=null;const Ce=Object.seal(Tn(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Ft=!0,c=!0,h=!1,b=!0,k=!1,v=!0,_=!1,I=!1,R=!1,A=!1,S=!1,U=!1,L=!0,j=!1;const K="user-content-";let ne=!0,he=!1,ie={},ke=null;const $e=X({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let ot=null;const lt=X({},["audio","video","img","source","image","track"]);let Bt=null;const Jn=X({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),De="http://www.w3.org/1998/Math/MathML",Qe="http://www.w3.org/2000/svg",at="http://www.w3.org/1999/xhtml";let Ht=at,Ur=!1,jr=null;const hd=X({},[De,Qe,at],Nr);let Vr=X({},["mi","mo","mn","ms","mtext"]),qr=X({},["annotation-xml"]);const gd=X({},["title","style","font","a","script"]);let es=null;const md=["application/xhtml+xml","text/html"],bd="text/html";let Le=null,Cn=null;const xd=n.createElement("form"),Sl=function(p){return p instanceof RegExp||p instanceof Function},Wr=function(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Cn&&Cn===p)return;(!p||typeof p!="object")&&(p={}),p=tt(p),es=md.indexOf(p.PARSER_MEDIA_TYPE)===-1?bd:p.PARSER_MEDIA_TYPE,Le=es==="application/xhtml+xml"?Nr:Xn,ae=Ae(p,"ALLOWED_TAGS")&&Xe(p.ALLOWED_TAGS)?X({},p.ALLOWED_TAGS,Le):ve,ge=Ae(p,"ALLOWED_ATTR")&&Xe(p.ALLOWED_ATTR)?X({},p.ALLOWED_ATTR,Le):nt,jr=Ae(p,"ALLOWED_NAMESPACES")&&Xe(p.ALLOWED_NAMESPACES)?X({},p.ALLOWED_NAMESPACES,Nr):hd,Bt=Ae(p,"ADD_URI_SAFE_ATTR")&&Xe(p.ADD_URI_SAFE_ATTR)?X(tt(Jn),p.ADD_URI_SAFE_ATTR,Le):Jn,ot=Ae(p,"ADD_DATA_URI_TAGS")&&Xe(p.ADD_DATA_URI_TAGS)?X(tt(lt),p.ADD_DATA_URI_TAGS,Le):lt,ke=Ae(p,"FORBID_CONTENTS")&&Xe(p.FORBID_CONTENTS)?X({},p.FORBID_CONTENTS,Le):$e,ht=Ae(p,"FORBID_TAGS")&&Xe(p.FORBID_TAGS)?X({},p.FORBID_TAGS,Le):tt({}),G=Ae(p,"FORBID_ATTR")&&Xe(p.FORBID_ATTR)?X({},p.FORBID_ATTR,Le):tt({}),ie=Ae(p,"USE_PROFILES")?p.USE_PROFILES&&typeof p.USE_PROFILES=="object"?tt(p.USE_PROFILES):p.USE_PROFILES:!1,Ft=p.ALLOW_ARIA_ATTR!==!1,c=p.ALLOW_DATA_ATTR!==!1,h=p.ALLOW_UNKNOWN_PROTOCOLS||!1,b=p.ALLOW_SELF_CLOSE_IN_ATTR!==!1,k=p.SAFE_FOR_TEMPLATES||!1,v=p.SAFE_FOR_XML!==!1,_=p.WHOLE_DOCUMENT||!1,A=p.RETURN_DOM||!1,S=p.RETURN_DOM_FRAGMENT||!1,U=p.RETURN_TRUSTED_TYPE||!1,R=p.FORCE_BODY||!1,L=p.SANITIZE_DOM!==!1,j=p.SANITIZE_NAMED_PROPS||!1,ne=p.KEEP_CONTENT!==!1,he=p.IN_PLACE||!1,de=Ff(p.ALLOWED_URI_REGEXP)?p.ALLOWED_URI_REGEXP:ml,Ht=typeof p.NAMESPACE=="string"?p.NAMESPACE:at,Vr=Ae(p,"MATHML_TEXT_INTEGRATION_POINTS")&&p.MATHML_TEXT_INTEGRATION_POINTS&&typeof p.MATHML_TEXT_INTEGRATION_POINTS=="object"?tt(p.MATHML_TEXT_INTEGRATION_POINTS):X({},["mi","mo","mn","ms","mtext"]),qr=Ae(p,"HTML_INTEGRATION_POINTS")&&p.HTML_INTEGRATION_POINTS&&typeof p.HTML_INTEGRATION_POINTS=="object"?tt(p.HTML_INTEGRATION_POINTS):X({},["annotation-xml"]);const T=Ae(p,"CUSTOM_ELEMENT_HANDLING")&&p.CUSTOM_ELEMENT_HANDLING&&typeof p.CUSTOM_ELEMENT_HANDLING=="object"?tt(p.CUSTOM_ELEMENT_HANDLING):Tn(null);if(ye=Tn(null),Ae(T,"tagNameCheck")&&Sl(T.tagNameCheck)&&(ye.tagNameCheck=T.tagNameCheck),Ae(T,"attributeNameCheck")&&Sl(T.attributeNameCheck)&&(ye.attributeNameCheck=T.attributeNameCheck),Ae(T,"allowCustomizedBuiltInElements")&&typeof T.allowCustomizedBuiltInElements=="boolean"&&(ye.allowCustomizedBuiltInElements=T.allowCustomizedBuiltInElements),k&&(c=!1),S&&(A=!0),ie&&(ae=X({},dl),ge=Tn(null),ie.html===!0&&(X(ae,pl),X(ge,hl)),ie.svg===!0&&(X(ae,Fr),X(ge,zr),X(ge,Ns)),ie.svgFilters===!0&&(X(ae,Br),X(ge,zr),X(ge,Ns)),ie.mathMl===!0&&(X(ae,Hr),X(ge,gl),X(ge,Ns))),Ce.tagCheck=null,Ce.attributeCheck=null,Ae(p,"ADD_TAGS")&&(typeof p.ADD_TAGS=="function"?Ce.tagCheck=p.ADD_TAGS:Xe(p.ADD_TAGS)&&(ae===ve&&(ae=tt(ae)),X(ae,p.ADD_TAGS,Le))),Ae(p,"ADD_ATTR")&&(typeof p.ADD_ATTR=="function"?Ce.attributeCheck=p.ADD_ATTR:Xe(p.ADD_ATTR)&&(ge===nt&&(ge=tt(ge)),X(ge,p.ADD_ATTR,Le))),Ae(p,"ADD_URI_SAFE_ATTR")&&Xe(p.ADD_URI_SAFE_ATTR)&&X(Bt,p.ADD_URI_SAFE_ATTR,Le),Ae(p,"FORBID_CONTENTS")&&Xe(p.FORBID_CONTENTS)&&(ke===$e&&(ke=tt(ke)),X(ke,p.FORBID_CONTENTS,Le)),Ae(p,"ADD_FORBID_CONTENTS")&&Xe(p.ADD_FORBID_CONTENTS)&&(ke===$e&&(ke=tt(ke)),X(ke,p.ADD_FORBID_CONTENTS,Le)),ne&&(ae["#text"]=!0),_&&X(ae,["html","head","body"]),ae.table&&(X(ae,["tbody"]),delete ht.tbody),p.TRUSTED_TYPES_POLICY){if(typeof p.TRUSTED_TYPES_POLICY.createHTML!="function")throw Ds('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof p.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Ds('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');z=p.TRUSTED_TYPES_POLICY,O=z.createHTML("")}else z===void 0&&(z=Xf(E,r)),z!==null&&typeof O=="string"&&(O=z.createHTML(""));Ze&&Ze(p),Cn=p},El=X({},[...Fr,...Br,...Bf]),Al=X({},[...Hr,...Hf]),yd=function(p){let T=$(p);(!T||!T.tagName)&&(T={namespaceURI:Ht,tagName:"template"});const N=Xn(p.tagName),ce=Xn(T.tagName);return jr[p.namespaceURI]?p.namespaceURI===Qe?T.namespaceURI===at?N==="svg":T.namespaceURI===De?N==="svg"&&(ce==="annotation-xml"||Vr[ce]):!!El[N]:p.namespaceURI===De?T.namespaceURI===at?N==="math":T.namespaceURI===Qe?N==="math"&&qr[ce]:!!Al[N]:p.namespaceURI===at?T.namespaceURI===Qe&&!qr[ce]||T.namespaceURI===De&&!Vr[ce]?!1:!Al[N]&&(gd[N]||!El[N]):!!(es==="application/xhtml+xml"&&jr[p.namespaceURI]):!1},vt=function(p){Sn(t.removed,{element:p});try{$(p).removeChild(p)}catch{m(p)}},dn=function(p,T){try{Sn(t.removed,{attribute:T.getAttributeNode(p),from:T})}catch{Sn(t.removed,{attribute:null,from:T})}if(T.removeAttribute(p),p==="is")if(A||S)try{vt(T)}catch{}else try{T.setAttribute(p,"")}catch{}},Rl=function(p){let T=null,N=null;if(R)p=""+p;else{const Me=al(p,/^[\r\n\t ]+/);N=Me&&Me[0]}es==="application/xhtml+xml"&&Ht===at&&(p=''+p+"");const ce=z?z.createHTML(p):p;if(Ht===at)try{T=new y().parseFromString(ce,es)}catch{}if(!T||!T.documentElement){T=ee.createDocument(Ht,"template",null);try{T.documentElement.innerHTML=Ur?O:ce}catch{}}const Ne=T.body||T.documentElement;return p&&N&&Ne.insertBefore(n.createTextNode(N),Ne.childNodes[0]||null),Ht===at?fe.call(T,_?"html":"body")[0]:_?T.documentElement:Ne},Cl=function(p){return V.call(p.ownerDocument||p,p,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT|f.SHOW_PROCESSING_INSTRUCTION|f.SHOW_CDATA_SECTION,null)},Gr=function(p){return p instanceof g&&(typeof p.nodeName!="string"||typeof p.textContent!="string"||typeof p.removeChild!="function"||!(p.attributes instanceof d)||typeof p.removeAttribute!="function"||typeof p.setAttribute!="function"||typeof p.namespaceURI!="string"||typeof p.insertBefore!="function"||typeof p.hasChildNodes!="function")},Kr=function(p){return typeof a=="function"&&p instanceof a};function zt(q,p,T){kn(q,N=>{N.call(t,p,T,Cn)})}const Pl=function(p){let T=null;if(zt(Z.beforeSanitizeElements,p,null),Gr(p))return vt(p),!0;const N=Le(p.nodeName);if(zt(Z.uponSanitizeElement,p,{tagName:N,allowedTags:ae}),v&&p.hasChildNodes()&&!Kr(p.firstElementChild)&&ze(/<[/\w!]/g,p.innerHTML)&&ze(/<[/\w!]/g,p.textContent)||v&&p.namespaceURI===at&&N==="style"&&Kr(p.firstElementChild)||p.nodeType===Rn.progressingInstruction||v&&p.nodeType===Rn.comment&&ze(/<[/\w]/g,p.data))return vt(p),!0;if(ht[N]||!(Ce.tagCheck instanceof Function&&Ce.tagCheck(N))&&!ae[N]){if(!ht[N]&&Ml(N)&&(ye.tagNameCheck instanceof RegExp&&ze(ye.tagNameCheck,N)||ye.tagNameCheck instanceof Function&&ye.tagNameCheck(N)))return!1;if(ne&&!ke[N]){const ce=$(p)||p.parentNode,Ne=Y(p)||p.childNodes;if(Ne&&ce){const Me=Ne.length;for(let st=Me-1;st>=0;--st){const gt=M(Ne[st],!0);ce.insertBefore(gt,H(p))}}}return vt(p),!0}return p instanceof l&&!yd(p)||(N==="noscript"||N==="noembed"||N==="noframes")&&ze(/<\/no(script|embed|frames)/i,p.innerHTML)?(vt(p),!0):(k&&p.nodeType===Rn.text&&(T=p.textContent,kn([Se,Ue,te],ce=>{T=En(T,ce," ")}),p.textContent!==T&&(Sn(t.removed,{element:p.cloneNode()}),p.textContent=T)),zt(Z.afterSanitizeElements,p,null),!1)},Il=function(p,T,N){if(G[T]||L&&(T==="id"||T==="name")&&(N in n||N in xd))return!1;const ce=ge[T]||Ce.attributeCheck instanceof Function&&Ce.attributeCheck(T,p);if(!(c&&!G[T]&&ze(C,T))){if(!(Ft&&ze(pe,T))){if(!ce||G[T]){if(!(Ml(p)&&(ye.tagNameCheck instanceof RegExp&&ze(ye.tagNameCheck,p)||ye.tagNameCheck instanceof Function&&ye.tagNameCheck(p))&&(ye.attributeNameCheck instanceof RegExp&&ze(ye.attributeNameCheck,T)||ye.attributeNameCheck instanceof Function&&ye.attributeNameCheck(T,p))||T==="is"&&ye.allowCustomizedBuiltInElements&&(ye.tagNameCheck instanceof RegExp&&ze(ye.tagNameCheck,N)||ye.tagNameCheck instanceof Function&&ye.tagNameCheck(N))))return!1}else if(!Bt[T]){if(!ze(de,En(N,re,""))){if(!((T==="src"||T==="xlink:href"||T==="href")&&p!=="script"&&ul(N,"data:")===0&&ot[p])){if(!(h&&!ze(Ge,En(N,re,"")))){if(N)return!1}}}}}}return!0},wd=X({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Ml=function(p){return!wd[Xn(p)]&&ze(B,p)},Ol=function(p){zt(Z.beforeSanitizeAttributes,p,null);const T=p.attributes;if(!T||Gr(p))return;const N={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ge,forceKeepAttr:void 0};let ce=T.length;for(;ce--;){const Ne=T[ce],Me=Ne.name,st=Ne.namespaceURI,gt=Ne.value,_t=Le(Me),Zr=gt;let Fe=Me==="value"?Zr:Mf(Zr);if(N.attrName=_t,N.attrValue=Fe,N.keepAttr=!0,N.forceKeepAttr=void 0,zt(Z.uponSanitizeAttribute,p,N),Fe=N.attrValue,j&&(_t==="id"||_t==="name")&&ul(Fe,K)!==0&&(dn(Me,p),Fe=K+Fe),v&&ze(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Fe)){dn(Me,p);continue}if(_t==="attributename"&&al(Fe,"href")){dn(Me,p);continue}if(N.forceKeepAttr)continue;if(!N.keepAttr){dn(Me,p);continue}if(!b&&ze(/\/>/i,Fe)){dn(Me,p);continue}k&&kn([Se,Ue,te],$l=>{Fe=En(Fe,$l," ")});const Ll=Le(p.nodeName);if(!Il(Ll,_t,Fe)){dn(Me,p);continue}if(z&&typeof E=="object"&&typeof E.getAttributeType=="function"&&!st)switch(E.getAttributeType(Ll,_t)){case"TrustedHTML":{Fe=z.createHTML(Fe);break}case"TrustedScriptURL":{Fe=z.createScriptURL(Fe);break}}if(Fe!==Zr)try{st?p.setAttributeNS(st,Me,Fe):p.setAttribute(Me,Fe),Gr(p)?vt(p):ll(t.removed)}catch{dn(Me,p)}}zt(Z.afterSanitizeAttributes,p,null)},Yr=function(p){let T=null;const N=Cl(p);for(zt(Z.beforeSanitizeShadowDOM,p,null);T=N.nextNode();)zt(Z.uponSanitizeShadowNode,T,null),Pl(T),Ol(T),T.content instanceof i&&Yr(T.content);zt(Z.afterSanitizeShadowDOM,p,null)},Bs=function(p){if(p.nodeType===Rn.element&&p.shadowRoot instanceof i){const ce=p.shadowRoot;Bs(ce),Yr(ce)}const T=p.childNodes;if(!T)return;const N=[];kn(T,ce=>{Sn(N,ce)});for(const ce of N)Bs(ce)};return t.sanitize=function(q){let p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},T=null,N=null,ce=null,Ne=null;if(Ur=!q,Ur&&(q=""),typeof q!="string"&&!Kr(q)&&(q=Nf(q),typeof q!="string"))throw Ds("dirty is not a string, aborting");if(!t.isSupported)return q;if(I||Wr(p),t.removed=[],typeof q=="string"&&(he=!1),he){const gt=q.nodeName;if(typeof gt=="string"){const _t=Le(gt);if(!ae[_t]||ht[_t])throw Ds("root node is forbidden and cannot be sanitized in-place")}Bs(q)}else if(q instanceof a)T=Rl(""),N=T.ownerDocument.importNode(q,!0),N.nodeType===Rn.element&&N.nodeName==="BODY"||N.nodeName==="HTML"?T=N:T.appendChild(N),Bs(N);else{if(!A&&!k&&!_&&q.indexOf("<")===-1)return z&&U?z.createHTML(q):q;if(T=Rl(q),!T)return A?null:U?O:""}T&&R&&vt(T.firstChild);const Me=Cl(he?q:T);for(;ce=Me.nextNode();)Pl(ce),Ol(ce),ce.content instanceof i&&Yr(ce.content);if(he)return q;if(A){if(k){T.normalize();let gt=T.innerHTML;kn([Se,Ue,te],_t=>{gt=En(gt,_t," ")}),T.innerHTML=gt}if(S)for(Ne=se.call(T.ownerDocument);T.firstChild;)Ne.appendChild(T.firstChild);else Ne=T;return(ge.shadowroot||ge.shadowrootmode)&&(Ne=D.call(s,Ne,!0)),Ne}let st=_?T.outerHTML:T.innerHTML;return _&&ae["!doctype"]&&T.ownerDocument&&T.ownerDocument.doctype&&T.ownerDocument.doctype.name&&ze(Kf,T.ownerDocument.doctype.name)&&(st=" -`+st),k&&kn([Se,Ue,te],gt=>{st=En(st,gt," ")}),z&&U?z.createHTML(st):st},t.setConfig=function(){let q=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Wr(q),I=!0},t.clearConfig=function(){Cn=null,I=!1},t.isValidAttribute=function(q,p,T){Cn||Wr({});const N=Le(q),ce=Le(p);return Il(N,ce,T)},t.addHook=function(q,p){typeof p=="function"&&Sn(Z[q],p)},t.removeHook=function(q,p){if(p!==void 0){const T=Pf(Z[q],p);return T===-1?void 0:If(Z[q],T,1)[0]}return ll(Z[q])},t.removeHooks=function(q){Z[q]=[]},t.removeAllHooks=function(){Z=bl()},t}var Qf=xl();const Jf={key:1,class:"flex min-w-0 max-w-[calc(100%-2.5rem)] flex-1 flex-col max-[600px]:max-w-[calc(100%-2.25rem)]"},ep={key:0,class:"flex w-fit flex-col items-start gap-1"},tp=["aria-label"],np={class:"inline-flex items-center gap-1.5"},sp={class:"text-[8px] font-semibold tracking-[0.12em] uppercase text-[#3a67c9]"},rp={key:1,class:"flex w-fit max-w-full flex-col items-start gap-2"},ip={class:"chat-card relative w-fit max-w-full whitespace-pre-line rounded-[10px_10px_10px_3px] px-4 py-3 text-xs leading-relaxed wrap-anywhere text-slate-900"},op=["innerHTML"],lp={key:0,class:"pointer-events-none absolute inset-x-0 bottom-0 h-14 rounded-b-[10px] bg-linear-to-t from-white via-white/92 to-white/0","aria-hidden":"true"},ap={key:0,class:"flex flex-wrap items-center gap-2"},up=["title","aria-label"],cp={key:1,class:"flex flex-wrap items-center"},fp=["title","aria-label"],pp={viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},dp=["innerHTML"],yl={__name:"ChatMessage",props:{message:{type:Object,required:!0},autoReadEnabled:{type:Boolean,default:!1},ttsConfig:{type:Object,default:()=>({enableVoiceChat:!1,pollyAvailable:!1,usePolly:!0,voiceId:"Zayd"})}},setup(e){const t=e,n=J(!1),s=J(null),r=J(!1),i=J(!1),o=Ee(()=>typeof window!="undefined"&&"speechSynthesis"in window&&"SpeechSynthesisUtterance"in window);function a(O){typeof window!="undefined"&&window.dispatchEvent(new CustomEvent("changai-tts-provider",{detail:{provider:O}}))}function l(O){if(typeof O!="string")return"";const P=O.replace(/[\u{1F000}-\u{1FFFF}]/gu,"").replace(/[\u{2600}-\u{26FF}]/gu,"").replace(/[\u{2700}-\u{27BF}]/gu,"").replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/#{1,6}\s+/g,"").replace(/[-*+]\s+/g,"").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/\s+/g," ");return P.includes("<")?(new DOMParser().parseFromString(O,"text/html").body.textContent||"").replace(/\s+/g," ").trim():P.trim()}function f(){o.value&&window.speechSynthesis.cancel(),s.value&&(s.value.pause(),s.value.src="",s.value=null),n.value=!1}function u(){var O,P,ee;if(i.value=!i.value,i.value)f();else{const V=M.value;if(!t.autoReadEnabled||!((O=t.ttsConfig)!=null&&O.enableVoiceChat)||!V||E())return;if((P=t.ttsConfig)!=null&&P.pollyAvailable&&((ee=t.ttsConfig)!=null&&ee.usePolly)){g(V).catch(se=>{d(V)});return}d(V)}}function d(O){if(!o.value||!O)return;window.dispatchEvent(new CustomEvent("changai-tts-stop")),window.speechSynthesis.cancel();const P=new SpeechSynthesisUtterance(O);P.rate=1,P.pitch=1,P.onend=()=>{n.value=!1},P.onerror=()=>{n.value=!1},n.value=!0,a("browser"),window.speechSynthesis.speak(P)}async function g(O){var fe;const P=await Oc(O,((fe=t.ttsConfig)==null?void 0:fe.voiceId)||"Zayd");if(!(P!=null&&P.ok)||!(P!=null&&P.audio_base64))throw new Error((P==null?void 0:P.error)||"Polly synthesis failed");window.dispatchEvent(new CustomEvent("changai-tts-stop")),f();const ee=(P==null?void 0:P.mime_type)||"audio/mpeg",V=new Audio(`data:${ee};base64,${P.audio_base64}`);s.value=V,n.value=!0;let se=!1;V.onplay=()=>{se=!0,a("polly")},V.onended=()=>{s.value===V&&(s.value=null),n.value=!1},V.onerror=()=>{s.value===V&&(s.value=null),n.value=!1},await V.play(),se||a("polly")}function y(){f()}function E(){var O;return!!((O=t.message)!=null&&O.isStatus)}function x(O){const P=O.target.closest("a");!P||!P.href||(O.preventDefault(),O.stopPropagation(),window.open(P.href,"_blank","noopener,noreferrer"))}const M=Ee(()=>{var O;return l(((O=t.message)==null?void 0:O.text)||"")}),m=Ee(()=>{var O;return((O=t.message)==null?void 0:O.role)!=="user"&&E()}),H=Ee(()=>{var O;return(O=t.message)!=null&&O.isStatus?t.message.statusType==="support"?"Sending to support":M.value||"Thinking":""}),Y=Ee(()=>{var ee;if(((ee=t.message)==null?void 0:ee.role)==="user"||m.value)return!1;const O=M.value,P=O.split(/\n+/).filter(Boolean).length;return O.length>520||P>8}),$=Ee(()=>{var O,P;return((O=t.message)==null?void 0:O.role)!=="user"&&!m.value&&((P=t.ttsConfig)==null?void 0:P.enableVoiceChat)}),z=Ee(()=>{var P;const O=((P=t.message)==null?void 0:P.text)||"";return Qf.sanitize(xe.parse(O))});return on(()=>t.message.text,async(O,P)=>{var se,fe,D;if(!t.autoReadEnabled||t.message.role==="user"||i.value)return;if(!((se=t.ttsConfig)!=null&&se.enableVoiceChat)){a("off");return}const ee=l(O);if(!ee||E())return;const V=l(P||"");if(ee!==V){if((fe=t.ttsConfig)!=null&&fe.pollyAvailable&&((D=t.ttsConfig)!=null&&D.usePolly))try{await g(ee);return}catch{}d(ee)}}),on(()=>t.message.text,()=>{r.value=!1,i.value=!1}),zn(()=>{typeof window!="undefined"&&window.addEventListener("changai-tts-stop",y)}),ys(()=>{typeof window!="undefined"&&window.removeEventListener("changai-tts-stop",y),n.value&&f()}),(O,P)=>(F(),W("div",{class:we(["motion-safe:animate-fade-rise flex w-full gap-1.5",e.message.role==="user"?"flex-col items-end":"items-start"])},[e.message.role!=="user"?(F(),Et(Fo,{key:0})):qe("",!0),e.message.role!=="user"?(F(),W("div",Jf,[m.value?(F(),W("div",ep,[w("div",{class:"chat-card inline-flex w-fit rounded-[10px_10px_10px_3px] px-3 py-2",role:"status","aria-live":"polite","aria-label":H.value},[w("div",np,[P[1]||(P[1]=w("span",{class:"relative inline-flex h-4 w-4 shrink-0 items-center justify-center"},[w("span",{class:"absolute inset-0 rounded-full border border-transparent border-t-[#4b89ff] border-r-[#4b89ff]/70 animate-gemini-arc"}),w("svg",{viewBox:"0 0 24 24",class:"relative h-3 w-3 text-[#4b89ff] animate-gemini-spark","aria-hidden":"true"},[w("path",{fill:"currentColor",d:"M12 2.8c.52 3.22 1.6 5.66 3.22 7.28 1.62 1.62 4.06 2.7 7.28 3.22-3.22.52-5.66 1.6-7.28 3.22-1.62 1.62-2.7 4.06-3.22 7.28-.52-3.22-1.6-5.66-3.22-7.28-1.62-1.62-4.06-2.7-7.28-3.22 3.22-.52 5.66-1.6 7.28-3.22 1.62-1.62 2.7-4.06 3.22-7.28Z"})])],-1)),w("span",sp,Je(H.value),1)])],8,tp)])):(F(),W("div",rp,[w("div",ip,[w("div",{class:we(["overflow-x-auto",Y.value&&!r.value?"max-h-48 overflow-y-hidden":""]),innerHTML:z.value,onClick:x},null,10,op),Y.value&&!r.value?(F(),W("div",lp)):qe("",!0)]),Y.value?(F(),W("div",ap,[w("button",{type:"button",class:"inline-flex items-center rounded-full border border-slate-200 bg-white px-2.5 py-1 text-[10px] font-semibold uppercase tracking-[0.08em] text-slate-600 transition-colors duration-200 hover:border-brand-200 hover:text-brand-600",title:r.value?"Collapse response":"Expand response","aria-label":r.value?"Collapse response":"Expand response",onClick:P[0]||(P[0]=ee=>r.value=!r.value)},Je(r.value?"Collapse":"Expand"),9,up)])):qe("",!0),$.value?(F(),W("div",cp,[w("button",{type:"button",class:we(["inline-flex h-8 w-8 items-center justify-center rounded-full border transition-colors duration-200",i.value?"border-red-200 bg-red-50 text-red-600 hover:border-red-300 hover:bg-red-100":"border-green-200 bg-green-50 text-green-600 hover:border-green-300 hover:bg-green-100"]),title:i.value?"Unmute voice playback":"Mute voice playback","aria-label":i.value?"Unmute voice playback":"Mute voice playback",onClick:u},[(F(),W("svg",pp,[P[6]||(P[6]=w("path",{d:"M11 5L6 9H3v6h3l5 4V5Z"},null,-1)),i.value?(F(),W(He,{key:0},[P[2]||(P[2]=w("path",{d:"M15 9l4 6"},null,-1)),P[3]||(P[3]=w("path",{d:"M19 9l-4 6"},null,-1))],64)):(F(),W(He,{key:1},[P[4]||(P[4]=w("path",{d:"M15 10a3 3 0 0 1 0 4"},null,-1)),P[5]||(P[5]=w("path",{d:"M17.5 7.5a6 6 0 0 1 0 9"},null,-1))],64))]))],10,fp)])):qe("",!0)]))])):(F(),W("div",{key:2,class:"w-fit max-w-[85%] whitespace-pre-line rounded-[13px_13px_3px_13px] bg-linear-to-br from-brand-500 to-brand-600 px-4 py-3 text-[11px] leading-relaxed wrap-anywhere text-white shadow-[0_14px_30px_-18px_rgba(109,79,194,0.85)] max-[600px]:max-w-[88%]",innerHTML:z.value},null,8,dp))],2))}},hp={class:"flex flex-col gap-4 sm:gap-5"},gp={class:"motion-safe:animate-fade-rise flex w-full items-start gap-1.5"},mp={__name:"ChatTab",props:{messages:{type:Array,required:!0},autoReadEnabled:{type:Boolean,default:!1},ttsConfig:{type:Object,required:!0}},setup(e){return(t,n)=>(F(),W("div",hp,[w("div",gp,[Oe(Fo),n[0]||(n[0]=w("p",{class:"w-fit max-w-[calc(100%-2.5rem)] whitespace-pre-line rounded-[10px_10px_10px_3px] bg-brand-50 px-4 py-3 text-xs leading-relaxed wrap-anywhere text-slate-900 max-[600px]:max-w-[calc(100%-2.25rem)]"},[Ss(" Hello there 👋 I am ChangAI from "),w("a",{target:"_blank",href:"https://erpgulf.com",rel:"noopener noreferrer",style:{color:"#1e90ff"}},"ERPGulf.com"),Ss(", your ERP assistant."),w("br"),w("a",{target:"_blank",href:"https://app.erpgulf.com/en/articles/chang-ai-quick-start-guide",rel:"noopener noreferrer",style:{color:"#1e90ff"}},"ChangAI Quick Start Guide - Click here.")],-1))]),(F(!0),W(He,null,ws(e.messages,(s,r)=>(F(),Et(yl,{key:r,message:s,autoReadEnabled:e.autoReadEnabled,ttsConfig:e.ttsConfig},null,8,["message","autoReadEnabled","ttsConfig"]))),128))]))}};function wl(e){try{return JSON.stringify(e,null,2)}catch{return String(e)}}function vl(e){var t,n;return(e==null?void 0:e.message)||((t=e==null?void 0:e.responseJSON)==null?void 0:t.exception)||((n=e==null?void 0:e.responseJSON)==null?void 0:n.message)||(e==null?void 0:e.responseText)||String(e)}function bp(e){return typeof e=="string"?e:e&&typeof e=="object"?e.error?`⚠️ ${e.error}`:e.answer||e.text||"":""}const xp={key:0,class:"rounded-lg bg-brand-50 px-4 py-3 text-xs text-black"},yp={class:"whitespace-pre-wrap wrap-anywhere text-[11px] leading-relaxed text-black"},wp={key:1,class:"mb-3 min-w-0 overflow-x-auto rounded-lg bg-brand-50 p-2 text-[11px]"},vp={class:"whitespace-pre-wrap wrap-anywhere text-[11px] leading-relaxed text-black"},_p={__name:"DebugTab",props:{logs:{type:Array,required:!0},currentDebug:{type:Object,default:null}},setup(e){const t=new Set(["gemini_json_content","private_key","private_key_id","client_secret","client_id","aws_access_key","aws_secret_key","api_key","token","access_token","refresh_token","password","secret","authorization","embed_version_id","llm_version_id","entity_retriever","retriever","deploy_url","support_api_url","get_ticket_details_url"]);function n(r,i=0){if(i>10||r===null||r===void 0||typeof r=="string"||typeof r=="number"||typeof r=="boolean")return r;if(Array.isArray(r))return r.map(o=>n(o,i+1));if(typeof r=="object"){const o={};for(const[a,l]of Object.entries(r))t.has(a.toLowerCase())||(o[a]=n(l,i+1));return o}return r}function s(r){return wl(n(r))}return(r,i)=>(F(),W("div",null,[e.logs.length===0?(F(),W("p",xp,"No debug data yet.")):qe("",!0),(F(!0),W(He,null,ws(e.logs,(o,a)=>(F(),W("div",{key:a,class:"mb-3 min-w-0 overflow-x-auto rounded-lg bg-gray-100 p-2 text-[11px]"},[w("pre",yp,Je(s(o)),1)]))),128)),e.currentDebug?(F(),W("div",wp,[w("pre",vp,Je(s(e.currentDebug)),1)])):qe("",!0)]))}},Tp={class:"flex flex-col gap-4 sm:gap-5"},kp={key:0,class:"chat-card motion-safe:animate-fade-rise rounded-lg px-4 py-3 text-xs text-slate-900"},Sp={__name:"SupportTab",props:{messages:{type:Array,required:!0},autoReadEnabled:{type:Boolean,default:!1},ttsConfig:{type:Object,required:!0}},setup(e){return(t,n)=>(F(),W("div",Tp,[e.messages.length===0?(F(),W("p",kp,"Send a message to Support.")):qe("",!0),(F(!0),W(He,null,ws(e.messages,(s,r)=>(F(),Et(yl,{key:r,message:s,autoReadEnabled:e.autoReadEnabled,ttsConfig:e.ttsConfig},null,8,["message","autoReadEnabled","ttsConfig"]))),128))]))}},Ep={class:"flex flex-col gap-4"},Ap={class:"chat-card motion-safe:animate-fade-rise rounded-xl p-4"},Rp={class:"flex items-start justify-between gap-4"},Cp=["aria-pressed","title"],Pp={class:"chat-card motion-safe:animate-fade-rise rounded-xl p-4"},Ip={class:"flex items-start justify-between gap-4"},Mp={class:"mt-2 text-[11px] text-slate-500"},Op={key:0,class:"mt-1 text-[11px] text-slate-500"},Lp={key:1,class:"mt-1 text-[11px] text-slate-500"},$p=["aria-pressed","disabled"],Dp={key:0,class:"mt-3 rounded-md bg-amber-50 px-2.5 py-2 text-xs text-amber-700"},Np={key:1,class:"mt-3 rounded-md bg-amber-50 px-2.5 py-2 text-xs text-amber-700"},Fp={class:"chat-card motion-safe:animate-fade-rise rounded-xl p-4"},Bp={class:"flex items-start justify-between gap-4"},Hp=["aria-pressed","title"],zp={class:"chat-card motion-safe:animate-fade-rise rounded-xl p-4"},Up={class:"flex items-start justify-between gap-4"},jp=["aria-pressed","title"],Vp={__name:"SettingsTab",props:{autoReadEnabled:{type:Boolean,required:!0},ttsConfig:{type:Object,required:!0},settings:{type:Object,default:null},debugEnabled:{type:Boolean,default:!1},sendNonERPtoaiEnabled:{type:Boolean,default:!1}},emits:["toggleAutoRead","togglePollyPreference","toggleDebug","toggleSendNonERP"],setup(e){const t=e,n=Ee(()=>{var s,r;return(s=t.ttsConfig)!=null&&s.enableVoiceChat?(r=t.ttsConfig)!=null&&r.pollyAvailable?"Available":"Unavailable":"Voice disabled on server"});return(s,r)=>{var i,o,a,l,f,u,d,g,y,E,x,M,m,H,Y;return F(),W("div",Ep,[r[10]||(r[10]=w("div",{class:"chat-card motion-safe:animate-fade-rise rounded-xl p-4 text-slate-900"},[w("h3",{class:"text-sm font-semibold tracking-[0.01em]"},"Speech Settings"),w("p",{class:"mt-1 text-xs leading-relaxed text-slate-600"},"These controls apply only inside this chatbot box for the current browser session.")],-1)),w("div",Ap,[w("div",Rp,[r[4]||(r[4]=w("div",null,[w("p",{class:"text-sm font-semibold text-slate-900"},"Auto Read Replies"),w("p",{class:"mt-1 text-xs text-slate-600"},"Automatically read bot replies aloud.")],-1)),w("button",{class:we(["group relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200",e.autoReadEnabled?"bg-emerald-500/95":"bg-slate-300"]),"aria-pressed":e.autoReadEnabled?"true":"false",title:e.autoReadEnabled?"Disable auto read":"Enable auto read",onClick:r[0]||(r[0]=$=>s.$emit("toggleAutoRead"))},[w("span",{class:we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200",e.autoReadEnabled?"left-[1.45rem]":"left-0.5"])},null,2)],10,Cp)]),w("p",{class:we(["mt-3 text-[11px] font-medium",e.autoReadEnabled?"text-emerald-700":"text-slate-500"])},Je(e.autoReadEnabled?"Auto read is active.":"Auto read is currently off."),3)]),w("div",Pp,[w("div",Ip,[w("div",null,[r[5]||(r[5]=w("p",{class:"text-sm font-semibold text-slate-900"},"Use Amazon Polly",-1)),r[6]||(r[6]=w("p",{class:"mt-1 text-xs text-slate-600"},"Use Polly when available; otherwise browser speech is used automatically.",-1)),w("p",Mp,"Availability: "+Je(n.value),1),(i=e.settings)!=null&&i.aws_region?(F(),W("p",Op,"Region: "+Je(e.settings.aws_region),1)):qe("",!0),(o=e.ttsConfig)!=null&&o.voiceId?(F(),W("p",Lp,"Voice: "+Je(e.ttsConfig.voiceId),1)):qe("",!0)]),w("button",{class:we(["relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200 disabled:cursor-not-allowed disabled:opacity-55",(a=e.ttsConfig)!=null&&a.usePolly&&((l=e.ttsConfig)!=null&&l.enableVoiceChat)&&((f=e.ttsConfig)!=null&&f.pollyAvailable)?"bg-emerald-500/95":"bg-slate-300"]),"aria-pressed":(u=e.ttsConfig)!=null&&u.usePolly&&((d=e.ttsConfig)!=null&&d.enableVoiceChat)&&((g=e.ttsConfig)!=null&&g.pollyAvailable)?"true":"false",disabled:!((y=e.ttsConfig)!=null&&y.pollyAvailable)||!((E=e.ttsConfig)!=null&&E.enableVoiceChat),onClick:r[1]||(r[1]=$=>s.$emit("togglePollyPreference"))},[w("span",{class:we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200",(x=e.ttsConfig)!=null&&x.usePolly&&((M=e.ttsConfig)!=null&&M.enableVoiceChat)&&((m=e.ttsConfig)!=null&&m.pollyAvailable)?"left-[1.45rem]":"left-0.5"])},null,2)],10,$p)]),(H=e.ttsConfig)!=null&&H.enableVoiceChat?(Y=e.ttsConfig)!=null&&Y.pollyAvailable?qe("",!0):(F(),W("p",Np,"Polly is not available for this site. Browser speech will be used.")):(F(),W("p",Dp,"Voice chat is disabled in ChangAI Settings."))]),w("div",Fp,[w("div",Bp,[w("div",null,[r[7]||(r[7]=w("p",{class:"text-sm font-semibold text-slate-900"},"Enable Debug Tab",-1)),r[8]||(r[8]=w("p",{class:"mt-1 text-xs text-slate-600"}," Show or hide the Debug tab inside this chatbot. ",-1)),w("p",{class:we(["mt-2 text-[11px] font-medium",e.debugEnabled?"text-emerald-700":"text-slate-500"])},Je(e.debugEnabled?"Debug tab is active.":"Debug tab is currently off."),3)]),w("button",{type:"button",class:we(["relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200",e.debugEnabled?"bg-emerald-500/95":"bg-slate-300"]),"aria-pressed":e.debugEnabled?"true":"false",title:e.debugEnabled?"Disable debug tab":"Enable debug tab",onClick:r[2]||(r[2]=$=>s.$emit("toggleDebug"))},[w("span",{class:we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200",e.debugEnabled?"left-[1.45rem]":"left-0.5"])},null,2)],10,Hp)])]),w("div",zp,[w("div",Up,[r[9]||(r[9]=w("div",null,[w("p",{class:"text-sm font-semibold text-slate-900"},"Send non-ERP questions directly to AI"),w("p",{class:"mt-1 text-xs text-slate-600"},"Questions unrelated to your ERP will skip the system and go straight to AI")],-1)),w("button",{class:we(["group relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200",e.sendNonERPtoaiEnabled?"bg-emerald-500/95":"bg-slate-300"]),"aria-pressed":e.sendNonERPtoaiEnabled?"true":"false",title:e.sendNonERPtoaiEnabled?"Non-ERP questions are being sent directly to AI":"Enable direct AI reply for non-ERP questions",onClick:r[3]||(r[3]=$=>s.$emit("toggleSendNonERP"))},[w("span",{class:we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200",e.sendNonERPtoaiEnabled?"left-[1.45rem]":"left-0.5"])},null,2)],10,jp)]),w("p",{class:we(["mt-3 text-[11px] font-medium",e.sendNonERPtoaiEnabled?"text-emerald-700":"text-slate-500"])},Je(e.sendNonERPtoaiEnabled?"Non-ERP questions are now routed directly to AI":"Direct AI routing is currently off"),3)])])}}},qp={key:0,class:"pointer-events-none absolute -top-14 left-0 right-0 z-20 flex justify-center px-2",role:"status","aria-live":"polite"},Wp={__name:"StatusToast",props:{visible:{type:Boolean,required:!0},message:{type:String,default:""},type:{type:String,default:"info"},dismissible:{type:Boolean,default:!0}},emits:["close"],setup(e){const t=e,n=Ee(()=>t.type==="error"?"bg-red-50 text-red-700 ring-red-200":(t.type==="listening","bg-blue-50 text-blue-700 ring-blue-200")),s=Ee(()=>t.type==="error"?"bg-red-500":t.type==="listening"?"bg-blue-500 animate-pulse":"bg-blue-500");return(r,i)=>(F(),Et(Pu,{"enter-active-class":"transition duration-200 ease-out","enter-from-class":"translate-y-1 opacity-0","enter-to-class":"translate-y-0 opacity-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"translate-y-0 opacity-100","leave-to-class":"translate-y-1 opacity-0"},{default:Di(()=>[e.visible?(F(),W("div",qp,[w("div",{class:we(["pointer-events-auto flex max-w-[92%] items-start gap-2 rounded-lg px-3 py-2 text-xs shadow-lg ring-1",n.value])},[w("span",{class:we(["mt-0.5 h-2 w-2 shrink-0 rounded-full",s.value])},null,2),w("span",null,Je(e.message),1),e.dismissible?(F(),W("button",{key:0,type:"button",class:"ml-1 appearance-none border-0 text-current/80 transition hover:text-current focus:outline-none","aria-label":"Dismiss notification",onClick:i[0]||(i[0]=o=>r.$emit("close"))}," × ")):qe("",!0)],2)])):qe("",!0)]),_:1}))}},Gp={class:"relative w-full"},Kp=["placeholder","disabled"],Yp=["title","aria-label","disabled"],Zp={key:0,viewBox:"0 0 24 24",width:"16",height:"16",fill:"currentColor","aria-hidden":"true"},Xp={key:1,viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},Qp={key:2,viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true",class:"animate-spin"},Jp=["title","aria-label","disabled"],ed={key:0,viewBox:"0 0 24 24",width:"18",height:"18",fill:"none","aria-hidden":"true",class:"text-rose-600 motion-safe:animate-stop-button-pulse"},td={key:1,viewBox:"0 0 24 24",width:"16",height:"16",fill:"currentColor","aria-hidden":"true"},nd={__name:"ChatForm",props:{placeholder:{type:String,default:"Message..."},disabled:{type:Boolean,default:!1},isAwaitingResponse:{type:Boolean,default:!1}},emits:["submit","cancel"],setup(e,{expose:t,emit:n}){const s=e,r=n,i=J(""),o=J(null),a=J(!1),l=J(!1),f=J(!1),u=J(!1),d=J(!1),g=J(!1),y=J(!1),E=J(""),x=J("info"),M=J("Voice input is unavailable in this browser/context.");let m=null,H=null,Y=null;const $=J(""),z=J(!1),O=Ee(()=>f.value?"Requesting microphone permission...":u.value?"Starting voice input...":d.value?"Stopping voice input...":l.value?a.value?"Stop voice input":"Start voice input":"Voice input is unavailable in this browser/context"),P=Ee(()=>s.isAwaitingResponse?"Stop response":"Send"),ee=Ee(()=>s.isAwaitingResponse?!1:s.disabled||!i.value.trim()),V=Ee(()=>s.isAwaitingResponse?"bg-white border border-rose-100 shadow-[0_8px_20px_-12px_rgba(159,18,57,0.35)] hover:bg-rose-50":"bg-linear-to-br from-brand-500 to-brand-600 text-white shadow-[0_10px_24px_-16px_rgba(109,79,194,0.85)] hover:from-brand-600 hover:to-violet-700");function se(){return typeof window=="undefined"?null:window.SpeechRecognition||window.webkitSpeechRecognition||null}function fe(){var ae;const re=se(),B=typeof window!="undefined"?window.isSecureContext:!1,de=typeof navigator!="undefined"&&!!((ae=navigator.mediaDevices)!=null&&ae.getUserMedia);l.value=!!(re&&B&&de),B?(!de||!re)&&(M.value="Voice input is not supported in this browser."):M.value="Voice input requires HTTPS (or localhost).",re&&l.value&&(m=new re,m.continuous=!0,m.interimResults=!0,m.lang=typeof navigator!="undefined"&&navigator.language||"en-US",m.onstart=()=>{a.value=!0,u.value=!1,d.value=!1,D(),C("Listening... Tap mic to stop","listening",{persistent:!0,key:"listening"})},m.onend=()=>{a.value=!1,u.value=!1,d.value=!1,D(),$.value==="listening"&&pe(),z.value&&(z.value=!1,Ge())},m.onerror=ve=>{if(a.value=!1,u.value=!1,d.value=!1,D(),z.value=!1,(ve==null?void 0:ve.error)==="not-allowed"||(ve==null?void 0:ve.error)==="service-not-allowed"){C("Microphone permission denied. Please allow microphone access in browser settings.","error");return}if((ve==null?void 0:ve.error)==="audio-capture"){C("No microphone detected. Please connect a microphone and try again.","error");return}if((ve==null?void 0:ve.error)==="no-speech"){C("No speech detected. Try speaking a bit louder.","info");return}C("Voice input failed. Please try again.","error")},m.onresult=ve=>{let ge="";for(let nt=ve.resultIndex;nt{if(m&&!(!a.value&&!d.value))try{m.abort()}catch{d.value=!1,z.value=!1}},1200)}}function Se(){if(!l.value||!m){C(M.value,"error");return}if(a.value||u.value||d.value){Z({submitAfterStop:a.value});return}te()}async function Ue(){var re;if(g.value)return!0;if(!((re=navigator.mediaDevices)!=null&&re.getUserMedia))return C("Microphone API is unavailable in this browser.","error"),!1;f.value=!0,C("Requesting microphone permission...","info",{persistent:!0,key:"requesting"});try{return(await navigator.mediaDevices.getUserMedia({audio:!0})).getTracks().forEach(de=>de.stop()),g.value=!0,!0}catch(B){return(B==null?void 0:B.name)==="NotAllowedError"||(B==null?void 0:B.name)==="SecurityError"?C("Microphone permission denied. Please allow it and try again.","error"):(B==null?void 0:B.name)==="NotFoundError"?C("No microphone found on this device.","error"):C("Unable to access microphone. Please check browser permissions.","error"),!1}finally{f.value=!1,$.value==="requesting"&&pe()}}async function te(){var B;if(!(!m||a.value||u.value||d.value||!await Ue()||!m)){z.value=!1,(B=o.value)==null||B.focus(),u.value=!0;try{m.start()}catch(de){u.value=!1,d.value=!1,(de==null?void 0:de.name)!=="InvalidStateError"&&C("Unable to start voice input. Please try again.","error")}}}function C(re,B="info",de={}){const{duration:ae=4200,persistent:ve=!1,key:ge=""}=de;E.value=re,x.value=B,$.value=ge,y.value=!0,H&&clearTimeout(H),ve||(H=setTimeout(()=>{y.value=!1,$.value=""},ae))}function pe(){y.value=!1,$.value="",H&&(clearTimeout(H),H=null)}function Ge(){if(s.isAwaitingResponse){r("cancel");return}const re=i.value.trim();re&&((a.value||u.value||d.value)&&m&&Z({submitAfterStop:!1}),r("submit",re),i.value="")}return t({focus:()=>{var re;return(re=o.value)==null?void 0:re.focus()}}),zn(()=>{fe()}),ys(()=>{if(m&&(a.value||u.value||d.value)){z.value=!1,D();try{m.abort()}catch{}}D(),pe()}),(re,B)=>(F(),W("div",Gp,[w("form",{class:"group flex min-h-11 items-center gap-2 rounded-full border border-slate-200/90 bg-white/95 px-3 shadow-[0_12px_26px_-20px_rgba(15,23,42,0.7)] transition-all duration-250 focus-within:-translate-y-0.5 focus-within:border-brand-200 focus-within:shadow-[0_18px_30px_-20px_rgba(13,110,253,0.5)] focus-within:ring-2 focus-within:ring-brand-500/25",style:{"border-radius":"9999px"},autocomplete:"off",onSubmit:pt(Ge,["prevent"]),onClick:B[5]||(B[5]=pt(()=>{},["stop"])),onMousedown:B[6]||(B[6]=pt(()=>{},["stop"])),onKeydown:B[7]||(B[7]=pt(()=>{},["stop"])),onKeyup:B[8]||(B[8]=pt(()=>{},["stop"]))},[Pa(w("input",{ref_key:"inputRef",ref:o,type:"text","onUpdate:modelValue":B[0]||(B[0]=de=>i.value=de),class:"h-11 w-full border-none bg-transparent text-sm font-medium text-slate-800 placeholder:text-slate-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",placeholder:e.disabled?"Waiting for response...":e.placeholder,disabled:e.disabled,required:"",onKeydown:B[1]||(B[1]=pt(()=>{},["stop"])),onKeyup:B[2]||(B[2]=pt(()=>{},["stop"])),onKeypress:B[3]||(B[3]=pt(()=>{},["stop"])),onInput:B[4]||(B[4]=pt(()=>{},["stop"]))},null,40,Kp),[[Xu,i.value]]),w("button",{type:"button",class:we(["grid h-8 w-8 shrink-0 appearance-none place-items-center rounded-full border border-transparent text-slate-600 transition-all duration-200 hover:-translate-y-0.5 hover:border-slate-200 hover:bg-slate-100 hover:text-slate-900 focus:outline-none disabled:cursor-not-allowed disabled:opacity-40",a.value?"border-red-200 bg-red-100 text-red-600 shadow-[0_10px_20px_-18px_rgba(220,38,38,0.9)] hover:bg-red-100 hover:text-red-600":""]),style:{"border-radius":"9999px"},title:O.value,"aria-label":O.value,disabled:e.disabled||!l.value||f.value||u.value||d.value,onClick:Se},[a.value&&!f.value?(F(),W("svg",Zp,B[9]||(B[9]=[w("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"},null,-1)]))):f.value?(F(),W("svg",Qp,B[11]||(B[11]=[w("circle",{cx:"12",cy:"12",r:"9",opacity:"0.3"},null,-1),w("path",{d:"M21 12a9 9 0 0 1-9 9"},null,-1)]))):(F(),W("svg",Xp,B[10]||(B[10]=[w("path",{d:"M12 3a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V6a3 3 0 0 0-3-3z"},null,-1),w("path",{d:"M19 10v2a7 7 0 0 1-14 0v-2"},null,-1),w("path",{d:"M12 19v3"},null,-1)])))],10,Yp),w("button",{type:"submit",title:P.value,"aria-label":P.value,class:we(["grid h-8 w-8 shrink-0 appearance-none place-items-center rounded-full border-0 transition-all duration-200 hover:-translate-y-0.5 focus:outline-none disabled:cursor-not-allowed disabled:opacity-40",V.value]),style:{"border-radius":"9999px"},disabled:ee.value},[e.isAwaitingResponse?(F(),W("svg",ed,B[12]||(B[12]=[w("circle",{cx:"12",cy:"12",r:"8",stroke:"currentColor","stroke-width":"2.1",class:"opacity-95"},null,-1),w("rect",{x:"9",y:"9",width:"6",height:"6",rx:"1.35",fill:"currentColor"},null,-1)]))):(F(),W("svg",td,B[13]||(B[13]=[w("path",{d:"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z"},null,-1)])))],10,Jp)],32),Oe(Wp,{visible:y.value,message:E.value,type:x.value,dismissible:x.value!=="listening",onClose:pe},null,8,["visible","message","type","dismissible"])]))}},sd={class:"relative overflow-hidden bg-linear-to-br from-brand-600 via-brand-500 to-violet-400"},rd={class:"min-w-0"},id={key:1,class:"border-t border-slate-200/80 bg-white/90 px-3 py-3 pb-[calc(12px+env(safe-area-inset-bottom))] backdrop-blur-sm sm:px-4 sm:py-4"},od=56,ld={__name:"ChatbotPopup",props:{isOpen:{type:Boolean,required:!0},activeTab:{type:String,required:!0},debugEnabled:{type:Boolean,default:!1},sendNonERPtoaiEnabled:{type:Boolean,default:!1},chatHistory:{type:Array,required:!0},debugLogs:{type:Array,required:!0},currentDebug:{type:Object,default:null},supportHistory:{type:Array,required:!0},autoReadEnabled:{type:Boolean,required:!0},ttsConfig:{type:Object,required:!0},activeTtsProvider:{type:String,required:!0},settings:{type:Object,default:null},isAwaitingChatResponse:{type:Boolean,default:!1},isAwaitingSupportResponse:{type:Boolean,default:!1}},emits:["close","submit","cancelResponse","update:activeTab","toggleAutoRead","togglePollyPreference","toggleDebug","toggleSendNonERP"],setup(e,{expose:t,emit:n}){const s=e,r=n,i=J(null),o=J(null),a=J(s.activeTab),l=J("default"),f=J(!1),u=Ee(()=>a.value==="support"?s.isAwaitingSupportResponse:a.value==="chat"?s.isAwaitingChatResponse:!1);function d(){const M=i.value;if(!s.isOpen||!M){f.value=!1;return}const m=M.scrollHeight-M.clientHeight;if(m<=4){f.value=!1;return}const H=m-M.scrollTop;f.value=H>od}function g(){const M=i.value;M&&(M.scrollTo({top:M.scrollHeight,behavior:"smooth"}),setTimeout(()=>{d()},220))}function y(){St(()=>{d()})}function E(){if(l.value==="default"){l.value="half";return}if(l.value==="half"){l.value="full";return}l.value="default"}const x=Ee(()=>{const M="chat-shell fixed z-[9999] flex min-h-0 flex-col overflow-hidden border border-slate-200/80 shadow-[0_32px_80px_-44px_rgba(2,6,23,0.7),0_18px_40px_-24px_rgba(15,23,42,0.45)] transition-all duration-300 ease-out origin-bottom-right",m=s.isOpen?"pointer-events-auto opacity-100 translate-x-0 translate-y-0 scale-100 motion-safe:animate-surface-in":"pointer-events-none opacity-0 translate-x-1/5 translate-y-8 scale-95";return l.value==="full"?[M,m,"inset-0 h-screen w-screen max-h-screen max-w-screen rounded-none origin-center"]:l.value==="half"?[M,m,"bottom-[74px] right-5 h-[min(86vh,860px)] w-[min(50vw,860px)] rounded-2xl","max-[900px]:bottom-[78px] max-[900px]:right-3 max-[900px]:h-[min(86vh,760px)] max-[900px]:w-[min(70vw,760px)] max-[900px]:rounded-[14px]","max-[600px]:inset-0 max-[600px]:h-screen max-[600px]:w-screen max-[600px]:max-h-screen max-[600px]:max-w-screen max-[600px]:rounded-none max-[600px]:pb-[env(safe-area-inset-bottom)]"]:[M,m,"bottom-[74px] right-5 h-[min(560px,72vh)] w-[min(360px,calc(100vw-40px))] rounded-2xl","max-[900px]:bottom-[78px] max-[900px]:right-3 max-[900px]:h-[min(70vh,540px)] max-[900px]:w-[min(360px,calc(100vw-24px))] max-[900px]:rounded-[14px]","max-[600px]:inset-0 max-[600px]:h-screen max-[600px]:w-screen max-[600px]:max-h-screen max-[600px]:max-w-screen max-[600px]:rounded-none max-[600px]:pb-[env(safe-area-inset-bottom)]"]});return on(()=>s.activeTab,M=>{a.value=M,y()}),on(()=>s.isOpen,M=>{M&&a.value!=="settings"&&St(()=>{var m;return(m=o.value)==null?void 0:m.focus()}),y()}),on(a,M=>{r("update:activeTab",M),y()}),on(()=>[s.chatHistory.length,s.supportHistory.length,s.debugLogs.length,s.currentDebug],()=>{y()}),on(()=>s.debugEnabled,M=>{!M&&a.value==="debug"&&(a.value="chat"),y()}),zn(()=>{y()}),t({scrollToBottom(){St(()=>{g()})}}),(M,m)=>(F(),W("div",{class:we(x.value),onKeydown:m[9]||(m[9]=pt(()=>{},["stop"])),onKeyup:m[10]||(m[10]=pt(()=>{},["stop"])),onKeypress:m[11]||(m[11]=pt(()=>{},["stop"]))},[m[14]||(m[14]=w("div",{class:"pointer-events-none absolute -right-14 -top-14 h-36 w-36 rounded-full bg-brand-500/15 blur-2xl"},null,-1)),m[15]||(m[15]=w("div",{class:"pointer-events-none absolute -bottom-14 -left-12 h-32 w-32 rounded-full bg-violet-400/15 blur-2xl"},null,-1)),w("div",sd,[m[12]||(m[12]=w("div",{class:"pointer-events-none absolute inset-0 opacity-45",style:{background:"linear-gradient(120deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0.02) 52%, rgba(255,255,255,0.12) 100%)"}},null,-1)),Oe(vc,{windowMode:l.value,autoReadEnabled:e.autoReadEnabled,activeTtsProvider:e.activeTtsProvider,onClose:m[0]||(m[0]=H=>M.$emit("close")),onCycleResize:E,onToggleAutoRead:m[1]||(m[1]=H=>M.$emit("toggleAutoRead"))},null,8,["windowMode","autoReadEnabled","activeTtsProvider"]),Oe(Sc,{modelValue:a.value,"onUpdate:modelValue":m[2]||(m[2]=H=>a.value=H),debugEnabled:e.debugEnabled},null,8,["modelValue","debugEnabled"])]),w("div",{class:"chat-scrollbar min-h-0 flex-1 overflow-x-hidden overflow-y-scroll bg-slate-50/60 px-4 py-4 max-[900px]:px-3.5 max-[900px]:py-3.5 max-[600px]:px-3 max-[600px]:py-3",ref_key:"chatBodyRef",ref:i,onScrollPassive:d},[w("div",rd,[a.value==="chat"?(F(),Et(mp,{key:0,messages:e.chatHistory,autoReadEnabled:e.autoReadEnabled,ttsConfig:e.ttsConfig},null,8,["messages","autoReadEnabled","ttsConfig"])):a.value==="debug"&&e.debugEnabled?(F(),Et(_p,{key:1,logs:e.debugLogs,currentDebug:e.currentDebug},null,8,["logs","currentDebug"])):a.value==="support"?(F(),Et(Sp,{key:2,messages:e.supportHistory,autoReadEnabled:e.autoReadEnabled,ttsConfig:e.ttsConfig},null,8,["messages","autoReadEnabled","ttsConfig"])):a.value==="settings"?(F(),Et(Vp,{key:3,autoReadEnabled:e.autoReadEnabled,ttsConfig:e.ttsConfig,settings:e.settings,debugEnabled:e.debugEnabled,sendNonERPtoaiEnabled:e.sendNonERPtoaiEnabled,onToggleAutoRead:m[3]||(m[3]=H=>M.$emit("toggleAutoRead")),onTogglePollyPreference:m[4]||(m[4]=H=>M.$emit("togglePollyPreference")),onToggleDebug:m[5]||(m[5]=H=>M.$emit("toggleDebug")),onToggleSendNonERP:m[6]||(m[6]=H=>M.$emit("toggleSendNonERP"))},null,8,["autoReadEnabled","ttsConfig","settings","debugEnabled","sendNonERPtoaiEnabled"])):qe("",!0)])],544),f.value?(F(),W("button",{key:0,type:"button",class:we(["absolute right-4 z-20 grid h-9 w-9 place-items-center rounded-full border border-brand-200/70 bg-white/95 text-brand-600 shadow-[0_14px_26px_-16px_rgba(15,23,42,0.65)] transition-all duration-200 hover:-translate-y-0.5 hover:border-brand-300 hover:text-brand-700 focus:outline-none",a.value!=="settings"?"bottom-[calc(90px+env(safe-area-inset-bottom))] sm:bottom-[96px]":"bottom-4 sm:bottom-5"]),title:"Scroll to bottom","aria-label":"Scroll to bottom",onClick:g},m[13]||(m[13]=[w("svg",{viewBox:"0 0 24 24",width:"16",height:"16",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[w("path",{d:"M7 10l5 5 5-5"})],-1)]),2)):qe("",!0),a.value!=="settings"?(F(),W("div",id,[Oe(nd,{ref_key:"chatFormRef",ref:o,placeholder:a.value==="support"?"Message Support...":"Message...",disabled:u.value,isAwaitingResponse:u.value,onSubmit:m[7]||(m[7]=H=>M.$emit("submit",H)),onCancel:m[8]||(m[8]=H=>M.$emit("cancelResponse"))},null,8,["placeholder","disabled","isAwaitingResponse"])])):qe("",!0)],34))}},_l="changai_chat_id",Tl="changai_polly_enabled";function ad(){let e=sessionStorage.getItem(_l);return e||(e=`session_${Date.now()}_${crypto.randomUUID()}`,sessionStorage.setItem(_l,e)),e}function ud(){const e=localStorage.getItem(Tl);return e===null?!0:e==="true"}function cd(e){localStorage.setItem(Tl,String(!!e))}const fd={__name:"App",setup(e){const t=J(!1),n=J("chat"),s=J([]),r=J([]),i=J(!1),o=J([]),a=J(null),l=J("actual"),f=J(!0),u=J(null),d=J(!1),g=J(null),y=J(!1),E=J({enableVoiceChat:!1,pollyAvailable:!1,usePolly:!0,voiceId:"Zayd",enable_changai:!1}),x=J("off"),M=J(null),m=J(null),H=Ee(()=>M.value!==null),Y=Ee(()=>m.value!==null);function $(){if(!E.value.enableVoiceChat){x.value="off";return}x.value=E.value.usePolly?"polly":"browser"}function z(te){var pe;const C=(pe=te==null?void 0:te.detail)==null?void 0:pe.provider;(C==="polly"||C==="browser"||C==="off")&&(x.value=C)}async function O(){var pe,Ge,re,B,de;if(!(d.value||u.value)){d.value=!0;try{u.value=await Mc(l.value),E.value={enableVoiceChat:!!((pe=u.value)!=null&&pe.enable_voice_chat),pollyAvailable:!!((Ge=u.value)!=null&&Ge.polly_enabled),usePolly:!!((re=u.value)!=null&&re.polly_enabled)&&ud(),voiceId:((B=u.value)==null?void 0:B.polly_voice_id)||"Zayd",enable_changai:!!((de=u.value)!=null&&de.enable_changai)},$(),r.value.push({type:"settings",settings:u.value})}catch(ae){const ve=vl(ae);r.value.push({type:"settings",error:ve})}finally{d.value=!1}}}function P(){t.value=!t.value}function ee(){var te;(te=a.value)==null||te.scrollToBottom()}function V(){f.value=!f.value}function se(){const te=!E.value.usePolly;E.value={...E.value,usePolly:te&&E.value.pollyAvailable},cd(E.value.usePolly),$()}function fe(){y.value=!y.value}async function D(te){n.value==="support"?await Ue(te):await Z(te)}async function Z(te){var ye,ht;g.value=null,l.value==="actual"&&await O(),s.value.push({role:"user",text:te}),await St(),ee();const C=cs({role:"model",text:"Thinking...",cancelable:!0,isStatus:!0,statusType:"thinking"});s.value.push(C),await St(),ee();let pe=!1;const Ge=ad(),re=`${Ge}_${Date.now()}`,B=y.value,de=Pc(te,Ge,l.value,re,y.value),ae=`debug_${re}`;let ve=Date.now();const ge=[],nt=G=>{var h;const Ce=Date.now(),Ft=((Ce-ve)/1e3).toFixed(2);ve=Ce;const c=`${G.message} (${Ft}s)`;if(G.message&&(ge.push(c),g.value=c),!G.done&&G.message&&(C.text=G.message,C.statusType="pipeline"),G.done){C.cancelable=!1,G.error?(C.text=`⚠️ ${G.message||"Something failed"}`,C.isStatus=!1,C.statusType=null):(h=G.data)!=null&&h.answer&&(C.text=G.data.answer,C.isStatus=!1,C.statusType=null),frappe.realtime.off(ae),g.value=null;return}};frappe.realtime.on(ae,nt),M.value=()=>{pe||(pe=!0,de.cancel(),frappe.realtime.off(ae),C.isStatus=!1,C.statusType=null,C.text="Cancelled by user.",r.value.push({type:"cancelled",user:te,steps:[...ge]}),g.value=null,C.cancelable=!1,M.value=null)};try{const G=await de.promise;if(G!=null&&G.open_report){if(C.isStatus=!1,C.statusType=null,C.text=`Opening "${G.report_name}" report." `,r.value.push({type:"success",steps:[...ge],final_response:G,entity_raw:G.entity_raw}),g.value=null,!G.report_name){C.text="Report name extraction failed.Can you ask the same question again?";return}frappe.set_route("query-report",G.report_name,G.filters||{});return}else if(G!=null&&G.create_entity){C.isStatus=!1,C.statusType=null,C.cancelable=!1,C.text=`Opening "${G.doc}" doctype for creating Entity "${G.entity_name}" record.`,r.value.push({type:"success",user:te,steps:[...ge],final_response:G}),g.value=null;const Ft=G.doc,c=G.entity_name||"",b={Customer:{customer_name:c},Supplier:{supplier_name:c},Employee:{employee_name:c},Item:{item_code:c,item_name:c},Project:{project_name:c},Lead:{lead_name:c},Opportunity:{opportunity_name:c}}[Ft]||{};frappe.route_options=b,frappe.set_route("Form",Ft,"new");const k=setInterval(()=>{cur_frm&&cur_frm.doctype===Ft&&cur_frm.is_new()&&(clearInterval(k),Object.entries(b).forEach(([v,_])=>{_&&cur_frm.fields_dict[v]&&(cur_frm.set_value(v,_),cur_frm.refresh_field(v))}))},200);return}if(pe)return;C.cancelable=!1;const Ce=((ye=bp(G==null?void 0:G.Bot))==null?void 0:ye.trim())||"No response.";C.isStatus=!1,C.statusType=null,C.text=Ce,r.value.push({type:"success",user:te,steps:[...ge],final_response:G}),g.value=null}catch(G){if(pe)return;frappe.realtime.off(ae),C.cancelable=!1,C.isStatus=!1,C.statusType=null;const Ce=vl(G);g.value=null,r.value.push({type:"failed",user:te,steps:[...ge],error:Ce}),(G==null?void 0:G.code)==="ERR_NETWORK_CHANGED"||(ht=G==null?void 0:G.message)!=null&&ht.includes("ERR_NETWORK_CHANGED")?(C.isStatus=!1,C.statusType=null,C.text="⚠️ Network error. Please check your connection and try again."):(C.isStatus=!1,C.statusType=null,C.text="⚠️ Something went wrong. Please try again.")}finally{frappe.realtime.off(ae),pe||(M.value=null)}await St(),ee()}function Se(){var te,C;if(n.value==="support"){(te=m.value)==null||te.call(m);return}(C=M.value)==null||C.call(M)}async function Ue(te){o.value.push({role:"user",text:te}),await St(),ee();const C=cs({role:"model",text:"Sending to support...",isStatus:!0,statusType:"support"});o.value.push(C),await St(),ee();let pe=!1;const Ge=Ic(te,l.value);m.value=()=>{pe||(pe=!0,Ge.cancel(),C.isStatus=!1,C.statusType=null,C.text="Cancelled by user.",m.value=null)};try{const re=await Ge.promise;if(pe)return;C.isStatus=!1,C.statusType=null,C.text=re?wl(re):"Support request sent successfully."}catch{if(pe)return;C.isStatus=!1,C.statusType=null,C.text="⚠️ Failed to reach support. Please try again."}finally{pe||(m.value=null)}await St(),ee()}return zn(()=>{typeof window!="undefined"&&window.addEventListener("changai-tts-provider",z),l.value==="actual"&&O()}),ys(()=>{typeof window!="undefined"&&window.removeEventListener("changai-tts-provider",z)}),(te,C)=>(F(),W(He,null,[E.value.enable_changai?(F(),Et(ac,{key:0,isOpen:t.value,onToggle:P},null,8,["isOpen"])):qe("",!0),Oe(ld,{ref_key:"popupRef",ref:a,isOpen:t.value,activeTab:n.value,"onUpdate:activeTab":C[0]||(C[0]=pe=>n.value=pe),chatHistory:s.value,debugLogs:r.value,currentDebug:g.value,supportHistory:o.value,autoReadEnabled:f.value,ttsConfig:E.value,activeTtsProvider:x.value,settings:u.value,isAwaitingChatResponse:H.value,isAwaitingSupportResponse:Y.value,debugEnabled:i.value,sendNonERPtoaiEnabled:y.value,onToggleDebug:C[1]||(C[1]=pe=>i.value=!i.value),onClose:C[2]||(C[2]=pe=>t.value=!1),onSubmit:D,onCancelResponse:Se,onToggleAutoRead:V,onTogglePollyPreference:se,onToggleSendNonERP:fe},null,8,["isOpen","activeTab","chatHistory","debugLogs","currentDebug","supportHistory","autoReadEnabled","ttsConfig","activeTtsProvider","settings","isAwaitingChatResponse","isAwaitingSupportResponse","debugEnabled","sendNonERPtoaiEnabled"])],64))}};function pd(){const e=document.querySelector('link[href*="/assets/changai/dist/changai-chatbot.css"]');if(e!=null&&e.href)return e.href;const t=Array.from(document.scripts).find(n=>{var s;return(s=n.src)==null?void 0:s.includes("/assets/changai/dist/changai-chatbot.js")});return t!=null&&t.src?t.src.replace(/changai-chatbot\.js(\?.*)?$/,"changai-chatbot.css$1"):null}function dd(e){const t=pd();if(!t){const n=Array.from(document.querySelectorAll("style[data-vite-dev-id]"));return n.length&&n.forEach(s=>{const r=document.createElement("style");r.dataset.changaiShadowDevStyle="1",r.textContent=s.textContent||"",e.appendChild(r)}),Promise.resolve()}return e.querySelector('link[data-changai-shadow-style="1"]')?Promise.resolve():new Promise(n=>{const s=document.createElement("link");s.rel="stylesheet",s.href=t,s.dataset.changaiShadowStyle="1",s.onload=()=>n(),s.onerror=()=>n(),e.appendChild(s),setTimeout(n,1200)})}async function kl(){if(document.getElementById("changai-chatbot-host"))return;const e=document.createElement("div");e.id="changai-chatbot-host",document.body.appendChild(e);const t=e.attachShadow({mode:"open"});await dd(t);const n=document.createElement("div");n.id="changai-chatbot-root",t.appendChild(n),nc(fd).mount(n);function s(r){r.stopPropagation()}n.addEventListener("keydown",s),n.addEventListener("keyup",s),n.addEventListener("keypress",s)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",kl):kl()})(); +`} tablecell(e) { + let t = this.parser.parseInline(e.tokens), n = e.header ? "th" : "td"; return (e.align ? `<${n} align="${e.align}">` : `<${n}>`) + t + ` +`} strong({ tokens: e }) { return `${this.parser.parseInline(e)}` } em({ tokens: e }) { return `${this.parser.parseInline(e)}` } codespan({ text: e }) { return `${Ct(e, !0)}` } br(e) { return "
    " } del({ tokens: e }) { return `${this.parser.parseInline(e)}` } link({ href: e, title: t, tokens: n }) { let s = this.parser.parseInline(n), r = Jo(e); if (r === null) return s; e = r; let i = '
    ", i } image({ href: e, title: t, text: n, tokens: s }) { s && (n = this.parser.parseInline(s, this.parser.textRenderer)); let r = Jo(e); if (r === null) return Ct(n); e = r; let i = `${Ct(n)} { let l = o[a].flat(1 / 0); n = n.concat(this.walkTokens(l, t)) }) : o.tokens && (n = n.concat(this.walkTokens(o.tokens, t))) } }return n } use(...e) { let t = this.defaults.extensions || { renderers: {}, childTokens: {} }; return e.forEach(n => { let s = { ...n }; if (s.async = this.defaults.async || s.async || !1, n.extensions && (n.extensions.forEach(r => { if (!r.name) throw new Error("extension name required"); if ("renderer" in r) { let i = t.renderers[r.name]; i ? t.renderers[r.name] = function (...o) { let a = r.renderer.apply(this, o); return a === !1 && (a = i.apply(this, o)), a } : t.renderers[r.name] = r.renderer } if ("tokenizer" in r) { if (!r.level || r.level !== "block" && r.level !== "inline") throw new Error("extension level must be 'block' or 'inline'"); let i = t[r.level]; i ? i.unshift(r.tokenizer) : t[r.level] = [r.tokenizer], r.start && (r.level === "block" ? t.startBlock ? t.startBlock.push(r.start) : t.startBlock = [r.start] : r.level === "inline" && (t.startInline ? t.startInline.push(r.start) : t.startInline = [r.start])) } "childTokens" in r && r.childTokens && (t.childTokens[r.name] = r.childTokens) }), s.extensions = t), n.renderer) { let r = this.defaults.renderer || new $s(this.defaults); for (let i in n.renderer) { if (!(i in r)) throw new Error(`renderer '${i}' does not exist`); if (["options", "parser"].includes(i)) continue; let o = i, a = n.renderer[o], l = r[o]; r[o] = (...f) => { let u = a.apply(r, f); return u === !1 && (u = l.apply(r, f)), u || "" } } s.renderer = r } if (n.tokenizer) { let r = this.defaults.tokenizer || new Ls(this.defaults); for (let i in n.tokenizer) { if (!(i in r)) throw new Error(`tokenizer '${i}' does not exist`); if (["options", "rules", "lexer"].includes(i)) continue; let o = i, a = n.tokenizer[o], l = r[o]; r[o] = (...f) => { let u = a.apply(r, f); return u === !1 && (u = l.apply(r, f)), u } } s.tokenizer = r } if (n.hooks) { let r = this.defaults.hooks || new Zn; for (let i in n.hooks) { if (!(i in r)) throw new Error(`hook '${i}' does not exist`); if (["options", "block"].includes(i)) continue; let o = i, a = n.hooks[o], l = r[o]; Zn.passThroughHooks.has(i) ? r[o] = f => { if (this.defaults.async && Zn.passThroughHooksRespectAsync.has(i)) return (async () => { let d = await a.call(r, f); return l.call(r, d) })(); let u = a.call(r, f); return l.call(r, u) } : r[o] = (...f) => { if (this.defaults.async) return (async () => { let d = await a.apply(r, f); return d === !1 && (d = await l.apply(r, f)), d })(); let u = a.apply(r, f); return u === !1 && (u = l.apply(r, f)), u } } s.hooks = r } if (n.walkTokens) { let r = this.defaults.walkTokens, i = n.walkTokens; s.walkTokens = function (o) { let a = []; return a.push(i.call(this, o)), r && (a = a.concat(r.call(this, o))), a } } this.defaults = { ...this.defaults, ...s } }), this } setOptions(e) { return this.defaults = { ...this.defaults, ...e }, this } lexer(e, t) { return yt.lex(e, t != null ? t : this.defaults) } parser(e, t) { return wt.parse(e, t != null ? t : this.defaults) } parseMarkdown(e) { return (t, n) => { let s = { ...n }, r = { ...this.defaults, ...s }, i = this.onError(!!r.silent, !!r.async); if (this.defaults.async === !0 && s.async === !1) return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.")); if (typeof t > "u" || t === null) return i(new Error("marked(): input parameter is undefined or null")); if (typeof t != "string") return i(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(t) + ", string expected")); if (r.hooks && (r.hooks.options = r, r.hooks.block = e), r.async) return (async () => { let o = r.hooks ? await r.hooks.preprocess(t) : t, a = await (r.hooks ? await r.hooks.provideLexer(e) : e ? yt.lex : yt.lexInline)(o, r), l = r.hooks ? await r.hooks.processAllTokens(a) : a; r.walkTokens && await Promise.all(this.walkTokens(l, r.walkTokens)); let f = await (r.hooks ? await r.hooks.provideParser(e) : e ? wt.parse : wt.parseInline)(l, r); return r.hooks ? await r.hooks.postprocess(f) : f })().catch(i); try { r.hooks && (t = r.hooks.preprocess(t)); let o = (r.hooks ? r.hooks.provideLexer(e) : e ? yt.lex : yt.lexInline)(t, r); r.hooks && (o = r.hooks.processAllTokens(o)), r.walkTokens && this.walkTokens(o, r.walkTokens); let a = (r.hooks ? r.hooks.provideParser(e) : e ? wt.parse : wt.parseInline)(o, r); return r.hooks && (a = r.hooks.postprocess(a)), a } catch (o) { return i(o) } } } onError(e, t) { + return n => { + if (n.message += ` +Please report this to https://github.com/markedjs/marked.`, e) { let s = "

    An error occurred:

    " + Ct(n.message + "", !0) + "
    "; return t ? Promise.resolve(s) : s } if (t) return Promise.reject(n); throw n + } + } + }, pn = new vf; function xe(e, t) { return pn.parse(e, t) } xe.options = xe.setOptions = function (e) { return pn.setOptions(e), xe.defaults = pn.defaults, Ho(xe.defaults), xe }, xe.getDefaults = Sr, xe.defaults = cn, xe.use = function (...e) { return pn.use(...e), xe.defaults = pn.defaults, Ho(xe.defaults), xe }, xe.walkTokens = function (e, t) { return pn.walkTokens(e, t) }, xe.parseInline = pn.parseInline, xe.Parser = wt, xe.parser = wt.parse, xe.Renderer = $s, xe.TextRenderer = Lr, xe.Lexer = yt, xe.lexer = yt.lex, xe.Tokenizer = Ls, xe.Hooks = Zn, xe.parse = xe, xe.options, xe.setOptions, xe.use, xe.walkTokens, xe.parseInline, wt.parse, yt.lex; function sl(e, t) { (t == null || t > e.length) && (t = e.length); for (var n = 0, s = Array(t); n < t; n++)s[n] = e[n]; return s } function _f(e) { if (Array.isArray(e)) return e } function Tf(e, t) { var n = e == null ? null : typeof Symbol != "undefined" && e[Symbol.iterator] || e["@@iterator"]; if (n != null) { var s, r, i, o, a = [], l = !0, f = !1; try { if (i = (n = n.call(e)).next, t !== 0) for (; !(l = (s = i.call(n)).done) && (a.push(s.value), a.length !== t); l = !0); } catch (u) { f = !0, r = u } finally { try { if (!l && n.return != null && (o = n.return(), Object(o) !== o)) return } finally { if (f) throw r } } return a } } function kf() { + throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`) + } function Sf(e, t) { return _f(e) || Tf(e, t) || Ef(e, t) || kf() } function Ef(e, t) { if (e) { if (typeof e == "string") return sl(e, t); var n = {}.toString.call(e).slice(8, -1); return n === "Object" && e.constructor && (n = e.constructor.name), n === "Map" || n === "Set" ? Array.from(e) : n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? sl(e, t) : void 0 } } const rl = Object.entries, il = Object.setPrototypeOf, Af = Object.isFrozen, Rf = Object.getPrototypeOf, Cf = Object.getOwnPropertyDescriptor; let Ze = Object.freeze, dt = Object.seal, Tn = Object.create, ol = typeof Reflect != "undefined" && Reflect, $r = ol.apply, Dr = ol.construct; Ze || (Ze = function (t) { return t }), dt || (dt = function (t) { return t }), $r || ($r = function (t, n) { for (var s = arguments.length, r = new Array(s > 2 ? s - 2 : 0), i = 2; i < s; i++)r[i - 2] = arguments[i]; return t.apply(n, r) }), Dr || (Dr = function (t) { for (var n = arguments.length, s = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++)s[r - 1] = arguments[r]; return new t(...s) }); const kn = Ie(Array.prototype.forEach), Pf = Ie(Array.prototype.lastIndexOf), ll = Ie(Array.prototype.pop), Sn = Ie(Array.prototype.push), If = Ie(Array.prototype.splice), Xe = Array.isArray, Xn = Ie(String.prototype.toLowerCase), Nr = Ie(String.prototype.toString), al = Ie(String.prototype.match), En = Ie(String.prototype.replace), ul = Ie(String.prototype.indexOf), Mf = Ie(String.prototype.trim), Of = Ie(Number.prototype.toString), Lf = Ie(Boolean.prototype.toString), cl = typeof BigInt == "undefined" ? null : Ie(BigInt.prototype.toString), fl = typeof Symbol == "undefined" ? null : Ie(Symbol.prototype.toString), Ae = Ie(Object.prototype.hasOwnProperty), Qn = Ie(Object.prototype.toString), ze = Ie(RegExp.prototype.test), Ds = $f(TypeError); function Ie(e) { return function (t) { t instanceof RegExp && (t.lastIndex = 0); for (var n = arguments.length, s = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++)s[r - 1] = arguments[r]; return $r(e, t, s) } } function $f(e) { return function () { for (var t = arguments.length, n = new Array(t), s = 0; s < t; s++)n[s] = arguments[s]; return Dr(e, n) } } function X(e, t) { let n = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Xn; if (il && il(e, null), !Xe(t)) return e; let s = t.length; for (; s--;) { let r = t[s]; if (typeof r == "string") { const i = n(r); i !== r && (Af(t) || (t[s] = i), r = i) } e[r] = !0 } return e } function Df(e) { for (let t = 0; t < e.length; t++)Ae(e, t) || (e[t] = null); return e } function tt(e) { const t = Tn(null); for (const s of rl(e)) { var n = Sf(s, 2); const r = n[0], i = n[1]; Ae(e, r) && (Xe(i) ? t[r] = Df(i) : i && typeof i == "object" && i.constructor === Object ? t[r] = tt(i) : t[r] = i) } return t } function Nf(e) { switch (typeof e) { case "string": return e; case "number": return Of(e); case "boolean": return Lf(e); case "bigint": return cl ? cl(e) : "0"; case "symbol": return fl ? fl(e) : "Symbol()"; case "undefined": return Qn(e); case "function": case "object": { if (e === null) return Qn(e); const t = e, n = An(t, "toString"); if (typeof n == "function") { const s = n(t); return typeof s == "string" ? s : Qn(s) } return Qn(e) } default: return Qn(e) } } function An(e, t) { for (; e !== null;) { const s = Cf(e, t); if (s) { if (s.get) return Ie(s.get); if (typeof s.value == "function") return Ie(s.value) } e = Rf(e) } function n() { return null } return n } function Ff(e) { try { return ze(e, ""), !0 } catch { return !1 } } const pl = Ze(["a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "search", "section", "select", "shadow", "slot", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr"]), Fr = Ze(["svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "enterkeyhint", "exportparts", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "inputmode", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "part", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern"]), Br = Ze(["feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence"]), Bf = Ze(["animate", "color-profile", "cursor", "discard", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use"]), Hr = Ze(["math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover", "mprescripts"]), Hf = Ze(["maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none"]), dl = Ze(["#text"]), hl = Ze(["accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "exportparts", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inert", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "part", "pattern", "placeholder", "playsinline", "popover", "popovertarget", "popovertargetaction", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "slot", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "wrap", "xmlns"]), zr = Ze(["accent-height", "accumulate", "additive", "alignment-baseline", "amplitude", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "exponent", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "intercept", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "mask-type", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "slope", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "tablevalues", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan"]), gl = Ze(["accent", "accentunder", "align", "bevelled", "close", "columnalign", "columnlines", "columnspacing", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lquote", "lspace", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns"]), Ns = Ze(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]), zf = dt(/{{[\w\W]*|^[\w\W]*}}/g), Uf = dt(/<%[\w\W]*|^[\w\W]*%>/g), jf = dt(/\${[\w\W]*/g), Vf = dt(/^data-[\-\w.\u00B7-\uFFFF]+$/), qf = dt(/^aria-[\-\w]+$/), ml = dt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i), Wf = dt(/^(?:\w+script|data):/i), Gf = dt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g), Kf = dt(/^html$/i), Yf = dt(/^[a-z][.\w]*(-[.\w]+)+$/i), Rn = { element: 1, text: 3, progressingInstruction: 7, comment: 8, document: 9 }, Zf = function () { return typeof window == "undefined" ? null : window }, Xf = function (t, n) { if (typeof t != "object" || typeof t.createPolicy != "function") return null; let s = null; const r = "data-tt-policy-suffix"; n && n.hasAttribute(r) && (s = n.getAttribute(r)); const i = "dompurify" + (s ? "#" + s : ""); try { return t.createPolicy(i, { createHTML(o) { return o }, createScriptURL(o) { return o } }) } catch { return null } }, bl = function () { return { afterSanitizeAttributes: [], afterSanitizeElements: [], afterSanitizeShadowDOM: [], beforeSanitizeAttributes: [], beforeSanitizeElements: [], beforeSanitizeShadowDOM: [], uponSanitizeAttribute: [], uponSanitizeElement: [], uponSanitizeShadowNode: [] } }; function xl() { + let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Zf(); const t = q => xl(q); if (t.version = "3.4.3", t.removed = [], !e || !e.document || e.document.nodeType !== Rn.document || !e.Element) return t.isSupported = !1, t; let n = e.document; const s = n, r = s.currentScript, i = e.DocumentFragment, o = e.HTMLTemplateElement, a = e.Node, l = e.Element, f = e.NodeFilter, u = e.NamedNodeMap, d = u === void 0 ? e.NamedNodeMap || e.MozNamedAttrMap : u, g = e.HTMLFormElement, y = e.DOMParser, E = e.trustedTypes, x = l.prototype, M = An(x, "cloneNode"), m = An(x, "remove"), H = An(x, "nextSibling"), Y = An(x, "childNodes"), $ = An(x, "parentNode"); if (typeof o == "function") { const q = n.createElement("template"); q.content && q.content.ownerDocument && (n = q.content.ownerDocument) } let z, O = ""; const P = n, ee = P.implementation, V = P.createNodeIterator, se = P.createDocumentFragment, fe = P.getElementsByTagName, D = s.importNode; let Z = bl(); t.isSupported = typeof rl == "function" && typeof $ == "function" && ee && ee.createHTMLDocument !== void 0; const Se = zf, Ue = Uf, te = jf, C = Vf, pe = qf, Ge = Wf, re = Gf, B = Yf; let de = ml, ae = null; const ve = X({}, [...pl, ...Fr, ...Br, ...Hr, ...dl]); let ge = null; const nt = X({}, [...hl, ...zr, ...gl, ...Ns]); let ye = Object.seal(Tn(null, { tagNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null }, attributeNameCheck: { writable: !0, configurable: !1, enumerable: !0, value: null }, allowCustomizedBuiltInElements: { writable: !0, configurable: !1, enumerable: !0, value: !1 } })), ht = null, G = null; const Ce = Object.seal(Tn(null, { tagCheck: { writable: !0, configurable: !1, enumerable: !0, value: null }, attributeCheck: { writable: !0, configurable: !1, enumerable: !0, value: null } })); let Ft = !0, c = !0, h = !1, b = !0, k = !1, v = !0, _ = !1, I = !1, R = !1, A = !1, S = !1, U = !1, L = !0, j = !1; const K = "user-content-"; let ne = !0, he = !1, ie = {}, ke = null; const $e = X({}, ["annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp"]); let ot = null; const lt = X({}, ["audio", "video", "img", "source", "image", "track"]); let Bt = null; const Jn = X({}, ["alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns"]), De = "http://www.w3.org/1998/Math/MathML", Qe = "http://www.w3.org/2000/svg", at = "http://www.w3.org/1999/xhtml"; let Ht = at, Ur = !1, jr = null; const hd = X({}, [De, Qe, at], Nr); let Vr = X({}, ["mi", "mo", "mn", "ms", "mtext"]), qr = X({}, ["annotation-xml"]); const gd = X({}, ["title", "style", "font", "a", "script"]); let es = null; const md = ["application/xhtml+xml", "text/html"], bd = "text/html"; let Le = null, Cn = null; const xd = n.createElement("form"), Sl = function (p) { return p instanceof RegExp || p instanceof Function }, Wr = function () { let p = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; if (Cn && Cn === p) return; (!p || typeof p != "object") && (p = {}), p = tt(p), es = md.indexOf(p.PARSER_MEDIA_TYPE) === -1 ? bd : p.PARSER_MEDIA_TYPE, Le = es === "application/xhtml+xml" ? Nr : Xn, ae = Ae(p, "ALLOWED_TAGS") && Xe(p.ALLOWED_TAGS) ? X({}, p.ALLOWED_TAGS, Le) : ve, ge = Ae(p, "ALLOWED_ATTR") && Xe(p.ALLOWED_ATTR) ? X({}, p.ALLOWED_ATTR, Le) : nt, jr = Ae(p, "ALLOWED_NAMESPACES") && Xe(p.ALLOWED_NAMESPACES) ? X({}, p.ALLOWED_NAMESPACES, Nr) : hd, Bt = Ae(p, "ADD_URI_SAFE_ATTR") && Xe(p.ADD_URI_SAFE_ATTR) ? X(tt(Jn), p.ADD_URI_SAFE_ATTR, Le) : Jn, ot = Ae(p, "ADD_DATA_URI_TAGS") && Xe(p.ADD_DATA_URI_TAGS) ? X(tt(lt), p.ADD_DATA_URI_TAGS, Le) : lt, ke = Ae(p, "FORBID_CONTENTS") && Xe(p.FORBID_CONTENTS) ? X({}, p.FORBID_CONTENTS, Le) : $e, ht = Ae(p, "FORBID_TAGS") && Xe(p.FORBID_TAGS) ? X({}, p.FORBID_TAGS, Le) : tt({}), G = Ae(p, "FORBID_ATTR") && Xe(p.FORBID_ATTR) ? X({}, p.FORBID_ATTR, Le) : tt({}), ie = Ae(p, "USE_PROFILES") ? p.USE_PROFILES && typeof p.USE_PROFILES == "object" ? tt(p.USE_PROFILES) : p.USE_PROFILES : !1, Ft = p.ALLOW_ARIA_ATTR !== !1, c = p.ALLOW_DATA_ATTR !== !1, h = p.ALLOW_UNKNOWN_PROTOCOLS || !1, b = p.ALLOW_SELF_CLOSE_IN_ATTR !== !1, k = p.SAFE_FOR_TEMPLATES || !1, v = p.SAFE_FOR_XML !== !1, _ = p.WHOLE_DOCUMENT || !1, A = p.RETURN_DOM || !1, S = p.RETURN_DOM_FRAGMENT || !1, U = p.RETURN_TRUSTED_TYPE || !1, R = p.FORCE_BODY || !1, L = p.SANITIZE_DOM !== !1, j = p.SANITIZE_NAMED_PROPS || !1, ne = p.KEEP_CONTENT !== !1, he = p.IN_PLACE || !1, de = Ff(p.ALLOWED_URI_REGEXP) ? p.ALLOWED_URI_REGEXP : ml, Ht = typeof p.NAMESPACE == "string" ? p.NAMESPACE : at, Vr = Ae(p, "MATHML_TEXT_INTEGRATION_POINTS") && p.MATHML_TEXT_INTEGRATION_POINTS && typeof p.MATHML_TEXT_INTEGRATION_POINTS == "object" ? tt(p.MATHML_TEXT_INTEGRATION_POINTS) : X({}, ["mi", "mo", "mn", "ms", "mtext"]), qr = Ae(p, "HTML_INTEGRATION_POINTS") && p.HTML_INTEGRATION_POINTS && typeof p.HTML_INTEGRATION_POINTS == "object" ? tt(p.HTML_INTEGRATION_POINTS) : X({}, ["annotation-xml"]); const T = Ae(p, "CUSTOM_ELEMENT_HANDLING") && p.CUSTOM_ELEMENT_HANDLING && typeof p.CUSTOM_ELEMENT_HANDLING == "object" ? tt(p.CUSTOM_ELEMENT_HANDLING) : Tn(null); if (ye = Tn(null), Ae(T, "tagNameCheck") && Sl(T.tagNameCheck) && (ye.tagNameCheck = T.tagNameCheck), Ae(T, "attributeNameCheck") && Sl(T.attributeNameCheck) && (ye.attributeNameCheck = T.attributeNameCheck), Ae(T, "allowCustomizedBuiltInElements") && typeof T.allowCustomizedBuiltInElements == "boolean" && (ye.allowCustomizedBuiltInElements = T.allowCustomizedBuiltInElements), k && (c = !1), S && (A = !0), ie && (ae = X({}, dl), ge = Tn(null), ie.html === !0 && (X(ae, pl), X(ge, hl)), ie.svg === !0 && (X(ae, Fr), X(ge, zr), X(ge, Ns)), ie.svgFilters === !0 && (X(ae, Br), X(ge, zr), X(ge, Ns)), ie.mathMl === !0 && (X(ae, Hr), X(ge, gl), X(ge, Ns))), Ce.tagCheck = null, Ce.attributeCheck = null, Ae(p, "ADD_TAGS") && (typeof p.ADD_TAGS == "function" ? Ce.tagCheck = p.ADD_TAGS : Xe(p.ADD_TAGS) && (ae === ve && (ae = tt(ae)), X(ae, p.ADD_TAGS, Le))), Ae(p, "ADD_ATTR") && (typeof p.ADD_ATTR == "function" ? Ce.attributeCheck = p.ADD_ATTR : Xe(p.ADD_ATTR) && (ge === nt && (ge = tt(ge)), X(ge, p.ADD_ATTR, Le))), Ae(p, "ADD_URI_SAFE_ATTR") && Xe(p.ADD_URI_SAFE_ATTR) && X(Bt, p.ADD_URI_SAFE_ATTR, Le), Ae(p, "FORBID_CONTENTS") && Xe(p.FORBID_CONTENTS) && (ke === $e && (ke = tt(ke)), X(ke, p.FORBID_CONTENTS, Le)), Ae(p, "ADD_FORBID_CONTENTS") && Xe(p.ADD_FORBID_CONTENTS) && (ke === $e && (ke = tt(ke)), X(ke, p.ADD_FORBID_CONTENTS, Le)), ne && (ae["#text"] = !0), _ && X(ae, ["html", "head", "body"]), ae.table && (X(ae, ["tbody"]), delete ht.tbody), p.TRUSTED_TYPES_POLICY) { if (typeof p.TRUSTED_TYPES_POLICY.createHTML != "function") throw Ds('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); if (typeof p.TRUSTED_TYPES_POLICY.createScriptURL != "function") throw Ds('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); z = p.TRUSTED_TYPES_POLICY, O = z.createHTML("") } else z === void 0 && (z = Xf(E, r)), z !== null && typeof O == "string" && (O = z.createHTML("")); Ze && Ze(p), Cn = p }, El = X({}, [...Fr, ...Br, ...Bf]), Al = X({}, [...Hr, ...Hf]), yd = function (p) { let T = $(p); (!T || !T.tagName) && (T = { namespaceURI: Ht, tagName: "template" }); const N = Xn(p.tagName), ce = Xn(T.tagName); return jr[p.namespaceURI] ? p.namespaceURI === Qe ? T.namespaceURI === at ? N === "svg" : T.namespaceURI === De ? N === "svg" && (ce === "annotation-xml" || Vr[ce]) : !!El[N] : p.namespaceURI === De ? T.namespaceURI === at ? N === "math" : T.namespaceURI === Qe ? N === "math" && qr[ce] : !!Al[N] : p.namespaceURI === at ? T.namespaceURI === Qe && !qr[ce] || T.namespaceURI === De && !Vr[ce] ? !1 : !Al[N] && (gd[N] || !El[N]) : !!(es === "application/xhtml+xml" && jr[p.namespaceURI]) : !1 }, vt = function (p) { Sn(t.removed, { element: p }); try { $(p).removeChild(p) } catch { m(p) } }, dn = function (p, T) { try { Sn(t.removed, { attribute: T.getAttributeNode(p), from: T }) } catch { Sn(t.removed, { attribute: null, from: T }) } if (T.removeAttribute(p), p === "is") if (A || S) try { vt(T) } catch { } else try { T.setAttribute(p, "") } catch { } }, Rl = function (p) { let T = null, N = null; if (R) p = "" + p; else { const Me = al(p, /^[\r\n\t ]+/); N = Me && Me[0] } es === "application/xhtml+xml" && Ht === at && (p = '' + p + ""); const ce = z ? z.createHTML(p) : p; if (Ht === at) try { T = new y().parseFromString(ce, es) } catch { } if (!T || !T.documentElement) { T = ee.createDocument(Ht, "template", null); try { T.documentElement.innerHTML = Ur ? O : ce } catch { } } const Ne = T.body || T.documentElement; return p && N && Ne.insertBefore(n.createTextNode(N), Ne.childNodes[0] || null), Ht === at ? fe.call(T, _ ? "html" : "body")[0] : _ ? T.documentElement : Ne }, Cl = function (p) { return V.call(p.ownerDocument || p, p, f.SHOW_ELEMENT | f.SHOW_COMMENT | f.SHOW_TEXT | f.SHOW_PROCESSING_INSTRUCTION | f.SHOW_CDATA_SECTION, null) }, Gr = function (p) { return p instanceof g && (typeof p.nodeName != "string" || typeof p.textContent != "string" || typeof p.removeChild != "function" || !(p.attributes instanceof d) || typeof p.removeAttribute != "function" || typeof p.setAttribute != "function" || typeof p.namespaceURI != "string" || typeof p.insertBefore != "function" || typeof p.hasChildNodes != "function") }, Kr = function (p) { return typeof a == "function" && p instanceof a }; function zt(q, p, T) { kn(q, N => { N.call(t, p, T, Cn) }) } const Pl = function (p) { let T = null; if (zt(Z.beforeSanitizeElements, p, null), Gr(p)) return vt(p), !0; const N = Le(p.nodeName); if (zt(Z.uponSanitizeElement, p, { tagName: N, allowedTags: ae }), v && p.hasChildNodes() && !Kr(p.firstElementChild) && ze(/<[/\w!]/g, p.innerHTML) && ze(/<[/\w!]/g, p.textContent) || v && p.namespaceURI === at && N === "style" && Kr(p.firstElementChild) || p.nodeType === Rn.progressingInstruction || v && p.nodeType === Rn.comment && ze(/<[/\w]/g, p.data)) return vt(p), !0; if (ht[N] || !(Ce.tagCheck instanceof Function && Ce.tagCheck(N)) && !ae[N]) { if (!ht[N] && Ml(N) && (ye.tagNameCheck instanceof RegExp && ze(ye.tagNameCheck, N) || ye.tagNameCheck instanceof Function && ye.tagNameCheck(N))) return !1; if (ne && !ke[N]) { const ce = $(p) || p.parentNode, Ne = Y(p) || p.childNodes; if (Ne && ce) { const Me = Ne.length; for (let st = Me - 1; st >= 0; --st) { const gt = M(Ne[st], !0); ce.insertBefore(gt, H(p)) } } } return vt(p), !0 } return p instanceof l && !yd(p) || (N === "noscript" || N === "noembed" || N === "noframes") && ze(/<\/no(script|embed|frames)/i, p.innerHTML) ? (vt(p), !0) : (k && p.nodeType === Rn.text && (T = p.textContent, kn([Se, Ue, te], ce => { T = En(T, ce, " ") }), p.textContent !== T && (Sn(t.removed, { element: p.cloneNode() }), p.textContent = T)), zt(Z.afterSanitizeElements, p, null), !1) }, Il = function (p, T, N) { if (G[T] || L && (T === "id" || T === "name") && (N in n || N in xd)) return !1; const ce = ge[T] || Ce.attributeCheck instanceof Function && Ce.attributeCheck(T, p); if (!(c && !G[T] && ze(C, T))) { if (!(Ft && ze(pe, T))) { if (!ce || G[T]) { if (!(Ml(p) && (ye.tagNameCheck instanceof RegExp && ze(ye.tagNameCheck, p) || ye.tagNameCheck instanceof Function && ye.tagNameCheck(p)) && (ye.attributeNameCheck instanceof RegExp && ze(ye.attributeNameCheck, T) || ye.attributeNameCheck instanceof Function && ye.attributeNameCheck(T, p)) || T === "is" && ye.allowCustomizedBuiltInElements && (ye.tagNameCheck instanceof RegExp && ze(ye.tagNameCheck, N) || ye.tagNameCheck instanceof Function && ye.tagNameCheck(N)))) return !1 } else if (!Bt[T]) { if (!ze(de, En(N, re, ""))) { if (!((T === "src" || T === "xlink:href" || T === "href") && p !== "script" && ul(N, "data:") === 0 && ot[p])) { if (!(h && !ze(Ge, En(N, re, "")))) { if (N) return !1 } } } } } } return !0 }, wd = X({}, ["annotation-xml", "color-profile", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "missing-glyph"]), Ml = function (p) { return !wd[Xn(p)] && ze(B, p) }, Ol = function (p) { zt(Z.beforeSanitizeAttributes, p, null); const T = p.attributes; if (!T || Gr(p)) return; const N = { attrName: "", attrValue: "", keepAttr: !0, allowedAttributes: ge, forceKeepAttr: void 0 }; let ce = T.length; for (; ce--;) { const Ne = T[ce], Me = Ne.name, st = Ne.namespaceURI, gt = Ne.value, _t = Le(Me), Zr = gt; let Fe = Me === "value" ? Zr : Mf(Zr); if (N.attrName = _t, N.attrValue = Fe, N.keepAttr = !0, N.forceKeepAttr = void 0, zt(Z.uponSanitizeAttribute, p, N), Fe = N.attrValue, j && (_t === "id" || _t === "name") && ul(Fe, K) !== 0 && (dn(Me, p), Fe = K + Fe), v && ze(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i, Fe)) { dn(Me, p); continue } if (_t === "attributename" && al(Fe, "href")) { dn(Me, p); continue } if (N.forceKeepAttr) continue; if (!N.keepAttr) { dn(Me, p); continue } if (!b && ze(/\/>/i, Fe)) { dn(Me, p); continue } k && kn([Se, Ue, te], $l => { Fe = En(Fe, $l, " ") }); const Ll = Le(p.nodeName); if (!Il(Ll, _t, Fe)) { dn(Me, p); continue } if (z && typeof E == "object" && typeof E.getAttributeType == "function" && !st) switch (E.getAttributeType(Ll, _t)) { case "TrustedHTML": { Fe = z.createHTML(Fe); break } case "TrustedScriptURL": { Fe = z.createScriptURL(Fe); break } }if (Fe !== Zr) try { st ? p.setAttributeNS(st, Me, Fe) : p.setAttribute(Me, Fe), Gr(p) ? vt(p) : ll(t.removed) } catch { dn(Me, p) } } zt(Z.afterSanitizeAttributes, p, null) }, Yr = function (p) { let T = null; const N = Cl(p); for (zt(Z.beforeSanitizeShadowDOM, p, null); T = N.nextNode();)zt(Z.uponSanitizeShadowNode, T, null), Pl(T), Ol(T), T.content instanceof i && Yr(T.content); zt(Z.afterSanitizeShadowDOM, p, null) }, Bs = function (p) { if (p.nodeType === Rn.element && p.shadowRoot instanceof i) { const ce = p.shadowRoot; Bs(ce), Yr(ce) } const T = p.childNodes; if (!T) return; const N = []; kn(T, ce => { Sn(N, ce) }); for (const ce of N) Bs(ce) }; return t.sanitize = function (q) { + let p = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, T = null, N = null, ce = null, Ne = null; if (Ur = !q, Ur && (q = ""), typeof q != "string" && !Kr(q) && (q = Nf(q), typeof q != "string")) throw Ds("dirty is not a string, aborting"); if (!t.isSupported) return q; if (I || Wr(p), t.removed = [], typeof q == "string" && (he = !1), he) { const gt = q.nodeName; if (typeof gt == "string") { const _t = Le(gt); if (!ae[_t] || ht[_t]) throw Ds("root node is forbidden and cannot be sanitized in-place") } Bs(q) } else if (q instanceof a) T = Rl(""), N = T.ownerDocument.importNode(q, !0), N.nodeType === Rn.element && N.nodeName === "BODY" || N.nodeName === "HTML" ? T = N : T.appendChild(N), Bs(N); else { if (!A && !k && !_ && q.indexOf("<") === -1) return z && U ? z.createHTML(q) : q; if (T = Rl(q), !T) return A ? null : U ? O : "" } T && R && vt(T.firstChild); const Me = Cl(he ? q : T); for (; ce = Me.nextNode();)Pl(ce), Ol(ce), ce.content instanceof i && Yr(ce.content); if (he) return q; if (A) { if (k) { T.normalize(); let gt = T.innerHTML; kn([Se, Ue, te], _t => { gt = En(gt, _t, " ") }), T.innerHTML = gt } if (S) for (Ne = se.call(T.ownerDocument); T.firstChild;)Ne.appendChild(T.firstChild); else Ne = T; return (ge.shadowroot || ge.shadowrootmode) && (Ne = D.call(s, Ne, !0)), Ne } let st = _ ? T.outerHTML : T.innerHTML; return _ && ae["!doctype"] && T.ownerDocument && T.ownerDocument.doctype && T.ownerDocument.doctype.name && ze(Kf, T.ownerDocument.doctype.name) && (st = " +`+ st), k && kn([Se, Ue, te], gt => { st = En(st, gt, " ") }), z && U ? z.createHTML(st) : st + }, t.setConfig = function () { let q = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; Wr(q), I = !0 }, t.clearConfig = function () { Cn = null, I = !1 }, t.isValidAttribute = function (q, p, T) { Cn || Wr({}); const N = Le(q), ce = Le(p); return Il(N, ce, T) }, t.addHook = function (q, p) { typeof p == "function" && Sn(Z[q], p) }, t.removeHook = function (q, p) { if (p !== void 0) { const T = Pf(Z[q], p); return T === -1 ? void 0 : If(Z[q], T, 1)[0] } return ll(Z[q]) }, t.removeHooks = function (q) { Z[q] = [] }, t.removeAllHooks = function () { Z = bl() }, t + } var Qf = xl(); const Jf = { key: 1, class: "flex min-w-0 max-w-[calc(100%-2.5rem)] flex-1 flex-col max-[600px]:max-w-[calc(100%-2.25rem)]" }, ep = { key: 0, class: "flex w-fit flex-col items-start gap-1" }, tp = ["aria-label"], np = { class: "inline-flex items-center gap-1.5" }, sp = { class: "text-[8px] font-semibold tracking-[0.12em] uppercase text-[#3a67c9]" }, rp = { key: 1, class: "flex w-fit max-w-full flex-col items-start gap-2" }, ip = { class: "chat-card relative w-fit max-w-full whitespace-pre-line rounded-[10px_10px_10px_3px] px-4 py-3 text-xs leading-relaxed wrap-anywhere text-slate-900" }, op = ["innerHTML"], lp = { key: 0, class: "pointer-events-none absolute inset-x-0 bottom-0 h-14 rounded-b-[10px] bg-linear-to-t from-white via-white/92 to-white/0", "aria-hidden": "true" }, ap = { key: 0, class: "flex flex-wrap items-center gap-2" }, up = ["title", "aria-label"], cp = { key: 1, class: "flex flex-wrap items-center" }, fp = ["title", "aria-label"], pp = { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, dp = ["innerHTML"], yl = { __name: "ChatMessage", props: { message: { type: Object, required: !0 }, autoReadEnabled: { type: Boolean, default: !1 }, ttsConfig: { type: Object, default: () => ({ enableVoiceChat: !1, pollyAvailable: !1, usePolly: !0, voiceId: "Zayd" }) } }, setup(e) { const t = e, n = J(!1), s = J(null), r = J(!1), i = J(!1), o = Ee(() => typeof window != "undefined" && "speechSynthesis" in window && "SpeechSynthesisUtterance" in window); function a(O) { typeof window != "undefined" && window.dispatchEvent(new CustomEvent("changai-tts-provider", { detail: { provider: O } })) } function l(O) { if (typeof O != "string") return ""; const P = O.replace(/[\u{1F000}-\u{1FFFF}]/gu, "").replace(/[\u{2600}-\u{26FF}]/gu, "").replace(/[\u{2700}-\u{27BF}]/gu, "").replace(/\*\*(.*?)\*\*/g, "$1").replace(/\*(.*?)\*/g, "$1").replace(/`([^`]+)`/g, "$1").replace(/#{1,6}\s+/g, "").replace(/[-*+]\s+/g, "").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\s+/g, " "); return P.includes("<") ? (new DOMParser().parseFromString(O, "text/html").body.textContent || "").replace(/\s+/g, " ").trim() : P.trim() } function f() { o.value && window.speechSynthesis.cancel(), s.value && (s.value.pause(), s.value.src = "", s.value = null), n.value = !1 } function u() { var O, P, ee; if (i.value = !i.value, i.value) f(); else { const V = M.value; if (!t.autoReadEnabled || !((O = t.ttsConfig) != null && O.enableVoiceChat) || !V || E()) return; if ((P = t.ttsConfig) != null && P.pollyAvailable && ((ee = t.ttsConfig) != null && ee.usePolly)) { g(V).catch(se => { d(V) }); return } d(V) } } function d(O) { if (!o.value || !O) return; window.dispatchEvent(new CustomEvent("changai-tts-stop")), window.speechSynthesis.cancel(); const P = new SpeechSynthesisUtterance(O); P.rate = 1, P.pitch = 1, P.onend = () => { n.value = !1 }, P.onerror = () => { n.value = !1 }, n.value = !0, a("browser"), window.speechSynthesis.speak(P) } async function g(O) { var fe; const P = await Oc(O, ((fe = t.ttsConfig) == null ? void 0 : fe.voiceId) || "Zayd"); if (!(P != null && P.ok) || !(P != null && P.audio_base64)) throw new Error((P == null ? void 0 : P.error) || "Polly synthesis failed"); window.dispatchEvent(new CustomEvent("changai-tts-stop")), f(); const ee = (P == null ? void 0 : P.mime_type) || "audio/mpeg", V = new Audio(`data:${ee};base64,${P.audio_base64}`); s.value = V, n.value = !0; let se = !1; V.onplay = () => { se = !0, a("polly") }, V.onended = () => { s.value === V && (s.value = null), n.value = !1 }, V.onerror = () => { s.value === V && (s.value = null), n.value = !1 }, await V.play(), se || a("polly") } function y() { f() } function E() { var O; return !!((O = t.message) != null && O.isStatus) } function x(O) { const P = O.target.closest("a"); !P || !P.href || (O.preventDefault(), O.stopPropagation(), window.open(P.href, "_blank", "noopener,noreferrer")) } const M = Ee(() => { var O; return l(((O = t.message) == null ? void 0 : O.text) || "") }), m = Ee(() => { var O; return ((O = t.message) == null ? void 0 : O.role) !== "user" && E() }), H = Ee(() => { var O; return (O = t.message) != null && O.isStatus ? t.message.statusType === "support" ? "Sending to support" : M.value || "Thinking" : "" }), Y = Ee(() => { var ee; if (((ee = t.message) == null ? void 0 : ee.role) === "user" || m.value) return !1; const O = M.value, P = O.split(/\n+/).filter(Boolean).length; return O.length > 520 || P > 8 }), $ = Ee(() => { var O, P; return ((O = t.message) == null ? void 0 : O.role) !== "user" && !m.value && ((P = t.ttsConfig) == null ? void 0 : P.enableVoiceChat) }), z = Ee(() => { var P; const O = ((P = t.message) == null ? void 0 : P.text) || ""; return Qf.sanitize(xe.parse(O)) }); return on(() => t.message.text, async (O, P) => { var se, fe, D; if (!t.autoReadEnabled || t.message.role === "user" || i.value) return; if (!((se = t.ttsConfig) != null && se.enableVoiceChat)) { a("off"); return } const ee = l(O); if (!ee || E()) return; const V = l(P || ""); if (ee !== V) { if ((fe = t.ttsConfig) != null && fe.pollyAvailable && ((D = t.ttsConfig) != null && D.usePolly)) try { await g(ee); return } catch { } d(ee) } }), on(() => t.message.text, () => { r.value = !1, i.value = !1 }), zn(() => { typeof window != "undefined" && window.addEventListener("changai-tts-stop", y) }), ys(() => { typeof window != "undefined" && window.removeEventListener("changai-tts-stop", y), n.value && f() }), (O, P) => (F(), W("div", { class: we(["motion-safe:animate-fade-rise flex w-full gap-1.5", e.message.role === "user" ? "flex-col items-end" : "items-start"]) }, [e.message.role !== "user" ? (F(), Et(Fo, { key: 0 })) : qe("", !0), e.message.role !== "user" ? (F(), W("div", Jf, [m.value ? (F(), W("div", ep, [w("div", { class: "chat-card inline-flex w-fit rounded-[10px_10px_10px_3px] px-3 py-2", role: "status", "aria-live": "polite", "aria-label": H.value }, [w("div", np, [P[1] || (P[1] = w("span", { class: "relative inline-flex h-4 w-4 shrink-0 items-center justify-center" }, [w("span", { class: "absolute inset-0 rounded-full border border-transparent border-t-[#4b89ff] border-r-[#4b89ff]/70 animate-gemini-arc" }), w("svg", { viewBox: "0 0 24 24", class: "relative h-3 w-3 text-[#4b89ff] animate-gemini-spark", "aria-hidden": "true" }, [w("path", { fill: "currentColor", d: "M12 2.8c.52 3.22 1.6 5.66 3.22 7.28 1.62 1.62 4.06 2.7 7.28 3.22-3.22.52-5.66 1.6-7.28 3.22-1.62 1.62-2.7 4.06-3.22 7.28-.52-3.22-1.6-5.66-3.22-7.28-1.62-1.62-4.06-2.7-7.28-3.22 3.22-.52 5.66-1.6 7.28-3.22 1.62-1.62 2.7-4.06 3.22-7.28Z" })])], -1)), w("span", sp, Je(H.value), 1)])], 8, tp)])) : (F(), W("div", rp, [w("div", ip, [w("div", { class: we(["overflow-x-auto", Y.value && !r.value ? "max-h-48 overflow-y-hidden" : ""]), innerHTML: z.value, onClick: x }, null, 10, op), Y.value && !r.value ? (F(), W("div", lp)) : qe("", !0)]), Y.value ? (F(), W("div", ap, [w("button", { type: "button", class: "inline-flex items-center rounded-full border border-slate-200 bg-white px-2.5 py-1 text-[10px] font-semibold uppercase tracking-[0.08em] text-slate-600 transition-colors duration-200 hover:border-brand-200 hover:text-brand-600", title: r.value ? "Collapse response" : "Expand response", "aria-label": r.value ? "Collapse response" : "Expand response", onClick: P[0] || (P[0] = ee => r.value = !r.value) }, Je(r.value ? "Collapse" : "Expand"), 9, up)])) : qe("", !0), $.value ? (F(), W("div", cp, [w("button", { type: "button", class: we(["inline-flex h-8 w-8 items-center justify-center rounded-full border transition-colors duration-200", i.value ? "border-red-200 bg-red-50 text-red-600 hover:border-red-300 hover:bg-red-100" : "border-green-200 bg-green-50 text-green-600 hover:border-green-300 hover:bg-green-100"]), title: i.value ? "Unmute voice playback" : "Mute voice playback", "aria-label": i.value ? "Unmute voice playback" : "Mute voice playback", onClick: u }, [(F(), W("svg", pp, [P[6] || (P[6] = w("path", { d: "M11 5L6 9H3v6h3l5 4V5Z" }, null, -1)), i.value ? (F(), W(He, { key: 0 }, [P[2] || (P[2] = w("path", { d: "M15 9l4 6" }, null, -1)), P[3] || (P[3] = w("path", { d: "M19 9l-4 6" }, null, -1))], 64)) : (F(), W(He, { key: 1 }, [P[4] || (P[4] = w("path", { d: "M15 10a3 3 0 0 1 0 4" }, null, -1)), P[5] || (P[5] = w("path", { d: "M17.5 7.5a6 6 0 0 1 0 9" }, null, -1))], 64))]))], 10, fp)])) : qe("", !0)]))])) : (F(), W("div", { key: 2, class: "w-fit max-w-[85%] whitespace-pre-line rounded-[13px_13px_3px_13px] bg-linear-to-br from-brand-500 to-brand-600 px-4 py-3 text-[11px] leading-relaxed wrap-anywhere text-white shadow-[0_14px_30px_-18px_rgba(109,79,194,0.85)] max-[600px]:max-w-[88%]", innerHTML: z.value }, null, 8, dp))], 2)) } }, hp = { class: "flex flex-col gap-4 sm:gap-5" }, gp = { class: "motion-safe:animate-fade-rise flex w-full items-start gap-1.5" }, mp = { __name: "ChatTab", props: { messages: { type: Array, required: !0 }, autoReadEnabled: { type: Boolean, default: !1 }, ttsConfig: { type: Object, required: !0 } }, setup(e) { return (t, n) => (F(), W("div", hp, [w("div", gp, [Oe(Fo), n[0] || (n[0] = w("p", { class: "w-fit max-w-[calc(100%-2.5rem)] whitespace-pre-line rounded-[10px_10px_10px_3px] bg-brand-50 px-4 py-3 text-xs leading-relaxed wrap-anywhere text-slate-900 max-[600px]:max-w-[calc(100%-2.25rem)]" }, [Ss(" Hello there 👋 I am ChangAI from "), w("a", { target: "_blank", href: "https://erpgulf.com", rel: "noopener noreferrer", style: { color: "#1e90ff" } }, "ERPGulf.com"), Ss(", your ERP assistant."), w("br"), w("a", { target: "_blank", href: "https://app.erpgulf.com/en/articles/chang-ai-quick-start-guide", rel: "noopener noreferrer", style: { color: "#1e90ff" } }, "ChangAI Quick Start Guide - Click here.")], -1))]), (F(!0), W(He, null, ws(e.messages, (s, r) => (F(), Et(yl, { key: r, message: s, autoReadEnabled: e.autoReadEnabled, ttsConfig: e.ttsConfig }, null, 8, ["message", "autoReadEnabled", "ttsConfig"]))), 128))])) } }; function wl(e) { try { return JSON.stringify(e, null, 2) } catch { return String(e) } } function vl(e) { var t, n; return (e == null ? void 0 : e.message) || ((t = e == null ? void 0 : e.responseJSON) == null ? void 0 : t.exception) || ((n = e == null ? void 0 : e.responseJSON) == null ? void 0 : n.message) || (e == null ? void 0 : e.responseText) || String(e) } function bp(e) { return typeof e == "string" ? e : e && typeof e == "object" ? e.error ? `⚠️ ${e.error}` : e.answer || e.text || "" : "" } const xp = { key: 0, class: "rounded-lg bg-brand-50 px-4 py-3 text-xs text-black" }, yp = { class: "whitespace-pre-wrap wrap-anywhere text-[11px] leading-relaxed text-black" }, wp = { key: 1, class: "mb-3 min-w-0 overflow-x-auto rounded-lg bg-brand-50 p-2 text-[11px]" }, vp = { class: "whitespace-pre-wrap wrap-anywhere text-[11px] leading-relaxed text-black" }, _p = { __name: "DebugTab", props: { logs: { type: Array, required: !0 }, currentDebug: { type: Object, default: null } }, setup(e) { const t = new Set(["gemini_json_content", "private_key", "private_key_id", "client_secret", "client_id", "aws_access_key", "aws_secret_key", "api_key", "token", "access_token", "refresh_token", "password", "secret", "authorization", "embed_version_id", "llm_version_id", "entity_retriever", "retriever", "deploy_url", "support_api_url", "get_ticket_details_url"]); function n(r, i = 0) { if (i > 10 || r === null || r === void 0 || typeof r == "string" || typeof r == "number" || typeof r == "boolean") return r; if (Array.isArray(r)) return r.map(o => n(o, i + 1)); if (typeof r == "object") { const o = {}; for (const [a, l] of Object.entries(r)) t.has(a.toLowerCase()) || (o[a] = n(l, i + 1)); return o } return r } function s(r) { return wl(n(r)) } return (r, i) => (F(), W("div", null, [e.logs.length === 0 ? (F(), W("p", xp, "No debug data yet.")) : qe("", !0), (F(!0), W(He, null, ws(e.logs, (o, a) => (F(), W("div", { key: a, class: "mb-3 min-w-0 overflow-x-auto rounded-lg bg-gray-100 p-2 text-[11px]" }, [w("pre", yp, Je(s(o)), 1)]))), 128)), e.currentDebug ? (F(), W("div", wp, [w("pre", vp, Je(s(e.currentDebug)), 1)])) : qe("", !0)])) } }, Tp = { class: "flex flex-col gap-4 sm:gap-5" }, kp = { key: 0, class: "chat-card motion-safe:animate-fade-rise rounded-lg px-4 py-3 text-xs text-slate-900" }, Sp = { __name: "SupportTab", props: { messages: { type: Array, required: !0 }, autoReadEnabled: { type: Boolean, default: !1 }, ttsConfig: { type: Object, required: !0 } }, setup(e) { return (t, n) => (F(), W("div", Tp, [e.messages.length === 0 ? (F(), W("p", kp, "Send a message to Support.")) : qe("", !0), (F(!0), W(He, null, ws(e.messages, (s, r) => (F(), Et(yl, { key: r, message: s, autoReadEnabled: e.autoReadEnabled, ttsConfig: e.ttsConfig }, null, 8, ["message", "autoReadEnabled", "ttsConfig"]))), 128))])) } }, Ep = { class: "flex flex-col gap-4" }, Ap = { class: "chat-card motion-safe:animate-fade-rise rounded-xl p-4" }, Rp = { class: "flex items-start justify-between gap-4" }, Cp = ["aria-pressed", "title"], Pp = { class: "chat-card motion-safe:animate-fade-rise rounded-xl p-4" }, Ip = { class: "flex items-start justify-between gap-4" }, Mp = { class: "mt-2 text-[11px] text-slate-500" }, Op = { key: 0, class: "mt-1 text-[11px] text-slate-500" }, Lp = { key: 1, class: "mt-1 text-[11px] text-slate-500" }, $p = ["aria-pressed", "disabled"], Dp = { key: 0, class: "mt-3 rounded-md bg-amber-50 px-2.5 py-2 text-xs text-amber-700" }, Np = { key: 1, class: "mt-3 rounded-md bg-amber-50 px-2.5 py-2 text-xs text-amber-700" }, Fp = { class: "chat-card motion-safe:animate-fade-rise rounded-xl p-4" }, Bp = { class: "flex items-start justify-between gap-4" }, Hp = ["aria-pressed", "title"], zp = { class: "chat-card motion-safe:animate-fade-rise rounded-xl p-4" }, Up = { class: "flex items-start justify-between gap-4" }, jp = ["aria-pressed", "title"], Vp = { __name: "SettingsTab", props: { autoReadEnabled: { type: Boolean, required: !0 }, ttsConfig: { type: Object, required: !0 }, settings: { type: Object, default: null }, debugEnabled: { type: Boolean, default: !1 }, sendNonERPtoaiEnabled: { type: Boolean, default: !1 } }, emits: ["toggleAutoRead", "togglePollyPreference", "toggleDebug", "toggleSendNonERP"], setup(e) { const t = e, n = Ee(() => { var s, r; return (s = t.ttsConfig) != null && s.enableVoiceChat ? (r = t.ttsConfig) != null && r.pollyAvailable ? "Available" : "Unavailable" : "Voice disabled on server" }); return (s, r) => { var i, o, a, l, f, u, d, g, y, E, x, M, m, H, Y; return F(), W("div", Ep, [r[10] || (r[10] = w("div", { class: "chat-card motion-safe:animate-fade-rise rounded-xl p-4 text-slate-900" }, [w("h3", { class: "text-sm font-semibold tracking-[0.01em]" }, "Speech Settings"), w("p", { class: "mt-1 text-xs leading-relaxed text-slate-600" }, "These controls apply only inside this chatbot box for the current browser session.")], -1)), w("div", Ap, [w("div", Rp, [r[4] || (r[4] = w("div", null, [w("p", { class: "text-sm font-semibold text-slate-900" }, "Auto Read Replies"), w("p", { class: "mt-1 text-xs text-slate-600" }, "Automatically read bot replies aloud.")], -1)), w("button", { class: we(["group relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200", e.autoReadEnabled ? "bg-emerald-500/95" : "bg-slate-300"]), "aria-pressed": e.autoReadEnabled ? "true" : "false", title: e.autoReadEnabled ? "Disable auto read" : "Enable auto read", onClick: r[0] || (r[0] = $ => s.$emit("toggleAutoRead")) }, [w("span", { class: we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200", e.autoReadEnabled ? "left-[1.45rem]" : "left-0.5"]) }, null, 2)], 10, Cp)]), w("p", { class: we(["mt-3 text-[11px] font-medium", e.autoReadEnabled ? "text-emerald-700" : "text-slate-500"]) }, Je(e.autoReadEnabled ? "Auto read is active." : "Auto read is currently off."), 3)]), w("div", Pp, [w("div", Ip, [w("div", null, [r[5] || (r[5] = w("p", { class: "text-sm font-semibold text-slate-900" }, "Use Amazon Polly", -1)), r[6] || (r[6] = w("p", { class: "mt-1 text-xs text-slate-600" }, "Use Polly when available; otherwise browser speech is used automatically.", -1)), w("p", Mp, "Availability: " + Je(n.value), 1), (i = e.settings) != null && i.aws_region ? (F(), W("p", Op, "Region: " + Je(e.settings.aws_region), 1)) : qe("", !0), (o = e.ttsConfig) != null && o.voiceId ? (F(), W("p", Lp, "Voice: " + Je(e.ttsConfig.voiceId), 1)) : qe("", !0)]), w("button", { class: we(["relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200 disabled:cursor-not-allowed disabled:opacity-55", (a = e.ttsConfig) != null && a.usePolly && ((l = e.ttsConfig) != null && l.enableVoiceChat) && ((f = e.ttsConfig) != null && f.pollyAvailable) ? "bg-emerald-500/95" : "bg-slate-300"]), "aria-pressed": (u = e.ttsConfig) != null && u.usePolly && ((d = e.ttsConfig) != null && d.enableVoiceChat) && ((g = e.ttsConfig) != null && g.pollyAvailable) ? "true" : "false", disabled: !((y = e.ttsConfig) != null && y.pollyAvailable) || !((E = e.ttsConfig) != null && E.enableVoiceChat), onClick: r[1] || (r[1] = $ => s.$emit("togglePollyPreference")) }, [w("span", { class: we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200", (x = e.ttsConfig) != null && x.usePolly && ((M = e.ttsConfig) != null && M.enableVoiceChat) && ((m = e.ttsConfig) != null && m.pollyAvailable) ? "left-[1.45rem]" : "left-0.5"]) }, null, 2)], 10, $p)]), (H = e.ttsConfig) != null && H.enableVoiceChat ? (Y = e.ttsConfig) != null && Y.pollyAvailable ? qe("", !0) : (F(), W("p", Np, "Polly is not available for this site. Browser speech will be used.")) : (F(), W("p", Dp, "Voice chat is disabled in ChangAI Settings."))]), w("div", Fp, [w("div", Bp, [w("div", null, [r[7] || (r[7] = w("p", { class: "text-sm font-semibold text-slate-900" }, "Enable Debug Tab", -1)), r[8] || (r[8] = w("p", { class: "mt-1 text-xs text-slate-600" }, " Show or hide the Debug tab inside this chatbot. ", -1)), w("p", { class: we(["mt-2 text-[11px] font-medium", e.debugEnabled ? "text-emerald-700" : "text-slate-500"]) }, Je(e.debugEnabled ? "Debug tab is active." : "Debug tab is currently off."), 3)]), w("button", { type: "button", class: we(["relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200", e.debugEnabled ? "bg-emerald-500/95" : "bg-slate-300"]), "aria-pressed": e.debugEnabled ? "true" : "false", title: e.debugEnabled ? "Disable debug tab" : "Enable debug tab", onClick: r[2] || (r[2] = $ => s.$emit("toggleDebug")) }, [w("span", { class: we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200", e.debugEnabled ? "left-[1.45rem]" : "left-0.5"]) }, null, 2)], 10, Hp)])]), w("div", zp, [w("div", Up, [r[9] || (r[9] = w("div", null, [w("p", { class: "text-sm font-semibold text-slate-900" }, "Send non-ERP questions directly to AI"), w("p", { class: "mt-1 text-xs text-slate-600" }, "Questions unrelated to your ERP will skip the system and go straight to AI")], -1)), w("button", { class: we(["group relative h-7 w-12 shrink-0 rounded-full border border-slate-200 transition-all duration-200", e.sendNonERPtoaiEnabled ? "bg-emerald-500/95" : "bg-slate-300"]), "aria-pressed": e.sendNonERPtoaiEnabled ? "true" : "false", title: e.sendNonERPtoaiEnabled ? "Non-ERP questions are being sent directly to AI" : "Enable direct AI reply for non-ERP questions", onClick: r[3] || (r[3] = $ => s.$emit("toggleSendNonERP")) }, [w("span", { class: we(["absolute top-0.5 h-5.5 w-5.5 rounded-full bg-white shadow-sm transition-all duration-200", e.sendNonERPtoaiEnabled ? "left-[1.45rem]" : "left-0.5"]) }, null, 2)], 10, jp)]), w("p", { class: we(["mt-3 text-[11px] font-medium", e.sendNonERPtoaiEnabled ? "text-emerald-700" : "text-slate-500"]) }, Je(e.sendNonERPtoaiEnabled ? "Non-ERP questions are now routed directly to AI" : "Direct AI routing is currently off"), 3)])]) } } }, qp = { key: 0, class: "pointer-events-none absolute -top-14 left-0 right-0 z-20 flex justify-center px-2", role: "status", "aria-live": "polite" }, Wp = { __name: "StatusToast", props: { visible: { type: Boolean, required: !0 }, message: { type: String, default: "" }, type: { type: String, default: "info" }, dismissible: { type: Boolean, default: !0 } }, emits: ["close"], setup(e) { const t = e, n = Ee(() => t.type === "error" ? "bg-red-50 text-red-700 ring-red-200" : (t.type === "listening", "bg-blue-50 text-blue-700 ring-blue-200")), s = Ee(() => t.type === "error" ? "bg-red-500" : t.type === "listening" ? "bg-blue-500 animate-pulse" : "bg-blue-500"); return (r, i) => (F(), Et(Pu, { "enter-active-class": "transition duration-200 ease-out", "enter-from-class": "translate-y-1 opacity-0", "enter-to-class": "translate-y-0 opacity-100", "leave-active-class": "transition duration-150 ease-in", "leave-from-class": "translate-y-0 opacity-100", "leave-to-class": "translate-y-1 opacity-0" }, { default: Di(() => [e.visible ? (F(), W("div", qp, [w("div", { class: we(["pointer-events-auto flex max-w-[92%] items-start gap-2 rounded-lg px-3 py-2 text-xs shadow-lg ring-1", n.value]) }, [w("span", { class: we(["mt-0.5 h-2 w-2 shrink-0 rounded-full", s.value]) }, null, 2), w("span", null, Je(e.message), 1), e.dismissible ? (F(), W("button", { key: 0, type: "button", class: "ml-1 appearance-none border-0 text-current/80 transition hover:text-current focus:outline-none", "aria-label": "Dismiss notification", onClick: i[0] || (i[0] = o => r.$emit("close")) }, " × ")) : qe("", !0)], 2)])) : qe("", !0)]), _: 1 })) } }, Gp = { class: "relative w-full" }, Kp = ["placeholder", "disabled"], Yp = ["title", "aria-label", "disabled"], Zp = { key: 0, viewBox: "0 0 24 24", width: "16", height: "16", fill: "currentColor", "aria-hidden": "true" }, Xp = { key: 1, viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, Qp = { key: 2, viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true", class: "animate-spin" }, Jp = ["title", "aria-label", "disabled"], ed = { key: 0, viewBox: "0 0 24 24", width: "18", height: "18", fill: "none", "aria-hidden": "true", class: "text-rose-600 motion-safe:animate-stop-button-pulse" }, td = { key: 1, viewBox: "0 0 24 24", width: "16", height: "16", fill: "currentColor", "aria-hidden": "true" }, nd = { __name: "ChatForm", props: { placeholder: { type: String, default: "Message..." }, disabled: { type: Boolean, default: !1 }, isAwaitingResponse: { type: Boolean, default: !1 } }, emits: ["submit", "cancel"], setup(e, { expose: t, emit: n }) { const s = e, r = n, i = J(""), o = J(null), a = J(!1), l = J(!1), f = J(!1), u = J(!1), d = J(!1), g = J(!1), y = J(!1), E = J(""), x = J("info"), M = J("Voice input is unavailable in this browser/context."); let m = null, H = null, Y = null; const $ = J(""), z = J(!1), O = Ee(() => f.value ? "Requesting microphone permission..." : u.value ? "Starting voice input..." : d.value ? "Stopping voice input..." : l.value ? a.value ? "Stop voice input" : "Start voice input" : "Voice input is unavailable in this browser/context"), P = Ee(() => s.isAwaitingResponse ? "Stop response" : "Send"), ee = Ee(() => s.isAwaitingResponse ? !1 : s.disabled || !i.value.trim()), V = Ee(() => s.isAwaitingResponse ? "bg-white border border-rose-100 shadow-[0_8px_20px_-12px_rgba(159,18,57,0.35)] hover:bg-rose-50" : "bg-linear-to-br from-brand-500 to-brand-600 text-white shadow-[0_10px_24px_-16px_rgba(109,79,194,0.85)] hover:from-brand-600 hover:to-violet-700"); function se() { return typeof window == "undefined" ? null : window.SpeechRecognition || window.webkitSpeechRecognition || null } function fe() { var ae; const re = se(), B = typeof window != "undefined" ? window.isSecureContext : !1, de = typeof navigator != "undefined" && !!((ae = navigator.mediaDevices) != null && ae.getUserMedia); l.value = !!(re && B && de), B ? (!de || !re) && (M.value = "Voice input is not supported in this browser.") : M.value = "Voice input requires HTTPS (or localhost).", re && l.value && (m = new re, m.continuous = !0, m.interimResults = !0, m.lang = typeof navigator != "undefined" && navigator.language || "en-US", m.onstart = () => { a.value = !0, u.value = !1, d.value = !1, D(), C("Listening... Tap mic to stop", "listening", { persistent: !0, key: "listening" }) }, m.onend = () => { a.value = !1, u.value = !1, d.value = !1, D(), $.value === "listening" && pe(), z.value && (z.value = !1, Ge()) }, m.onerror = ve => { if (a.value = !1, u.value = !1, d.value = !1, D(), z.value = !1, (ve == null ? void 0 : ve.error) === "not-allowed" || (ve == null ? void 0 : ve.error) === "service-not-allowed") { C("Microphone permission denied. Please allow microphone access in browser settings.", "error"); return } if ((ve == null ? void 0 : ve.error) === "audio-capture") { C("No microphone detected. Please connect a microphone and try again.", "error"); return } if ((ve == null ? void 0 : ve.error) === "no-speech") { C("No speech detected. Try speaking a bit louder.", "info"); return } C("Voice input failed. Please try again.", "error") }, m.onresult = ve => { let ge = ""; for (let nt = ve.resultIndex; nt < ve.results.length; nt += 1)ge += ve.results[nt][0].transcript; i.value = ge.trimStart() }) } function D() { Y && (clearTimeout(Y), Y = null) } function Z(re = {}) { const { submitAfterStop: B = !1 } = re; if (m) { z.value = B, u.value = !1, d.value = !0, D(); try { m.stop() } catch { d.value = !1, B && (z.value = !1, Ge()); return } Y = setTimeout(() => { if (m && !(!a.value && !d.value)) try { m.abort() } catch { d.value = !1, z.value = !1 } }, 1200) } } function Se() { if (!l.value || !m) { C(M.value, "error"); return } if (a.value || u.value || d.value) { Z({ submitAfterStop: a.value }); return } te() } async function Ue() { var re; if (g.value) return !0; if (!((re = navigator.mediaDevices) != null && re.getUserMedia)) return C("Microphone API is unavailable in this browser.", "error"), !1; f.value = !0, C("Requesting microphone permission...", "info", { persistent: !0, key: "requesting" }); try { return (await navigator.mediaDevices.getUserMedia({ audio: !0 })).getTracks().forEach(de => de.stop()), g.value = !0, !0 } catch (B) { return (B == null ? void 0 : B.name) === "NotAllowedError" || (B == null ? void 0 : B.name) === "SecurityError" ? C("Microphone permission denied. Please allow it and try again.", "error") : (B == null ? void 0 : B.name) === "NotFoundError" ? C("No microphone found on this device.", "error") : C("Unable to access microphone. Please check browser permissions.", "error"), !1 } finally { f.value = !1, $.value === "requesting" && pe() } } async function te() { var B; if (!(!m || a.value || u.value || d.value || !await Ue() || !m)) { z.value = !1, (B = o.value) == null || B.focus(), u.value = !0; try { m.start() } catch (de) { u.value = !1, d.value = !1, (de == null ? void 0 : de.name) !== "InvalidStateError" && C("Unable to start voice input. Please try again.", "error") } } } function C(re, B = "info", de = {}) { const { duration: ae = 4200, persistent: ve = !1, key: ge = "" } = de; E.value = re, x.value = B, $.value = ge, y.value = !0, H && clearTimeout(H), ve || (H = setTimeout(() => { y.value = !1, $.value = "" }, ae)) } function pe() { y.value = !1, $.value = "", H && (clearTimeout(H), H = null) } function Ge() { if (s.isAwaitingResponse) { r("cancel"); return } const re = i.value.trim(); re && ((a.value || u.value || d.value) && m && Z({ submitAfterStop: !1 }), r("submit", re), i.value = "") } return t({ focus: () => { var re; return (re = o.value) == null ? void 0 : re.focus() } }), zn(() => { fe() }), ys(() => { if (m && (a.value || u.value || d.value)) { z.value = !1, D(); try { m.abort() } catch { } } D(), pe() }), (re, B) => (F(), W("div", Gp, [w("form", { class: "group flex min-h-11 items-center gap-2 rounded-full border border-slate-200/90 bg-white/95 px-3 shadow-[0_12px_26px_-20px_rgba(15,23,42,0.7)] transition-all duration-250 focus-within:-translate-y-0.5 focus-within:border-brand-200 focus-within:shadow-[0_18px_30px_-20px_rgba(13,110,253,0.5)] focus-within:ring-2 focus-within:ring-brand-500/25", style: { "border-radius": "9999px" }, autocomplete: "off", onSubmit: pt(Ge, ["prevent"]), onClick: B[5] || (B[5] = pt(() => { }, ["stop"])), onMousedown: B[6] || (B[6] = pt(() => { }, ["stop"])), onKeydown: B[7] || (B[7] = pt(() => { }, ["stop"])), onKeyup: B[8] || (B[8] = pt(() => { }, ["stop"])) }, [Pa(w("input", { ref_key: "inputRef", ref: o, type: "text", "onUpdate:modelValue": B[0] || (B[0] = de => i.value = de), class: "h-11 w-full border-none bg-transparent text-sm font-medium text-slate-800 placeholder:text-slate-400 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50", placeholder: e.disabled ? "Waiting for response..." : e.placeholder, disabled: e.disabled, required: "", onKeydown: B[1] || (B[1] = pt(() => { }, ["stop"])), onKeyup: B[2] || (B[2] = pt(() => { }, ["stop"])), onKeypress: B[3] || (B[3] = pt(() => { }, ["stop"])), onInput: B[4] || (B[4] = pt(() => { }, ["stop"])) }, null, 40, Kp), [[Xu, i.value]]), w("button", { type: "button", class: we(["grid h-8 w-8 shrink-0 appearance-none place-items-center rounded-full border border-transparent text-slate-600 transition-all duration-200 hover:-translate-y-0.5 hover:border-slate-200 hover:bg-slate-100 hover:text-slate-900 focus:outline-none disabled:cursor-not-allowed disabled:opacity-40", a.value ? "border-red-200 bg-red-100 text-red-600 shadow-[0_10px_20px_-18px_rgba(220,38,38,0.9)] hover:bg-red-100 hover:text-red-600" : ""]), style: { "border-radius": "9999px" }, title: O.value, "aria-label": O.value, disabled: e.disabled || !l.value || f.value || u.value || d.value, onClick: Se }, [a.value && !f.value ? (F(), W("svg", Zp, B[9] || (B[9] = [w("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" }, null, -1)]))) : f.value ? (F(), W("svg", Qp, B[11] || (B[11] = [w("circle", { cx: "12", cy: "12", r: "9", opacity: "0.3" }, null, -1), w("path", { d: "M21 12a9 9 0 0 1-9 9" }, null, -1)]))) : (F(), W("svg", Xp, B[10] || (B[10] = [w("path", { d: "M12 3a3 3 0 0 0-3 3v6a3 3 0 0 0 6 0V6a3 3 0 0 0-3-3z" }, null, -1), w("path", { d: "M19 10v2a7 7 0 0 1-14 0v-2" }, null, -1), w("path", { d: "M12 19v3" }, null, -1)])))], 10, Yp), w("button", { type: "submit", title: P.value, "aria-label": P.value, class: we(["grid h-8 w-8 shrink-0 appearance-none place-items-center rounded-full border-0 transition-all duration-200 hover:-translate-y-0.5 focus:outline-none disabled:cursor-not-allowed disabled:opacity-40", V.value]), style: { "border-radius": "9999px" }, disabled: ee.value }, [e.isAwaitingResponse ? (F(), W("svg", ed, B[12] || (B[12] = [w("circle", { cx: "12", cy: "12", r: "8", stroke: "currentColor", "stroke-width": "2.1", class: "opacity-95" }, null, -1), w("rect", { x: "9", y: "9", width: "6", height: "6", rx: "1.35", fill: "currentColor" }, null, -1)]))) : (F(), W("svg", td, B[13] || (B[13] = [w("path", { d: "M4 12l1.41 1.41L11 7.83V20h2V7.83l5.59 5.58L20 12l-8-8-8 8z" }, null, -1)])))], 10, Jp)], 32), Oe(Wp, { visible: y.value, message: E.value, type: x.value, dismissible: x.value !== "listening", onClose: pe }, null, 8, ["visible", "message", "type", "dismissible"])])) } }, sd = { class: "relative overflow-hidden bg-linear-to-br from-brand-600 via-brand-500 to-violet-400" }, rd = { class: "min-w-0" }, id = { key: 1, class: "border-t border-slate-200/80 bg-white/90 px-3 py-3 pb-[calc(12px+env(safe-area-inset-bottom))] backdrop-blur-sm sm:px-4 sm:py-4" }, od = 56, ld = { __name: "ChatbotPopup", props: { isOpen: { type: Boolean, required: !0 }, activeTab: { type: String, required: !0 }, debugEnabled: { type: Boolean, default: !1 }, sendNonERPtoaiEnabled: { type: Boolean, default: !1 }, chatHistory: { type: Array, required: !0 }, debugLogs: { type: Array, required: !0 }, currentDebug: { type: Object, default: null }, supportHistory: { type: Array, required: !0 }, autoReadEnabled: { type: Boolean, required: !0 }, ttsConfig: { type: Object, required: !0 }, activeTtsProvider: { type: String, required: !0 }, settings: { type: Object, default: null }, isAwaitingChatResponse: { type: Boolean, default: !1 }, isAwaitingSupportResponse: { type: Boolean, default: !1 } }, emits: ["close", "submit", "cancelResponse", "update:activeTab", "toggleAutoRead", "togglePollyPreference", "toggleDebug", "toggleSendNonERP"], setup(e, { expose: t, emit: n }) { const s = e, r = n, i = J(null), o = J(null), a = J(s.activeTab), l = J("default"), f = J(!1), u = Ee(() => a.value === "support" ? s.isAwaitingSupportResponse : a.value === "chat" ? s.isAwaitingChatResponse : !1); function d() { const M = i.value; if (!s.isOpen || !M) { f.value = !1; return } const m = M.scrollHeight - M.clientHeight; if (m <= 4) { f.value = !1; return } const H = m - M.scrollTop; f.value = H > od } function g() { const M = i.value; M && (M.scrollTo({ top: M.scrollHeight, behavior: "smooth" }), setTimeout(() => { d() }, 220)) } function y() { St(() => { d() }) } function E() { if (l.value === "default") { l.value = "half"; return } if (l.value === "half") { l.value = "full"; return } l.value = "default" } const x = Ee(() => { const M = "chat-shell fixed z-[9999] flex min-h-0 flex-col overflow-hidden border border-slate-200/80 shadow-[0_32px_80px_-44px_rgba(2,6,23,0.7),0_18px_40px_-24px_rgba(15,23,42,0.45)] transition-all duration-300 ease-out origin-bottom-right", m = s.isOpen ? "pointer-events-auto opacity-100 translate-x-0 translate-y-0 scale-100 motion-safe:animate-surface-in" : "pointer-events-none opacity-0 translate-x-1/5 translate-y-8 scale-95"; return l.value === "full" ? [M, m, "inset-0 h-screen w-screen max-h-screen max-w-screen rounded-none origin-center"] : l.value === "half" ? [M, m, "bottom-[74px] right-5 h-[min(86vh,860px)] w-[min(50vw,860px)] rounded-2xl", "max-[900px]:bottom-[78px] max-[900px]:right-3 max-[900px]:h-[min(86vh,760px)] max-[900px]:w-[min(70vw,760px)] max-[900px]:rounded-[14px]", "max-[600px]:inset-0 max-[600px]:h-screen max-[600px]:w-screen max-[600px]:max-h-screen max-[600px]:max-w-screen max-[600px]:rounded-none max-[600px]:pb-[env(safe-area-inset-bottom)]"] : [M, m, "bottom-[74px] right-5 h-[min(560px,72vh)] w-[min(360px,calc(100vw-40px))] rounded-2xl", "max-[900px]:bottom-[78px] max-[900px]:right-3 max-[900px]:h-[min(70vh,540px)] max-[900px]:w-[min(360px,calc(100vw-24px))] max-[900px]:rounded-[14px]", "max-[600px]:inset-0 max-[600px]:h-screen max-[600px]:w-screen max-[600px]:max-h-screen max-[600px]:max-w-screen max-[600px]:rounded-none max-[600px]:pb-[env(safe-area-inset-bottom)]"] }); return on(() => s.activeTab, M => { a.value = M, y() }), on(() => s.isOpen, M => { M && a.value !== "settings" && St(() => { var m; return (m = o.value) == null ? void 0 : m.focus() }), y() }), on(a, M => { r("update:activeTab", M), y() }), on(() => [s.chatHistory.length, s.supportHistory.length, s.debugLogs.length, s.currentDebug], () => { y() }), on(() => s.debugEnabled, M => { !M && a.value === "debug" && (a.value = "chat"), y() }), zn(() => { y() }), t({ scrollToBottom() { St(() => { g() }) } }), (M, m) => (F(), W("div", { class: we(x.value), onKeydown: m[9] || (m[9] = pt(() => { }, ["stop"])), onKeyup: m[10] || (m[10] = pt(() => { }, ["stop"])), onKeypress: m[11] || (m[11] = pt(() => { }, ["stop"])) }, [m[14] || (m[14] = w("div", { class: "pointer-events-none absolute -right-14 -top-14 h-36 w-36 rounded-full bg-brand-500/15 blur-2xl" }, null, -1)), m[15] || (m[15] = w("div", { class: "pointer-events-none absolute -bottom-14 -left-12 h-32 w-32 rounded-full bg-violet-400/15 blur-2xl" }, null, -1)), w("div", sd, [m[12] || (m[12] = w("div", { class: "pointer-events-none absolute inset-0 opacity-45", style: { background: "linear-gradient(120deg, rgba(255,255,255,0.16) 0%, rgba(255,255,255,0.02) 52%, rgba(255,255,255,0.12) 100%)" } }, null, -1)), Oe(vc, { windowMode: l.value, autoReadEnabled: e.autoReadEnabled, activeTtsProvider: e.activeTtsProvider, onClose: m[0] || (m[0] = H => M.$emit("close")), onCycleResize: E, onToggleAutoRead: m[1] || (m[1] = H => M.$emit("toggleAutoRead")) }, null, 8, ["windowMode", "autoReadEnabled", "activeTtsProvider"]), Oe(Sc, { modelValue: a.value, "onUpdate:modelValue": m[2] || (m[2] = H => a.value = H), debugEnabled: e.debugEnabled }, null, 8, ["modelValue", "debugEnabled"])]), w("div", { class: "chat-scrollbar min-h-0 flex-1 overflow-x-hidden overflow-y-scroll bg-slate-50/60 px-4 py-4 max-[900px]:px-3.5 max-[900px]:py-3.5 max-[600px]:px-3 max-[600px]:py-3", ref_key: "chatBodyRef", ref: i, onScrollPassive: d }, [w("div", rd, [a.value === "chat" ? (F(), Et(mp, { key: 0, messages: e.chatHistory, autoReadEnabled: e.autoReadEnabled, ttsConfig: e.ttsConfig }, null, 8, ["messages", "autoReadEnabled", "ttsConfig"])) : a.value === "debug" && e.debugEnabled ? (F(), Et(_p, { key: 1, logs: e.debugLogs, currentDebug: e.currentDebug }, null, 8, ["logs", "currentDebug"])) : a.value === "support" ? (F(), Et(Sp, { key: 2, messages: e.supportHistory, autoReadEnabled: e.autoReadEnabled, ttsConfig: e.ttsConfig }, null, 8, ["messages", "autoReadEnabled", "ttsConfig"])) : a.value === "settings" ? (F(), Et(Vp, { key: 3, autoReadEnabled: e.autoReadEnabled, ttsConfig: e.ttsConfig, settings: e.settings, debugEnabled: e.debugEnabled, sendNonERPtoaiEnabled: e.sendNonERPtoaiEnabled, onToggleAutoRead: m[3] || (m[3] = H => M.$emit("toggleAutoRead")), onTogglePollyPreference: m[4] || (m[4] = H => M.$emit("togglePollyPreference")), onToggleDebug: m[5] || (m[5] = H => M.$emit("toggleDebug")), onToggleSendNonERP: m[6] || (m[6] = H => M.$emit("toggleSendNonERP")) }, null, 8, ["autoReadEnabled", "ttsConfig", "settings", "debugEnabled", "sendNonERPtoaiEnabled"])) : qe("", !0)])], 544), f.value ? (F(), W("button", { key: 0, type: "button", class: we(["absolute right-4 z-20 grid h-9 w-9 place-items-center rounded-full border border-brand-200/70 bg-white/95 text-brand-600 shadow-[0_14px_26px_-16px_rgba(15,23,42,0.65)] transition-all duration-200 hover:-translate-y-0.5 hover:border-brand-300 hover:text-brand-700 focus:outline-none", a.value !== "settings" ? "bottom-[calc(90px+env(safe-area-inset-bottom))] sm:bottom-[96px]" : "bottom-4 sm:bottom-5"]), title: "Scroll to bottom", "aria-label": "Scroll to bottom", onClick: g }, m[13] || (m[13] = [w("svg", { viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, [w("path", { d: "M7 10l5 5 5-5" })], -1)]), 2)) : qe("", !0), a.value !== "settings" ? (F(), W("div", id, [Oe(nd, { ref_key: "chatFormRef", ref: o, placeholder: a.value === "support" ? "Message Support..." : "Message...", disabled: u.value, isAwaitingResponse: u.value, onSubmit: m[7] || (m[7] = H => M.$emit("submit", H)), onCancel: m[8] || (m[8] = H => M.$emit("cancelResponse")) }, null, 8, ["placeholder", "disabled", "isAwaitingResponse"])])) : qe("", !0)], 34)) } }, _l = "changai_chat_id", Tl = "changai_polly_enabled"; function ad() { let e = sessionStorage.getItem(_l); return e || (e = `session_${Date.now()}_${crypto.randomUUID()}`, sessionStorage.setItem(_l, e)), e } function ud() { const e = localStorage.getItem(Tl); return e === null ? !0 : e === "true" } function cd(e) { localStorage.setItem(Tl, String(!!e)) } const fd = { __name: "App", setup(e) { const t = J(!1), n = J("chat"), s = J([]), r = J([]), i = J(!1), o = J([]), a = J(null), l = J("actual"), f = J(!0), u = J(null), d = J(!1), g = J(null), y = J(!1), E = J({ enableVoiceChat: !1, pollyAvailable: !1, usePolly: !0, voiceId: "Zayd", enable_changai: !1 }), x = J("off"), M = J(null), m = J(null), H = Ee(() => M.value !== null), Y = Ee(() => m.value !== null); function $() { if (!E.value.enableVoiceChat) { x.value = "off"; return } x.value = E.value.usePolly ? "polly" : "browser" } function z(te) { var pe; const C = (pe = te == null ? void 0 : te.detail) == null ? void 0 : pe.provider; (C === "polly" || C === "browser" || C === "off") && (x.value = C) } async function O() { var pe, Ge, re, B, de; if (!(d.value || u.value)) { d.value = !0; try { u.value = await Mc(l.value), E.value = { enableVoiceChat: !!((pe = u.value) != null && pe.enable_voice_chat), pollyAvailable: !!((Ge = u.value) != null && Ge.polly_enabled), usePolly: !!((re = u.value) != null && re.polly_enabled) && ud(), voiceId: ((B = u.value) == null ? void 0 : B.polly_voice_id) || "Zayd", enable_changai: !!((de = u.value) != null && de.enable_changai) }, $(), r.value.push({ type: "settings", settings: u.value }) } catch (ae) { const ve = vl(ae); r.value.push({ type: "settings", error: ve }) } finally { d.value = !1 } } } function P() { t.value = !t.value } function ee() { var te; (te = a.value) == null || te.scrollToBottom() } function V() { f.value = !f.value } function se() { const te = !E.value.usePolly; E.value = { ...E.value, usePolly: te && E.value.pollyAvailable }, cd(E.value.usePolly), $() } function fe() { y.value = !y.value } async function D(te) { n.value === "support" ? await Ue(te) : await Z(te) } async function Z(te) { var ye, ht; g.value = null, l.value === "actual" && await O(), s.value.push({ role: "user", text: te }), await St(), ee(); const C = cs({ role: "model", text: "Thinking...", cancelable: !0, isStatus: !0, statusType: "thinking" }); s.value.push(C), await St(), ee(); let pe = !1; const Ge = ad(), re = `${Ge}_${Date.now()}`, B = y.value, de = Pc(te, Ge, l.value, re, y.value), ae = `debug_${re}`; let ve = Date.now(); const ge = [], nt = G => { var h; const Ce = Date.now(), Ft = ((Ce - ve) / 1e3).toFixed(2); ve = Ce; const c = `${G.message} (${Ft}s)`; if (G.message && (ge.push(c), g.value = c), !G.done && G.message && (C.text = G.message, C.statusType = "pipeline"), G.done) { C.cancelable = !1, G.error ? (C.text = `⚠️ ${G.message || "Something failed"}`, C.isStatus = !1, C.statusType = null) : (h = G.data) != null && h.answer && (C.text = G.data.answer, C.isStatus = !1, C.statusType = null), frappe.realtime.off(ae), g.value = null; return } }; frappe.realtime.on(ae, nt), M.value = () => { pe || (pe = !0, de.cancel(), frappe.realtime.off(ae), C.isStatus = !1, C.statusType = null, C.text = "Cancelled by user.", r.value.push({ type: "cancelled", user: te, steps: [...ge] }), g.value = null, C.cancelable = !1, M.value = null) }; try { const G = await de.promise; if (G != null && G.open_report) { if (C.isStatus = !1, C.statusType = null, C.text = `Opening "${G.report_name}" report." `, r.value.push({ type: "success", steps: [...ge], final_response: G, entity_raw: G.entity_raw }), g.value = null, !G.report_name) { C.text = "Report name extraction failed.Can you ask the same question again?"; return } frappe.set_route("query-report", G.report_name, G.filters || {}); return } else if (G != null && G.create_entity) { C.isStatus = !1, C.statusType = null, C.cancelable = !1, C.text = `Opening "${G.doc}" doctype for creating Entity "${G.entity_name}" record.`, r.value.push({ type: "success", user: te, steps: [...ge], final_response: G }), g.value = null; const Ft = G.doc, c = G.entity_name || "", b = { Customer: { customer_name: c }, Supplier: { supplier_name: c }, Employee: { employee_name: c }, Item: { item_code: c, item_name: c }, Project: { project_name: c }, Lead: { lead_name: c }, Opportunity: { opportunity_name: c } }[Ft] || {}; frappe.route_options = b, frappe.set_route("Form", Ft, "new"); const k = setInterval(() => { cur_frm && cur_frm.doctype === Ft && cur_frm.is_new() && (clearInterval(k), Object.entries(b).forEach(([v, _]) => { _ && cur_frm.fields_dict[v] && (cur_frm.set_value(v, _), cur_frm.refresh_field(v)) })) }, 200); return } if (pe) return; C.cancelable = !1; const Ce = ((ye = bp(G == null ? void 0 : G.Bot)) == null ? void 0 : ye.trim()) || "No response."; C.isStatus = !1, C.statusType = null, C.text = Ce, r.value.push({ type: "success", user: te, steps: [...ge], final_response: G }), g.value = null } catch (G) { if (pe) return; frappe.realtime.off(ae), C.cancelable = !1, C.isStatus = !1, C.statusType = null; const Ce = vl(G); g.value = null, r.value.push({ type: "failed", user: te, steps: [...ge], error: Ce }), (G == null ? void 0 : G.code) === "ERR_NETWORK_CHANGED" || (ht = G == null ? void 0 : G.message) != null && ht.includes("ERR_NETWORK_CHANGED") ? (C.isStatus = !1, C.statusType = null, C.text = "⚠️ Network error. Please check your connection and try again.") : (C.isStatus = !1, C.statusType = null, C.text = "⚠️ Something went wrong. Please try again.") } finally { frappe.realtime.off(ae), pe || (M.value = null) } await St(), ee() } function Se() { var te, C; if (n.value === "support") { (te = m.value) == null || te.call(m); return } (C = M.value) == null || C.call(M) } async function Ue(te) { o.value.push({ role: "user", text: te }), await St(), ee(); const C = cs({ role: "model", text: "Sending to support...", isStatus: !0, statusType: "support" }); o.value.push(C), await St(), ee(); let pe = !1; const Ge = Ic(te, l.value); m.value = () => { pe || (pe = !0, Ge.cancel(), C.isStatus = !1, C.statusType = null, C.text = "Cancelled by user.", m.value = null) }; try { const re = await Ge.promise; if (pe) return; C.isStatus = !1, C.statusType = null, C.text = re ? wl(re) : "Support request sent successfully." } catch { if (pe) return; C.isStatus = !1, C.statusType = null, C.text = "⚠️ Failed to reach support. Please try again." } finally { pe || (m.value = null) } await St(), ee() } return zn(() => { typeof window != "undefined" && window.addEventListener("changai-tts-provider", z), l.value === "actual" && O() }), ys(() => { typeof window != "undefined" && window.removeEventListener("changai-tts-provider", z) }), (te, C) => (F(), W(He, null, [E.value.enable_changai ? (F(), Et(ac, { key: 0, isOpen: t.value, onToggle: P }, null, 8, ["isOpen"])) : qe("", !0), Oe(ld, { ref_key: "popupRef", ref: a, isOpen: t.value, activeTab: n.value, "onUpdate:activeTab": C[0] || (C[0] = pe => n.value = pe), chatHistory: s.value, debugLogs: r.value, currentDebug: g.value, supportHistory: o.value, autoReadEnabled: f.value, ttsConfig: E.value, activeTtsProvider: x.value, settings: u.value, isAwaitingChatResponse: H.value, isAwaitingSupportResponse: Y.value, debugEnabled: i.value, sendNonERPtoaiEnabled: y.value, onToggleDebug: C[1] || (C[1] = pe => i.value = !i.value), onClose: C[2] || (C[2] = pe => t.value = !1), onSubmit: D, onCancelResponse: Se, onToggleAutoRead: V, onTogglePollyPreference: se, onToggleSendNonERP: fe }, null, 8, ["isOpen", "activeTab", "chatHistory", "debugLogs", "currentDebug", "supportHistory", "autoReadEnabled", "ttsConfig", "activeTtsProvider", "settings", "isAwaitingChatResponse", "isAwaitingSupportResponse", "debugEnabled", "sendNonERPtoaiEnabled"])], 64)) } }; function pd() { const e = document.querySelector('link[href*="/assets/changai/dist/changai-chatbot.css"]'); if (e != null && e.href) return e.href; const t = Array.from(document.scripts).find(n => { var s; return (s = n.src) == null ? void 0 : s.includes("/assets/changai/dist/changai-chatbot.js") }); return t != null && t.src ? t.src.replace(/changai-chatbot\.js(\?.*)?$/, "changai-chatbot.css$1") : null } function dd(e) { const t = pd(); if (!t) { const n = Array.from(document.querySelectorAll("style[data-vite-dev-id]")); return n.length && n.forEach(s => { const r = document.createElement("style"); r.dataset.changaiShadowDevStyle = "1", r.textContent = s.textContent || "", e.appendChild(r) }), Promise.resolve() } return e.querySelector('link[data-changai-shadow-style="1"]') ? Promise.resolve() : new Promise(n => { const s = document.createElement("link"); s.rel = "stylesheet", s.href = t, s.dataset.changaiShadowStyle = "1", s.onload = () => n(), s.onerror = () => n(), e.appendChild(s), setTimeout(n, 1200) }) } async function kl() { if (document.getElementById("changai-chatbot-host")) return; const e = document.createElement("div"); e.id = "changai-chatbot-host", document.body.appendChild(e); const t = e.attachShadow({ mode: "open" }); await dd(t); const n = document.createElement("div"); n.id = "changai-chatbot-root", t.appendChild(n), nc(fd).mount(n); function s(r) { r.stopPropagation() } n.addEventListener("keydown", s), n.addEventListener("keyup", s), n.addEventListener("keypress", s) } document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", kl) : kl() +})(); diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 03162eb..bc4be27 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -99,6 +99,10 @@ function togglePollyPreference() { function sendNonErpToAI() { sendNonERPtoaiEnabled.value = !sendNonERPtoaiEnabled.value + localStorage.setItem( + 'sendNonERPtoaiEnabled', + sendNonERPtoaiEnabled.value + ) } async function handleSubmit(message) { if (activeTab.value === 'support') { @@ -126,7 +130,9 @@ async function handleChatSubmit(message) { let cancelled = false const chatId = getOrCreateChatId() const requestId = `${chatId}_${Date.now()}` - const sendNonErptoAI = sendNonERPtoaiEnabled.value + const sendNonERPtoaiEnabled = ref( + localStorage.getItem('sendNonERPtoaiEnabled') === 'true' + ) console.log('sendNonErptoAI value being sent:', sendNonErptoAI, typeof sendNonErptoAI) const eventName = `debug_${requestId}` frappe.realtime.on(eventName, onPipelineUpdate) diff --git a/frontend/src/utils/frappe.js b/frontend/src/utils/frappe.js index 8c39f10..cd1ff6a 100644 --- a/frontend/src/utils/frappe.js +++ b/frontend/src/utils/frappe.js @@ -2,9 +2,9 @@ const IS_DEV = import.meta.env.DEV export const API = { PIPELINE: 'changai.changai.api.v2.text2sql_pipeline_v2.run_text2sql_pipeline', - SUPPORT: 'changai.changai.api.v2.text2sql_pipeline_v2.support_bot', - SETTINGS: 'changai.changai.api.v2.text2sql_pipeline_v2.get_frontend_settings', - TTS: 'changai.changai.api.v2.text2sql_pipeline_v2.synthesize_tts', + SUPPORT: 'changai.changai.api.v2.helpdesk_api.support_bot', + SETTINGS: 'changai.changai.api.v2.schema_utils.get_frontend_settings', + TTS: 'changai.changai.api.v2.tts.synthesize_tts', } export function frappeCall(method, args = {}, mode = 'actual') {

    sB^z!Pye(APBAT-aeagu%!~K|gQ<@XNAm;uaxQ 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 delta 38048 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 Dict[str, Any]: + user_email = frappe.session.user + full_name = frappe.get_value("User", frappe.session.user, "full_name") + prompt = SUPPORT_USER_PROMPT.format(user_message=message) + raw = call_gemini(prompt, SUPPORT_SYS_PROMPT) + output = json.loads(raw) + task_flag = (output.get("task_flag") or "UNKNOWN").strip() + ticket_id = output.get("ticket_id") + + if isinstance(ticket_id, str) and ticket_id.isdigit(): + ticket_id = int(ticket_id) + if not isinstance(ticket_id, int): + ticket_id = None + + if task_flag == "CREATE_TICKET": + try: + response = create_helpdesk_ticket(message, full_name, user_email) + return json.loads(response.get_data(as_text=True)) # ✅ unwrap Response → dict + except Exception as e: + return {"error": str(e)} + + if task_flag == "TICKET_DETAILS": + if not ticket_id: + return {"kind": "TICKET_DETAILS", "error": "Ticket id missing. Please say like: ticket 29"} + try: + response = get_user_tickets(ticket_id) + return json.loads(response.get_data(as_text=True)) # ✅ unwrap Response → dict + except Exception as e: + return {"error": str(e)} + + if task_flag == "GET_USER_TICKETS": + response = get_user_tickets() + return json.loads(response.get_data(as_text=True)) # ✅ unwrap Response → dict + + return {"kind": "UNKNOWN", "message": "Please describe the issue or provide a ticket number."} + diff --git a/changai/changai/api/v2/non_erp_handler.py b/changai/changai/api/v2/non_erp_handler.py index a2e6b54..161fbde 100644 --- a/changai/changai/api/v2/non_erp_handler.py +++ b/changai/changai/api/v2/non_erp_handler.py @@ -7,10 +7,13 @@ import pickle from dataclasses import dataclass from typing import Dict, List, Optional, Set, Tuple, Any +from changai.changai.api.v2.schema_utils import read_asset import frappe from rapidfuzz import process, fuzz - +_NON_ERP_DATA = None +_NON_ERP_QUESTIONS = None +_NON_ERP_RESPONSE_MAP = None @dataclass class ResponseEntry: @@ -597,4 +600,42 @@ def handle_non_erp_query(user_input: str) -> dict: "matcher_seconds": round(matcher_seconds, 6), "total_seconds": round(total_seconds, 6), } - } +} + +def non_erp_response(non_erp_q: str) -> Optional[str]: + questions, response_map = load_non_erp_data() + result = process.extractOne( + non_erp_q, + questions, + scorer=fuzz.WRatio, + score_cutoff=65 + ) + if not result: + return {"data":"Hey Iam ChangAI from ERPGulf,iam here to help you with your queries..."} + matched_q = result[0] + return {"data": response_map.get(matched_q, "Hey Iam ChangAI from ERPGulf,iam here to help you with your queries...")} + + +def load_non_erp_data(): + global _NON_ERP_DATA, _NON_ERP_QUESTIONS, _NON_ERP_RESPONSE_MAP + + if _NON_ERP_DATA is not None: + return _NON_ERP_QUESTIONS, _NON_ERP_RESPONSE_MAP + try: + _NON_ERP_DATA = read_asset("non_erp_combined.processed.json") + except Exception as e: + frappe.log_error(f"Failed to load NON-ERP data: {e}", "ChangAI NON-ERP Data Load Error") + _NON_ERP_DATA = [] + + _NON_ERP_QUESTIONS = [] + _NON_ERP_RESPONSE_MAP = {} + + for item in _NON_ERP_DATA: + q = item.get("user_input") + if not q: + continue + + _NON_ERP_QUESTIONS.append(q) + _NON_ERP_RESPONSE_MAP[q] = item.get("response") + + return _NON_ERP_QUESTIONS, _NON_ERP_RESPONSE_MAP diff --git a/changai/changai/api/v2/retrieve.py b/changai/changai/api/v2/retrieve.py new file mode 100644 index 0000000..f8a8e3b --- /dev/null +++ b/changai/changai/api/v2/retrieve.py @@ -0,0 +1,696 @@ +import os +import re +import json +import pickle +import shutil +from pathlib import Path +from functools import lru_cache +from typing import Any, Dict, List, Optional, Union +from rapidfuzz import fuzz, process +from changai.changai.api.v2.non_erp_handler import load_non_erp_data +from changai.changai.api.v2.clients import gemini_client +from changai.changai.api.v2.tts import get_polly_client +from changai.changai.api.v2.schema_utils import ( + ChangAIConfig, + CHANGAI_GUIDE_LINK, + ERPGULF_LINK, + settingsUrl, + format_schema_context, + publish_pipeline_update, + _safe_join, +) + +from changai.changai.api.v2.clients import ( + _post_json, + _GEMINI_CLIENT, + APPLICATION_JSON, +) +import numpy as np +import frappe +from frappe import _ +from huggingface_hub import snapshot_download +from langchain_community.vectorstores import FAISS +from langchain_huggingface import HuggingFaceEmbeddings +_KEYWORDS_LIST = None +_KEYWORDS_SET = None +_FIELD_DOCS_CACHE = None +_FIELD_EMBS_CACHE = None +_TABLE_TO_IDX_CACHE = None +_VS_REPORT=None +_VS_TABLE = None +_KEYWORDS_SET=None +_VS_MASTER = None +_EMBEDDER_INSTANCE = None +_FULL_FIELDS_VS = None +_SUB_VS_CACHE = {} +EMBEDDING_ENGINE_NONE_MESSG = f""" +Embedding engine is None. Model not loaded. +Check Quick Start Guide Here 👇: +{CHANGAI_GUIDE_LINK}""" +from changai.changai.api.v2.schema_utils import read_asset +bk = read_asset("business_keywords_v1.json", base="assets") +BUSINESS_KEYWORDS = bk.get("business_keywords", bk) + +@frappe.whitelist(allow_guest=False) +def download_model(): + frappe.enqueue( + "changai.changai.api.v2.retrieve.download_model_from_ui", # dot-path to the function + queue="long", # use "long" queue for heavy tasks + timeout=3600, # 1 hour timeout (in seconds) + is_async=True, # run in background (default True) + job_name="download_model", # optional: helps track/deduplicate jobs + ) + return { + "ok":True,"message":"Model Downloading.." + } + + +def _get_model_path(): + site_path = frappe.get_site_path("private", "files", "changai_model") + return site_path + + +@frappe.whitelist(allow_guest=False) +def download_model_from_ui(): + global _EMBEDDER_INSTANCE + + model_path = _get_model_path() + + try: + if os.path.exists(model_path): + shutil.rmtree(model_path) + + os.makedirs(model_path, exist_ok=True) + + snapshot_download( + repo_id="hyrinmansoor/changAI-nomic-embed-text-v1.5-finetuned", + local_dir=model_path, + ignore_patterns=[ + "*.pt", + "*.pth", + "*.bin", + "trainer_*", + "optimizer*" + ] + ) + _EMBEDDER_INSTANCE = None + return {"status": "success", "message": "Embedding model downloaded successfully."} + + except Exception as e: + frappe.log_error(frappe.get_traceback(), "Embedding Model Download Failed") + frappe.throw(_("Model download failed: {0}\n Check Quick Start Guide Here 👇:\n{1}
    " + "
    Download Embedding Model.
    " + "ERPGulf.com." +).format(str(e),CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK)) + + + +def load_field_matrix(): + global _FIELD_DOCS_CACHE, _FIELD_EMBS_CACHE, _TABLE_TO_IDX_CACHE + + if _FIELD_DOCS_CACHE is not None: + return _FIELD_DOCS_CACHE, _FIELD_EMBS_CACHE, _TABLE_TO_IDX_CACHE + + app_root = Path(frappe.get_app_path("changai")).resolve() + schema_rel = "changai/api/v2/fvs_stores/erpnext/emb_dir" + # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal + schema_path = _safe_join(app_root, schema_rel) + + embs_path = schema_path / "field_embs.npy" + docs_path = schema_path / "field_docs.pkl" + table_idx_path = schema_path / "table_to_idx.pkl" + + if not embs_path.exists(): + frappe.throw(f"Missing field_embs.npy. Rebuild schema FVS first: {embs_path}") + + # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal + with open(docs_path, "rb") as f: + docs = pickle.load(f) + + # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal + with open(table_idx_path, "rb") as f: + table_to_idx = pickle.load(f) + + embs = np.load(embs_path, mmap_mode="r") + + _FIELD_DOCS_CACHE = docs + _FIELD_EMBS_CACHE = embs + _TABLE_TO_IDX_CACHE = table_to_idx + + return docs, embs, table_to_idx + + +def get_embedding_engine(): + global _EMBEDDER_INSTANCE + if _EMBEDDER_INSTANCE is not None: + return _EMBEDDER_INSTANCE + + model_path = _get_model_path() # check path first, always + + if not os.path.exists(model_path): + _EMBEDDER_INSTANCE = None # reset if model missing + frappe.throw( + _( + "Go to ChangAI Settings and click" + "Download Embedding Model.

    " + "Check this Quick Start Guide for more detail: " + "Click here" + "ERPGulf.com." + + ).format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), + title=_("Embedding Model Required") + ) + + if _EMBEDDER_INSTANCE is None: + _EMBEDDER_INSTANCE = HuggingFaceEmbeddings( + model_name=model_path, + model_kwargs={"device": "cpu","trust_remote_code": True,}, + encode_kwargs={ + "normalize_embeddings": True, + }, + ) + + return _EMBEDDER_INSTANCE + + + + +def get_vs(istable: bool): + global _VS_TABLE, _VS_REPORT + + emb = get_embedding_engine() + if emb is None: + frappe.throw(_(EMBEDDING_ENGINE_NONE_MESSG)) + + app_path = frappe.get_app_path("changai") + + if istable: + if _VS_TABLE is None: + table_vs_path = os.path.join( + app_path, "changai", "api", "v2", + "fvs_stores", "erpnext", "table_fvs" + ) + + if not os.path.exists(table_vs_path): + frappe.throw(_("FAISS table store not found at {0}").format(table_vs_path)) + + _VS_TABLE = FAISS.load_local( + table_vs_path, + emb, + allow_dangerous_deserialization=True + ) + + return _VS_TABLE + + else: + if _VS_REPORT is None: + report_vs_path = os.path.join( + app_path, "changai", "api", "v2", + "fvs_stores", "erpnext", "report_fvs" + ) + + if not os.path.exists(report_vs_path): + frappe.throw(_("FAISS report store not found at {0}").format(report_vs_path)) + + _VS_REPORT = FAISS.load_local( + report_vs_path, + emb, + allow_dangerous_deserialization=True + ) + + return _VS_REPORT + + +def get_master_vs(): + global _VS_MASTER + try: + if _VS_MASTER is None: + emb = get_embedding_engine() + if emb is None: + frappe.throw(_(EMBEDDING_ENGINE_NONE_MESSG)) + + master_vs_path = frappe.get_site_path( + "private", "changai", "fvs_stores", "erpnext", "masterdata_fvs" + ) + if not os.path.exists(master_vs_path): + frappe.throw(_( + "FAISS MASTER store not found at {0}.

    " + "Please open " + "Go to Settings Page" + "and click on the Update Master Data button in the Training tab.

    " + "Check Quick Start Guide Here 👇
    " + "Click here


    " + "ERPGulf.com" + + ).format( + master_vs_path, + settingsUrl, + CHANGAI_GUIDE_LINK, + ERPGULF_LINK + )) + + _VS_MASTER = FAISS.load_local( + master_vs_path, + emb, + allow_dangerous_deserialization=True + ) + except Exception as e: + frappe.log_error(f"Error loading master vector store: {e}", "ChangAI Master VS Load Error") + + return _VS_MASTER +_WARMUP_COUNT=0 +def load_on_startup(): + global _WARMUP_COUNT,_EMBEDDER_INSTANCE, _VS_TABLE, _FULL_FIELDS_VS, _VS_MASTER, _FIELD_DOCS_CACHE, _GEMINI_CLIENT + _WARMUP_COUNT+=1 + frappe.log_error( + title=f"ChangAI Warmup called | PID {os.getpid()} | Count {_WARMUP_COUNT}", + message="load_on_startup triggered" + ) + # If all are already loaded, skip + if all([ + _EMBEDDER_INSTANCE is not None, + _VS_TABLE is not None, + _FULL_FIELDS_VS is not None, + _VS_MASTER is not None, + _FIELD_DOCS_CACHE is not None ]): + frappe.log_error( + title=f"ChangAI Warmup skipped | PID {os.getpid()}", + message="Already loaded in this worker" + ) + return + message=f"PID={os.getpid()} | module={__name__} | file={__file__} | loaded={_EMBEDDER_INSTANCE is not None} | id={id(_EMBEDDER_INSTANCE)}" + try: + load_non_erp_data() + get_embedding_engine() + get_vs(True) + load_field_matrix() + gemini_client() + get_master_vs() + _init_keywords() + config = ChangAIConfig.get() + get_polly_client(config) + frappe.log_error( + title="ChangAI Warmup Completed", + message=frappe.get_traceback() # full stack trace + ) + except Exception as e: + frappe.log_error( + title="ChangAI Warmup Failed", + message=frappe.get_traceback() # full stack trace + ) + return message +@lru_cache(maxsize=None) +def _word_is_erp(word: str) -> bool: + if len(word) <= 3: + return False + if word in _KEYWORDS_SET: + return True + for kw in _KEYWORDS_SET: + if word in kw or kw in word: + return True + if len(word) >= 4: + match = process.extractOne( + word, _KEYWORDS_LIST, scorer=fuzz.ratio, score_cutoff=70 + ) + if match: + return True + return False +def _init_keywords(): + global _KEYWORDS_SET, _KEYWORDS_LIST + if not _KEYWORDS_SET: + _KEYWORDS_SET = set(kw.lower() for kw in BUSINESS_KEYWORDS) + _KEYWORDS_LIST = list(_KEYWORDS_SET) + # ✅ pre-warm cache — run every keyword through _word_is_erp at startup + for kw in _KEYWORDS_LIST: + _word_is_erp(kw) # result gets cached — first real request is instant + +def check_memory_status() -> dict: + return { + "pid": os.getpid(), + "module": __name__, + "file": __file__, + "globals": { + "embedding_model": { + "loaded": _EMBEDDER_INSTANCE is not None, + "id": id(_EMBEDDER_INSTANCE), + }, + "table_vs": { + "loaded": _VS_TABLE is not None, + "id": id(_VS_TABLE), + }, + "full_fields_vs": { + "loaded": _FULL_FIELDS_VS is not None, + "id": id(_FULL_FIELDS_VS), + }, + "field_docs": { + "loaded": _FIELD_DOCS_CACHE is not None, + "id": id(_FIELD_DOCS_CACHE), + }, + "field_embs": { + "loaded": _FIELD_EMBS_CACHE is not None, + "id": id(_FIELD_EMBS_CACHE), + }, + "table_to_idx": { + "loaded": _TABLE_TO_IDX_CACHE is not None, + "id": id(_TABLE_TO_IDX_CACHE), + }, + "master_vs": { + "loaded": _VS_MASTER is not None, + "id": id(_VS_MASTER), + }, + "gemini_client": { + "loaded": _GEMINI_CLIENT is not None, + "id": id(_GEMINI_CLIENT), + }, + # "symspell": { + # "loaded": sym_spell is not None, + # "id": id(sym_spell), + # }, + # "keywords": { + # "loaded": _KEYWORDS_SET is not None, + # "id": id(_KEYWORDS_SET), + # }, + } + } + + +@lru_cache(maxsize=512) +def _get_cached_embedding(q: str, request_id: str) -> tuple: + # vec = get_local_embedding(q) + emb = get_embedding_engine() + + publish_pipeline_update( + request_id, + "embedding_end", + "get_embedding_engine ended" + ) + vec = emb.embed_query(q) + publish_pipeline_update( + request_id, + "embedding_query_done", + "embedding query done" + ) + return tuple(vec) # tuple for hashability + + + +def call_fvs_table_search(get_table: bool, q: str, request_id: str) -> List[str]: + # get cached embedding + publish_pipeline_update( + request_id, + "Inside the Table Search Function", + _("Inside the Table Search Function") + ) + q_vec = np.array(_get_cached_embedding(q,request_id), dtype="float32") + publish_pipeline_update( + request_id, + "Completed Embed for Table Search Function", + _("Completed Embed for Table Search Function") + ) + + # use FAISS index directly instead of similarity_search + publish_pipeline_update( + request_id, + "q_vec_ready", + _("q_vec_ready") + ) + vs = get_vs(get_table) + publish_pipeline_update( + request_id, + "vs_ready", + _("vs_ready") + ) + scores, indices = vs.index.search(q_vec.reshape(1, -1), k=20) + publish_pipeline_update( + request_id, + "index_search_done", + _("index_search_done") + ) + + out, seen = [], set() + for idx in indices[0]: + if idx == -1: + continue + doc_id = vs.index_to_docstore_id[idx] + doc = vs.docstore.search(doc_id) + t = doc.metadata.get("table") if get_table else doc.metadata.get("report_name") + if t and t not in seen: + seen.add(t) + out.append(t) + return out + + + +def call_fvs_field_search_global_k( + user_question: str, + selected_tables: List[str], + k_total: int = 40, + request_id: Optional[str] = None +) -> str: + if isinstance(selected_tables, str): + try: + selected_tables = json.loads(selected_tables) + except Exception: + selected_tables = [selected_tables] + if not user_question or not selected_tables: + return "" + + docs, embs, table_to_idx = load_field_matrix() + + q_vec = np.array( + _get_cached_embedding(user_question, request_id), + dtype="float32" + ) + + q_vec = q_vec / max(np.linalg.norm(q_vec), 1e-12) + + all_idxs = [] + + for t in selected_tables: + t = str(t).strip() + if not t: + continue + + candidates = [ + t, + f"tab{t}" if not t.startswith("tab") else t, + t.replace("tab", "", 1) if t.startswith("tab") else t, + ] + + for key in candidates: + if key in table_to_idx: + all_idxs.extend(table_to_idx[key]) + break + + if not all_idxs: + frappe.log_error( + title="ChangAI Field Search: No Indexes Found", + message=json.dumps({ + "user_question": user_question, + "selected_tables": selected_tables, + "sample_table_to_idx_keys": list(table_to_idx.keys())[:50], + }, indent=2, default=str) + ) + return "" + + sub_embs = embs[all_idxs] + scores = sub_embs @ q_vec + + top_global = np.argsort(-scores)[:k_total] + + grouped = {} + seen = set() + + for i in top_global: + doc_i = all_idxs[int(i)] + d = docs[doc_i] + + meta = getattr(d, "metadata", {}) or {} + + is_table = meta.get("is_table") + table = meta.get("table") + field = meta.get("field") or meta.get("name") + + if not table or not field: + continue + + key = (table, field) + if key in seen: + continue + + seen.add(key) + + name = field + + join_hint = meta.get("join_hint") + if isinstance(join_hint, dict): + linked_table = join_hint.get("table") + if linked_table: + name += f" -> {linked_table}" + elif isinstance(join_hint, str) and join_hint.strip(): + name += f" -> {join_hint.strip()}" + + opts = meta.get("options") + if opts: + if isinstance(opts, list): + name += " {" + ", ".join(str(o) for o in opts[:5]) + "}" + else: + name += " {" + str(opts) + "}" + + grouped.setdefault(table, { + "is_table": is_table, + "fields": [] + }) + + grouped[table]["fields"].append(name) + + if not grouped: + frappe.log_error( + title="ChangAI Field Search: Empty Grouped Result", + message=json.dumps({ + "user_question": user_question, + "selected_tables": selected_tables, + "all_idxs_count": len(all_idxs), + "top_global_count": len(top_global), + }, indent=2, default=str) + ) + return "" + return format_schema_context(grouped) + +def call_retrieve_multi_line(user_question: str, request_id: str) -> Dict[str, Any]: + try: + top_tables = call_fvs_table_search(True, user_question, request_id) + publish_pipeline_update( + request_id, + "table_retrieval_done", + _("Tables retrieved") + ) + fields_candidates= call_fvs_field_search_global_k( + user_question, + selected_tables=top_tables, + k_total=40, + request_id=request_id + ) + publish_pipeline_update( + request_id, + "field_retrieval_done", + "Fields selected" + ) + return { + "selected_fields": fields_candidates, + "selected_tables": top_tables, + "top_tables": top_tables, + "top_fields": fields_candidates, + } + except frappe.exceptions.ValidationError: + raise + except Exception as e: + return {"selected_fields": {}, "selected_tables": [], "top_tables": [], "error": str(e)} + +def debug_entity_retriever(q: str,state:Dict): + resp = remote_entity_embedder(q) # this returns {"ok":..., "body":...} + return { + "query": q, + "raw_response": resp, + "parsed_entity_cards": call_entity_retriever(False, q,state) + } + +def remote_entity_embedder(q: str) -> Union[list, str]: + config = ChangAIConfig.get() + payload = {"version": config["entity_retriever"], "input": {"query": q}} + headers = { + "Content-Type": APPLICATION_JSON, + "Prefer": "wait", + "Authorization": f"Bearer {config['API_TOKEN']}", + } + response = _post_json(config["URL"], headers, payload) + return response + + + +def append_entity_field_to_schema(top_fields: str, table_name: str, field_name: str) -> str: + """ + Append field_name to the FIELDS section of table_name if missing. + Example: append customer_name into TABLE: tabCustomer block. + """ + + pattern = rf"(TABLE:\s*{re.escape(table_name)}\n.*?FIELDS:\n)(.*?)(?=\n\nTABLE:|\Z)" + + def replace_block(match): + header = match.group(1) + fields_block = match.group(2) + + # already exists + if re.search(rf"^- {re.escape(field_name)}(\s|$)", fields_block, re.MULTILINE): + return match.group(0) + + return header + fields_block.rstrip() + f"\n- {field_name}\n" + + return re.sub(pattern, replace_block, top_fields, count=1, flags=re.DOTALL) + + +def local_entity_embedder(q: str) -> List[Dict[str, Any]]: + hits = get_master_vs().similarity_search(q, k=20) + out, seen = [], set() + for h in hits: + entity_type = h.metadata.get("entity_type") # example: tabCustomer + entity_id = h.metadata.get("entity_id") # example: customer_name + entity_label = h.metadata.get("entity_label") + # if entity_type in state["selected_tables"]: + # state["selected_fields"] = append_entity_field_to_schema( + # top_fields=state["selected_fields"], + # table_name=entity_type, + # field_name=entity_id + # ) + + key = (entity_type, entity_label) + if key not in seen: + seen.add(key) + out.append({"entity_type": entity_type, "entity_id": entity_id, "entity_label": entity_label}) + return out + + +def call_entity_retriever(isreport: bool, qstn: str, state: Dict) -> Dict[str, Any]: + config = ChangAIConfig.get() + if config["REMOTE"] and config["llm"] == "QWEN3": + response = remote_entity_embedder(qstn) + + if not response.get("ok"): + frappe.log_error(f"Entity retriever failed: {response.get('body')}", "ChangAI Entity Retriever") + return {"raw": response, "cards": []} + + body = response.get("body") or {} + output = body.get("output") or {} + results = output.get("results") or [] + + cards = [r.get("entity_label") for r in results if r.get("entity_label")] + + return {"raw": body, "cards": cards} + else: + from changai.changai.api.v2.schema_utils import phonetic_match + entity_words = state.get("entity_words") + cards = [] + debug=[] + if entity_words is None: + return {"cards":[]} + for word in entity_words: + result = phonetic_match(isreport, word) + labels = result.get("entity_labels") or [] + debug.append({ + "word": word, + "result": result, + "labels": labels + }) + for label in labels: + if isreport: + try: + table_field, _ = label.split(":", 1) + table, field = table_field.split(".", 1) + doctype = table.removeprefix("tab") + state["doc"] = doctype + except Exception: + pass + if label and label not in cards: + cards.append(label) + return {"cards": cards} + diff --git a/changai/changai/api/v2/schema_utils.py b/changai/changai/api/v2/schema_utils.py index ffa9856..3756a91 100644 --- a/changai/changai/api/v2/schema_utils.py +++ b/changai/changai/api/v2/schema_utils.py @@ -1,23 +1,58 @@ -import sqlglot -from sqlglot import exp -from sqlglot import optimizer -from sqlglot.schema import MappingSchema -import frappe -from sqlglot.errors import ParseError, OptimizeError -from sqlglot.optimizer.qualify import qualify import json -from typing import Any, Dict, List, Tuple, Union, Optional, Set +import re +from collections import OrderedDict, defaultdict +from functools import lru_cache +from pathlib import Path +from typing import Any, Dict, List, Optional, Set, Tuple, Union +import frappe +import sqlglot import yaml -from frappe.utils import getdate from frappe import _ -from pathlib import Path -from collections import OrderedDict, defaultdict - -_PHONETIC_BUCKETS = defaultdict(list) +from frappe.utils import getdate +from sqlglot import exp, optimizer +from sqlglot.errors import ParseError, OptimizeError +from sqlglot.optimizer.qualify import qualify +from sqlglot.schema import MappingSchema import jellyfish from rapidfuzz import fuzz, process -_VALUE_TO_FIELD = {} +_VALUE_TO_FIELD = {} +CHANGAI_GUIDE_LINK="https://app.erpgulf.com/en/articles/chang-ai-quick-start-guide" +ERPGULF_LINK = "https://app.erpgulf.com/en/products/chang-ai-an-ai-agent" +settingsUrl = frappe.utils.get_url( + "/app/changai-settings/ChangAI%20Settings" +) +CHANGAI_SETTINGS = "ChangAI Settings" +_ASSETS_DIR = Path(frappe.get_app_path("changai", "changai", "api", "v2", "assets")).resolve() +_PROMPTS_DIR = Path(frappe.get_app_path("changai", "changai", "prompts")).resolve() +_PHONETIC_BUCKETS = defaultdict(list) +_ALLOWED_EXT = {".json", ".yaml",".j2", ".yml", ".txt", ".md"} +RAG_FOLDER = "Home/RAG Sources" +JSON_EXT = ".json" +YAML_EXT = ".yaml" + +def get_report_filter_fields(report_name: str): + try: + script = get_script(report_name).get("script") or "" + except Exception: + return [] + fieldnames = re.findall( + r'fieldname\s*:\s*["\']([^"\']+)["\']', + script + ) + return "|".join(dict.fromkeys(fieldnames)) +def match_report_intent(report_intent: str): + choices = list(REPORT_INTENT_MAP.keys()) + match = process.extractOne( + report_intent.lower(), + choices, + scorer=fuzz.WRatio, + score_cutoff=75 + ) + if not match: + return "" + matched_intent = match[0] + return REPORT_INTENT_MAP[matched_intent] def phonetic_bucket(): global _PHONETIC_BUCKETS, _VALUE_TO_FIELD @@ -37,32 +72,23 @@ def phonetic_bucket(): @frappe.whitelist(allow_guest=False) def phonetic_match(isreport: bool, word: str, threshold: int = 60): global _PHONETIC_BUCKETS, _VALUE_TO_FIELD - original_word = word - candidates = [] seen = set() - phonetic_bucket() - - # check EVERY word in the query for token in original_word.split(): if len(token) <= 2: continue - key = jellyfish.metaphone(token) - for value in _PHONETIC_BUCKETS.get(key, []): if value not in seen: seen.add(value) candidates.append(value) - if not candidates: return { "entity_labels": [], "reason": "no phonetic candidates found" } - result = process.extract( original_word, candidates, @@ -70,37 +96,17 @@ def phonetic_match(isreport: bool, word: str, threshold: int = 60): limit=5, score_cutoff=threshold ) - results = [] - for match, score, _ in result: label = _VALUE_TO_FIELD.get(match) - if label: results.append(label) - return { "entity_labels": results, "reason": "phonetic match found" } - -def _safe_join(base: Path, rel: str) -> Path: - """ - Prevent path traversal. Only allow reading inside base directory. - """ - p = (base / rel).resolve() - if base != p and base not in p.parents: - frappe.throw(_("Unsafe path: {0}").format(rel)) - return p - -_ALLOWED_EXT = {".json", ".yaml",".j2", ".yml", ".txt", ".md"} -_ASSETS_DIR = Path(frappe.get_app_path("changai", "changai", "api", "v2", "assets")).resolve() -_PROMPTS_DIR = Path(frappe.get_app_path("changai", "changai", "prompts")).resolve() -RAG_FOLDER = "Home/RAG Sources" -JSON_EXT = ".json" -YAML_EXT = ".yaml" def _get_file_doc_by_name(file_name: str, folder: str = RAG_FOLDER) -> Optional["frappe.model.document.Document"]: file_id = frappe.db.get_value("File", {"file_name": file_name, "folder": folder}, "name") if not file_id: @@ -127,48 +133,6 @@ def _read_filedoctype(file_name: str, folder: str = RAG_FOLDER): return raw -def read_asset(file_name: str, base: str = "assets") -> Any: - """ - base: - - "assets" -> changai/changai/api/v2/assets - - "prompts" -> changai/changai/prompts - """ - file_name = (file_name or "").strip() - if not file_name: - frappe.throw(_("file_name is required")) - - ext = Path(file_name).suffix.lower() - if ext not in _ALLOWED_EXT: - frappe.throw(_("Unsupported file type: {0}").format(ext)) - - if base == "assets": - root = _ASSETS_DIR - elif base == "prompts": - root = _PROMPTS_DIR - else: - root = None - if root is None: - frappe.throw(_("Invalid base: {0}").format(base)) - - path = _safe_join(root, file_name) - - if not path.is_file(): - frappe.throw(_("File not found: {0}").format(str(path))) - - content = path.read_text(encoding="utf-8", errors="replace") - - if ext == ".json": - try: - return json.loads(content) - except json.JSONDecodeError as e: - frappe.throw(_("Invalid JSON in {0}: {1}").format(str(path), str(e))) - if ext == ".yaml" or ext == ".yml": - try: - return yaml.safe_load(content) - except yaml.YAMLError as e: - frappe.throw(_("Invalid YAML in {0}: {1}").format(str(path), str(e))) - return content - def _load_mapping_data() -> dict: return read_asset("metaschema_clean_v2.json") @@ -384,3 +348,654 @@ def convert_yaml_schema_to_sqlglot_meta() -> dict: "ok": False, "message": str(e) } + + +@lru_cache(maxsize=512) +def is_child_table(table: str) -> bool: + doctype = table.replace("tab", "", 1) if table.startswith("tab") else table + + try: + meta = frappe.get_meta(doctype, cached=True) + return bool(getattr(meta, "istable", 0)) + except Exception: + return False + +CHILD_GENERIC_FIELDS = ["parent", "parenttype", "parentfield", "idx"] +MAIN_GENERIC_FIELDS = ["name", "docstatus"] +def enrich_fields_for_sql_context(table: str, fields: list[str]) -> list[str]: + out = list(fields) + + if is_child_table(table): + for f in reversed(CHILD_GENERIC_FIELDS): + if f not in out: + out.insert(0, f) + else: + for f in reversed(MAIN_GENERIC_FIELDS): + if f not in out: + out.insert(0, f) + + return out + + +def publish_pipeline_update(request_id, stage, message, data=None, done=False, error=False): + if not request_id: + return + payload = { + "request_id": request_id, + "stage": stage, + "message": message, + "data": data or {}, + "done": done, + "error": error, + "timestamp": frappe.utils.now_datetime().isoformat(), + } + frappe.publish_realtime( + event=f"debug_{request_id}", + message=payload, + user=frappe.session.user, + ) + + +def format_schema_context(grouped: dict) -> str: + parts = [] + + for table, table_data in grouped.items(): + if isinstance(table_data, dict): + raw_fields = table_data.get("fields", []) + is_table_value = table_data.get("is_table") + + if is_table_value is None: + child = is_child_table(table) + else: + child = bool(is_table_value) + else: + raw_fields = table_data + child = is_child_table(table) + + fields = enrich_fields_for_sql_context(table, raw_fields) + + parts.append(f"TABLE: {table}") + parts.append(f"TYPE: {'Child Table' if child else 'Main Table'}") + + if child: + parts.append("JOIN RULES:") + parts.append("- parent = parent document name") + parts.append("- parenttype = parent DocType") + parts.append("- parentfield = child table fieldname") + + parts.append("FIELDS:") + for field in fields: + parts.append(f"- {field}") + + parts.append("") + + return "\n".join(parts) + + +def _safe_join(base: Path, rel: str) -> Path: + """ + Prevent path traversal. Only allow reading inside base directory. + """ + p = (base / rel).resolve() + if base != p and base not in p.parents: + frappe.throw(_("Unsafe path: {0}\n" + "Check Quick Start Guide Here 👇:\n {1}").format(rel,CHANGAI_GUIDE_LINK)) + return p + + +def read_asset(file_name: str, base: str = "assets") -> Any: + """ + base: + - "assets" -> changai/changai/api/v2/assets + - "prompts" -> changai/changai/prompts + """ + file_name = (file_name or "").strip() + if not file_name: + frappe.throw(_("file_name is required\n" + "Check Quick Start Guide Here 👇:\n {0}").format(CHANGAI_GUIDE_LINK)) + ext = Path(file_name).suffix.lower() + if ext not in _ALLOWED_EXT: + frappe.throw(_("Unsupported file type: {0}\n" + "Check Quick Start Guide Here 👇:\n {1}").format(ext, CHANGAI_GUIDE_LINK)) + + if base == "assets": + root = _ASSETS_DIR + elif base == "prompts": + root = _PROMPTS_DIR + else: + root = None + if root is None: + frappe.throw(_("Invalid base: {0}\n" + "Check Quick Start Guide Here 👇:\n {1}").format(base, CHANGAI_GUIDE_LINK)) + # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal + path = _safe_join(root, file_name) + if not path.is_file(): + frappe.throw(_("File not found: {0}\n" + "Check Quick Start Guide Here 👇:\n {1}").format(str(path), CHANGAI_GUIDE_LINK)) + content = path.read_text(encoding="utf-8", errors="replace") + if ext == ".json": + try: + return json.loads(content) + except json.JSONDecodeError as e: + frappe.throw(_("Invalid JSON in {0}: {1}" + "Check Quick Start Guide Here 👇:\n {2}").format(str(path), str(e), CHANGAI_GUIDE_LINK)) + if ext == ".yaml" or ext == ".yml": + try: + return yaml.safe_load(content) + except yaml.YAMLError as e: + frappe.throw(_("Invalid YAML in {0}: {1}" + "Check Quick Start Guide Here 👇:\n {2}").format(str(path), str(e), CHANGAI_GUIDE_LINK)) + return content + +REPORT_INTENT_MAP = read_asset("report_intent_map.json",base="assets") + +class ChangAIConfig: + @classmethod + def get(cls): + if not hasattr(frappe.local, "_changai_config"): + frappe.clear_document_cache(CHANGAI_SETTINGS) + frappe.local._changai_config = get_settings() + return frappe.local._changai_config + + +def _build_frontend_settings_config() -> Dict[str, Any]: + settings = frappe.get_single(CHANGAI_SETTINGS) + aws_access_key_id = (getattr(settings, "aws_access_key_id", None) or "").strip() + aws_secret_access_key = (getattr(settings, "aws_secret_access_key", None) or "").strip() + aws_region = ( + getattr(settings, "aws_region", None) + or getattr(settings, "aws_default_region", None) + or "us-east-1" + ) + + return { + "RETAIN_MEM": settings.retain_memory, + "LLM_VERSION_ID": settings.llm_version_id, + "EMBED_VERSION_ID": settings.embedder_version_id, + "REMOTE": bool(settings.remote), + "deploy_url": settings.deploy_url, + "entity_retriever": settings.entity_retriever, + "support_api_url": settings.support_url, + "get_ticket_details_url": settings.get_ticket_details_url, + "llm": settings.llm, + "location": settings.gemini_location, + "retriever_structure": settings.retriever_structure, + "gemini_project_id": settings.gemini_project_id, + "gemini_json_content": settings.gemini_json_content, + "enable_voice_chat": bool(settings.enable_voice_chat), + "aws_region": aws_region, + "polly_voice_id": "Zayd", + "polly_enabled": bool(settings.enable_voice_chat and aws_access_key_id and aws_secret_access_key), + "enable_changai": bool(settings.enable_changai) + } + + +@frappe.whitelist(allow_guest=False) +def get_settings() -> Dict[str, Any]: + settings = frappe.get_single(CHANGAI_SETTINGS) + config = { + "RETAIN_MEM": settings.retain_memory, + "LLM_VERSION_ID": settings.llm_version_id, + "EMBED_VERSION_ID": settings.embedder_version_id, + "API_TOKEN": settings.api_token, + "REMOTE": bool(settings.remote), + "deploy_url": settings.deploy_url, + "entity_retriever": settings.entity_retriever, + "support_api_url": settings.support_url, + "get_ticket_details_url": settings.get_ticket_details_url, + "llm": settings.llm, + "location": settings.gemini_location, + "retriever_structure": settings.retriever_structure, + "gemini_project_id": settings.gemini_project_id, + "gemini_json_content": settings.gemini_json_content, + "aws_access_key_id": settings.aws_access_key_id, + "aws_secret_access_key": settings.aws_secret_access_key, + "enable_voice_chat": settings.enable_voice_chat, + } + return config + + +@frappe.whitelist(allow_guest=False) +def get_frontend_settings() -> Dict[str, Any]: + return _build_frontend_settings_config() + +def clean_sql(s: Any) -> str: + if isinstance(s, dict): + s = s.get("output") or s.get("sql") or s.get("text") or json.dumps(s, ensure_ascii=False, default=str) + elif isinstance(s, list): + s = "\n".join(str(x) for x in s) + else: + s = "" if s is None else str(s) + s = s.strip() + if s.startswith("```"): + first_newline = s.find("\n") + if first_newline != -1: + header = s[:first_newline].strip().lower() + if header in {"```", "```sql"}: + s = s[first_newline + 1 :].lstrip() + stripped = s.rstrip() + if stripped.endswith("```"): + stripped = stripped[:-3].rstrip() + s = stripped + if s[:3].lower() == "sql" and (len(s) == 3 or s[3].isspace()): + s = s[3:].lstrip() + return s.strip() + +def _parse_sql_ast(sql_text: str, dialect: str): + try: + return sqlglot.parse_one(sql_text, read=dialect), None + except Exception as e: + return None, str(e) + + +def _extract_tables(ast) -> Tuple[List[str], Dict[str, str]]: + base_tables = [] + alias_to_table = {} + for t in ast.find_all(exp.Table): + if not t.name: + continue + base_tables.append(t.name) + a = t.args.get("alias") + if a and a.name: + alias_to_table[a.name] = t.name + return list(dict.fromkeys(base_tables)), alias_to_table + + +def _extract_derived_aliases(ast) -> Set[str]: + derived = set() + for sq in ast.find_all(exp.Subquery): + a = sq.args.get("alias") + if a and a.name: + derived.add(a.name) + for cte in ast.find_all(exp.CTE): + a = cte.args.get("alias") + if a and a.name: + derived.add(a.name) + return derived + + +def _extract_select_aliases(ast) -> Set[str]: + aliases = set() + for sel in ast.find_all(exp.Select): + for proj in sel.expressions: + if isinstance(proj, exp.Alias) and proj.alias: + aliases.add(proj.alias) + return aliases + + +def _validate_qualified_col(col_name: str, qual: str, mapping: Dict, + alias_to_table: Dict, derived_aliases: Set) -> Optional[Tuple]: + if col_name == "*" or qual in derived_aliases: + return None + if qual in mapping: + if col_name not in mapping[qual]: + return (f"{qual}.{col_name}", qual) + return None + if qual in alias_to_table: + real = alias_to_table[qual] + if real in mapping and col_name not in mapping[real]: + return (f"{qual}.{col_name}", real) + return None + return (f"{qual}.{col_name}", None) + + +def _validate_unqualified_col(col_name: str, base_tables_set: Set, + mapping: Dict, select_aliases: Set, + unknown_cols: List, ambiguous: Set): + if col_name in select_aliases: + return + candidates = [t for t in base_tables_set if col_name in mapping.get(t, [])] + if len(candidates) == 0: + unknown_cols.append((col_name, None)) + elif len(candidates) > 1: + ambiguous.add(col_name) + + +def _validate_columns(ast, mapping: Dict, alias_to_table: Dict, + derived_aliases: Set, select_aliases: Set, + base_tables_set: Set) -> Tuple[List, Set]: + unknown_cols: List[Tuple[str, str]] = [] + ambiguous: Set[str] = set() + for col in ast.find_all(exp.Column): + if not col.name: + continue + if col.table: + result = _validate_qualified_col( + col.name, str(col.table), mapping, alias_to_table, derived_aliases + ) + if result: + unknown_cols.append(result) + else: + _validate_unqualified_col( + col.name, base_tables_set, mapping, select_aliases, unknown_cols, ambiguous + ) + return unknown_cols, ambiguous + + +def validate_sql_against_mapping( + sql_text: str, + mapping: Dict[str, List[str]], + dialect: str = "mysql" +) -> Dict[str, Any]: + result = { + "ok": True, + "unknown_tables": [], + "unknown_columns": [], + "ambiguous_columns": [], + "details": {"from_tables": [], "alias_to_table": {}, "derived_aliases": [], "select_aliases": []}, + } + ast, parse_error = _parse_sql_ast(sql_text, dialect) + if parse_error: + result["ok"] = False + result["details"]["parse_error"] = parse_error + return result + base_tables, alias_to_table = _extract_tables(ast) + derived_aliases = _extract_derived_aliases(ast) + select_aliases = _extract_select_aliases(ast) + result["details"]["from_tables"] = base_tables + result["details"]["alias_to_table"] = alias_to_table + result["details"]["derived_aliases"] = sorted(derived_aliases) + result["details"]["select_aliases"] = sorted(select_aliases) + unknown_tables = [t for t in base_tables if t not in mapping] + if unknown_tables: + result["ok"] = False + result["unknown_tables"] = unknown_tables + + unknown_cols, ambiguous = _validate_columns( + ast, mapping, alias_to_table, derived_aliases, select_aliases, set(base_tables) + ) + if unknown_cols or ambiguous: + result["ok"] = False + result["unknown_columns"] = unknown_cols + result["ambiguous_columns"] = sorted(ambiguous) + + return result +def _collect_docs(hits: Union[List[Any], Dict, str]) -> List[Tuple[str, Dict]]: + def _to_txt_md(doc: Any) -> Tuple[str, Dict]: + if isinstance(doc, dict): + return doc.get("text", "") or "", doc.get("metadata", {}) or {} + if isinstance(doc, str): + return doc, {} + return "", {} + if isinstance(hits, dict) and "message" in hits and isinstance(hits["message"], list): + hits = hits["message"] + if isinstance(hits, (dict, str)) or hasattr(hits, "page_content"): + return [_to_txt_md(hits)] + return [_to_txt_md(d) for d in (hits or [])] + + +def _parse_tag(txt: str, tag: str) -> str: + m = re.search(rf"\[{re.escape(tag)}\]\s*(.+?)(?:\s*\||\s*$)", txt or "") + return m.group(1).strip() if m else "" + +def _infer_type(txt: str) -> str: + if not (txt or "").startswith("["): + return "" + order = [ + ("TABLE", "table"), ("FIELD", "field"), ("JOIN", "join"), + ("METRIC", "metric"), ("ENUM", "enum"), ("PERIOD", "period"), + ("CURRENCY", "currency"), ("ENTITY", "entity") + ] + for tg, tp in order: + if txt.startswith(f"[{tg}]"): + return tp + return "" + +class _SchemaAccumulator: + def __init__(self): + self.tables: List[str] = [] + self.fields_by_table: Dict[str, List[str]] = OrderedDict() + self.joins: List[str] = [] + self.metrics: List[Tuple[str, str, str]] = [] + self.periods: List[str] = [] + self.currencies: List[str] = [] + self.enums: OrderedDict = OrderedDict() + self.entities: List[Tuple[str, Dict]] = [] + + def add_table(self, t: str): + if t and t not in self.tables: + self.tables.append(t) + if t not in self.fields_by_table: + self.fields_by_table[t] = [] + + def add_field(self, tbl: str, fld: str): + if tbl and fld: + self.add_table(tbl) + fq = f"{tbl}.{fld}" + if fq not in self.fields_by_table[tbl]: + self.fields_by_table[tbl].append(fq) + + def add_join(self, on: str): + if on and on not in self.joins: + self.joins.append(on) + + def add_metric(self, mname: str, mexpr: str, mtbl: str): + if mtbl: + self.add_table(mtbl) + if mname: + tup = (mname, mexpr or "", mtbl or "") + if tup not in self.metrics: + self.metrics.append(tup) + + def add_period(self, pname: str): + if pname and pname not in self.periods: + self.periods.append(pname) + + def add_currency(self, code: str): + if code and code not in self.currencies: + self.currencies.append(code) + + def add_enum(self, tbl: str, fld: str, vals: Any): + if tbl: + self.add_table(tbl) + if tbl and fld: + key = f"{tbl}.{fld}" + if isinstance(vals, (list, tuple)): + vals = ", ".join([str(v) for v in vals]) + if key not in self.enums: + self.enums[key] = vals or "" + self.add_field(tbl, fld) + + def add_entity(self, ent_name: str, filt: Dict): + self.entities.append((ent_name, filt or {})) + + def sort(self): + self.tables.sort() + for t in self.fields_by_table: + if t not in self.tables: + self.tables.append(t) + for t in self.fields_by_table: + self.fields_by_table[t] = sorted( + self.fields_by_table[t], key=lambda s: s.split(".", 1)[1] + ) + self.joins.sort() + self.metrics.sort(key=lambda x: x[0]) + self.periods.sort() + self.currencies.sort() + self.enums = OrderedDict(sorted(self.enums.items(), key=lambda kv: kv[0])) + +def _process_enum(txt: str, md: Dict, acc: _SchemaAccumulator): + tbl = md.get("table") or _parse_tag(txt, "TABLE") + fld = md.get("field") + if not fld: + ef = _parse_tag(txt, "ENUM") + if "." in ef: + tbl = tbl or ef.split(".", 1)[0].strip() + fld = ef.split(".", 1)[1].strip() + vals = md.get("values") + if vals is None: + vals = _parse_tag(txt, "VALUES") + acc.add_enum(tbl, fld, vals) + +def _process_entity(txt: str, md: Dict, acc: _SchemaAccumulator): + ent_name = md.get("entity") or _parse_tag(txt, "ENTITY") or "Entity" + filt = md.get("filters") + if filt is None: + filt_txt = _parse_tag(txt, "FILTERS") + filt = {} + if filt_txt: + for part in [p.strip() for p in filt_txt.split(";") if p.strip()]: + if "=" in part: + k, v = part.split("=", 1) + filt[k.strip()] = [x.strip() for x in v.split(",") if x.strip()] + acc.add_entity(ent_name, filt) + +def _get_table_name(txt: str, md: Dict) -> str: + return md.get("table") or _parse_tag(txt, "TABLE") + +def _get_field_name(txt: str, md: Dict) -> str: + return md.get("field") or _parse_tag(txt, "FIELD").split(" (", 1)[0] + +def _process_table_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: + acc.add_table(_get_table_name(txt, md)) + +def _process_field_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: + acc.add_field(_get_table_name(txt, md), _get_field_name(txt, md)) + +def _process_join_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: + acc.add_join(md.get("on") or _parse_tag(txt, "ON")) + +def _process_metric_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: + acc.add_metric( + md.get("name") or _parse_tag(txt, "METRIC"), + md.get("expression") or _parse_tag(txt, "EXPR"), + _get_table_name(txt, md), + ) + +def _process_period_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: + acc.add_period(md.get("name") or _parse_tag(txt, "PERIOD")) + +def _process_currency_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: + acc.add_currency(md.get("code") or _parse_tag(txt, "CURRENCY")) + +_DOC_PROCESSORS = { + "table": _process_table_doc, + "field": _process_field_doc, + "join": _process_join_doc, + "metric": _process_metric_doc, + "period": _process_period_doc, + "currency": _process_currency_doc, + "enum": _process_enum, + "entity": _process_entity, +} + +def _process_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: + dtype = md.get("type") or _infer_type(txt) + processor = _DOC_PROCESSORS.get(dtype) + if processor: + processor(txt, md, acc) + + +def _append_table_lines( + lines: List[str], + acc: _SchemaAccumulator, + max_fields_per_table: int, +) -> None: + for tbl in acc.tables: + lines.append(f"Table: {tbl}") + lines.append("Fields:") + fields = acc.fields_by_table.get(tbl, []) + if not fields: + lines.append(" -") + lines.append("") + continue + lines.extend(f" - {field}" for field in fields[:max_fields_per_table]) + extra_count = len(fields) - max_fields_per_table + if extra_count > 0: + lines.append(f" # +{extra_count} more") + lines.append("") + + +def _append_simple_section(lines: List[str], title: str, items: List[str]) -> None: + if not items: + return + lines.append(f"{title}:") + lines.extend(f" - {item}" for item in items) + lines.append("") + + +def _append_metric_lines(lines: List[str], acc: _SchemaAccumulator) -> None: + if not acc.metrics: + return + lines.append("Metrics:") + for metric_name, metric_expr, metric_table in acc.metrics: + suffix = f" # table: {metric_table}" if metric_table else "" + line = f" - {metric_name}: {metric_expr}{suffix}" if metric_expr else f" - {metric_name}{suffix}" + lines.append(line) + lines.append("") + +def _append_enum_lines(lines: List[str], acc: _SchemaAccumulator) -> None: + if not acc.enums: + return + lines.append("Enums:") + for key, values in acc.enums.items(): + lines.append(f" - {key}: {values}" if values else f" - {key}") + lines.append("") + +def _format_filter_value(value: Any) -> str: + if isinstance(value, (list, tuple)): + return ", ".join(str(item) for item in value) + return str(value) + +def _append_entity_lines( + lines: List[str], + acc: _SchemaAccumulator, + show_entity_filters_yaml: bool, +) -> None: + if not acc.entities: + return + lines.append("Entities:") + for entity, filters in acc.entities: + if show_entity_filters_yaml and isinstance(filters, dict) and filters: + lines.append(f" - Entity: {entity}") + lines.append(" Filters:") + for key, value in filters.items(): + lines.append(f" {key}: {_format_filter_value(value)}") + continue + + lines.append(f" - Entity: {entity}, Filters: {filters if filters else '{}'}") + +def _trim_trailing_blank_lines(lines: List[str]) -> None: + while lines and not lines[-1].strip(): + lines.pop() + +def _build_context_lines( + acc: _SchemaAccumulator, + title: str, + max_fields_per_table: int, + show_entity_filters_yaml: bool, +) -> List[str]: + lines: List[str] = [title] + + _append_table_lines(lines, acc, max_fields_per_table) + + if acc.joins: + lines.append("Join:") + lines.extend(f" {join}" for join in acc.joins) + lines.append("") + + _append_metric_lines(lines, acc) + _append_simple_section(lines, "Periods", acc.periods) + _append_simple_section(lines, "Currencies", acc.currencies) + _append_enum_lines(lines, acc) + _append_entity_lines(lines, acc, show_entity_filters_yaml) + + _trim_trailing_blank_lines(lines) + return lines + +def hits_to_schema_context( + hits: Union[List[Any], Dict, str], + title: str = "SCHEMA CONTEXT", + max_fields_per_table: int = 20, + sort_sections: bool = True, + show_entity_filters_yaml: bool = True +) -> str: + acc = _SchemaAccumulator() + for txt, md in _collect_docs(hits): + _process_doc(txt, md, acc) + if sort_sections: + acc.sort() + lines = _build_context_lines(acc, title, max_fields_per_table, show_entity_filters_yaml) + return "\n".join(lines) + + diff --git a/changai/changai/api/v2/store_chats.py b/changai/changai/api/v2/store_chats.py index dc578e0..73aefe5 100644 --- a/changai/changai/api/v2/store_chats.py +++ b/changai/changai/api/v2/store_chats.py @@ -1,8 +1,49 @@ import json import frappe -from typing import Any +from typing import Any, Optional, Dict +from rapidfuzz import fuzz CHANGAI_CHAT_HIST_DOC = "ChangAI Chat History" - + +def save_logs( + user_question: Optional[str] = None, + formatted_q: Optional[str] = None, + context: Optional[str] = None, + sql: Optional[str] = None, + val: Any = None, + result: Any = None, + tries: Optional[int] = None, + err: Any = None, + formatted_result: Any = None, + tables:Any=None, + fields:Any=None, + entity_debug:Any=None, + type_=None +) -> str: + def to_json_if_needed(v: Any) -> Any: + if isinstance(v, (dict, list)): + return json.dumps(v, default=str, ensure_ascii=False) + return v + + MAX_LOG_LEN = 140 + doc = frappe.new_doc("ChangAI Logs") + doc.user_question = user_question + safe_question=(formatted_q[:137] + "..." if len(formatted_q) > MAX_LOG_LEN else formatted_q) + doc.rewritten_question = safe_question + doc.schema_retrieved = to_json_if_needed(context) + doc.sql_generated = to_json_if_needed(sql) + doc.validation = to_json_if_needed(val) + doc.tries = tries + doc.error = to_json_if_needed(err) + doc.result = to_json_if_needed(result) + doc.formatted_result = to_json_if_needed(formatted_result) + doc.tables = to_json_if_needed(tables) + doc.fields = to_json_if_needed(fields) + doc.entity = to_json_if_needed(entity_debug) + doc.type = type_ + doc.insert(ignore_permissions=True) + return doc.name + + def save_message_doc(session_id:str,message_type:str,content:str): doc=frappe.get_doc({ @@ -153,6 +194,101 @@ def respond_from_cache(user_question:str): User Question: {qstn}""" + +def find_similar_log_question(new_question:str, threshold: int = 90): + logs = frappe.get_all( + "ChangAI Logs", + fields=["name", "user_question", "sql_generated","rewritten_question","fields","tables","error","entity","result","type"], + limit_page_length=500 + ) + best_match = None + best_score = 0 + for log in logs: + score = fuzz.token_set_ratio(new_question, log.rewritten_question) + if score > best_score: + best_score = score + best_match = log + + if best_score >= threshold: + return { + "matched": True, + "score": best_score, + "log_name": best_match.name, + "question": best_match.user_question, + "sql": best_match.sql_generated, + "rewritten_question":best_match.rewritten_question, + "fields":best_match.fields, + "tables":best_match.tables, + "entity_debug":best_match.entity, + "result":best_match.result, + "error":best_match.error, + "type":best_match.type + } + + return { + "matched": False, + "score": best_score + } + +def _error_response(memory_status, user_question, formatted_q, context, + selected_tables, fields, sql, validation, + entity_debug, tries, error, err): + return { + "Memory Status": memory_status, + "Question": user_question, + "Formatted_Question": formatted_q, + "Context": (context or "")[:800], + "Tables": selected_tables, + "Fields": fields, + "SQL": sql, + "Validation": validation, + "EntityDebug": entity_debug, + "Tries": tries, + "Error": error, + "Result": [], + "Bot": _get_sql_error_message(error, validation), + } + +def _get_sql_error_message(err: Any, val: Dict) -> str: + # if err: + # frappe.log_error(err, "ChangAI SQL Pipeline Error") + # return "⚠️ The model encountered an error generating your query. Please try the same Question again." + + error_text = (val.get("error") or "").strip() + + if not error_text: + return "⚠️ Could nprocess your request. Please try rephrasing." + + if "Empty SQL from LLM" in error_text: + return "⚠️ The model could not generate a SQL query for your question. Please try rephrasing." + + if "does not exist in schema" in error_text: + return f"⚠️ The model generated an invalid table reference. {error_text}" + + if "could not be resolved" in error_text: + return f"⚠️ The model generated an invalid field reference. {error_text}" + + if "parse" in error_text.lower() or "syntax" in error_text.lower() or "expected" in error_text.lower(): + return "⚠️ The model generated invalid SQL syntax. Please try rephrasing." + + return f"⚠️ The model generated an invalid query. {error_text}" + +def get_last_thread_message(chat_id: str): + data = frappe.get_all( + "ChangAI Chat History", + filters={"session_id": chat_id}, + fields=["content"], + order_by="creation asc" + ) + for row in reversed(data): + try: + msg = json.loads(row["content"]) + # human_msg = msg[-2]["human"] + msg_type = msg[-2]["type"] + return msg_type + except Exception: + pass + return "" @frappe.whitelist(allow_guest=False) def inject_prompt(user_qstn: str, session_id: str) -> str: rows=get_chat_history(session_id) @@ -168,4 +304,4 @@ def normalize(value): return value if isinstance(value, (list, dict)): return json.dumps(value) - return value \ No newline at end of file + return value diff --git a/changai/changai/api/v2/text2sql_pipeline_v2.py b/changai/changai/api/v2/text2sql_pipeline_v2.py index 6513ddd..d366ddb 100644 --- a/changai/changai/api/v2/text2sql_pipeline_v2.py +++ b/changai/changai/api/v2/text2sql_pipeline_v2.py @@ -1,641 +1,90 @@ from langgraph.graph import StateGraph, END -from collections import OrderedDict from typing_extensions import TypedDict -from typing import Any, Dict, List, Tuple, Union, Optional, Set -import boto3 +from typing import Any, Dict, List, Tuple, Optional import requests import json -from changai.changai.api.v2.non_erp_handler import handle_non_erp_query -import yaml -import re -from frappe.utils.jinja import render_template -import os -import pickle -import numpy as np -import time import base64 -import sqlglot -from functools import lru_cache -from sqlglot import exp +import os +from frappe.utils.jinja import render_template +from changai.changai.api.v2.schema_utils import match_report_intent, get_report_filter_fields +from changai.changai.api.v2.store_chats import get_last_thread_message +from changai.changai.api.v2.retrieve import ( + call_retrieve_multi_line, + call_fvs_table_search, + call_entity_retriever, + check_memory_status, + remote_entity_embedder, + get_embedding_engine, + get_vs, + load_field_matrix, + get_master_vs +) +import re +from changai.changai.api.v2.tts import get_polly_client from rapidfuzz import fuzz, process from langgraph.checkpoint.memory import MemorySaver -from langchain_community.vectorstores import FAISS -from langchain_huggingface import HuggingFaceEmbeddings -from google import genai -from google.genai import types -from changai.changai.api.v2.schema_utils import validate_sql_schema,_load_mapping_data,check_file_updates -from google.oauth2 import service_account -import threading +from changai.changai.api.v2.schema_utils import ( + validate_sql_schema, + check_file_updates, + read_asset, + clean_sql, + validate_sql_against_mapping, + hits_to_schema_context, + CHANGAI_GUIDE_LINK, + ERPGULF_LINK, + settingsUrl, + publish_pipeline_update, + ChangAIConfig +) from werkzeug.wrappers import Response from changai.changai.api.v2.helpdesk_api import( create_helpdesk_ticket, get_user_tickets ) -from typing import Any, Dict, Optional -import jinja2 import frappe -from google.api_core import exceptions as google_exceptions from changai.changai.api.v2.store_chats import ( save_turn_2, inject_prompt, + save_logs, + find_similar_log_question, + _get_sql_error_message, + _error_response ) -# from changai.changai.api.v2.non_erp_handler import IntelligentStaticResponder -from huggingface_hub import snapshot_download +from changai.changai.api.v2.format_output import ( + format_data_conversationally, + format_data + +) +from changai.changai.api.v2.clients import call_model,gemini_client +from changai.changai.api.v2.non_erp_handler import non_erp_response from frappe.desk.reportview import build_match_conditions -import shutil from frappe import _ -from pathlib import Path -import numpy as np -from typing import List, Dict, Any -# from changai.changai.api.v2.embedding_client import LocalEmbeddingService -# from changai.changai.api.v2.embedding_client import get_local_embedding -# from symspellpy.symspellpy import SymSpell -sym_spell = None -_GEMINI_CLIENT = None -_GEMINI_CONFIG = None -_FIELD_DOCS_CACHE = None -_FIELD_EMBS_CACHE = None -_TABLE_TO_IDX_CACHE = None -_VS_REPORT=None -_KEYWORDS_SET=None -_KEYWORDS_LIST=None -ERPGULF_LINK = "https://app.erpgulf.com/en/products/chang-ai-an-ai-agent" -_ASSETS_DIR = Path(frappe.get_app_path("changai", "changai", "api", "v2", "assets")).resolve() -_PROMPTS_DIR = Path(frappe.get_app_path("changai", "changai", "prompts")).resolve() -CHANGAI_SETTINGS = "ChangAI Settings" -_ALLOWED_EXT = {".json", ".yaml",".j2", ".yml", ".txt", ".md"} -# _warmup_done=False -# def warm_up(): -# global _warmup_done -# try: -# import time -# time.sleep(3) # wait for frappe to fully initialize first -# frappe.logger().info("ChangAI: background warmup starting...") -# load_on_startup() -# _warmup_done = True -# frappe.logger().info("ChangAI: background warmup complete ✅") -# except Exception as e: -# frappe.logger().error(f"ChangAI: background warmup failed: {e}") - - -SQL_REWRITE_PROMPT = """You are an ERP query rewriter and entity detector. -Return ONLY valid JSON: -{{"standalone_question":"...","contains_values":true/false,"entity_word":["..."]}} - -TASK 1 — FOLLOW-UP -- If the query depends on previous messages, rewrite it as a complete standalone question. -- Otherwise keep it unchanged. - -TASK 2 — ENTITY DETECTION -contains_values = TRUE: Any noun that refers to a specific named master record -(item name, customer name, supplier name, warehouse name, employee name) -If not sure, also set contains_values = TRUE, otherwise contains_values = FALSE. -if contains_values = TRUE, then entity_word = the most relevant noun/entity name from the question and place it here and return only if contains_values is TRUE. -if multiple entites are present,place all of them in entity_word list. -TASK 3 — ERP CONTEXTUAL REWRITE - -1. Normalize: -- Fix typos, clear English -- Do NOT change entity values - -2. Complete intent: -- Never change the question's intent — only fix grammar and map ERP terms. - -3. ERP mapping: -- Map generic terms to standard ERPNext concepts based on intent -- Avoid vague words if clearer business terms exist -- Do NOT invent documents or use report names. -Examples: - stock → Bin / Stock Ledger Entry - production → Work Order - finance/profit → GL Entry - -4. Field hints (max 1–2): -Use natural phrasing ("based on", "using"): - sales → grand_total - qty → qty - stock → actual_qty - production → produced_qty - finance → debit / credit - status → status - -5. Time fields: - Sales/Stock/Finance → posting_date - Work Order → actual_start_date / actual_end_date - Timesheet → start_date / end_date - Timesheet Detail → from_time / to_time -- NEVER use posting_date for Timesheet -- NEVER use creation unless asked - -6. Relationships: -- Include linked entities if required - -STYLE: -- Natural business language -- No SQL, no tab* names - -EXAMPLES: -"total sales amount last month" -→ What is the total sales amount from Sales Invoices last month based on grand_total and posting_date? - -"stock in warehouse a" -→ What is the stock quantity in Warehouse A based on actual_qty from Bin? - -"who worked today" -→ Which employees logged time today based on Timesheet start_date or Timesheet Detail from_time? - -STRICT RULES: -- If the query mentions Draft, Submitted, or Cancelled, explicitly include docstatus in the rewritten question. -- Do not add a specific document type unless clearly implied by the user query or required by standard ERPNext business meaning. -- For vague money questions, clarify the business meaning as actual, ordered, quoted, paid, or outstanding — do not guess the document type incorrectly. -- If the user says "spend", treat it as actual purchase/expense, not quotation or order commitment, unless the user explicitly mentions order, quotation, or planned purchase. -- Preserve all filter conditions, status values, and keywords from the original question — never drop them during rewriting. -- Do NOT add dates, filters, entities, statuses, or assumptions unless explicitly present in the user question or clearly inferred from conversation memory. -- Use chat history only when the current query clearly implies continuation or follow-up context. Never assume dates, filters, entities, or conditions from previous messages unless strongly indicated. -- Use only the most relevant tables and fields required for the user query. -- Use only valid tables and fields from the provided schema context, regardless of retrieval ranking order. -- Choose fields based on business meaning and user intent, not rank position. -- Never invent schema elements. -- Always return any one clear user-readable business field, not only technical IDs, unless explicitly requested. -- If the query is ambiguous, ask for clarification and set "clarify": true.""" -# def get_symspell(): -# global sym_spell - -# if sym_spell is not None: -# frappe.logger().info(f"SymSpell already loaded, skipping PID: {os.getpid()}") -# return sym_spell - -# frappe.logger().error(f"SymSpell loading NOW in PID: {os.getpid()}") - -# sym_spell = SymSpell(max_dictionary_edit_distance=4, prefix_length=7) - -# dictionary_path = frappe.get_app_path( -# "changai", -# "changai", -# "api", -# "v2", -# "assets", -# "frequency_dictionary_en_82_765.txt" -# ) - -# sym_spell.load_dictionary(dictionary_path, term_index=0, count_index=1) - -# for kw in BUSINESS_KEYWORDS: -# sym_spell.create_dictionary_entry(kw.lower(), 1000) - -# return sym_spell - -@lru_cache(maxsize=512) -def is_child_table(table: str) -> bool: - doctype = table.replace("tab", "", 1) if table.startswith("tab") else table - - try: - meta = frappe.get_meta(doctype, cached=True) - return bool(getattr(meta, "istable", 0)) - except Exception: - return False - -CHILD_GENERIC_FIELDS = ["parent", "parenttype", "parentfield", "idx"] -MAIN_GENERIC_FIELDS = ["name", "docstatus"] -def enrich_fields_for_sql_context(table: str, fields: list[str]) -> list[str]: - out = list(fields) - - if is_child_table(table): - for f in reversed(CHILD_GENERIC_FIELDS): - if f not in out: - out.insert(0, f) - else: - for f in reversed(MAIN_GENERIC_FIELDS): - if f not in out: - out.insert(0, f) - - return out - - -def format_schema_context(grouped: dict) -> str: - parts = [] - - for table, table_data in grouped.items(): - if isinstance(table_data, dict): - raw_fields = table_data.get("fields", []) - is_table_value = table_data.get("is_table") - - if is_table_value is None: - child = is_child_table(table) - else: - child = bool(is_table_value) - else: - raw_fields = table_data - child = is_child_table(table) - - fields = enrich_fields_for_sql_context(table, raw_fields) - - parts.append(f"TABLE: {table}") - parts.append(f"TYPE: {'Child Table' if child else 'Main Table'}") - - if child: - parts.append("JOIN RULES:") - parts.append("- parent = parent document name") - parts.append("- parenttype = parent DocType") - parts.append("- parentfield = child table fieldname") - - parts.append("FIELDS:") - for field in fields: - parts.append(f"- {field}") - - parts.append("") - - return "\n".join(parts) - - -def publish_pipeline_update(request_id, stage, message, data=None, done=False, error=False): - if not request_id: - return - payload = { - "request_id": request_id, - "stage": stage, - "message": message, - "data": data or {}, - "done": done, - "error": error, - "timestamp": frappe.utils.now_datetime().isoformat(), - } - frappe.publish_realtime( - event=f"debug_{request_id}", - message=payload, - user=frappe.session.user, - ) - - -def _safe_join(base: Path, rel: str) -> Path: - """ - Prevent path traversal. Only allow reading inside base directory. - """ - p = (base / rel).resolve() - if base != p and base not in p.parents: - frappe.throw(_("Unsafe path: {0}\n" - "Check Quick Start Guide Here 👇:\n {1}").format(rel,CHANGAI_GUIDE_LINK)) - return p - - -def read_asset(file_name: str, base: str = "assets") -> Any: - """ - base: - - "assets" -> changai/changai/api/v2/assets - - "prompts" -> changai/changai/prompts - """ - file_name = (file_name or "").strip() - if not file_name: - frappe.throw(_("file_name is required\n" - "Check Quick Start Guide Here 👇:\n {0}").format(CHANGAI_GUIDE_LINK)) - - ext = Path(file_name).suffix.lower() - if ext not in _ALLOWED_EXT: - frappe.throw(_("Unsupported file type: {0}\n" - "Check Quick Start Guide Here 👇:\n {1}").format(ext, CHANGAI_GUIDE_LINK)) - - if base == "assets": - root = _ASSETS_DIR - elif base == "prompts": - root = _PROMPTS_DIR - else: - root = None - if root is None: - frappe.throw(_("Invalid base: {0}\n" - "Check Quick Start Guide Here 👇:\n {1}").format(base, CHANGAI_GUIDE_LINK)) - # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal - path = _safe_join(root, file_name) - - if not path.is_file(): - frappe.throw(_("File not found: {0}\n" - "Check Quick Start Guide Here 👇:\n {1}").format(str(path), CHANGAI_GUIDE_LINK)) - - content = path.read_text(encoding="utf-8", errors="replace") - - if ext == ".json": - try: - return json.loads(content) - except json.JSONDecodeError as e: - frappe.throw(_("Invalid JSON in {0}: {1}" - "Check Quick Start Guide Here 👇:\n {2}").format(str(path), str(e), CHANGAI_GUIDE_LINK)) - if ext == ".yaml" or ext == ".yml": - try: - return yaml.safe_load(content) - except yaml.YAMLError as e: - frappe.throw(_("Invalid YAML in {0}: {1}" - "Check Quick Start Guide Here 👇:\n {2}").format(str(path), str(e), CHANGAI_GUIDE_LINK)) - return content - -_VS_TABLE = None -_VS_MASTER = None -_EMBEDDER_INSTANCE = None -_FULL_FIELDS_VS = None +from frappe.desk.query_report import get_script +from changai.changai.api.v2.clients import ( + call_model, + call_gemini, + remote_embedder_request, +) STATUS_200 = 200 -_SUB_VS_CACHE = {} APPLICATION_JSON = "application/json" -CHANGAI_GUIDE_LINK="https://app.erpgulf.com/en/articles/chang-ai-quick-start-guide" EMBEDDING_ENGINE_NONE_MESSG = f""" Embedding engine is None. Model not loaded. Check Quick Start Guide Here 👇: {CHANGAI_GUIDE_LINK}""" -MODEL_ID = "gemini-2.5-flash-lite" +REPORT_ACTION_PROMPT = read_asset("report_prompt.txt",base="prompts") RETRY_LIMIT = 2 -REPORT_INTENT_MAP = read_asset("report_intent_map.json",base="assets") bk = read_asset("business_keywords_v1.json", base="assets") BUSINESS_KEYWORDS = bk.get("business_keywords", bk) - mapping_data = read_asset("metaschema_clean_v2.json", base="assets") CONVERSATION_TEMPLATE = read_asset("conversation_template_v2.j2", base="assets") SQL_SYS_PROMPT = read_asset("sql_system_prompt.txt", base="prompts") SQL_PROMPT = read_asset("sql_user_prompt.txt", base="prompts") -FORMAT_PROMPT = read_asset("user_friendly_prompt.txt", base="prompts") -NON_ERP_PROMPT = read_asset("non_erp_prompt.txt", base="prompts") -SUPPORT_PROMPT = read_asset("support.txt", base="prompts") -SUPPORT_USER_PROMPT = read_asset("support_user_prompt.txt", base="prompts") -SUPPORT_SYS_PROMPT = read_asset("support_sys_prompt.txt", base="prompts") - FILTER_TABLES = read_asset("filter_tables.txt", base="prompts") filter_fields = read_asset("filter_fields.txt", base="prompts") - -@frappe.whitelist(allow_guest=False) -def download_model(): - frappe.enqueue( - "changai.changai.api.v2.text2sql_pipeline_v2.download_model_from_ui", # dot-path to the function - queue="long", # use "long" queue for heavy tasks - timeout=3600, # 1 hour timeout (in seconds) - is_async=True, # run in background (default True) - job_name="download_model", # optional: helps track/deduplicate jobs - ) - return { - "ok":True,"message":"Model Downloading.." - } - -def _get_model_path(): - site_path = frappe.get_site_path("private", "files", "changai_model") - return site_path - - -@frappe.whitelist(allow_guest=False) -def download_model_from_ui(): - global _EMBEDDER_INSTANCE - - model_path = _get_model_path() - - try: - if os.path.exists(model_path): - shutil.rmtree(model_path) - - os.makedirs(model_path, exist_ok=True) - - snapshot_download( - repo_id="hyrinmansoor/changAI-nomic-embed-text-v1.5-finetuned", - local_dir=model_path, - ignore_patterns=[ - "*.pt", - "*.pth", - "*.bin", - "trainer_*", - "optimizer*" - ] - ) - _EMBEDDER_INSTANCE = None - return {"status": "success", "message": "Embedding model downloaded successfully."} - - except Exception as e: - frappe.log_error(frappe.get_traceback(), "Embedding Model Download Failed") - frappe.throw(_("Model download failed: {0}\n Check Quick Start Guide Here 👇:\n{1}
    " - "Download Embedding Model.
    " - "ERPGulf.com." -).format(str(e),CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK)) - - -_FIELD_DOCS_CACHE = None -_FIELD_EMBS_CACHE = None -_TABLE_TO_IDX_CACHE = None - - -def load_field_matrix(): - global _FIELD_DOCS_CACHE, _FIELD_EMBS_CACHE, _TABLE_TO_IDX_CACHE - - if _FIELD_DOCS_CACHE is not None: - return _FIELD_DOCS_CACHE, _FIELD_EMBS_CACHE, _TABLE_TO_IDX_CACHE - - app_root = Path(frappe.get_app_path("changai")).resolve() - schema_rel = "changai/api/v2/fvs_stores/erpnext/emb_dir" - # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal - schema_path = _safe_join(app_root, schema_rel) - - embs_path = schema_path / "field_embs.npy" - docs_path = schema_path / "field_docs.pkl" - table_idx_path = schema_path / "table_to_idx.pkl" - - if not embs_path.exists(): - frappe.throw(f"Missing field_embs.npy. Rebuild schema FVS first: {embs_path}") - - # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal - with open(docs_path, "rb") as f: - docs = pickle.load(f) - - # nosemgrep: frappe-semgrep-rules.rules.security.frappe-security-file-traversal - with open(table_idx_path, "rb") as f: - table_to_idx = pickle.load(f) - - embs = np.load(embs_path, mmap_mode="r") - - _FIELD_DOCS_CACHE = docs - _FIELD_EMBS_CACHE = embs - _TABLE_TO_IDX_CACHE = table_to_idx - - return docs, embs, table_to_idx - - -def get_embedding_engine(): - global _EMBEDDER_INSTANCE - if _EMBEDDER_INSTANCE is not None: - return _EMBEDDER_INSTANCE - - model_path = _get_model_path() # check path first, always - - if not os.path.exists(model_path): - _EMBEDDER_INSTANCE = None # reset if model missing - frappe.throw( - _( - "Go to ChangAI Settings and click" - "Download Embedding Model.

    " - "Check this Quick Start Guide for more detail: " - "Click here" - "ERPGulf.com." - - ).format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), - title=_("Embedding Model Required") - ) - - if _EMBEDDER_INSTANCE is None: - _EMBEDDER_INSTANCE = HuggingFaceEmbeddings( - model_name=model_path, - model_kwargs={"device": "cpu","trust_remote_code": True,}, - encode_kwargs={ - "normalize_embeddings": True, - }, - ) - - return _EMBEDDER_INSTANCE - -def _build_frontend_settings_config() -> Dict[str, Any]: - settings = frappe.get_single(CHANGAI_SETTINGS) - - aws_access_key_id = (getattr(settings, "aws_access_key_id", None) or "").strip() - aws_secret_access_key = (getattr(settings, "aws_secret_access_key", None) or "").strip() - aws_region = ( - getattr(settings, "aws_region", None) - or getattr(settings, "aws_default_region", None) - or "us-east-1" - ) - - return { - "RETAIN_MEM": settings.retain_memory, - "LLM_VERSION_ID": settings.llm_version_id, - "EMBED_VERSION_ID": settings.embedder_version_id, - "REMOTE": bool(settings.remote), - "deploy_url": settings.deploy_url, - "entity_retriever": settings.entity_retriever, - "support_api_url": settings.support_url, - "get_ticket_details_url": settings.get_ticket_details_url, - "llm": settings.llm, - "location": settings.gemini_location, - "retriever_structure": settings.retriever_structure, - "gemini_project_id": settings.gemini_project_id, - "gemini_json_content": settings.gemini_json_content, - "enable_voice_chat": bool(settings.enable_voice_chat), - "aws_region": aws_region, - "polly_voice_id": "Zayd", - "polly_enabled": bool(settings.enable_voice_chat and aws_access_key_id and aws_secret_access_key), - "enable_changai": bool(settings.enable_changai) - } - - -@frappe.whitelist(allow_guest=False) -def get_settings() -> Dict[str, Any]: - settings = frappe.get_single(CHANGAI_SETTINGS) - config = { - "RETAIN_MEM": settings.retain_memory, - "LLM_VERSION_ID": settings.llm_version_id, - "EMBED_VERSION_ID": settings.embedder_version_id, - "API_TOKEN": settings.api_token, - "REMOTE": bool(settings.remote), - "deploy_url": settings.deploy_url, - "entity_retriever": settings.entity_retriever, - "support_api_url": settings.support_url, - "get_ticket_details_url": settings.get_ticket_details_url, - "llm": settings.llm, - "location": settings.gemini_location, - "retriever_structure": settings.retriever_structure, - "gemini_project_id": settings.gemini_project_id, - "gemini_json_content": settings.gemini_json_content, - "aws_access_key_id": settings.aws_access_key_id, - "aws_secret_access_key": settings.aws_secret_access_key, - "enable_voice_chat": settings.enable_voice_chat, - } - return config - - -@frappe.whitelist(allow_guest=False) -def get_frontend_settings() -> Dict[str, Any]: - return _build_frontend_settings_config() - -class ChangAIConfig: - @classmethod - def get(cls): - if not hasattr(frappe.local, "_changai_config"): - frappe.clear_document_cache(CHANGAI_SETTINGS) - frappe.local._changai_config = get_settings() - return frappe.local._changai_config -_POLLY_CLIENT = None - -def get_polly_client(config): - global _POLLY_CLIENT - - if _POLLY_CLIENT is None: - _POLLY_CLIENT = boto3.client( - "polly", - aws_access_key_id=(config.get("aws_access_key_id") or "").strip(), - aws_secret_access_key=(config.get("aws_secret_access_key") or "").strip(), - region_name=(config.get("aws_region") or "us-east-1"), - ) - return _POLLY_CLIENT - -def build_ssml(text: str) -> str: - parts = [] - current = [] - current_lang = None - - for token in text.split(): - lang = "ar-AE" if re.search(r'[\u0600-\u06FF]', token) else "en-US" - - if current_lang is None: - current_lang = lang - - if lang != current_lang: - parts.append( - f'{" ".join(current)}' - ) - current = [token] - current_lang = lang - else: - current.append(token) - - if current: - parts.append( - f'{" ".join(current)}' - ) - - return "" + " ".join(parts) + "" -@frappe.whitelist(allow_guest=False) -def synthesize_tts(text: str, voice_id: Optional[str] = None) -> Dict[str, Any]: - config = ChangAIConfig.get() - if not bool(config.get("enable_voice_chat")): - return {"ok": False, "error": "Voice chat is disabled in settings.", "provider": "browser"} - aws_access_key_id = (config.get("aws_access_key_id") or "").strip() - aws_secret_access_key = (config.get("aws_secret_access_key") or "").strip() - if not aws_access_key_id or not aws_secret_access_key: - return {"ok": False, "error": "AWS Polly credentials are missing.", "provider": "browser"} - cleaned_text = re.sub(r"<[^>]*>", " ", text or "") - cleaned_text = re.sub(r"\s+", " ", cleaned_text).strip() - if not cleaned_text: - return {"ok": False, "error": "Text is empty.", "provider": "browser"} - - if len(cleaned_text) > 2500: - cleaned_text = cleaned_text[:2500] - - try: - polly_client = get_polly_client(config) - voice = (voice_id or config.get("polly_voice_id") or "Zayd").strip() or "Zayd" - ssml_text = build_ssml(cleaned_text) - response = polly_client.synthesize_speech( - Text=ssml_text, - OutputFormat="mp3", - VoiceId="Zayd", - Engine="neural", - TextType="ssml", -) - stream = response.get("AudioStream") - if stream is None: - return {"ok": False, "error": "Polly did not return audio stream.", "provider": "browser"} - - audio_bytes = stream.read() - audio_base64 = base64.b64encode(audio_bytes).decode("utf-8") - return { - "ok": True, - "provider": "polly", - "mime_type": "audio/mpeg", - "audio_base64": audio_base64, - "voice_id": voice, - } - except Exception as e: - frappe.log_error(frappe.get_traceback(), "ChangAI Polly TTS Error") - return {"ok": False, "error": str(e), "provider": "browser"} - - +STOP_WORDS = set(read_asset("stop_words.json", base="assets")) +THREAD_WORDS = set(read_asset("thread_words.json", base="assets")) +SQL_REWRITE_SYS_PROMPT = read_asset("sql_rewrite_sys_prompt.txt", base="prompts") +SQL_REWRITE_USER_PROMPT = read_asset("sql_rewrite_user_prompt.txt", base="prompts") @frappe.whitelist(allow_guest=True) # nosemgrep: security.guest-whitelisted-method - intentional, validates credentials via OAuth client lookup and Frappe password grant before returning a token def generate_token_secure(api_key: str, api_secret: str, app_key: str): try: @@ -649,7 +98,6 @@ def generate_token_secure(api_key: str, api_secret: str, app_key: str): status=401, mimetype=APPLICATION_JSON, ) - doc = frappe.db.get_value( "OAuth Client", {"app_name": app_key}, @@ -696,7 +144,6 @@ def generate_token_secure(api_key: str, api_secret: str, app_key: str): mimetype=APPLICATION_JSON, ) - # Api for checking user name using token @frappe.whitelist(allow_guest=False) def whoami() -> Dict[str, Any]: @@ -716,7 +163,6 @@ def whoami() -> Dict[str, Any]: ) except ValueError as ve: frappe.throw(_("{0}\n Check Quick Start Guide Here 👇:\n {1}").format(str(ve),CHANGAI_GUIDE_LINK)) - def extract_tables_from_sql(sql: str) -> List[str]: @@ -732,290 +178,6 @@ def extract_tables_from_sql(sql: str) -> List[str]: tables.append(t) return tables - -def call_model(prompt: str, task: str = "llm",sys_prompt: str = "") -> Any: - config = ChangAIConfig.get() - if config["REMOTE"] and config["llm"] == "QWEN3": - return remote_llm_request_deploy_test(prompt=prompt, task=task) - else: - if config["llm"] == "Gemini": - return call_gemini(prompt,sys_prompt) - - -def _post_json(url: str, headers: Dict[str, str], payload: Dict[str, Any], timeout: int = 120): - try: - res = requests.post(url, headers=headers, json=payload, timeout=timeout) - ct = (res.headers.get("Content-Type") or "").lower() - try: - body = res.json() if APPLICATION_JSON in ct else {"raw_text": res.text} - except Exception: - body = {"raw_text": res.text} - if res.status_code not in (STATUS_200, 201, 202): - return {"ok": False, "status_code": res.status_code, "body": body} - return {"ok": True, "status_code": res.status_code, "body": body} - except requests.exceptions.Timeout: - return {"ok": False, "status_code": None, "body": {"error": "timeout"}} - except Exception as e: - return {"ok": False, "status_code": None, "body": {"error": str(e)}} - - -def local_llm_request(prompt: str) -> str: - config = ChangAIConfig.get() - url = f"{config['URL'].rstrip('/')}/api/generate" - payload = {"model": config["LOCAL_LLM"], "prompt": prompt, "stream": False} - resp = _post_json(url, headers={}, payload=payload, timeout=120) - if not resp.get("ok"): - return f"Error: local LLM call failed ({resp.get('status_code')}): {resp.get('body')}" - text = (resp.get("body") or {}).get("response") - return (text or "").strip() or "Error: Empty response from local LLM." - - -def _get_gemini_vertex_config(config): - project_id = (config.get("gemini_project_id") or "").strip() - credentials_json = (config.get("gemini_json_content") or "").strip() - location = (config.get("gemini_location") or "").strip() - return project_id, credentials_json, location - - -def _throw_missing_vertex_field(project_id: str, location: str, credentials_json: str) -> None: - if not project_id: - frappe.throw( - _("Gemini Project ID is missing.

    Please Go to Settings Page and enter your Gemini Project ID.
    " - "Check Quick Start Guide 👇:
    Click here
    " - "ERPGulf.com.").format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), - title=_("Missing Gemini Project ID"), - ) - if not location: - frappe.throw( - _("Gemini Location is missing.

    Please Go to Settings Page and enter your Gemini Location.
    " - "Check Quick Start Guide 👇:
    Click here
    " - "ERPGulf.com.").format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), - title=_("Missing Gemini Location"), - ) - if not credentials_json: - frappe.throw( - _("Service Account Credentials are missing.

    Please Go to Settings Page and enter your Service Account Credential.
    " - "Check Quick Start Guide 👇:
    Click here" - "ERPGulf.com." -).format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), - title=_("Missing Service Account Credentials"), - ) - - -def _build_vertex_gemini_client(project_id: str, location: str, credentials_json: str): - _throw_missing_vertex_field(project_id, location, credentials_json) - - service_account_info = json.loads(credentials_json) - creds = service_account.Credentials.from_service_account_info( - service_account_info, - scopes=["https://www.googleapis.com/auth/cloud-platform"], - ) - return genai.Client( - vertexai=True, - project=project_id, - location=location, - credentials=creds, - ) - - -def _get_api_key_client(config): - try: - api_key = config.get("gemini_api_key") - except Exception: - api_key = None - - if not api_key: - frappe.throw( - _( - "Gemini API key is not configured.

    " - "You have two options to authenticate with Gemini:

    " - "Option 1 (Free / API Key):
    " - "Go to ChangAI Settings and enter your Gemini API Key.
    " - "Get your free API key from " - "Google AI Studio.

    " - "Option 2 (Vertex AI / Service Account):
    " - "Fill in Gemini Project ID, Gemini Location, " - "and Service Account Credentials in Got to Settings Page.
    " - "ChangAI Quick Start Guide 👇:
    " - "Click here
    " - "ERPGulf.com." - - ).format(CHANGAI_GUIDE_LINK,settingsUrl,ERPGULF_LINK), - title=_("Gemini Authentication Not Configured"), - ) - - return genai.Client(api_key=api_key) - - -def _build_gemini_client(config): - project_id, credentials_json, location = _get_gemini_vertex_config(config) - - if project_id or credentials_json or location: - return _build_vertex_gemini_client(project_id, location, credentials_json) - - return _get_api_key_client(config) - - -def _build_gemini_contents(prompt: str): - return [ - { - "role": "user", - "parts": [{"text": str(prompt)}], - } - ] - - -def _clean_gemini_response_text(text: str) -> str: - text = (text or "").strip() - if text.startswith("```"): - text = text.replace("```json", "").replace("```", "").strip() - return text - - -def _handle_gemini_api_exception(e: Exception) -> None: - if isinstance(e, google_exceptions.ResourceExhausted): - frappe.throw( - _("Gemini API quota exceeded.

    Please wait and try again or upgrade your plan.
    Check Quick Start Guide 👇:
    " - "Click here
    " - "ERPGulf.com." -).format(CHANGAI_GUIDE_LINK,ERPGULF_LINK), - - title=_("Gemini Quota Exceeded"), - ) - if isinstance(e, google_exceptions.Unauthenticated): - frappe.throw( - _("Gemini API key is invalid.

    Please go to ChangAI Settings and enter a valid Gemini API Key.
    " - "Check ChangAI Quick Start Guide 👇:
    Click here
    " - "ERPGulf.com." -).format(CHANGAI_GUIDE_LINK,ERPGULF_LINK), - title=_("Invalid Gemini API Key"), - ) - if isinstance(e, google_exceptions.PermissionDenied): - frappe.throw( - _("Gemini API permission denied.

    Please check your API key permissions.
    " - "Check ChangAI Quick Start Guide 👇:
    Click here
    " - "ERPGulf.com." -).format(CHANGAI_GUIDE_LINK,ERPGULF_LINK), - title=_("Gemini Permission Denied"), - ) - if isinstance(e, google_exceptions.InvalidArgument): - frappe.throw( - _("Invalid request to Gemini API: {0}
    " - "Check ChangAI Quick Start Guide 👇:
    " - "Click here
    " - "ERPGulf.com.").format(str(e),CHANGAI_GUIDE_LINK,ERPGULF_LINK), - title=_("Gemini Invalid Request"), - ) - - frappe.log_error(frappe.get_traceback(), "Gemini API Unexpected Error") - frappe.throw( - _("Gemini API error: {0}
    " - "Check ChangAI Quick Start Guide 👇:
    " - "Click here
    " - "ERPGulf.com.").format(str(e),CHANGAI_GUIDE_LINK,ERPGULF_LINK), - title=_("Gemini API Error"), - ) - - -def gemini_client(): - global _GEMINI_CLIENT,_GEMINI_CONFIG - if _GEMINI_CLIENT is None: - config = frappe.get_single(CHANGAI_SETTINGS) - _GEMINI_CONFIG = config - _GEMINI_CLIENT = _build_gemini_client(config) - return _GEMINI_CLIENT - -def call_gemini(prompt: str,sys_prompt: str) -> Union[str, Dict[str, Any]]: - try: - # frappe.clear_document_cache(CHANGAI_SETTINGS) - client = gemini_client() - - gemini_config = types.GenerateContentConfig( - system_instruction=sys_prompt, - ) - response = client.models.generate_content( - model=MODEL_ID, - config=gemini_config, - contents=_build_gemini_contents(prompt), - ) - return _clean_gemini_response_text(response.text) - - except frappe.exceptions.ValidationError: - raise - except Exception as e: - _handle_gemini_api_exception(e) - - -def _build_input_payload(task: str, prompt: str, question: Optional[str], - db_result_json: Optional[str], user_message: Optional[str]) -> Dict[str, Any]: - if task == "format_db": - return {"task": "format_db", "question": question or "", "db_result_json": db_result_json or "{}"} - if task == "helpdesk_task": - return {"task": "helpdesk_task", "user_message": user_message or prompt or ""} - return {"task": "llm", "user_input": prompt} - - -def _poll_until_done(get_url: str, headers: Dict) -> Any: - terminal = {"succeeded", "failed", "canceled"} - deadline = time.time() + 300 - last = None - while time.time() < deadline: - try: - poll = requests.get(get_url, headers=headers, timeout=120).json() - except Exception as e: - poll = {"raw_text": str(e)} - last = poll - status = poll.get("status") - if status in terminal: - if status == "succeeded": - return poll.get("output") - return {"Error": f"Model ended with status {status}", "details": poll} - time.sleep(2) - return {"Error": "Polling timed out", "details": last} - - -def remote_llm_request_deploy_test( - prompt: str = "", - task: str = "llm", - question: Optional[str] = None, - db_result_json: Optional[str] = None, - user_message: Optional[str] = None, -) -> Any: - config = ChangAIConfig.get() - headers = { - "Content-Type": APPLICATION_JSON, - "Prefer": "wait", - "Authorization": f"Bearer {config['API_TOKEN']}", - } - input_payload = _build_input_payload(task, prompt, question, db_result_json, user_message) - create = _post_json(config["deploy_url"], headers=headers, payload={"input": input_payload}, timeout=120) - - if not create.get("ok"): - return {"Error": "Create prediction failed", "status_code": create.get("status_code"), "details": create.get("body")} - - get_url = ((create.get("body") or {}).get("urls") or {}).get("get") - if not get_url: - return {"Error": "Missing get URL from deploy response", "details": create.get("body")} - - return _poll_until_done(get_url, headers) - - -def remote_embedder_request(formatted_q: str) -> Union[List[Any], str]: - config = ChangAIConfig.get() - payload = {"version": config["EMBED_VERSION_ID"], "input": {"user_input": formatted_q}} - headers = { - "Content-Type": APPLICATION_JSON, - "Prefer": "wait", - "Authorization": f"Bearer {config['API_TOKEN']}", - } - response = _post_json(config["URL"], headers, payload) - try: - if response: - return response["body"]["output"] - except Exception as e: - return "Error: " + str(e) - - def _safe_strip(v): if v is None: return "" @@ -1023,7 +185,6 @@ def _safe_strip(v): return json.dumps(v, ensure_ascii=False, default=str) return str(v).strip() - # Shared State class SQLState(TypedDict, total=False): filters:str @@ -1064,91 +225,23 @@ class SQLState(TypedDict, total=False): message:str stop_followup:bool + def route_action(state: SQLState) -> str: if state.get("stop_followup"): return "STOP_FOLLOW" if state.get("create_entity"): return "CREATE_ENTITY" - if state.get("open_report"): return "OPEN_REPORT" - return "CONTINUE" def fill_sql_prompt(question: str, context: str) -> str: return SQL_PROMPT.format(question=question, context=context) - -@lru_cache(maxsize=None) -def _word_is_erp(word: str) -> bool: - if len(word) <= 3: - return False - if word in _KEYWORDS_SET: - return True - for kw in _KEYWORDS_SET: - if word in kw or kw in word: - return True - if len(word) >= 4: - match = process.extractOne( - word, _KEYWORDS_LIST, scorer=fuzz.ratio, score_cutoff=70 - ) - if match: - return True - return False - - -STOP_WORDS = { - # English greetings / casual - "hi", "hello", "hey", "thanks", "thank", "please", "pls", - "ok", "okay", "yes", "no", "bye", "goodbye","have","has","had","do","does","did", - - # English question/helper words - "what", "which", "who", "whom", "whose", "where", "when", "why", "how", - "can", "could", "would", "should", "do", "does", "did", "is", "are", - "was", "were", "be", "been", "being", - - # English filler/common words - "the", "a", "an", "to", "for", "from", "of", "in", "on", "at", "by", - "with", "without", "and", "or", "but", "if", "then", "than", "as", - "this", "that", "these", "those", "it", "its", "there", "here", - - # English user command words - "show", "list", "give", "get", "find", "display", "tell", "me", - "need", "want", "make", "create", "check", "see", "view", - - # English time/common filters - "today", "yesterday", "tomorrow", "now", "current", "latest", - "last", "next", "this", "week", "month", "year", "daily", "weekly", - "monthly", "yearly", - - # Arabic greetings / casual - "مرحبا", "مرحبًا", "اهلا", "أهلا", "أهلًا", "السلام", "شكرا", "شكرًا", - "نعم", "لا", "طيب", "تمام", "مع السلامة", - - # Arabic question/helper words - "ما", "ماذا", "من", "متى", "أين", "اين", "كيف", "لماذا", "هل", "كم", - "أي", "اي", "الذي", "التي", "الذين", - - # Arabic filler/common words - "في", "من", "إلى", "الى", "على", "عن", "مع", "بدون", "و", "أو", "او", - "لكن", "إذا", "اذا", "ثم", "هذا", "هذه", "هؤلاء", "ذلك", "تلك", "هنا", - - # Arabic user command words - "اعرض", "عرض", "اظهر", "أظهر", "هات", "اعطني", "أعطني", "اريد", "أريد", - "احتاج", "ابحث", "تحقق", "شوف", - - # Arabic time/common filters - "اليوم", "أمس", "امس", "غدا", "غدًا", "الآن", "الان", "الحالي", - "الأخير", "الاخير", "هذا", "هذه", "الأسبوع", "الاسبوع", "الشهر", - "السنة", "العام", "يومي", "أسبوعي", "شهري", "سنوي", -} - - def tokenize_mixed(text): return re.findall(r'[\u0600-\u06FF]+|[a-zA-Z0-9]+', text.lower()) - def is_erp_query(master_match:bool, q: str, words_list: list,cut_off_perc:int) -> bool: if master_match: match = process.extract( @@ -1160,17 +253,13 @@ def is_erp_query(master_match:bool, q: str, words_list: list,cut_off_perc:int) - return { "matched_value": match, } - words = tokenize_mixed(q) - for word in words: - if words_list != THREAD_WORDS: if word in STOP_WORDS: continue if len(word) <= 2: continue - match = process.extractOne( word, words_list, @@ -1180,7 +269,6 @@ def is_erp_query(master_match:bool, q: str, words_list: list,cut_off_perc:int) - if match: return True - return False @@ -1200,7 +288,6 @@ def guardrail_router(state: SQLState) -> SQLState: query_type = "NON_ERP" frappe.log_error(frappe.get_traceback(), "Guardrail Router Error") return {**state, "query_type": query_type, "error": f"Error in guardrail router: {str(e)}"} - state["query_type"] = query_type publish_pipeline_update( request_id, @@ -1210,25 +297,6 @@ def guardrail_router(state: SQLState) -> SQLState: ) return state - -def send_non_erp_request(state: SQLState) -> SQLState: - qstn =state.get("question") - if not qstn: - return {**state, "non_erp_res": "", "error": "No question provided"} - # prompt = NON_ERP_PROMPT.format(question=qstn) - try: - # response = handle_non_erp_query(qstn) - response = non_erp_response(qstn) - # response = call_model(prompt, "llm") - if not response or not response.get("data"): - return {**state,"non_erp_res": "", "error": str(response)} - return {**state,"non_erp_res": response["data"], "error": None} - except frappe.exceptions.ValidationError: - raise - except Exception as e: - return {**state, "non_erp_res": "", "error": f"NON-ERP call failed: {e}"} - - def _parse_rewrite_response(raw: Any, user_qstn: str) -> Tuple[str, bool]: standalone = "" contains_values = False @@ -1242,7 +310,6 @@ def _parse_rewrite_response(raw: Any, user_qstn: str) -> Tuple[str, bool]: create_entity = False report_intent = None message=None - if isinstance(raw, dict): obj = raw elif isinstance(raw, str): @@ -1252,7 +319,6 @@ def _parse_rewrite_response(raw: Any, user_qstn: str) -> Tuple[str, bool]: standalone = raw.strip() else: standalone = str(raw).strip() - if isinstance(obj, dict): standalone = (obj.get("standalone_question") or "").strip() or standalone contains_values = bool(obj.get("contains_values")) @@ -1269,14 +335,10 @@ def _parse_rewrite_response(raw: Any, user_qstn: str) -> Tuple[str, bool]: stop_followup = bool(obj.get("stop_followup")) if stop_followup: message = obj.get("message") - elif isinstance(obj, list) and not standalone: standalone = json.dumps(obj) - return standalone or user_qstn.strip(), contains_values, entity_words,create_entity, doc,entity_name,report_name,open_report,report_intent,stop_followup,message -SQL_REWRITE_SYS_PROMPT = read_asset("sql_rewrite_sys_prompt.txt", base="prompts") -SQL_REWRITE_USER_PROMPT = read_asset("sql_rewrite_user_prompt.txt", base="prompts") def rewrite_question(state: SQLState) -> SQLState: report_intent = None request_id = state.get("request_id") @@ -1291,15 +353,12 @@ def rewrite_question(state: SQLState) -> SQLState: standalone, contains_values,entity_words,create_entity, doc,entity_name,report_name,open_report,report_intent,stop_followup,message = _parse_rewrite_response(raw, user_qstn) if report_intent: report_name_new = match_report_intent(report_intent) - - publish_pipeline_update( request_id, "question_rewrite_done", "Question rewritten", data={"formatted_q": standalone} ) - return { **state, "report_name":report_name_new or report_name or "", @@ -1316,10 +375,8 @@ def rewrite_question(state: SQLState) -> SQLState: "message":message if stop_followup else None, "stop_followup": stop_followup } - except frappe.exceptions.ValidationError: raise - except Exception as e: publish_pipeline_update( request_id, @@ -1331,157 +388,25 @@ def rewrite_question(state: SQLState) -> SQLState: return {**state, "error": str(e)} -def get_vs(istable: bool): - global _VS_TABLE, _VS_REPORT - - emb = get_embedding_engine() - if emb is None: - frappe.throw(_(EMBEDDING_ENGINE_NONE_MESSG)) - - app_path = frappe.get_app_path("changai") - - if istable: - if _VS_TABLE is None: - table_vs_path = os.path.join( - app_path, "changai", "api", "v2", - "fvs_stores", "erpnext", "table_fvs" - ) - - if not os.path.exists(table_vs_path): - frappe.throw(_("FAISS table store not found at {0}").format(table_vs_path)) - - _VS_TABLE = FAISS.load_local( - table_vs_path, - emb, - allow_dangerous_deserialization=True - ) - - return _VS_TABLE - - else: - if _VS_REPORT is None: - report_vs_path = os.path.join( - app_path, "changai", "api", "v2", - "fvs_stores", "erpnext", "report_fvs" - ) - - if not os.path.exists(report_vs_path): - frappe.throw(_("FAISS report store not found at {0}").format(report_vs_path)) - - _VS_REPORT = FAISS.load_local( - report_vs_path, - emb, - allow_dangerous_deserialization=True - ) - - return _VS_REPORT - - - -# def call_fvs_table_search(q: str) -> List[str]: -# hits = get_table_vs().similarity_search(q, k=20) -# out, seen = [], set() -# for h in hits: -# t = h.metadata.get("table") -# if t and t not in seen: -# seen.add(t) -# out.append(t) -# return out - -def check_memory_status() -> dict: - return { - "pid": os.getpid(), - "module": __name__, - "file": __file__, - "globals": { - "embedding_model": { - "loaded": _EMBEDDER_INSTANCE is not None, - "id": id(_EMBEDDER_INSTANCE), - }, - "table_vs": { - "loaded": _VS_TABLE is not None, - "id": id(_VS_TABLE), - }, - "full_fields_vs": { - "loaded": _FULL_FIELDS_VS is not None, - "id": id(_FULL_FIELDS_VS), - }, - "field_docs": { - "loaded": _FIELD_DOCS_CACHE is not None, - "id": id(_FIELD_DOCS_CACHE), - }, - "field_embs": { - "loaded": _FIELD_EMBS_CACHE is not None, - "id": id(_FIELD_EMBS_CACHE), - }, - "table_to_idx": { - "loaded": _TABLE_TO_IDX_CACHE is not None, - "id": id(_TABLE_TO_IDX_CACHE), - }, - "master_vs": { - "loaded": _VS_MASTER is not None, - "id": id(_VS_MASTER), - }, - "gemini_client": { - "loaded": _GEMINI_CLIENT is not None, - "id": id(_GEMINI_CLIENT), - }, - # "symspell": { - # "loaded": sym_spell is not None, - # "id": id(sym_spell), - # }, - "keywords": { - "loaded": _KEYWORDS_SET is not None, - "id": id(_KEYWORDS_SET), - }, - } +@frappe.whitelist(allow_guest=False) +def rewrite_question_dup(user_question: str, session_id: str = "test_session") -> dict: + state: SQLState = { + "question": user_question, + "session_id": session_id, + "request_id": f"test_{frappe.generate_hash(length=10)}", } + return rewrite_question(state) - -@lru_cache(maxsize=512) -def _get_cached_embedding(q: str, request_id: str) -> tuple: - # vec = get_local_embedding(q) - emb = get_embedding_engine() - - publish_pipeline_update( - request_id, - "embedding_end", - "get_embedding_engine ended" - ) - vec = emb.embed_query(q) - publish_pipeline_update( - request_id, - "embedding_query_done", - "embedding query done" - ) - return tuple(vec) # tuple for hashability - - +ENTITY_CREATION_PROMPT = read_asset("create_entity_prompt.txt", base="prompts") def create_entity(state:SQLState): request_id = state.get("request_id") res = call_fvs_table_search(True, state.get("formatted_q"), state.get("request_id")) - prompt = f"""You are selecting the correct ERPNext DocType for entity creation. -User query: -{state.get("formatted_q")} -Candidate DocTypes: -{res[:10]} -Rules: -- Choose only one DocType from the candidate list. -- Use only the given candidate DocTypes. -- Do not add the "tab" prefix. -- Return only valid JSON. -- Do not return explanations or extra text. -- If no suitable DocType is found, return {{"doctype": ""}}. -Output format: -{{"doctype": "chosen_doctype_name"}} - - """ + prompt =ENTITY_CREATION_PROMPT.format(question=state.get("formatted_q"),candidate_doctypes=res[:10]) publish_pipeline_update( request_id, "Detecting doctype for creation", "Detecting doctype for creation", - done=True -) + done=True) res = call_gemini(prompt,"") try: if isinstance(res, str): @@ -1492,55 +417,6 @@ def create_entity(state:SQLState): except json.JSONDecodeError as e: return {**state,"error":str(e)} - - -def call_fvs_table_search(get_table: bool, q: str, request_id: str) -> List[str]: - # get cached embedding - publish_pipeline_update( - request_id, - "Inside the Table Search Function", - _("Inside the Table Search Function") - ) - q_vec = np.array(_get_cached_embedding(q,request_id), dtype="float32") - publish_pipeline_update( - request_id, - "Completed Embed for Table Search Function", - _("Completed Embed for Table Search Function") - ) - - # use FAISS index directly instead of similarity_search - publish_pipeline_update( - request_id, - "q_vec_ready", - _("q_vec_ready") - ) - vs = get_vs(get_table) - publish_pipeline_update( - request_id, - "vs_ready", - _("vs_ready") - ) - scores, indices = vs.index.search(q_vec.reshape(1, -1), k=20) - publish_pipeline_update( - request_id, - "index_search_done", - _("index_search_done") - ) - - out, seen = [], set() - for idx in indices[0]: - if idx == -1: - continue - doc_id = vs.index_to_docstore_id[idx] - doc = vs.docstore.search(doc_id) - t = doc.metadata.get("table") if get_table else doc.metadata.get("report_name") - if t and t not in seen: - seen.add(t) - out.append(t) - return out - - - def _parse_json_list(raw: str) -> List[Any]: try: data = json.loads(raw) @@ -1549,166 +425,6 @@ def _parse_json_list(raw: str) -> List[Any]: return [] -from langchain_community.vectorstores import FAISS -import faiss - -def build_hnsw_index(embeddings): - dim = len(embeddings[0]) - - index = faiss.IndexHNSWFlat(dim, 32) # 32 = neighbors (tune this) - index.hnsw.efConstruction = 200 # build quality - index.hnsw.efSearch = 50 # search accuracy/speed tradeoff - - return index - -def call_retrieve_multi_line(user_question: str, request_id: str) -> Dict[str, Any]: - try: - top_tables = call_fvs_table_search(True, user_question, request_id) - publish_pipeline_update( - request_id, - "table_retrieval_done", - _("Tables retrieved") - ) - fields_candidates= call_fvs_field_search_global_k( - user_question, - selected_tables=top_tables, - k_total=40, - request_id=request_id - ) - publish_pipeline_update( - request_id, - "field_retrieval_done", - "Fields selected" - ) - return { - "selected_fields": fields_candidates, - "selected_tables": top_tables, - "top_tables": top_tables, - "top_fields": fields_candidates, - } - except frappe.exceptions.ValidationError: - raise - except Exception as e: - return {"selected_fields": {}, "selected_tables": [], "top_tables": [], "error": str(e)} - - -def call_fvs_field_search_global_k( - user_question: str, - selected_tables: List[str], - k_total: int = 40, - request_id: Optional[str] = None -) -> str: - if isinstance(selected_tables, str): - try: - selected_tables = json.loads(selected_tables) - except Exception: - selected_tables = [selected_tables] - if not user_question or not selected_tables: - return "" - - docs, embs, table_to_idx = load_field_matrix() - - q_vec = np.array( - _get_cached_embedding(user_question, request_id), - dtype="float32" - ) - - q_vec = q_vec / max(np.linalg.norm(q_vec), 1e-12) - - all_idxs = [] - - for t in selected_tables: - t = str(t).strip() - if not t: - continue - - candidates = [ - t, - f"tab{t}" if not t.startswith("tab") else t, - t.replace("tab", "", 1) if t.startswith("tab") else t, - ] - - for key in candidates: - if key in table_to_idx: - all_idxs.extend(table_to_idx[key]) - break - - if not all_idxs: - frappe.log_error( - title="ChangAI Field Search: No Indexes Found", - message=json.dumps({ - "user_question": user_question, - "selected_tables": selected_tables, - "sample_table_to_idx_keys": list(table_to_idx.keys())[:50], - }, indent=2, default=str) - ) - return "" - - sub_embs = embs[all_idxs] - scores = sub_embs @ q_vec - - top_global = np.argsort(-scores)[:k_total] - - grouped = {} - seen = set() - - for i in top_global: - doc_i = all_idxs[int(i)] - d = docs[doc_i] - - meta = getattr(d, "metadata", {}) or {} - - is_table = meta.get("is_table") - table = meta.get("table") - field = meta.get("field") or meta.get("name") - - if not table or not field: - continue - - key = (table, field) - if key in seen: - continue - - seen.add(key) - - name = field - - join_hint = meta.get("join_hint") - if isinstance(join_hint, dict): - linked_table = join_hint.get("table") - if linked_table: - name += f" -> {linked_table}" - elif isinstance(join_hint, str) and join_hint.strip(): - name += f" -> {join_hint.strip()}" - - opts = meta.get("options") - if opts: - if isinstance(opts, list): - name += " {" + ", ".join(str(o) for o in opts[:5]) + "}" - else: - name += " {" + str(opts) + "}" - - grouped.setdefault(table, { - "is_table": is_table, - "fields": [] - }) - - grouped[table]["fields"].append(name) - - if not grouped: - frappe.log_error( - title="ChangAI Field Search: Empty Grouped Result", - message=json.dumps({ - "user_question": user_question, - "selected_tables": selected_tables, - "all_idxs_count": len(all_idxs), - "top_global_count": len(top_global), - }, indent=2, default=str) - ) - return "" - return format_schema_context(grouped) - - # Node 1: Retrive with Fiass Vector Store. def schema_retriever(state: SQLState) -> SQLState: config = ChangAIConfig.get() @@ -1737,11 +453,9 @@ def hits_to_prompt_context(state:SQLState) -> SQLState: ctx=hits_to_schema_context(state["hits"],title="SCHEMA CONTEXT",max_fields_per_table=25) entity_context=state.get("entity_cards", []) full_context = ctx - if entity_context: full_context += "\n\nENTITY_CARDS:\n" full_context += "\n".join(entity_context) - return { **state, "context": full_context @@ -1808,151 +522,6 @@ def validate_sql(state: SQLState) -> SQLState: val = validate_sql_against_mapping(sql, mapping_data, dialect="mysql") return {**state, "validation": val} - -def remote_entity_embedder(q: str) -> Union[list, str]: - config = ChangAIConfig.get() - payload = {"version": config["entity_retriever"], "input": {"query": q}} - headers = { - "Content-Type": APPLICATION_JSON, - "Prefer": "wait", - "Authorization": f"Bearer {config['API_TOKEN']}", - } - response = _post_json(config["URL"], headers, payload) - return response - - -settingsUrl = frappe.utils.get_url( - "/app/changai-settings/ChangAI%20Settings" -) - - -def get_master_vs(): - global _VS_MASTER - try: - if _VS_MASTER is None: - emb = get_embedding_engine() - if emb is None: - frappe.throw(_(EMBEDDING_ENGINE_NONE_MESSG)) - - master_vs_path = frappe.get_site_path( - "private", "changai", "fvs_stores", "erpnext", "masterdata_fvs" - ) - if not os.path.exists(master_vs_path): - frappe.throw(_( - "FAISS MASTER store not found at {0}.

    " - "Please open " - "Go to Settings Page" - "and click on the Update Master Data button in the Training tab.

    " - "Check Quick Start Guide Here 👇
    " - "Click here


    " - "ERPGulf.com" - - ).format( - master_vs_path, - settingsUrl, - CHANGAI_GUIDE_LINK, - ERPGULF_LINK - )) - - _VS_MASTER = FAISS.load_local( - master_vs_path, - emb, - allow_dangerous_deserialization=True - ) - except Exception as e: - frappe.log_error(f"Error loading master vector store: {e}", "ChangAI Master VS Load Error") - - return _VS_MASTER - -import re - -def append_entity_field_to_schema(top_fields: str, table_name: str, field_name: str) -> str: - """ - Append field_name to the FIELDS section of table_name if missing. - Example: append customer_name into TABLE: tabCustomer block. - """ - - pattern = rf"(TABLE:\s*{re.escape(table_name)}\n.*?FIELDS:\n)(.*?)(?=\n\nTABLE:|\Z)" - - def replace_block(match): - header = match.group(1) - fields_block = match.group(2) - - # already exists - if re.search(rf"^- {re.escape(field_name)}(\s|$)", fields_block, re.MULTILINE): - return match.group(0) - - return header + fields_block.rstrip() + f"\n- {field_name}\n" - - return re.sub(pattern, replace_block, top_fields, count=1, flags=re.DOTALL) - - -def local_entity_embedder(q: str) -> List[Dict[str, Any]]: - hits = get_master_vs().similarity_search(q, k=20) - out, seen = [], set() - for h in hits: - entity_type = h.metadata.get("entity_type") # example: tabCustomer - entity_id = h.metadata.get("entity_id") # example: customer_name - entity_label = h.metadata.get("entity_label") - # if entity_type in state["selected_tables"]: - # state["selected_fields"] = append_entity_field_to_schema( - # top_fields=state["selected_fields"], - # table_name=entity_type, - # field_name=entity_id - # ) - - key = (entity_type, entity_label) - if key not in seen: - seen.add(key) - out.append({"entity_type": entity_type, "entity_id": entity_id, "entity_label": entity_label}) - return out - - -def call_entity_retriever(isreport: bool, qstn: str, state: Dict) -> Dict[str, Any]: - config = ChangAIConfig.get() - if config["REMOTE"] and config["llm"] == "QWEN3": - response = remote_entity_embedder(qstn) - - if not response.get("ok"): - frappe.log_error(f"Entity retriever failed: {response.get('body')}", "ChangAI Entity Retriever") - return {"raw": response, "cards": []} - - body = response.get("body") or {} - output = body.get("output") or {} - results = output.get("results") or [] - - cards = [r.get("entity_label") for r in results if r.get("entity_label")] - - return {"raw": body, "cards": cards} - else: - from changai.changai.api.v2.schema_utils import phonetic_match - entity_words = state.get("entity_words") - cards = [] - debug=[] - if entity_words is None: - return {"cards":[]} - for word in entity_words: - result = phonetic_match(isreport, word) - labels = result.get("entity_labels") or [] - debug.append({ - "word": word, - "result": result, - "labels": labels - }) - for label in labels: - if isreport: - try: - table_field, _ = labels.split(":", 1) - table, field = table_field.split(".", 1) - doctype = table.removeprefix("tab") - state["doc"] = doctype - except Exception: - pass - if label and label not in cards: - cards.append(label) - return {"cards": cards} - - # # Node 5:Repair Loop :Simple prompt for one more try. def repair_sqlquery(state: SQLState) -> SQLState: hints: List[str] = [] @@ -2010,217 +579,35 @@ def detect_specific_entities(state: SQLState) -> SQLState: "Go to Settings Page " "and click on the Update Master Data button in the Training tab.

    " "Check Quick Start Guide Here 👇:
    " - "Click here
    " - "ERPGulf.com" - ).format(settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) - - if res.get("is_stale") and res.get("days", 0) > 0: - frappe.throw(_( - "Your master data is {0} days old. " - "Because of this, results may not be accurate. " - "For better accuracy, please open " - "Go to Settings Page " - "and click on the Update Master Data button in the Training tab.

    " - "Check Quick Start Guide Here 👇:
    " - "Click here
    " - "ERPGulf.com" - ).format(res.get("days"), settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) - - out = call_entity_retriever(False, q, state) - return { - **state, - "entity_cards": out.get("cards") or [], - # "entity_raw": out.get("raw"), - } - except frappe.exceptions.ValidationError: - raise - except Exception as e: - frappe.log_error(f"Entity retriever failed: {e}", "ChangAI Entity Gate") - return {**state, "entity_cards": [], "entity_raw": {"error": str(e)}} - - -def route_after_entities(state: SQLState) -> str: - config = ChangAIConfig.get() - return "DIRECT" if config.get("retriever_structure") == "multi line" else "CONTEXT" - - -def route_guardrail(state: SQLState) -> str: - return "ERP" if state.get("query_type") == "ERP" else "NON_ERP" - -def clean_sql(s: Any) -> str: - if isinstance(s, dict): - s = s.get("output") or s.get("sql") or s.get("text") or json.dumps(s, ensure_ascii=False, default=str) - elif isinstance(s, list): - s = "\n".join(str(x) for x in s) - else: - s = "" if s is None else str(s) - - s = s.strip() - - if s.startswith("```"): - first_newline = s.find("\n") - if first_newline != -1: - header = s[:first_newline].strip().lower() - if header in {"```", "```sql"}: - s = s[first_newline + 1 :].lstrip() - - stripped = s.rstrip() - if stripped.endswith("```"): - stripped = stripped[:-3].rstrip() - s = stripped - - if s[:3].lower() == "sql" and (len(s) == 3 or s[3].isspace()): - s = s[3:].lstrip() - - return s.strip() - - -# # Router to decide next stage: -def router(state:SQLState) -> str: - if state.get("error"): - return "end" - val=state.get("validation",{}) - if val.get("ok"): - return "end" - tries=int(state.get("tries") or 0) - if tries < RETRY_LIMIT: - return "repair" - return "end" - - -def _parse_sql_ast(sql_text: str, dialect: str): - try: - return sqlglot.parse_one(sql_text, read=dialect), None - except Exception as e: - return None, str(e) - - -def _extract_tables(ast) -> Tuple[List[str], Dict[str, str]]: - base_tables = [] - alias_to_table = {} - for t in ast.find_all(exp.Table): - if not t.name: - continue - base_tables.append(t.name) - a = t.args.get("alias") - if a and a.name: - alias_to_table[a.name] = t.name - return list(dict.fromkeys(base_tables)), alias_to_table - - -def _extract_derived_aliases(ast) -> Set[str]: - derived = set() - for sq in ast.find_all(exp.Subquery): - a = sq.args.get("alias") - if a and a.name: - derived.add(a.name) - for cte in ast.find_all(exp.CTE): - a = cte.args.get("alias") - if a and a.name: - derived.add(a.name) - return derived - - -def _extract_select_aliases(ast) -> Set[str]: - aliases = set() - for sel in ast.find_all(exp.Select): - for proj in sel.expressions: - if isinstance(proj, exp.Alias) and proj.alias: - aliases.add(proj.alias) - return aliases - - -def _validate_qualified_col(col_name: str, qual: str, mapping: Dict, - alias_to_table: Dict, derived_aliases: Set) -> Optional[Tuple]: - if col_name == "*" or qual in derived_aliases: - return None - if qual in mapping: - if col_name not in mapping[qual]: - return (f"{qual}.{col_name}", qual) - return None - if qual in alias_to_table: - real = alias_to_table[qual] - if real in mapping and col_name not in mapping[real]: - return (f"{qual}.{col_name}", real) - return None - return (f"{qual}.{col_name}", None) - - -def _validate_unqualified_col(col_name: str, base_tables_set: Set, - mapping: Dict, select_aliases: Set, - unknown_cols: List, ambiguous: Set): - if col_name in select_aliases: - return - candidates = [t for t in base_tables_set if col_name in mapping.get(t, [])] - if len(candidates) == 0: - unknown_cols.append((col_name, None)) - elif len(candidates) > 1: - ambiguous.add(col_name) - - -def _validate_columns(ast, mapping: Dict, alias_to_table: Dict, - derived_aliases: Set, select_aliases: Set, - base_tables_set: Set) -> Tuple[List, Set]: - unknown_cols: List[Tuple[str, str]] = [] - ambiguous: Set[str] = set() - for col in ast.find_all(exp.Column): - if not col.name: - continue - if col.table: - result = _validate_qualified_col( - col.name, str(col.table), mapping, alias_to_table, derived_aliases - ) - if result: - unknown_cols.append(result) - else: - _validate_unqualified_col( - col.name, base_tables_set, mapping, select_aliases, unknown_cols, ambiguous - ) - return unknown_cols, ambiguous - - -def validate_sql_against_mapping( - sql_text: str, - mapping: Dict[str, List[str]], - dialect: str = "mysql" -) -> Dict[str, Any]: - result = { - "ok": True, - "unknown_tables": [], - "unknown_columns": [], - "ambiguous_columns": [], - "details": {"from_tables": [], "alias_to_table": {}, "derived_aliases": [], "select_aliases": []}, - } - - ast, parse_error = _parse_sql_ast(sql_text, dialect) - if parse_error: - result["ok"] = False - result["details"]["parse_error"] = parse_error - return result - - base_tables, alias_to_table = _extract_tables(ast) - derived_aliases = _extract_derived_aliases(ast) - select_aliases = _extract_select_aliases(ast) + "Click here
    " + "ERPGulf.com" + ).format(settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) - result["details"]["from_tables"] = base_tables - result["details"]["alias_to_table"] = alias_to_table - result["details"]["derived_aliases"] = sorted(derived_aliases) - result["details"]["select_aliases"] = sorted(select_aliases) + if res.get("is_stale") and res.get("days", 0) > 0: + frappe.throw(_( + "Your master data is {0} days old. " + "Because of this, results may not be accurate. " + "For better accuracy, please open " + "Go to Settings Page " + "and click on the Update Master Data button in the Training tab.

    " + "Check Quick Start Guide Here 👇:
    " + "Click here
    " + "ERPGulf.com" + ).format(res.get("days"), settingsUrl, CHANGAI_GUIDE_LINK, ERPGULF_LINK)) - unknown_tables = [t for t in base_tables if t not in mapping] - if unknown_tables: - result["ok"] = False - result["unknown_tables"] = unknown_tables + out = call_entity_retriever(False, q, state) + return { + **state, + "entity_cards": out.get("cards") or [], + # "entity_raw": out.get("raw"), + } + except frappe.exceptions.ValidationError: + raise + except Exception as e: + frappe.log_error(f"Entity retriever failed: {e}", "ChangAI Entity Gate") + return {**state, "entity_cards": [], "entity_raw": {"error": str(e)}} - unknown_cols, ambiguous = _validate_columns( - ast, mapping, alias_to_table, derived_aliases, select_aliases, set(base_tables) - ) - if unknown_cols or ambiguous: - result["ok"] = False - result["unknown_columns"] = unknown_cols - result["ambiguous_columns"] = sorted(ambiguous) - return result def routeNonErpToAI(state: SQLState): question= state["question"] @@ -2238,142 +625,67 @@ def routeNonErpToAI(state: SQLState): raise except Exception as e: return {**state, "non_erp_res": "Model Calling Failed .Please try Again","error":str(e)} - - else: res= send_non_erp_request(state) return res +def send_non_erp_request(state: SQLState) -> SQLState: + qstn =state.get("question") + if not qstn: + return {**state, "non_erp_res": "", "error": "No question provided"} + try: + # response = handle_non_erp_query(qstn) + response = non_erp_response(qstn) + # response = call_model(prompt, "llm") + if not response or not response.get("data"): + return {**state,"non_erp_res": "", "error": str(response)} + return {**state,"non_erp_res": response["data"], "error": None} + except frappe.exceptions.ValidationError: + raise + except Exception as e: + return {**state, "non_erp_res": "", "error": f"NON-ERP call failed: {e}"} + +def route_after_entities(state: SQLState) -> str: + config = ChangAIConfig.get() + return "DIRECT" if config.get("retriever_structure") == "multi line" else "CONTEXT" + + +def route_guardrail(state: SQLState) -> str: + return "ERP" if state.get("query_type") == "ERP" else "NON_ERP" + + +# # Router to decide next stage: +def router(state:SQLState) -> str: + if state.get("error"): + return "end" + val=state.get("validation",{}) + if val.get("ok"): + return "end" + tries=int(state.get("tries") or 0) + if tries < RETRY_LIMIT: + return "repair" + return "end" def prepare_report_action(state: SQLState) -> SQLState: report_name = None q = state.get("formatted_q") or state.get("question") or "" request_id = state.get("request_id") report_name = state.get("report_name") - cards = call_entity_retriever(True, q, state) if state.get("contains_values") else {"cards": []} - # reports_listed = call_fvs_table_search(False, q, request_id) doctype = state.get("doc") if state.get("doc") else None result = [] - # for report in reports_listed[:30]: - # report_name = report.get("name") if isinstance(report, dict) else report - # result.append({ - # "report": report_name, - # "filters": get_report_filter_fields(report_name) - # }) result.append({"report":report_name,"filters": get_report_filter_fields(report_name)}) - prompt = f""" -Given the user query: -{q} -Detected DocType: use this value only for filtering by party type. -{doctype} -Available Report and Filter Fields: -{result} -after seeing the reports look wisely at the question and find the intent that speaks of report name take that intent and match with listed reports -and find the best matching report name. -Carefully identify the report intent from the user's question and match only that intent against the available report names. Do not use entity names, entity types, party names, customer names, supplier names, or filter values to choose the report, even if similar words appear in the listed report names. Entity information must be used only for filters, not for report_name selection. -even if the right report name is not ranked top find it from the top 10 and use it . -Entity Cards: -{cards} -Report selection MUST be based on the user's requested report type first. -Entity type (Customer, Supplier, Employee, etc.) is only used for filters and MUST NOT determine the report name. -Examples: -User: "show account statement for nova supplier" -Report: General Ledger -Filters: -{{ - "party_type": "Supplier", - "party": "nova supplier" -}} -TASK -Select exactly ONE report from the Available Reports and Filter Fields. -Step 1 - Understand User Intent -- Analyze the user's intent and meaning carefully. -- Match reports by meaning and business purpose, not only exact words. -- Consider synonyms and common ERP terminology. -Examples: -- "account statement", "customer statement", "supplier statement", "ledger statement" → usually General Ledger when available. -- "profit report" → Gross Profit. -- "trial balance" → Trial Balance. -- "balance sheet" → Balance Sheet. -Step 2 - Select the Best Report -- report_name MUST be selected only from the provided report list. -- Never invent a report name. -- Never return an empty report name. -- Choose the report whose purpose best matches the user's request. -- If multiple reports are similar, select the one whose available filters best satisfy the user's request. -- Report selection is more important than filter selection. -- Do not choose a report simply because a filter matches. -Step 3 - Apply Filters -- Use ONLY filters that exist in the selected report. -- Never invent filter names. -- Never invent filter values. -- Use Entity Card values whenever applicable. -- Apply only relevant filters supported by the selected report. -Party Filtering Rules -If: -- detected DocType is Customer, Supplier, Employee, Shareholder, Student, Member, or any party-type entity -AND -- selected report contains both party_type and party filters -THEN: -- party_type = detected DocType -- party = entity value from Entity Card -Example: -DocType = Customer -Entity Card: -customer_name: مؤسسة الإبداع التجارية -Filters: -{{ - "party_type": "Customer", - "party": "مؤسسة الإبداع التجارية" -}} -Important: -- Never infer party_type from the entity value. -- Always use the detected DocType. -- Prefer party_type + party over name-based filters whenever both are available. -Date Rules -Whenever a report requires date filtering: -- Convert relative dates into explicit dates. -- Use DD-MM-YYYY format only. -- Never use natural language dates. -Date Format Rules: -- Always output dates in YYYY-MM-DD format. -- Never use DD-MM-YYYY, MM-DD-YYYY, or natural language dates. -- Convert all relative dates to YYYY-MM-DD before returning filters. -Validation Before Answering -Verify: -1. report_name exists in Available Reports. -2. Every filter exists in the selected report. -3. Every filter value comes from the user query, Entity Cards, or a valid date conversion. -4. No invented report names. -5. No invented filters. -6. No empty report_name. -7. Report intent matches the user's request. -Return ONLY valid JSON: -{{ - "report_name": "", - "filters": {{ - "": "" - }} -}} -**Always use party_type when it is avaible for filtering if filtering by party name like customer, supplier,item etc -STRICT OUTPUT -- Return only JSON. -- No markdown. -- No explanations. -- No comments. -- Response must start with {{ and end with }}. -""" - + prompt = REPORT_ACTION_PROMPT.format( + question=q, + doctype=doctype or "", + available_reports=json.dumps(result, ensure_ascii=False, default=str), + entity_cards=json.dumps(cards, ensure_ascii=False, default=str)) response = call_model(prompt, "llm", "") - raw_response = str(response or "").strip() raw_response = raw_response.replace("```json", "").replace("```", "").strip() - frappe.logger().info(f"prepare_report_action raw response: {repr(raw_response)}") - if not raw_response: response = {"report_name": "", "filters": {}} else: @@ -2385,7 +697,6 @@ def prepare_report_action(state: SQLState) -> SQLState: "prepare_report_action JSON Error" ) response = {"report_name": "", "filters": {}} - if not isinstance(response, dict): response = {"report_name": "", "filters": {}} publish_pipeline_update( @@ -2404,19 +715,6 @@ def prepare_report_action(state: SQLState) -> SQLState: "entity_raw": cards, "error": None, } - - -# def route_action(state: SQLState): -# if state.get("create_entity") is True: -# qstn = state.get("user_question") -# response = call_fvs_table_search(False, qstn) -# return response -# return "CREATE_ENTITY" -# if state.get("open_report") is True: -# return "OPEN_REPORT" -# else: -# return "CONTINUE" - # Building the Workflow Graph workflow=StateGraph(SQLState) workflow.add_node("rewrite_question",rewrite_question) @@ -2431,12 +729,8 @@ def prepare_report_action(state: SQLState) -> SQLState: workflow.add_node("routeNonErpToAI",routeNonErpToAI) workflow.add_node("prepare_report_action", prepare_report_action) workflow.add_node("create_entity", create_entity) -# workflow.add_node("stop_follow_msg_api", stop_follow_msg_api) - - workflow.set_entry_point("guardrail_router") workflow.add_conditional_edges("guardrail_router",route_guardrail,{"ERP":"rewrite_question","NON_ERP":"routeNonErpToAI"}) -# workflow.add_edge("guardrail_router", "rewrite_question") workflow.add_edge("routeNonErpToAI", END) workflow.add_conditional_edges( "rewrite_question", @@ -2497,471 +791,6 @@ def execute_query(sql: str, doctypes: List[str]) -> Any: return {"error": f"SQL Execution Failed: {e}\n Check Quick Start Guide Here 👇:\n {CHANGAI_GUIDE_LINK}"} -@frappe.whitelist(allow_guest=False) -def support_bot(message: str) -> Dict[str, Any]: - user_email = frappe.session.user - full_name = frappe.get_value("User", frappe.session.user, "full_name") - prompt = SUPPORT_USER_PROMPT.format(user_message=message) - raw = call_gemini(prompt, SUPPORT_SYS_PROMPT) - output = json.loads(raw) - task_flag = (output.get("task_flag") or "UNKNOWN").strip() - ticket_id = output.get("ticket_id") - - if isinstance(ticket_id, str) and ticket_id.isdigit(): - ticket_id = int(ticket_id) - if not isinstance(ticket_id, int): - ticket_id = None - - if task_flag == "CREATE_TICKET": - try: - response = create_helpdesk_ticket(message, full_name, user_email) - return json.loads(response.get_data(as_text=True)) # ✅ unwrap Response → dict - except Exception as e: - return {"error": str(e)} - - if task_flag == "TICKET_DETAILS": - if not ticket_id: - return {"kind": "TICKET_DETAILS", "error": "Ticket id missing. Please say like: ticket 29"} - try: - response = get_user_tickets(ticket_id) - return json.loads(response.get_data(as_text=True)) # ✅ unwrap Response → dict - except Exception as e: - return {"error": str(e)} - - if task_flag == "GET_USER_TICKETS": - response = get_user_tickets() - return json.loads(response.get_data(as_text=True)) # ✅ unwrap Response → dict - - return {"kind": "UNKNOWN", "message": "Please describe the issue or provide a ticket number."} - -def save_logs( - user_question: Optional[str] = None, - formatted_q: Optional[str] = None, - context: Optional[str] = None, - sql: Optional[str] = None, - val: Any = None, - result: Any = None, - tries: Optional[int] = None, - err: Any = None, - formatted_result: Any = None, - tables:Any=None, - fields:Any=None, - entity_debug:Any=None, - type_=None -) -> str: - def to_json_if_needed(v: Any) -> Any: - if isinstance(v, (dict, list)): - return json.dumps(v, default=str, ensure_ascii=False) - return v - - MAX_LOG_LEN = 140 - doc = frappe.new_doc("ChangAI Logs") - doc.user_question = user_question - safe_question=(formatted_q[:137] + "..." if len(formatted_q) > MAX_LOG_LEN else formatted_q) - doc.rewritten_question = safe_question - doc.schema_retrieved = to_json_if_needed(context) - doc.sql_generated = to_json_if_needed(sql) - doc.validation = to_json_if_needed(val) - doc.tries = tries - doc.error = to_json_if_needed(err) - doc.result = to_json_if_needed(result) - doc.formatted_result = to_json_if_needed(formatted_result) - doc.tables = to_json_if_needed(tables) - doc.fields = to_json_if_needed(fields) - doc.entity = to_json_if_needed(entity_debug) - doc.type = type_ - doc.insert(ignore_permissions=True) - return doc.name - - -def format_data_conversationally(user_data: Any) -> str: - # Safe: CONVERSATION_TEMPLATE is a hardcoded internal template string. - # User SQL result is passed only as data context, not as template source. - # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti - return render_template( - CONVERSATION_TEMPLATE, # nosemgrep: frappe-semgrep-rules.rules.security.frappe-ssti - - {"data": user_data} - ) - - -def format_data(qstn: str, sql_data: Any) -> Dict[str, str]: - if isinstance(sql_data, (dict, list)): - db_result_json = json.dumps(sql_data, ensure_ascii=False, default=str) - else: - db_result_json = str(sql_data) if sql_data is not None else "{}" - - sys_prompt = """ -You are ChangAI, a warm and intelligent business assistant. -Your job is to turn raw database results into clear, friendly, human-readable answers. -CONTENT RULES: -- Use BOTH the user question and the DB result JSON to form the answer. -- Use ONLY values present in the JSON. NEVER invent numbers or fields. -- If result is empty, respond warmly and suggest refining the search. -- Do NOT mention SQL, tables, fields, JSON, reasoning, or steps. - -TONE & STYLE: -- Warm, conversational, and helpful — like a knowledgeable friend, not a report. -- If the question is in Arabic, reply in natural Arabic — not translated English. -- Never respond with a cold, empty, or robotic answer. - -FORMATTING: -- Start with ONE relevant emoji matching the topic (📦💰🧾👥📊📅🔍💤📉) -- For 3+ items, use a bullet list: • Item — value -- If list exceeds shown items, state exactly how many remain. -- Keep answers brief (1–6 lines). Lead with the direct answer, then light context. - -CLOSING: -- End with ONE short, relevant follow-up question to keep the conversation going. -- Make it feel natural, not robotic. -Never list names or items in a comma-separated line. Ever. -OUTPUT: -- Markdown ALLOWED: **bold**, • bullets, emojis -- i dont want too much gap between the texts also gaps are not allowed between items listed. -- No JSON. No code blocks. No labels. No explanations. -- Output ONLY the final user-facing answer. Nothing else. -- if the user question is in english reply in english only very important. -if the user question is in arabic respond in arabic only. and if the question is in english respond answer also english -""" - user_prompt=f""" - QUESTION: - {qstn} - - DATABASE_RESULT_JSON: - {db_result_json} - """ - output = call_model(user_prompt,"llm",sys_prompt) - answer = str(output) - return {"answer": answer} - -def _collect_docs(hits: Union[List[Any], Dict, str]) -> List[Tuple[str, Dict]]: - def _to_txt_md(doc: Any) -> Tuple[str, Dict]: - if isinstance(doc, dict): - return doc.get("text", "") or "", doc.get("metadata", {}) or {} - if isinstance(doc, str): - return doc, {} - return "", {} - - if isinstance(hits, dict) and "message" in hits and isinstance(hits["message"], list): - hits = hits["message"] - - if isinstance(hits, (dict, str)) or hasattr(hits, "page_content"): - return [_to_txt_md(hits)] - return [_to_txt_md(d) for d in (hits or [])] - - -def _parse_tag(txt: str, tag: str) -> str: - m = re.search(rf"\[{re.escape(tag)}\]\s*(.+?)(?:\s*\||\s*$)", txt or "") - return m.group(1).strip() if m else "" - - -def _infer_type(txt: str) -> str: - if not (txt or "").startswith("["): - return "" - order = [ - ("TABLE", "table"), ("FIELD", "field"), ("JOIN", "join"), - ("METRIC", "metric"), ("ENUM", "enum"), ("PERIOD", "period"), - ("CURRENCY", "currency"), ("ENTITY", "entity") - ] - for tg, tp in order: - if txt.startswith(f"[{tg}]"): - return tp - return "" - - -class _SchemaAccumulator: - def __init__(self): - self.tables: List[str] = [] - self.fields_by_table: Dict[str, List[str]] = OrderedDict() - self.joins: List[str] = [] - self.metrics: List[Tuple[str, str, str]] = [] - self.periods: List[str] = [] - self.currencies: List[str] = [] - self.enums: OrderedDict = OrderedDict() - self.entities: List[Tuple[str, Dict]] = [] - - def add_table(self, t: str): - if t and t not in self.tables: - self.tables.append(t) - if t not in self.fields_by_table: - self.fields_by_table[t] = [] - - def add_field(self, tbl: str, fld: str): - if tbl and fld: - self.add_table(tbl) - fq = f"{tbl}.{fld}" - if fq not in self.fields_by_table[tbl]: - self.fields_by_table[tbl].append(fq) - - def add_join(self, on: str): - if on and on not in self.joins: - self.joins.append(on) - - def add_metric(self, mname: str, mexpr: str, mtbl: str): - if mtbl: - self.add_table(mtbl) - if mname: - tup = (mname, mexpr or "", mtbl or "") - if tup not in self.metrics: - self.metrics.append(tup) - - def add_period(self, pname: str): - if pname and pname not in self.periods: - self.periods.append(pname) - - def add_currency(self, code: str): - if code and code not in self.currencies: - self.currencies.append(code) - - def add_enum(self, tbl: str, fld: str, vals: Any): - if tbl: - self.add_table(tbl) - if tbl and fld: - key = f"{tbl}.{fld}" - if isinstance(vals, (list, tuple)): - vals = ", ".join([str(v) for v in vals]) - if key not in self.enums: - self.enums[key] = vals or "" - self.add_field(tbl, fld) - - def add_entity(self, ent_name: str, filt: Dict): - self.entities.append((ent_name, filt or {})) - - def sort(self): - self.tables.sort() - for t in self.fields_by_table: - if t not in self.tables: - self.tables.append(t) - for t in self.fields_by_table: - self.fields_by_table[t] = sorted( - self.fields_by_table[t], key=lambda s: s.split(".", 1)[1] - ) - self.joins.sort() - self.metrics.sort(key=lambda x: x[0]) - self.periods.sort() - self.currencies.sort() - self.enums = OrderedDict(sorted(self.enums.items(), key=lambda kv: kv[0])) - - -def _process_enum(txt: str, md: Dict, acc: _SchemaAccumulator): - tbl = md.get("table") or _parse_tag(txt, "TABLE") - fld = md.get("field") - if not fld: - ef = _parse_tag(txt, "ENUM") - if "." in ef: - tbl = tbl or ef.split(".", 1)[0].strip() - fld = ef.split(".", 1)[1].strip() - vals = md.get("values") - if vals is None: - vals = _parse_tag(txt, "VALUES") - acc.add_enum(tbl, fld, vals) - - -def _process_entity(txt: str, md: Dict, acc: _SchemaAccumulator): - ent_name = md.get("entity") or _parse_tag(txt, "ENTITY") or "Entity" - filt = md.get("filters") - if filt is None: - filt_txt = _parse_tag(txt, "FILTERS") - filt = {} - if filt_txt: - for part in [p.strip() for p in filt_txt.split(";") if p.strip()]: - if "=" in part: - k, v = part.split("=", 1) - filt[k.strip()] = [x.strip() for x in v.split(",") if x.strip()] - acc.add_entity(ent_name, filt) - - -def _get_table_name(txt: str, md: Dict) -> str: - return md.get("table") or _parse_tag(txt, "TABLE") - - -def _get_field_name(txt: str, md: Dict) -> str: - return md.get("field") or _parse_tag(txt, "FIELD").split(" (", 1)[0] - - -def _process_table_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: - acc.add_table(_get_table_name(txt, md)) - - -def _process_field_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: - acc.add_field(_get_table_name(txt, md), _get_field_name(txt, md)) - - -def _process_join_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: - acc.add_join(md.get("on") or _parse_tag(txt, "ON")) - - -def _process_metric_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: - acc.add_metric( - md.get("name") or _parse_tag(txt, "METRIC"), - md.get("expression") or _parse_tag(txt, "EXPR"), - _get_table_name(txt, md), - ) - - -def _process_period_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: - acc.add_period(md.get("name") or _parse_tag(txt, "PERIOD")) - - -def _process_currency_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: - acc.add_currency(md.get("code") or _parse_tag(txt, "CURRENCY")) - - -_DOC_PROCESSORS = { - "table": _process_table_doc, - "field": _process_field_doc, - "join": _process_join_doc, - "metric": _process_metric_doc, - "period": _process_period_doc, - "currency": _process_currency_doc, - "enum": _process_enum, - "entity": _process_entity, -} - - -def _process_doc(txt: str, md: Dict, acc: _SchemaAccumulator) -> None: - dtype = md.get("type") or _infer_type(txt) - processor = _DOC_PROCESSORS.get(dtype) - if processor: - processor(txt, md, acc) - - -def _append_table_lines( - lines: List[str], - acc: _SchemaAccumulator, - max_fields_per_table: int, -) -> None: - for tbl in acc.tables: - lines.append(f"Table: {tbl}") - lines.append("Fields:") - fields = acc.fields_by_table.get(tbl, []) - - if not fields: - lines.append(" -") - lines.append("") - continue - - lines.extend(f" - {field}" for field in fields[:max_fields_per_table]) - - extra_count = len(fields) - max_fields_per_table - if extra_count > 0: - lines.append(f" # +{extra_count} more") - - lines.append("") - - -def _append_simple_section(lines: List[str], title: str, items: List[str]) -> None: - if not items: - return - - lines.append(f"{title}:") - lines.extend(f" - {item}" for item in items) - lines.append("") - - -def _append_metric_lines(lines: List[str], acc: _SchemaAccumulator) -> None: - if not acc.metrics: - return - - lines.append("Metrics:") - for metric_name, metric_expr, metric_table in acc.metrics: - suffix = f" # table: {metric_table}" if metric_table else "" - line = f" - {metric_name}: {metric_expr}{suffix}" if metric_expr else f" - {metric_name}{suffix}" - lines.append(line) - lines.append("") - - -def _append_enum_lines(lines: List[str], acc: _SchemaAccumulator) -> None: - if not acc.enums: - return - - lines.append("Enums:") - for key, values in acc.enums.items(): - lines.append(f" - {key}: {values}" if values else f" - {key}") - lines.append("") - - -def _format_filter_value(value: Any) -> str: - if isinstance(value, (list, tuple)): - return ", ".join(str(item) for item in value) - return str(value) - - -def _append_entity_lines( - lines: List[str], - acc: _SchemaAccumulator, - show_entity_filters_yaml: bool, -) -> None: - if not acc.entities: - return - - lines.append("Entities:") - for entity, filters in acc.entities: - if show_entity_filters_yaml and isinstance(filters, dict) and filters: - lines.append(f" - Entity: {entity}") - lines.append(" Filters:") - for key, value in filters.items(): - lines.append(f" {key}: {_format_filter_value(value)}") - continue - - lines.append(f" - Entity: {entity}, Filters: {filters if filters else '{}'}") - - -def _trim_trailing_blank_lines(lines: List[str]) -> None: - while lines and not lines[-1].strip(): - lines.pop() - - -def _build_context_lines( - acc: _SchemaAccumulator, - title: str, - max_fields_per_table: int, - show_entity_filters_yaml: bool, -) -> List[str]: - lines: List[str] = [title] - - _append_table_lines(lines, acc, max_fields_per_table) - - if acc.joins: - lines.append("Join:") - lines.extend(f" {join}" for join in acc.joins) - lines.append("") - - _append_metric_lines(lines, acc) - _append_simple_section(lines, "Periods", acc.periods) - _append_simple_section(lines, "Currencies", acc.currencies) - _append_enum_lines(lines, acc) - _append_entity_lines(lines, acc, show_entity_filters_yaml) - - _trim_trailing_blank_lines(lines) - return lines - - -def hits_to_schema_context( - hits: Union[List[Any], Dict, str], - title: str = "SCHEMA CONTEXT", - max_fields_per_table: int = 20, - sort_sections: bool = True, - show_entity_filters_yaml: bool = True -) -> str: - acc = _SchemaAccumulator() - for txt, md in _collect_docs(hits): - _process_doc(txt, md, acc) - if sort_sections: - acc.sort() - lines = _build_context_lines(acc, title, max_fields_per_table, show_entity_filters_yaml) - return "\n".join(lines) - - -def debug_entity_retriever(q: str,state: SQLState): - resp = remote_entity_embedder(q) # this returns {"ok":..., "body":...} - return { - "query": q, - "raw_response": resp, - "parsed_entity_cards": call_entity_retriever(False, q,state) - } - - def _invoke_pipeline(user_question: str, chat_id: str, request_id: str,sendNonErptoAI: bool = False): initial_state: SQLState = { "question": user_question or "", @@ -2987,18 +816,16 @@ def _invoke_pipeline(user_question: str, chat_id: str, request_id: str,sendNonEr def _handle_non_erp_(non_erp_res,formatted_q,err,user_question: str,request_id:str, chat_id: str) -> Dict: - if not non_erp_res: if err: frappe.log_error(err, "ChangAI NON_ERP Error") save_logs(user_question=user_question, formatted_q="Not formatted as its NONERP",err=err, result=non_erp_res,type_="NonERP") - return { "Question": user_question, "Formatted-Question": formatted_q, "Bot": err if err else "⚠️ Could not get a response. Please try again.", } - + if not err and non_erp_res: try: publish_pipeline_update(request_id, "mapped to non-erp", "Mapped as NON-ERP") @@ -3007,35 +834,9 @@ def _handle_non_erp_(non_erp_res,formatted_q,err,user_question: str,request_id:s except Exception as e: frappe.log_error(f"Failed to save NON_ERP logs: {e}", "ChangAI Logs") save_logs(user_question=user_question, formatted_q="Not formatted as its NONERP",err=str(e), result=non_erp_res,type_="NonERP") - - return {"Question": user_question, "Formatted-Question": formatted_q, "Bot": non_erp_res} -def _get_sql_error_message(err: Any, val: Dict) -> str: - # if err: - # frappe.log_error(err, "ChangAI SQL Pipeline Error") - # return "⚠️ The model encountered an error generating your query. Please try the same Question again." - - error_text = (val.get("error") or "").strip() - - if not error_text: - return "⚠️ Could nprocess your request. Please try rephrasing." - - if "Empty SQL from LLM" in error_text: - return "⚠️ The model could not generate a SQL query for your question. Please try rephrasing." - - if "does not exist in schema" in error_text: - return f"⚠️ The model generated an invalid table reference. {error_text}" - - if "could not be resolved" in error_text: - return f"⚠️ The model generated an invalid field reference. {error_text}" - - if "parse" in error_text.lower() or "syntax" in error_text.lower() or "expected" in error_text.lower(): - return "⚠️ The model generated invalid SQL syntax. Please try rephrasing." - - return f"⚠️ The model generated an invalid query. {error_text}" - def _handle_sql_result( memory_status: Dict, request_id: str, @@ -3057,7 +858,6 @@ def _handle_sql_result( selected_tables = selected_tables or [] fields = fields or "" formatted_q = formatted_q or user_question - try: request_id = request_id or final.get("request_id") org_sql = final.get("sql") or sql @@ -3067,28 +867,21 @@ def _handle_sql_result( except Exception as e: # err = str(e) final["error"] = str(e) - publish_pipeline_update(request_id, "sql_executed", "Query executed") - entity_words = final.get("entity_words") or [] - except Exception as e: final["error"] = str(e) return {"ok": False, "error": f"SQL Execution Failed: {e}"} - context = (final.get("context") or final.get("selected_fields") or fields or "")[:800] contains_values = final.get("contains_values") or entity_debug.get("contains_values") or "" err = final.get("error") - formatted_result = format_data(user_question, sql_result) - publish_pipeline_update( request_id, "format_data_completed", "Completed Formatting Result", done=True ) - if not err: try: save_turn_2( @@ -3144,29 +937,11 @@ def _handle_sql_result( "EntityDebug": entity_debug if entity_debug.get("contains_values") else None, "Bot": formatted_result, } - +RETRY_PROMPT = read_asset("retry_sys_prompt.txt",base="prompts") +RETRY_USER_PROMPT = read_asset("retry_user_prompt.txt",base="prompts") def retry_sql(sql, error, formatted_q, sql_prompt): - retry_prompt = SQL_SYS_PROMPT + """ - -═══ RETRY MODE — STRICT FIX REQUIRED ═══ -STEP 1: Read the failed SQL and error message. -STEP 2: Find the broken field/table. -STEP 3: Check SCHEMA CONTEXT — does it exist? - YES → fix the syntax. - NO → remove it, find correct field from SCHEMA CONTEXT. -STEP 4: Verify every remaining field exists in SCHEMA CONTEXT. -STEP 5: Output fixed SQL. NEVER output the same broken SQL again.""" - - user_prompt = sql_prompt + f""" - -Failed SQL: {sql} -Error: {error} -User Question: {formatted_q} - -DO NOT repeat the same SQL. -DO NOT use the field mentioned in the error. -Find the correct field from SCHEMA CONTEXT and fix it.""" - + retry_prompt = SQL_SYS_PROMPT + RETRY_PROMPT + user_prompt = sql_prompt + RETRY_USER_PROMPT.format(sql=sql,error=error,formatted_q=formatted_q) try: rewritten = call_gemini(user_prompt, sys_prompt=retry_prompt) rewritten_json = json.loads(rewritten) @@ -3174,272 +949,18 @@ def retry_sql(sql, error, formatted_q, sql_prompt): retried_orm = clean_sql(rewritten_json.get("orm") or "") except Exception: return "", "", {"ok": False, "error": "Retry failed to parse response"} - if not retried_sql: return "", "", {"ok": False, "error": "Retry returned empty SQL"} - val_res = validate_sql_schema(retried_sql) return retried_sql, retried_orm, val_res - -def get_last_thread_message(chat_id: str): - data = frappe.get_all( - "ChangAI Chat History", - filters={"session_id": chat_id}, - fields=["content"], - order_by="creation asc" - ) - - for row in reversed(data): - try: - msg = json.loads(row["content"]) - # human_msg = msg[-2]["human"] - msg_type = msg[-2]["type"] - return msg_type - - except Exception: - pass - - return "" - - -THREAD_WORDS = [ - # English confirmation - "yes", "yep", "yeah", "yup", "yes please","list", - "of course", "sure", "surely", "absolutely", - "definitely", "certainly", "indeed", "correct", "ofcourse", - "right", "exactly", "precisely", - "ok", "okay", "fine", "alright", "go ahead", - "do it", "show me", "please", "go on", - "continue", "proceed", "why not", - "aye", "affirmative", "true", "agreed", - "hmm", "hm", "umm", "uh", "ah","give", - "interesting", "i see", "got it", "ok got it", - "and", "so", "then", "also", "but", - "what", "how", "when", "who", "where", "why", - "more", "less", "again", "another", "other", - "next", "previous", "back", "forward", - "noted", "understood", "makes sense", - "okay okay", "fine fine", "sure sure","show", - # Arabic confirmation - "نعم", "أجل", "بالتأكيد", "طبعاً", "حسناً", - "موافق", "صحيح", "بالضبط", "تماماً", "إي", - "ماشي", "تمام", "أوكي", "يلا", "استمر", - "كمّل", "واضح", "فاهم", "مفهوم", "اوك", - # Arabic neutral / continuation - "و", "ثم", "لكن", "أيضاً", "كذلك", - "ماذا", "كيف", "متى", "من", "أين", "لماذا", - "أكثر", "أقل", "مرة أخرى", "التالي", "السابق", - "حسناً حسناً", "تمام تمام", "مزيد", "غيره", - # Arabic rejection - "لا", "لأ", "لا شكراً", "إلغاء", "توقف", - "اتركه", "مش محتاج", "مو صح", "خطأ", -] - def is_thread_erp(q:str,chat_id:str): msg_type = get_last_thread_message(chat_id) - if msg_type == "erp" and is_erp_query(False,q, THREAD_WORDS,85): + if msg_type == "erp" and is_erp_query(False,q, THREAD_WORDS,90): return True else: return False -from rapidfuzz import fuzz -@frappe.whitelist() -def find_similar_log_question(new_question:str, threshold: int = 90): - logs = frappe.get_all( - "ChangAI Logs", - fields=["name", "user_question", "sql_generated","rewritten_question","fields","tables","error","entity","result"], - limit_page_length=500 - ) - - best_match = None - best_score = 0 - for log in logs: - score = fuzz.token_set_ratio(new_question, log.rewritten_question) - - if score > best_score: - best_score = score - best_match = log - - if best_score >= threshold: - return { - "matched": True, - "score": best_score, - "log_name": best_match.name, - "question": best_match.user_question, - "sql": best_match.sql_generated, - "rewritten_question":best_match.rewritten_question, - "fields":best_match.fields, - "tables":best_match.tables, - "entity_debug":best_match.entity, - "result":best_match.result, - "error":best_match.error - } - - return { - "matched": False, - "score": best_score - } - -def _error_response(memory_status, user_question, formatted_q, context, - selected_tables, fields, sql, validation, - entity_debug, tries, error, err): - return { - "Memory Status": memory_status, - "Question": user_question, - "Formatted_Question": formatted_q, - "Context": (context or "")[:800], - "Tables": selected_tables, - "Fields": fields, - "SQL": sql, - "Validation": validation, - "EntityDebug": entity_debug, - "Tries": tries, - "Error": error, - "Result": [], - "Bot": _get_sql_error_message(error, validation), - } - - -_WARMUP_COUNT=0 -def load_on_startup(): - global _WARMUP_COUNT,_EMBEDDER_INSTANCE, _VS_TABLE, _FULL_FIELDS_VS, _VS_MASTER, _FIELD_DOCS_CACHE, sym_spell, _GEMINI_CLIENT - _WARMUP_COUNT+=1 - frappe.log_error( - title=f"ChangAI Warmup called | PID {os.getpid()} | Count {_WARMUP_COUNT}", - message="load_on_startup triggered" - ) - - # If all are already loaded, skip - if all([ - _EMBEDDER_INSTANCE is not None, - _VS_TABLE is not None, - _FULL_FIELDS_VS is not None, - _VS_MASTER is not None, - _FIELD_DOCS_CACHE is not None, - sym_spell is not None, - _GEMINI_CLIENT is not None, - ]): - frappe.log_error( - title=f"ChangAI Warmup skipped | PID {os.getpid()}", - message="Already loaded in this worker" - ) - return - message=f"PID={os.getpid()} | module={__name__} | file={__file__} | loaded={_EMBEDDER_INSTANCE is not None} | id={id(_EMBEDDER_INSTANCE)}" - - try: - load_non_erp_data() - get_embedding_engine() - get_vs() - load_field_matrix() - gemini_client() - get_master_vs() - _init_keywords() - config = ChangAIConfig.get() - get_polly_client(config) - frappe.log_error( - title="ChangAI Warmup Completed", - message=frappe.get_traceback() # full stack trace - ) - except Exception as e: - frappe.log_error( - title="ChangAI Warmup Failed", - message=frappe.get_traceback() # full stack trace - ) - return message - - -def _init_keywords(): - global _KEYWORDS_SET, _KEYWORDS_LIST - if not _KEYWORDS_SET: - _KEYWORDS_SET = set(kw.lower() for kw in BUSINESS_KEYWORDS) - _KEYWORDS_LIST = list(_KEYWORDS_SET) - - # ✅ pre-warm cache — run every keyword through _word_is_erp at startup - for kw in _KEYWORDS_LIST: - _word_is_erp(kw) # result gets cached — first real request is instant - - - -def get_embedding_engine_test(): - global _EMBEDDER_INSTANCE - import time, os - - before_id = id(_EMBEDDER_INSTANCE) - before_loaded = _EMBEDDER_INSTANCE is not None - - if _EMBEDDER_INSTANCE is not None: - return { - "before_loaded": before_loaded, - "before_id": before_id, - "pid": os.getpid(), - "result": "returned_cached" - } - - t3 = time.time() - model_path = _get_model_path() - - _EMBEDDER_INSTANCE = HuggingFaceEmbeddings( - model_name=model_path, - model_kwargs={"device": "cpu", "trust_remote_code": True}, - encode_kwargs={"normalize_embeddings": True}, - ) - - return { - "before_loaded": before_loaded, - "before_id": before_id, - "after_loaded": _EMBEDDER_INSTANCE is not None, - "after_id": id(_EMBEDDER_INSTANCE), - "pid": os.getpid(), - "load_time": time.time() - t3, - "result": "loaded_now" - } - - -_NON_ERP_DATA = None -_NON_ERP_QUESTIONS = None -_NON_ERP_RESPONSE_MAP = None - - -def load_non_erp_data(): - global _NON_ERP_DATA, _NON_ERP_QUESTIONS, _NON_ERP_RESPONSE_MAP - - if _NON_ERP_DATA is not None: - return _NON_ERP_QUESTIONS, _NON_ERP_RESPONSE_MAP - try: - _NON_ERP_DATA = read_asset("non_erp_combined.processed.json") - except Exception as e: - frappe.log_error(f"Failed to load NON-ERP data: {e}", "ChangAI NON-ERP Data Load Error") - _NON_ERP_DATA = [] - - _NON_ERP_QUESTIONS = [] - _NON_ERP_RESPONSE_MAP = {} - - for item in _NON_ERP_DATA: - q = item.get("user_input") - if not q: - continue - - _NON_ERP_QUESTIONS.append(q) - _NON_ERP_RESPONSE_MAP[q] = item.get("response") - - return _NON_ERP_QUESTIONS, _NON_ERP_RESPONSE_MAP - - -def non_erp_response(non_erp_q: str) -> Optional[str]: - questions, response_map = load_non_erp_data() - result = process.extractOne( - non_erp_q, - questions, - scorer=fuzz.WRatio, - score_cutoff=65 - ) - if not result: - return {"data":"Hey Iam ChangAI from ERPGulf,iam here to help you with your queries..."} - matched_q = result[0] - return {"data": response_map.get(matched_q, "Hey Iam ChangAI from ERPGulf,iam here to help you with your queries...")} - - @frappe.whitelist(allow_guest=False) def run_text2sql_pipeline(user_question: str, chat_id: str, request_id: str, sendNonErptoAI: bool = False) -> Dict: err = "" @@ -3499,7 +1020,7 @@ def run_text2sql_pipeline(user_question: str, chat_id: str, request_id: str, sen return { "open_report": True, "report_name": final.get("report_name"), - "filters": final["filters"], + "filters": final.get("filters") or {}, "reports_filter_before_call": final.get("reports_filter_before_call"), "entity_raw": final.get("entity_raw"), "question_rewritten": formatted_q @@ -3518,15 +1039,14 @@ def run_text2sql_pipeline(user_question: str, chat_id: str, request_id: str, sen tables=None, fields=None, entity_debug=None, - type="NonERP" + type_="NonERP" ) publish_pipeline_update( - request_id, - "Stop follow-up detected", - "Stop follow-up detected", - data={"message": final.get("message")}, - done=True -) + request_id, + "Stop follow-up detected", + "Stop follow-up detected", + data={"message": final.get("message")}, + done=True) return { "Model returned SQL": None, "context": None, @@ -3541,7 +1061,7 @@ def run_text2sql_pipeline(user_question: str, chat_id: str, request_id: str, sen "Entity Values present ?": None, "Validation": None, "Error": err, - "result": fNone, + "result": None, "EntityDebug": None, "Bot": final.get("message"), } @@ -3555,27 +1075,13 @@ def run_text2sql_pipeline(user_question: str, chat_id: str, request_id: str, sen except Exception as e: frappe.log_error(e, "Error occurred while fetching final values") err = final.get("error") - - # # # guard empty sql - # # # if not sql: - # # # return _error_response(memory_status, user_question, formatted_q, context, - # # # selected_tables, fields, sql, - # # # {"ok": False, "error": "SQL is empty"}, - # # # entity_debug, 0, "SQL not valid or missing", err) - # retried_sql1, retried_orm1, retry1_val_res = retry_sql(retried_sql, retry_val_res.get("error"), formatted_q, sql_prompt) - # if retry1_val_res.get("ok"): - # return _handle_sql_result(memory_status,request_id, sql_prompt, final, retried_sql1, retried_orm1, - # formatted_q, fields, selected_tables, retry1_val_res, - # entity_debug, user_question, chat_id) res = validate_sql_schema(sql) publish_pipeline_update(request_id, "sql_validated", _("SQL validation Completed")) - # valid on first try if res.get("ok") and sql.upper().startswith("SELECT"): return _handle_sql_result(memory_status,request_id, sql_prompt, final, sql, orm, formatted_q, fields, selected_tables, res, entity_debug, user_question, chat_id) - # retry 2 retried_sql2, retried_orm2, retry2_val_res = retry_sql(sql, res.get("error"), formatted_q, sql_prompt) if retry2_val_res.get("ok"): @@ -3595,34 +1101,3 @@ def run_text2sql_pipeline(user_question: str, chat_id: str, request_id: str, sen return _error_response(memory_status, user_question, formatted_q, context, selected_tables, fields, retried_sql2 or sql, retry2_val_res, entity_debug, 2, final_error, err) - -from frappe.desk.query_report import get_script -def get_report_filter_fields(report_name: str): - try: - script = get_script(report_name).get("script") or "" - except Exception: - return [] - - fieldnames = re.findall( - r'fieldname\s*:\s*["\']([^"\']+)["\']', - script - ) - - return "|".join(dict.fromkeys(fieldnames)) - - -def match_report_intent(report_intent: str): - choices = list(REPORT_INTENT_MAP.keys()) - match = process.extractOne( - report_intent.lower(), - choices, - scorer=fuzz.WRatio, - score_cutoff=75 - ) - if not match: - return "" - - matched_intent = match[0] - return REPORT_INTENT_MAP[matched_intent] - - diff --git a/changai/changai/api/v2/tts.py b/changai/changai/api/v2/tts.py new file mode 100644 index 0000000..db3e20b --- /dev/null +++ b/changai/changai/api/v2/tts.py @@ -0,0 +1,93 @@ +import re +import base64 +import boto3 +import frappe +from typing import Any, Dict, Optional +from changai.changai.api.v2.schema_utils import ChangAIConfig + +_POLLY_CLIENT = None + + +def get_polly_client(config): + global _POLLY_CLIENT + + if _POLLY_CLIENT is None: + _POLLY_CLIENT = boto3.client( + "polly", + aws_access_key_id=(config.get("aws_access_key_id") or "").strip(), + aws_secret_access_key=(config.get("aws_secret_access_key") or "").strip(), + region_name=(config.get("aws_region") or "us-east-1"), + ) + return _POLLY_CLIENT + +def build_ssml(text: str) -> str: + parts = [] + current = [] + current_lang = None + + for token in text.split(): + lang = "ar-AE" if re.search(r'[\u0600-\u06FF]', token) else "en-US" + + if current_lang is None: + current_lang = lang + + if lang != current_lang: + parts.append( + f'{" ".join(current)}' + ) + current = [token] + current_lang = lang + else: + current.append(token) + + if current: + parts.append( + f'{" ".join(current)}' + ) + + return "" + " ".join(parts) + "" +@frappe.whitelist(allow_guest=False) +def synthesize_tts(text: str, voice_id: Optional[str] = None) -> Dict[str, Any]: + config = ChangAIConfig.get() + if not bool(config.get("enable_voice_chat")): + return {"ok": False, "error": "Voice chat is disabled in settings.", "provider": "browser"} + aws_access_key_id = (config.get("aws_access_key_id") or "").strip() + aws_secret_access_key = (config.get("aws_secret_access_key") or "").strip() + if not aws_access_key_id or not aws_secret_access_key: + return {"ok": False, "error": "AWS Polly credentials are missing.", "provider": "browser"} + cleaned_text = re.sub(r"<[^>]*>", " ", text or "") + cleaned_text = re.sub(r"\s+", " ", cleaned_text).strip() + if not cleaned_text: + return {"ok": False, "error": "Text is empty.", "provider": "browser"} + + if len(cleaned_text) > 2500: + cleaned_text = cleaned_text[:2500] + + try: + polly_client = get_polly_client(config) + voice = (voice_id or config.get("polly_voice_id") or "Zayd").strip() or "Zayd" + ssml_text = build_ssml(cleaned_text) + response = polly_client.synthesize_speech( + Text=ssml_text, + OutputFormat="mp3", + VoiceId="Zayd", + Engine="neural", + TextType="ssml", +) + stream = response.get("AudioStream") + if stream is None: + return {"ok": False, "error": "Polly did not return audio stream.", "provider": "browser"} + + audio_bytes = stream.read() + audio_base64 = base64.b64encode(audio_bytes).decode("utf-8") + return { + "ok": True, + "provider": "polly", + "mime_type": "audio/mpeg", + "audio_base64": audio_base64, + "voice_id": voice, + } + except Exception as e: + frappe.log_error(frappe.get_traceback(), "ChangAI Polly TTS Error") + return {"ok": False, "error": str(e), "provider": "browser"} + diff --git a/changai/changai/doctype/changai_settings/changai_settings.js b/changai/changai/doctype/changai_settings/changai_settings.js index 7088c74..82c086b 100644 --- a/changai/changai/doctype/changai_settings/changai_settings.js +++ b/changai/changai/doctype/changai_settings/changai_settings.js @@ -170,7 +170,7 @@ frappe.ui.form.on("ChangAI Settings", { applyTooltips(frm, fieldsWithTooltips); frm.add_custom_button(__('Download Embedding Model'), () => { frappe.call({ - method: "changai.changai.api.v2.text2sql_pipeline_v2.download_model", + method: "changai.changai.api.v2.retrieve.download_model", freeze: true, freeze_message: "Downloading Model...", callback(r) { diff --git a/changai/changai/prompts/create_entity_prompt.txt b/changai/changai/prompts/create_entity_prompt.txt new file mode 100644 index 0000000..bf155ab --- /dev/null +++ b/changai/changai/prompts/create_entity_prompt.txt @@ -0,0 +1,18 @@ +You are selecting the correct ERPNext DocType for entity creation. + +User query: +{question} + +Candidate DocTypes: +{candidate_doctypes} + +Rules: +- Choose only one DocType from the candidate list. +- Use only the given candidate DocTypes. +- Do not add the "tab" prefix. +- Return only valid JSON. +- Do not return explanations or extra text. +- If no suitable DocType is found, return {{"doctype": ""}} + +Output format: +{{"doctype": "chosen_doctype_name"}} \ No newline at end of file diff --git a/changai/changai/prompts/report_prompt.txt b/changai/changai/prompts/report_prompt.txt new file mode 100644 index 0000000..a0f464d --- /dev/null +++ b/changai/changai/prompts/report_prompt.txt @@ -0,0 +1,53 @@ +Given the user query: +{question} + +Detected DocType: +{doctype} + +Available Report and Filter Fields: +{available_reports} + +Entity Cards: +{entity_cards} + +Carefully identify the report intent from the user's question and match only that intent against the available report names. + +Report selection MUST be based on the user's requested report type first. +Entity type, party names, customer names, supplier names, item names, or filter values must be used only for filters, not for report_name selection. + +TASK: +Select exactly ONE report from the Available Reports and Filter Fields. + +Rules: +- report_name MUST be selected only from the provided report list. +- Never invent a report name. +- Never return an empty report_name. +- Use ONLY filters that exist in the selected report. +- Never invent filter names. +- Never invent filter values. +- Use Entity Card values whenever applicable. +- Apply only relevant filters supported by the selected report. +- Prefer party_type + party over name-based filters whenever both are available. +- Always output dates in YYYY-MM-DD format. +- Return only valid JSON. + +Party Filtering Rules: +If detected DocType is Customer, Supplier, Employee, Shareholder, Student, Member, or any party-type entity +AND selected report contains both party_type and party filters, +THEN: +- party_type = detected DocType +- party = entity value from Entity Card + +Examples: +User: "show account statement for nova supplier" +Report: General Ledger +Filters: +{{"party_type": "Supplier", "party": "nova supplier"}} + +Return ONLY valid JSON: +{{ + "report_name": "", + "filters": {{ + "": "" + }} +}} \ No newline at end of file diff --git a/changai/changai/prompts/retry_sys_prompt.txt b/changai/changai/prompts/retry_sys_prompt.txt new file mode 100644 index 0000000..bc2432c --- /dev/null +++ b/changai/changai/prompts/retry_sys_prompt.txt @@ -0,0 +1,8 @@ +═══ RETRY MODE — STRICT FIX REQUIRED ═══ +STEP 1: Read the failed SQL and error message. +STEP 2: Find the broken field/table. +STEP 3: Check SCHEMA CONTEXT — does it exist? + YES → fix the syntax. + NO → remove it, find correct field from SCHEMA CONTEXT. +STEP 4: Verify every remaining field exists in SCHEMA CONTEXT. +STEP 5: Output fixed SQL. NEVER output the same broken SQL again. \ No newline at end of file diff --git a/changai/changai/prompts/retry_user_prompt.txt b/changai/changai/prompts/retry_user_prompt.txt new file mode 100644 index 0000000..fde39d1 --- /dev/null +++ b/changai/changai/prompts/retry_user_prompt.txt @@ -0,0 +1,7 @@ +Failed SQL: {sql} +Error: {error} +User Question: {formatted_q} + +DO NOT repeat the same SQL. +DO NOT use the field mentioned in the error. +Find the correct field from SCHEMA CONTEXT and fix it. \ No newline at end of file diff --git a/changai/changai/prompts/sql_system_prompt.txt b/changai/changai/prompts/sql_system_prompt.txt index 03359a7..1753b5c 100644 --- a/changai/changai/prompts/sql_system_prompt.txt +++ b/changai/changai/prompts/sql_system_prompt.txt @@ -45,22 +45,31 @@ If a matching ENTITY_CARD is found for a user-mentioned entity, the SQL WHERE cl - the ENTITY_CARD filter_field - the ENTITY_CARD filter_value -═══ DOCSTATUS LAW ═══ -- docstatus ONLY exists on submittable transaction doctypes: - Sales Invoice, Sales Order, Purchase Order, Purchase Invoice, - Payment Entry, Journal Entry, Stock Entry, Delivery Note, - Purchase Receipt, Work Order, Timesheet, Expense Claim. -- docstatus NEVER exists on master doctypes: - Customer, Supplier, Item, Employee, Warehouse, Territory, - Address, Contact, User, Item Group, Customer Group. -- NEVER add docstatus to a master doctype query under any circumstance. -- Values: 0 = Draft | 1 = Submitted | 2 = Cancelled -- Any transactional document that goes through a Draft → Submit → Cancel cycle has a docstatus field. -- docstatus = 0 → ONLY when user explicitly says "draft" -- docstatus = 1 → ONLY when user explicitly says "submitted" -- docstatus = 2 → ONLY when user explicitly says "cancelled" -- NEVER use `status` field to represent Draft/Submitted/Cancelled states. docstatus has absolute priority. +═══ DOCSTATUS LAW — STRICT ═══ +docstatus is NOT a general validity filter. +Use docstatus ONLY when BOTH conditions are true: +1. The table is a known submittable transaction doctype. +2. The user explicitly asks for Draft, Submitted, Cancelled, posted, valid transaction, or confirmed transaction records. +Allowed transaction doctypes for docstatus: +Sales Invoice, Sales Order, Purchase Order, Purchase Invoice, Payment Entry, +Journal Entry, Stock Entry, Delivery Note, Purchase Receipt, Work Order, +Timesheet, Expense Claim. +Never use docstatus on master/setup doctypes: +Customer, Supplier, Item, Employee, Warehouse, Territory, Address, Contact, +User, Item Group, Customer Group, Company, Country, Currency, UOM, +Cost Center, Department, Project, Lead, Opportunity. + +docstatus values: +- draft → docstatus = 0 +- submitted / posted / confirmed / valid transaction → docstatus = 1 +- cancelled → docstatus = 2 +If the user does not mention draft/submitted/cancelled/posted/confirmed, do NOT add docstatus. +For list/count/top/grouping questions on master data, NEVER add docstatus. +- `status` and `docstatus` are NOT interchangeable. +- `docstatus` is ONLY for submittable transaction doctypes, never for master/setup doctypes. +- For Draft, Submitted, and Cancelled transaction records, ALWAYS use `docstatus`. +- NEVER use `status` as a replacement for `docstatus`. ═══ MARIADB COMPATIBILITY (ZERO TOLERANCE) ═══ FORBIDDEN — NEVER USE UNDER ANY CIRCUMSTANCE: STRFTIME, DATE_TRUNC, ::, ILIKE, TO_CHAR, NOW()::, EXTRACT, INTERVAL 'x' @@ -90,7 +99,6 @@ If you are about to write a forbidden token → STOP → rewrite using MariaDB e - Match the closest option to the user's intent. - If multiple options match, use IN (...). - pending invoice → outstanding_amount > 0 → unpaid invoice → overdue invoice. -- Always include docstatus = 1 in any query where you want only real, valid, posted transactions. ═══ SYNTAX LAW ═══ - Multiple values on same field → always IN (...), never chained OR. diff --git a/changai/changai/prompts/sql_user_prompt.txt b/changai/changai/prompts/sql_user_prompt.txt index 07666b2..93255e9 100644 --- a/changai/changai/prompts/sql_user_prompt.txt +++ b/changai/changai/prompts/sql_user_prompt.txt @@ -6,8 +6,10 @@ field_name:field_value When generating SQL for entity retrieval, you MUST use the exact field name and exact field value provided in the ENTITY_CARDS context for WHERE conditions. Do not use the raw user text or replace the field name with another field like `name`. SCHEMA CONTEXT: {context} -GENERIC FIELDS (available on ALL transaction doctypes): +GENERIC FIELDS are only available if the table type is correctly identified. +Transaction doctypes may have: name, creation, modified, owner, company, docstatus, naming_series, amended_from. -GENERIC FIELDS (available on ALL master doctypes): -name, creation, modified, owner, disabled, naming_series +Master/setup doctypes may have: +name, creation, modified, owner, disabled, naming_series. +Never transfer generic fields from transaction doctypes to master/setup doctypes. REMINDER: Use only fields from SCHEMA CONTEXT.and never ever use any field or any table that is not in the given schema.that is important.beware of using non existing fields. diff --git a/changai/hooks.py b/changai/hooks.py index 01d6ad2..b178468 100644 --- a/changai/hooks.py +++ b/changai/hooks.py @@ -170,21 +170,21 @@ # --------------- # Hook on document methods and events -# doc_events = { -# "Employee": { -# "on_update": "changai.changai.api.v2.create_qr.create_qr_code", +doc_events = { +"Employee": { + "on_update": "changai.changai.api.v2.create_qr.create_qr_code", -# }, + } # # "*": { # # "on_update": "method", # # "on_cancel": "method", # # "on_trash": "method" # # } -# } +} # also runs after bench migrate on_session_creation = [ - "changai.changai.api.v2.text2sql_pipeline_v2.load_on_startup", + "changai.changai.api.v2.retrieve.load_on_startup", "changai.changai.api.v2.schema_utils.reload_mapping_schema_cache" ] diff --git a/changai/public/dist/changai-chatbot.js b/changai/public/dist/changai-chatbot.js index 60ea2d3..7537fb6 100644 --- a/changai/public/dist/changai-chatbot.js +++ b/changai/public/dist/changai-chatbot.js @@ -1,69 +1,181 @@ -var vd=Object.defineProperty;var _d=(Pt,oe,mt)=>oe in Pt?vd(Pt,oe,{enumerable:!0,configurable:!0,writable:!0,value:mt}):Pt[oe]=mt;var _e=(Pt,oe,mt)=>_d(Pt,typeof oe!="symbol"?oe+"":oe,mt);(function(){"use strict";var Fs;function Pt(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const oe={},mt=[],Jt=()=>{},Dl=()=>!1,ts=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Hs=e=>e.startsWith("onUpdate:"),bt=Object.assign,Jr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Nl=Object.prototype.hasOwnProperty,me=(e,t)=>Nl.call(e,t),Q=Array.isArray,hn=e=>ns(e)==="[object Map]",ei=e=>ns(e)==="[object Set]",be=e=>typeof e=="function",Pe=e=>typeof e=="string",Ut=e=>typeof e=="symbol",Re=e=>e!==null&&typeof e=="object",ti=e=>(Re(e)||be(e))&&be(e.then)&&be(e.catch),ni=Object.prototype.toString,ns=e=>ni.call(e),Fl=e=>ns(e).slice(8,-1),si=e=>ns(e)==="[object Object]",zs=e=>Pe(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Pn=Pt(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ss=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Bl=/-(\w)/g,jt=ss(e=>e.replace(Bl,(t,n)=>n?n.toUpperCase():"")),Hl=/\B([A-Z])/g,en=ss(e=>e.replace(Hl,"-$1").toLowerCase()),ri=ss(e=>e.charAt(0).toUpperCase()+e.slice(1)),Us=ss(e=>e?`on${ri(e)}`:""),Vt=(e,t)=>!Object.is(e,t),rs=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Vs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},zl=e=>{const t=Pe(e)?Number(e):NaN;return isNaN(t)?e:t};let ii;const is=()=>ii||(ii=typeof globalThis!="undefined"?globalThis:typeof self!="undefined"?self:typeof window!="undefined"?window:typeof global!="undefined"?global:{});function qs(e){if(Q(e)){const t={};for(let n=0;n{if(n){const s=n.split(jl);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function we(e){let t="";if(Pe(e))t=e;else if(Q(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Je=e=>Pe(e)?e:e==null?"":Q(e)||Re(e)&&(e.toString===ni||!be(e.toString))?li(e)?Je(e.value):JSON.stringify(e,ai,2):String(e),ai=(e,t)=>li(t)?ai(e,t.value):hn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Ws(s,i)+" =>"]=r,n),{})}:ei(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Ws(n))}:Ut(t)?Ws(t):Re(t)&&!Q(t)&&!si(t)?String(t):t,Ws=(e,t="")=>{var n;return Ut(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let et;class Gl{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=et,!t&&et&&(this.index=(et.scopes||(et.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(et=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Mn){let t=Mn;for(Mn=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;In;){let t=In;for(In=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function pi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function di(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Xs(s),Yl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Zs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(hi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function hi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===On)||(e.globalVersion=On,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Zs(e))))return;e.flags|=2;const t=e.dep,n=Te,s=xt;Te=e,xt=!0;try{pi(e);const r=e.fn(e._value);(t.version===0||Vt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{Te=n,xt=s,di(e),e.flags&=-3}}function Xs(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Xs(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Yl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let xt=!0;const gi=[];function It(){gi.push(xt),xt=!1}function Mt(){const e=gi.pop();xt=e===void 0?!0:e}function mi(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Te;Te=void 0;try{t()}finally{Te=n}}}let On=0;class Zl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Qs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!Te||!xt||Te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Te)n=this.activeLink=new Zl(Te,this),Te.deps?(n.prevDep=Te.depsTail,Te.depsTail.nextDep=n,Te.depsTail=n):Te.deps=Te.depsTail=n,bi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=Te.depsTail,n.nextDep=void 0,Te.depsTail.nextDep=n,Te.depsTail=n,Te.deps===n&&(Te.deps=s)}return n}trigger(t){this.version++,On++,this.notify(t)}notify(t){Ks();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ys()}}}function bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)bi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Js=new WeakMap,tn=Symbol(""),er=Symbol(""),Ln=Symbol("");function je(e,t,n){if(xt&&Te){let s=Js.get(e);s||Js.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Qs),r.map=s,r.key=n),r.track()}}function Ot(e,t,n,s,r,i){const o=Js.get(e);if(!o){On++;return}const a=l=>{l&&l.trigger()};if(Ks(),t==="clear")o.forEach(a);else{const l=Q(e),f=l&&zs(n);if(l&&n==="length"){const u=Number(s);o.forEach((d,g)=>{(g==="length"||g===Ln||!Ut(g)&&g>=u)&&a(d)})}else switch((n!==void 0||o.has(void 0))&&a(o.get(n)),f&&a(o.get(Ln)),t){case"add":l?f&&a(o.get("length")):(a(o.get(tn)),hn(e)&&a(o.get(er)));break;case"delete":l||(a(o.get(tn)),hn(e)&&a(o.get(er)));break;case"set":hn(e)&&a(o.get(tn));break}}Ys()}function gn(e){const t=ue(e);return t===e?t:(je(t,"iterate",Ln),ut(e)?t:t.map(Be))}function os(e){return je(e=ue(e),"iterate",Ln),e}const Xl={__proto__:null,[Symbol.iterator](){return tr(this,Symbol.iterator,Be)},concat(...e){return gn(this).concat(...e.map(t=>Q(t)?gn(t):t))},entries(){return tr(this,"entries",e=>(e[1]=Be(e[1]),e))},every(e,t){return Lt(this,"every",e,t,void 0,arguments)},filter(e,t){return Lt(this,"filter",e,t,n=>n.map(Be),arguments)},find(e,t){return Lt(this,"find",e,t,Be,arguments)},findIndex(e,t){return Lt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Lt(this,"findLast",e,t,Be,arguments)},findLastIndex(e,t){return Lt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Lt(this,"forEach",e,t,void 0,arguments)},includes(...e){return nr(this,"includes",e)},indexOf(...e){return nr(this,"indexOf",e)},join(e){return gn(this).join(e)},lastIndexOf(...e){return nr(this,"lastIndexOf",e)},map(e,t){return Lt(this,"map",e,t,void 0,arguments)},pop(){return $n(this,"pop")},push(...e){return $n(this,"push",e)},reduce(e,...t){return xi(this,"reduce",e,t)},reduceRight(e,...t){return xi(this,"reduceRight",e,t)},shift(){return $n(this,"shift")},some(e,t){return Lt(this,"some",e,t,void 0,arguments)},splice(...e){return $n(this,"splice",e)},toReversed(){return gn(this).toReversed()},toSorted(e){return gn(this).toSorted(e)},toSpliced(...e){return gn(this).toSpliced(...e)},unshift(...e){return $n(this,"unshift",e)},values(){return tr(this,"values",Be)}};function tr(e,t,n){const s=os(e),r=s[t]();return s!==e&&!ut(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const Ql=Array.prototype;function Lt(e,t,n,s,r,i){const o=os(e),a=o!==e&&!ut(e),l=o[t];if(l!==Ql[t]){const d=l.apply(e,i);return a?Be(d):d}let f=n;o!==e&&(a?f=function(d,g){return n.call(this,Be(d),g,e)}:n.length>2&&(f=function(d,g){return n.call(this,d,g,e)}));const u=l.call(o,f,s);return a&&r?r(u):u}function xi(e,t,n,s){const r=os(e);let i=n;return r!==e&&(ut(e)?n.length>3&&(i=function(o,a,l){return n.call(this,o,a,l,e)}):i=function(o,a,l){return n.call(this,o,Be(a),l,e)}),r[t](i,...s)}function nr(e,t,n){const s=ue(e);je(s,"iterate",Ln);const r=s[t](...n);return(r===-1||r===!1)&&rr(n[0])?(n[0]=ue(n[0]),s[t](...n)):r}function $n(e,t,n=[]){It(),Ks();const s=ue(e)[t].apply(e,n);return Ys(),Mt(),s}const Jl=Pt("__proto__,__v_isRef,__isVue"),yi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ut));function ea(e){Ut(e)||(e=String(e));const t=ue(this);return je(t,"has",e),t.hasOwnProperty(e)}class wi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Ei:Si:i?ki:Ti).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=Q(t);if(!r){let l;if(o&&(l=Xl[n]))return l;if(n==="hasOwnProperty")return ea}const a=Reflect.get(t,n,Ve(t)?t:s);return(Ut(n)?yi.has(n):Jl(n))||(r||je(t,"get",n),i)?a:Ve(a)?o&&zs(n)?a:a.value:Re(a)?r?Ai(a):cs(a):a}}class vi extends wi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const l=qt(i);if(!ut(s)&&!qt(s)&&(i=ue(i),s=ue(s)),!Q(t)&&Ve(i)&&!Ve(s))return l?!1:(i.value=s,!0)}const o=Q(t)&&zs(n)?Number(n)e,ls=e=>Reflect.getPrototypeOf(e);function ia(e,t,n){return function(...s){const r=this.__v_raw,i=ue(r),o=hn(i),a=e==="entries"||e===Symbol.iterator&&o,l=e==="keys"&&o,f=r[e](...s),u=n?sr:t?ps:Be;return!t&&je(i,"iterate",l?er:tn),{next(){const{value:d,done:g}=f.next();return g?{value:d,done:g}:{value:a?[u(d[0]),u(d[1])]:u(d),done:g}},[Symbol.iterator](){return this}}}}function as(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function oa(e,t){const n={get(r){const i=this.__v_raw,o=ue(i),a=ue(r);e||(Vt(r,a)&&je(o,"get",r),je(o,"get",a));const{has:l}=ls(o),f=t?sr:e?ps:Be;if(l.call(o,r))return f(i.get(r));if(l.call(o,a))return f(i.get(a));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&je(ue(r),"iterate",tn),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=ue(i),a=ue(r);return e||(Vt(r,a)&&je(o,"has",r),je(o,"has",a)),r===a?i.has(r):i.has(r)||i.has(a)},forEach(r,i){const o=this,a=o.__v_raw,l=ue(a),f=t?sr:e?ps:Be;return!e&&je(l,"iterate",tn),a.forEach((u,d)=>r.call(i,f(u),f(d),o))}};return bt(n,e?{add:as("add"),set:as("set"),delete:as("delete"),clear:as("clear")}:{add(r){!t&&!ut(r)&&!qt(r)&&(r=ue(r));const i=ue(this);return ls(i).has.call(i,r)||(i.add(r),Ot(i,"add",r,r)),this},set(r,i){!t&&!ut(i)&&!qt(i)&&(i=ue(i));const o=ue(this),{has:a,get:l}=ls(o);let f=a.call(o,r);f||(r=ue(r),f=a.call(o,r));const u=l.call(o,r);return o.set(r,i),f?Vt(i,u)&&Ot(o,"set",r,i):Ot(o,"add",r,i),this},delete(r){const i=ue(this),{has:o,get:a}=ls(i);let l=o.call(i,r);l||(r=ue(r),l=o.call(i,r)),a&&a.call(i,r);const f=i.delete(r);return l&&Ot(i,"delete",r,void 0),f},clear(){const r=ue(this),i=r.size!==0,o=r.clear();return i&&Ot(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=ia(r,e,t)}),n}function us(e,t){const n=oa(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(me(n,r)&&r in s?n:s,r,i)}const la={get:us(!1,!1)},aa={get:us(!1,!0)},ua={get:us(!0,!1)},ca={get:us(!0,!0)},Ti=new WeakMap,ki=new WeakMap,Si=new WeakMap,Ei=new WeakMap;function fa(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pa(e){return e.__v_skip||!Object.isExtensible(e)?0:fa(Fl(e))}function cs(e){return qt(e)?e:fs(e,!1,ta,la,Ti)}function da(e){return fs(e,!1,sa,aa,ki)}function Ai(e){return fs(e,!0,na,ua,Si)}function kd(e){return fs(e,!0,ra,ca,Ei)}function fs(e,t,n,s,r){if(!Re(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=pa(e);if(i===0)return e;const o=r.get(e);if(o)return o;const a=new Proxy(e,i===2?s:n);return r.set(e,a),a}function mn(e){return qt(e)?mn(e.__v_raw):!!(e&&e.__v_isReactive)}function qt(e){return!!(e&&e.__v_isReadonly)}function ut(e){return!!(e&&e.__v_isShallow)}function rr(e){return e?!!e.__v_raw:!1}function ue(e){const t=e&&e.__v_raw;return t?ue(t):e}function ha(e){return!me(e,"__v_skip")&&Object.isExtensible(e)&&js(e,"__v_skip",!0),e}const Be=e=>Re(e)?cs(e):e,ps=e=>Re(e)?Ai(e):e;function Ve(e){return e?e.__v_isRef===!0:!1}function J(e){return ga(e,!1)}function ga(e,t){return Ve(e)?e:new ma(e,t)}class ma{constructor(t,n){this.dep=new Qs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:ue(t),this._value=n?t:Be(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||ut(t)||qt(t);t=s?t:ue(t),Vt(t,n)&&(this._rawValue=t,this._value=s?t:Be(t),this.dep.trigger())}}function ba(e){return Ve(e)?e.value:e}const xa={get:(e,t,n)=>t==="__v_raw"?e:ba(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return Ve(r)&&!Ve(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Ri(e){return mn(e)?e:new Proxy(e,xa)}class ya{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Qs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=On-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&Te!==this)return fi(this,!0),!0}get value(){const t=this.dep.track();return hi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function wa(e,t,n=!1){let s,r;return be(e)?s=e:(s=e.get,r=e.set),new ya(s,r,n)}const ds={},hs=new WeakMap;let nn;function va(e,t=!1,n=nn){if(n){let s=hs.get(n);s||hs.set(n,s=[]),s.push(e)}}function _a(e,t,n=oe){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:a,call:l}=n,f=$=>r?$:ut($)||r===!1||r===0?$t($,1):$t($);let u,d,g,y,E=!1,x=!1;if(Ve(e)?(d=()=>e.value,E=ut(e)):mn(e)?(d=()=>f(e),E=!0):Q(e)?(x=!0,E=e.some($=>mn($)||ut($)),d=()=>e.map($=>{if(Ve($))return $.value;if(mn($))return f($);if(be($))return l?l($,2):$()})):be(e)?t?d=l?()=>l(e,2):e:d=()=>{if(g){It();try{g()}finally{Mt()}}const $=nn;nn=u;try{return l?l(e,3,[y]):e(y)}finally{nn=$}}:d=Jt,t&&r){const $=d,z=r===!0?1/0:r;d=()=>$t($(),z)}const M=Kl(),m=()=>{u.stop(),M&&M.active&&Jr(M.effects,u)};if(i&&t){const $=t;t=(...z)=>{$(...z),m()}}let H=x?new Array(e.length).fill(ds):ds;const Y=$=>{if(!(!(u.flags&1)||!u.dirty&&!$))if(t){const z=u.run();if(r||E||(x?z.some((O,P)=>Vt(O,H[P])):Vt(z,H))){g&&g();const O=nn;nn=u;try{const P=[z,H===ds?void 0:x&&H[0]===ds?[]:H,y];H=z,l?l(t,3,P):t(...P)}finally{nn=O}}}else u.run()};return a&&a(Y),u=new ui(d),u.scheduler=o?()=>o(Y,!1):Y,y=$=>va($,!1,u),g=u.onStop=()=>{const $=hs.get(u);if($){if(l)l($,4);else for(const z of $)z();hs.delete(u)}},t?s?Y(!0):H=u.run():o?o(Y.bind(null,!0),!0):u.run(),m.pause=u.pause.bind(u),m.resume=u.resume.bind(u),m.stop=m,m}function $t(e,t=1/0,n){if(t<=0||!Re(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Ve(e))$t(e.value,t,n);else if(Q(e))for(let s=0;s{$t(s,t,n)});else if(si(e)){for(const s in e)$t(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&$t(e[s],t,n)}return e}const Dn=[];let ir=!1;function Sd(e,...t){if(ir)return;ir=!0,It();const n=Dn.length?Dn[Dn.length-1].component:null,s=n&&n.appContext.config.warnHandler,r=Ta();if(s)bn(s,n,11,[e+t.map(i=>{var o,a;return(a=(o=i.toString)==null?void 0:o.call(i))!=null?a:JSON.stringify(i)}).join(""),n&&n.proxy,r.map(({vnode:i})=>`at <${go(n,i.type)}>`).join(` -`),r]);else{const i=[`[Vue warn]: ${e}`,...t];r.length&&i.push(` -`,...ka(r))}Mt(),ir=!1}function Ta(){let e=Dn[Dn.length-1];if(!e)return[];const t=[];for(;e;){const n=t[0];n&&n.vnode===e?n.recurseCount++:t.push({vnode:e,recurseCount:0});const s=e.component&&e.component.parent;e=s&&s.vnode}return t}function ka(e){const t=[];return e.forEach((n,s)=>{t.push(...s===0?[]:[` -`],...Sa(n))}),t}function Sa({vnode:e,recurseCount:t}){const n=t>0?`... (${t} recursive calls)`:"",s=e.component?e.component.parent==null:!1,r=` at <${go(e.component,e.type,s)}`,i=">"+n;return e.props?[r,...Ea(e.props),i]:[r+i]}function Ea(e){const t=[],n=Object.keys(e);return n.slice(0,3).forEach(s=>{t.push(...Ci(s,e[s]))}),n.length>3&&t.push(" ..."),t}function Ci(e,t,n){return Pe(t)?(t=JSON.stringify(t),n?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?n?t:[`${e}=${t}`]:Ve(t)?(t=Ci(e,ue(t.value),!0),n?t:[`${e}=Ref<`,t,">"]):be(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=ue(t),n?t:[`${e}=`,t])}function bn(e,t,n,s){try{return s?e(...s):e()}catch(r){gs(r,t,n)}}function Tt(e,t,n,s){if(be(e)){const r=bn(e,t,n,s);return r&&ti(r)&&r.catch(i=>{gs(i,t,n)}),r}if(Q(e)){const r=[];for(let i=0;i>>1,r=Ke[s],i=Nn(r);i=Nn(n)?Ke.push(e):Ke.splice(Ra(t),0,e),e.flags|=1,Ii()}}function Ii(){ms||(ms=Pi.then(Li))}function Ca(e){Q(e)?xn.push(...e):Wt&&e.id===-1?Wt.splice(yn+1,0,e):e.flags&1||(xn.push(e),e.flags|=1),Ii()}function Mi(e,t,n=kt+1){for(;nNn(n)-Nn(s));if(xn.length=0,Wt){Wt.push(...t);return}for(Wt=t,yn=0;yne.id==null?e.flags&2?-1:1/0:e.id;function Li(e){try{for(kt=0;kt{s._d&&oo(-1);const i=bs(t);let o;try{o=e(...r)}finally{bs(i),s._d&&oo(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Pa(e,t){if(ct===null)return e;const n=As(ct),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Gt=Symbol("_leaveCb"),xs=Symbol("_enterCb");function Ma(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return zn(()=>{e.isMounted=!0}),ys(()=>{e.isUnmounting=!0}),e}const ft=[Function,Array],Fi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ft,onEnter:ft,onAfterEnter:ft,onEnterCancelled:ft,onBeforeLeave:ft,onLeave:ft,onAfterLeave:ft,onLeaveCancelled:ft,onBeforeAppear:ft,onAppear:ft,onAfterAppear:ft,onAppearCancelled:ft},Bi=e=>{const t=e.subTree;return t.component?Bi(t.component):t},Oa={name:"BaseTransition",props:Fi,setup(e,{slots:t}){const n=uo(),s=Ma();return()=>{const r=t.default&&ji(t.default(),!0);if(!r||!r.length)return;const i=Hi(r),o=ue(e),{mode:a}=o;if(s.isLeaving)return ar(i);const l=Ui(i);if(!l)return ar(i);let f=lr(l,o,s,n,d=>f=d);l.type!==Ye&&Fn(l,f);let u=n.subTree&&Ui(n.subTree);if(u&&u.type!==Ye&&!ln(l,u)&&Bi(n).type!==Ye){let d=lr(u,o,s,n);if(Fn(u,d),a==="out-in"&&l.type!==Ye)return s.isLeaving=!0,d.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave,u=void 0},ar(i);a==="in-out"&&l.type!==Ye?d.delayLeave=(g,y,E)=>{const x=zi(s,u);x[String(u.key)]=u,g[Gt]=()=>{y(),g[Gt]=void 0,delete f.delayedLeave,u=void 0},f.delayedLeave=()=>{E(),delete f.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return i}}};function Hi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ye){t=n;break}}return t}const La=Oa;function zi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function lr(e,t,n,s,r){const{appear:i,mode:o,persisted:a=!1,onBeforeEnter:l,onEnter:f,onAfterEnter:u,onEnterCancelled:d,onBeforeLeave:g,onLeave:y,onAfterLeave:E,onLeaveCancelled:x,onBeforeAppear:M,onAppear:m,onAfterAppear:H,onAppearCancelled:Y}=t,$=String(e.key),z=zi(n,e),O=(V,se)=>{V&&Tt(V,s,9,se)},P=(V,se)=>{const fe=se[1];O(V,se),Q(V)?V.every(D=>D.length<=1)&&fe():V.length<=1&&fe()},ee={mode:o,persisted:a,beforeEnter(V){let se=l;if(!n.isMounted)if(i)se=M||l;else return;V[Gt]&&V[Gt](!0);const fe=z[$];fe&&ln(e,fe)&&fe.el[Gt]&&fe.el[Gt](),O(se,[V])},enter(V){let se=f,fe=u,D=d;if(!n.isMounted)if(i)se=m||f,fe=H||u,D=Y||d;else return;let Z=!1;const Se=V[xs]=Ue=>{Z||(Z=!0,Ue?O(D,[V]):O(fe,[V]),ee.delayedLeave&&ee.delayedLeave(),V[xs]=void 0)};se?P(se,[V,Se]):Se()},leave(V,se){const fe=String(e.key);if(V[xs]&&V[xs](!0),n.isUnmounting)return se();O(g,[V]);let D=!1;const Z=V[Gt]=Se=>{D||(D=!0,se(),Se?O(x,[V]):O(E,[V]),V[Gt]=void 0,z[fe]===e&&delete z[fe])};z[fe]=e,y?P(y,[V,Z]):Z()},clone(V){const se=lr(V,t,n,s,r);return r&&r(se),se}};return ee}function ar(e){if(ur(e))return e=Kt(e),e.children=null,e}function Ui(e){if(!ur(e))return Ni(e.type)&&e.children?Hi(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&be(n.default))return n.default()}}function Fn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Fn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ji(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iBn(E,t&&(Q(t)?t[x]:t),n,s,r));return}if(Hn(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Bn(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?As(s.component):s.el,o=r?null:i,{i:a,r:l}=e,f=t&&t.r,u=a.refs===oe?a.refs={}:a.refs,d=a.setupState,g=ue(d),y=d===oe?()=>!1:E=>me(g,E);if(f!=null&&f!==l&&(Pe(f)?(u[f]=null,y(f)&&(d[f]=null)):Ve(f)&&(f.value=null)),be(l))bn(l,a,12,[o,u]);else{const E=Pe(l),x=Ve(l);if(E||x){const M=()=>{if(e.f){const m=E?y(l)?d[l]:u[l]:l.value;r?Q(m)&&Jr(m,i):Q(m)?m.includes(i)||m.push(i):E?(u[l]=[i],y(l)&&(d[l]=u[l])):(l.value=[i],e.k&&(u[e.k]=l.value))}else E?(u[l]=o,y(l)&&(d[l]=o)):x&&(l.value=o,e.k&&(u[e.k]=o))};o?(M.id=-1,rt(M,n)):M()}}}is().requestIdleCallback,is().cancelIdleCallback;const Hn=e=>!!e.type.__asyncLoader,ur=e=>e.type.__isKeepAlive;function Da(e,t,n=Zt,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{It();const a=yr(n),l=Tt(t,n,e,o);return a(),Mt(),l});return s?r.unshift(i):r.push(i),i}}const Vi=e=>(t,n=Zt)=>{(!qn||e==="sp")&&Da(e,(...s)=>t(...s),n)},zn=Vi("m"),ys=Vi("bum"),Na=Symbol.for("v-ndc");function ws(e,t,n,s){let r;const i=n,o=Q(e);if(o||Pe(e)){const a=o&&mn(e);let l=!1,f=!1;a&&(l=!ut(e),f=qt(e),e=os(e)),r=new Array(e.length);for(let u=0,d=e.length;ut(a,l,void 0,i));else{const a=Object.keys(e);r=new Array(a.length);for(let l=0,f=a.length;le?fo(e)?As(e):cr(e.parent):null,Un=bt(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>cr(e.parent),$root:e=>cr(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>e.type,$forceUpdate:e=>e.f||(e.f=()=>{or(e.update)}),$nextTick:e=>e.n||(e.n=St.bind(e.proxy)),$watch:e=>Jt}),fr=(e,t)=>e!==oe&&!e.__isScriptSetup&&me(e,t),Fa={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:a,appContext:l}=e;let f;if(t[0]!=="$"){const y=o[t];if(y!==void 0)switch(y){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(fr(s,t))return o[t]=1,s[t];if(r!==oe&&me(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&me(f,t))return o[t]=3,i[t];if(n!==oe&&me(n,t))return o[t]=4,n[t];o[t]=0}}const u=Un[t];let d,g;if(u)return t==="$attrs"&&je(e.attrs,"get",""),u(e);if((d=a.__cssModules)&&(d=d[t]))return d;if(n!==oe&&me(n,t))return o[t]=4,n[t];if(g=l.config.globalProperties,me(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return fr(r,t)?(r[t]=n,!0):s!==oe&&me(s,t)?(s[t]=n,!0):me(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let a;return!!n[o]||e!==oe&&me(e,o)||fr(t,o)||(a=i[0])&&me(a,o)||me(s,o)||me(Un,o)||me(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:me(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function qi(){return{app:null,config:{isNativeTag:Dl,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ba=0;function Ha(e,t){return function(s,r=null){be(s)||(s=bt({},s)),r!=null&&!Re(r)&&(r=null);const i=qi(),o=new WeakSet,a=[];let l=!1;const f=i.app={_uid:Ba++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:Su,get config(){return i.config},set config(u){},use(u,...d){return o.has(u)||(u&&be(u.install)?(o.add(u),u.install(f,...d)):be(u)&&(o.add(u),u(f,...d))),f},mixin(u){return f},component(u,d){return d?(i.components[u]=d,f):i.components[u]},directive(u,d){return d?(i.directives[u]=d,f):i.directives[u]},mount(u,d,g){if(!l){const y=f._ceVNode||Oe(s,r);return y.appContext=i,g===!0?g="svg":g===!1&&(g=void 0),e(y,u,g),l=!0,f._container=u,u.__vue_app__=f,As(y.component)}},onUnmount(u){a.push(u)},unmount(){l&&(Tt(a,f._instance,16),e(null,f._container),delete f._container.__vue_app__)},provide(u,d){return i.provides[u]=d,f},runWithContext(u){const d=wn;wn=f;try{return u()}finally{wn=d}}};return f}}let wn=null;function za(e,t,n=!1){const s=uo();if(s||wn){let r=wn?wn._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&be(t)?t.call(s&&s.proxy):t}}const Wi={},Gi=()=>Object.create(Wi),Ki=e=>Object.getPrototypeOf(e)===Wi;function Ua(e,t,n,s=!1){const r={},i=Gi();e.propsDefaults=Object.create(null),Yi(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:da(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function ja(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,a=ue(r),[l]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const u=e.vnode.dynamicProps;for(let d=0;de==="_"||e==="__"||e==="_ctx"||e==="$stable",hr=e=>Q(e)?e.map(At):[At(e)],qa=(e,t,n)=>{if(t._n)return t;const s=Di((...r)=>hr(t(...r)),n);return s._c=!1,s},Xi=(e,t,n)=>{const s=e._ctx;for(const r in e){if(dr(r))continue;const i=e[r];if(be(i))t[r]=qa(r,i,s);else if(i!=null){const o=hr(i);t[r]=()=>o}}},Qi=(e,t)=>{const n=hr(t);e.slots.default=()=>n},Ji=(e,t,n)=>{for(const s in t)(n||!dr(s))&&(e[s]=t[s])},Wa=(e,t,n)=>{const s=e.slots=Gi();if(e.vnode.shapeFlag&32){const r=t.__;r&&js(s,"__",r,!0);const i=t._;i?(Ji(s,t,n),n&&js(s,"_",i,!0)):Xi(t,s)}else t&&Qi(e,t)},Ga=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=oe;if(s.shapeFlag&32){const a=t._;a?n&&a===1?i=!1:Ji(r,t,n):(i=!t.$stable,Xi(t,r)),o=t}else t&&(Qi(e,t),o={default:1});if(i)for(const a in r)!dr(a)&&o[a]==null&&delete r[a]},rt=au;function Ka(e){return Ya(e)}function Ya(e,t){const n=is();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:a,createComment:l,setText:f,setElementText:u,parentNode:d,nextSibling:g,setScopeId:y=Jt,insertStaticContent:E}=e,x=(c,h,b,k=null,v=null,_=null,I=void 0,R=null,A=!!h.dynamicChildren)=>{if(c===h)return;c&&!ln(c,h)&&(k=ye(c),de(c,v,_,!0),c=null),h.patchFlag===-2&&(A=!1,h.dynamicChildren=null);const{type:S,ref:U,shapeFlag:L}=h;switch(S){case _s:M(c,h,b,k);break;case Ye:m(c,h,b,k);break;case mr:c==null&&H(h,b,k,I);break;case He:D(c,h,b,k,v,_,I,R,A);break;default:L&1?z(c,h,b,k,v,_,I,R,A):L&6?Z(c,h,b,k,v,_,I,R,A):(L&64||L&128)&&S.process(c,h,b,k,v,_,I,R,A,Ce)}U!=null&&v?Bn(U,c&&c.ref,_,h||c,!h):U==null&&c&&c.ref!=null&&Bn(c.ref,null,_,c,!0)},M=(c,h,b,k)=>{if(c==null)s(h.el=a(h.children),b,k);else{const v=h.el=c.el;h.children!==c.children&&f(v,h.children)}},m=(c,h,b,k)=>{c==null?s(h.el=l(h.children||""),b,k):h.el=c.el},H=(c,h,b,k)=>{[c.el,c.anchor]=E(c.children,h,b,k,c.el,c.anchor)},Y=({el:c,anchor:h},b,k)=>{let v;for(;c&&c!==h;)v=g(c),s(c,b,k),c=v;s(h,b,k)},$=({el:c,anchor:h})=>{let b;for(;c&&c!==h;)b=g(c),r(c),c=b;r(h)},z=(c,h,b,k,v,_,I,R,A)=>{h.type==="svg"?I="svg":h.type==="math"&&(I="mathml"),c==null?O(h,b,k,v,_,I,R,A):V(c,h,v,_,I,R,A)},O=(c,h,b,k,v,_,I,R)=>{let A,S;const{props:U,shapeFlag:L,transition:j,dirs:K}=c;if(A=c.el=o(c.type,_,U&&U.is,U),L&8?u(A,c.children):L&16&&ee(c.children,A,null,k,v,gr(c,_),I,R),K&&sn(c,null,k,"created"),P(A,c,c.scopeId,I,k),U){for(const he in U)he!=="value"&&!Pn(he)&&i(A,he,null,U[he],_,k);"value"in U&&i(A,"value",null,U.value,_),(S=U.onVnodeBeforeMount)&&Rt(S,k,c)}K&&sn(c,null,k,"beforeMount");const ne=Za(v,j);ne&&j.beforeEnter(A),s(A,h,b),((S=U&&U.onVnodeMounted)||ne||K)&&rt(()=>{S&&Rt(S,k,c),ne&&j.enter(A),K&&sn(c,null,k,"mounted")},v)},P=(c,h,b,k,v)=>{if(b&&y(c,b),k)for(let _=0;_{for(let S=A;S{const R=h.el=c.el;let{patchFlag:A,dynamicChildren:S,dirs:U}=h;A|=c.patchFlag&16;const L=c.props||oe,j=h.props||oe;let K;if(b&&rn(b,!1),(K=j.onVnodeBeforeUpdate)&&Rt(K,b,h,c),U&&sn(h,c,b,"beforeUpdate"),b&&rn(b,!0),(L.innerHTML&&j.innerHTML==null||L.textContent&&j.textContent==null)&&u(R,""),S?se(c.dynamicChildren,S,R,b,k,gr(h,v),_):I||pe(c,h,R,null,b,k,gr(h,v),_,!1),A>0){if(A&16)fe(R,L,j,b,v);else if(A&2&&L.class!==j.class&&i(R,"class",null,j.class,v),A&4&&i(R,"style",L.style,j.style,v),A&8){const ne=h.dynamicProps;for(let he=0;he{K&&Rt(K,b,h,c),U&&sn(h,c,b,"updated")},k)},se=(c,h,b,k,v,_,I)=>{for(let R=0;R{if(h!==b){if(h!==oe)for(const _ in h)!Pn(_)&&!(_ in b)&&i(c,_,h[_],null,v,k);for(const _ in b){if(Pn(_))continue;const I=b[_],R=h[_];I!==R&&_!=="value"&&i(c,_,R,I,v,k)}"value"in b&&i(c,"value",h.value,b.value,v)}},D=(c,h,b,k,v,_,I,R,A)=>{const S=h.el=c?c.el:a(""),U=h.anchor=c?c.anchor:a("");let{patchFlag:L,dynamicChildren:j,slotScopeIds:K}=h;K&&(R=R?R.concat(K):K),c==null?(s(S,b,k),s(U,b,k),ee(h.children||[],b,U,v,_,I,R,A)):L>0&&L&64&&j&&c.dynamicChildren?(se(c.dynamicChildren,j,b,v,_,I,R),(h.key!=null||v&&h===v.subTree)&&eo(c,h,!0)):pe(c,h,b,U,v,_,I,R,A)},Z=(c,h,b,k,v,_,I,R,A)=>{h.slotScopeIds=R,c==null?h.shapeFlag&512?v.ctx.activate(h,b,k,I,A):Se(h,b,k,v,_,I,A):Ue(c,h,A)},Se=(c,h,b,k,v,_,I)=>{const R=c.component=gu(c,k,v);if(ur(c)&&(R.ctx.renderer=Ce),mu(R,!1,I),R.asyncDep){if(v&&v.registerDep(R,te,I),!c.el){const A=R.subTree=Oe(Ye);m(null,A,h,b),c.placeholder=A.el}}else te(R,c,h,b,v,_,I)},Ue=(c,h,b)=>{const k=h.component=c.component;if(ou(c,h,b))if(k.asyncDep&&!k.asyncResolved){C(k,h,b);return}else k.next=h,k.update();else h.el=c.el,k.vnode=h},te=(c,h,b,k,v,_,I)=>{const R=()=>{if(c.isMounted){let{next:L,bu:j,u:K,parent:ne,vnode:he}=c;{const lt=to(c);if(lt){L&&(L.el=he.el,C(c,L,I)),lt.asyncDep.then(()=>{c.isUnmounted||R()});return}}let ie=L,ke;rn(c,!1),L?(L.el=he.el,C(c,L,I)):L=he,j&&rs(j),(ke=L.props&&L.props.onVnodeBeforeUpdate)&&Rt(ke,ne,L,he),rn(c,!0);const $e=so(c),ot=c.subTree;c.subTree=$e,x(ot,$e,d(ot.el),ye(ot),c,v,_),L.el=$e.el,ie===null&&lu(c,$e.el),K&&rt(K,v),(ke=L.props&&L.props.onVnodeUpdated)&&rt(()=>Rt(ke,ne,L,he),v)}else{let L;const{el:j,props:K}=h,{bm:ne,m:he,parent:ie,root:ke,type:$e}=c,ot=Hn(h);rn(c,!1),ne&&rs(ne),!ot&&(L=K&&K.onVnodeBeforeMount)&&Rt(L,ie,h),rn(c,!0);{ke.ce&&ke.ce._def.shadowRoot!==!1&&ke.ce._injectChildStyle($e);const lt=c.subTree=so(c);x(null,lt,b,k,c,v,_),h.el=lt.el}if(he&&rt(he,v),!ot&&(L=K&&K.onVnodeMounted)){const lt=h;rt(()=>Rt(L,ie,lt),v)}(h.shapeFlag&256||ie&&Hn(ie.vnode)&&ie.vnode.shapeFlag&256)&&c.a&&rt(c.a,v),c.isMounted=!0,h=b=k=null}};c.scope.on();const A=c.effect=new ui(R);c.scope.off();const S=c.update=A.run.bind(A),U=c.job=A.runIfDirty.bind(A);U.i=c,U.id=c.uid,A.scheduler=()=>or(U),rn(c,!0),S()},C=(c,h,b)=>{h.component=c;const k=c.vnode.props;c.vnode=h,c.next=null,ja(c,h.props,k,b),Ga(c,h.children,b),It(),Mi(c),Mt()},pe=(c,h,b,k,v,_,I,R,A=!1)=>{const S=c&&c.children,U=c?c.shapeFlag:0,L=h.children,{patchFlag:j,shapeFlag:K}=h;if(j>0){if(j&128){re(S,L,b,k,v,_,I,R,A);return}else if(j&256){Ge(S,L,b,k,v,_,I,R,A);return}}K&8?(U&16&&nt(S,v,_),L!==S&&u(b,L)):U&16?K&16?re(S,L,b,k,v,_,I,R,A):nt(S,v,_,!0):(U&8&&u(b,""),K&16&&ee(L,b,k,v,_,I,R,A))},Ge=(c,h,b,k,v,_,I,R,A)=>{c=c||mt,h=h||mt;const S=c.length,U=h.length,L=Math.min(S,U);let j;for(j=0;jU?nt(c,v,_,!0,!1,L):ee(h,b,k,v,_,I,R,A,L)},re=(c,h,b,k,v,_,I,R,A)=>{let S=0;const U=h.length;let L=c.length-1,j=U-1;for(;S<=L&&S<=j;){const K=c[S],ne=h[S]=A?Yt(h[S]):At(h[S]);if(ln(K,ne))x(K,ne,b,null,v,_,I,R,A);else break;S++}for(;S<=L&&S<=j;){const K=c[L],ne=h[j]=A?Yt(h[j]):At(h[j]);if(ln(K,ne))x(K,ne,b,null,v,_,I,R,A);else break;L--,j--}if(S>L){if(S<=j){const K=j+1,ne=Kj)for(;S<=L;)de(c[S],v,_,!0),S++;else{const K=S,ne=S,he=new Map;for(S=ne;S<=j;S++){const De=h[S]=A?Yt(h[S]):At(h[S]);De.key!=null&&he.set(De.key,S)}let ie,ke=0;const $e=j-ne+1;let ot=!1,lt=0;const Bt=new Array($e);for(S=0;S<$e;S++)Bt[S]=0;for(S=K;S<=L;S++){const De=c[S];if(ke>=$e){de(De,v,_,!0);continue}let Qe;if(De.key!=null)Qe=he.get(De.key);else for(ie=ne;ie<=j;ie++)if(Bt[ie-ne]===0&&ln(De,h[ie])){Qe=ie;break}Qe===void 0?de(De,v,_,!0):(Bt[Qe-ne]=S+1,Qe>=lt?lt=Qe:ot=!0,x(De,h[Qe],b,null,v,_,I,R,A),ke++)}const Jn=ot?Xa(Bt):mt;for(ie=Jn.length-1,S=$e-1;S>=0;S--){const De=ne+S,Qe=h[De],at=h[De+1],Ht=De+1{const{el:_,type:I,transition:R,children:A,shapeFlag:S}=c;if(S&6){B(c.component.subTree,h,b,k);return}if(S&128){c.suspense.move(h,b,k);return}if(S&64){I.move(c,h,b,Ce);return}if(I===He){s(_,h,b);for(let L=0;LR.enter(_),v);else{const{leave:L,delayLeave:j,afterLeave:K}=R,ne=()=>{c.ctx.isUnmounted?r(_):s(_,h,b)},he=()=>{L(_,()=>{ne(),K&&K()})};j?j(_,ne,he):he()}else s(_,h,b)},de=(c,h,b,k=!1,v=!1)=>{const{type:_,props:I,ref:R,children:A,dynamicChildren:S,shapeFlag:U,patchFlag:L,dirs:j,cacheIndex:K}=c;if(L===-2&&(v=!1),R!=null&&(It(),Bn(R,null,b,c,!0),Mt()),K!=null&&(h.renderCache[K]=void 0),U&256){h.ctx.deactivate(c);return}const ne=U&1&&j,he=!Hn(c);let ie;if(he&&(ie=I&&I.onVnodeBeforeUnmount)&&Rt(ie,h,c),U&6)ge(c.component,b,k);else{if(U&128){c.suspense.unmount(b,k);return}ne&&sn(c,null,h,"beforeUnmount"),U&64?c.type.remove(c,h,b,Ce,k):S&&!S.hasOnce&&(_!==He||L>0&&L&64)?nt(S,h,b,!1,!0):(_===He&&L&384||!v&&U&16)&&nt(A,h,b),k&&ae(c)}(he&&(ie=I&&I.onVnodeUnmounted)||ne)&&rt(()=>{ie&&Rt(ie,h,c),ne&&sn(c,null,h,"unmounted")},b)},ae=c=>{const{type:h,el:b,anchor:k,transition:v}=c;if(h===He){ve(b,k);return}if(h===mr){$(c);return}const _=()=>{r(b),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(c.shapeFlag&1&&v&&!v.persisted){const{leave:I,delayLeave:R}=v,A=()=>I(b,_);R?R(c.el,_,A):A()}else _()},ve=(c,h)=>{let b;for(;c!==h;)b=g(c),r(c),c=b;r(h)},ge=(c,h,b)=>{const{bum:k,scope:v,job:_,subTree:I,um:R,m:A,a:S,parent:U,slots:{__:L}}=c;no(A),no(S),k&&rs(k),U&&Q(L)&&L.forEach(j=>{U.renderCache[j]=void 0}),v.stop(),_&&(_.flags|=8,de(I,c,h,b)),R&&rt(R,h),rt(()=>{c.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},nt=(c,h,b,k=!1,v=!1,_=0)=>{for(let I=_;I{if(c.shapeFlag&6)return ye(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const h=g(c.anchor||c.el),b=h&&h[Ia];return b?g(b):h};let ht=!1;const G=(c,h,b)=>{c==null?h._vnode&&de(h._vnode,null,null,!0):x(h._vnode||null,c,h,null,null,null,b),h._vnode=c,ht||(ht=!0,Mi(),Oi(),ht=!1)},Ce={p:x,um:de,m:B,r:ae,mt:Se,mc:ee,pc:pe,pbc:se,n:ye,o:e};return{render:G,hydrate:void 0,createApp:Ha(G)}}function gr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function rn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Za(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function eo(e,t,n=!1){const s=e.children,r=t.children;if(Q(s)&&Q(r))for(let i=0;i>1,e[n[a]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function to(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:to(t)}function no(e){if(e)for(let t=0;tza(Qa);function on(e,t,n){return eu(e,t,n)}function eu(e,t,n=oe){const{immediate:s,deep:r,flush:i,once:o}=n,a=bt({},n),l=t&&s||!t&&i!=="post";let f;if(qn){if(i==="sync"){const y=Ja();f=y.__watcherHandles||(y.__watcherHandles=[])}else if(!l){const y=()=>{};return y.stop=Jt,y.resume=Jt,y.pause=Jt,y}}const u=Zt;a.call=(y,E,x)=>Tt(y,u,E,x);let d=!1;i==="post"?a.scheduler=y=>{rt(y,u&&u.suspense)}:i!=="sync"&&(d=!0,a.scheduler=(y,E)=>{E?y():or(y)}),a.augmentJob=y=>{t&&(y.flags|=4),d&&(y.flags|=2,u&&(y.id=u.uid,y.i=u))};const g=_a(e,t,a);return qn&&(f?f.push(g):l&&g()),g}const tu=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${jt(t)}Modifiers`]||e[`${en(t)}Modifiers`];function nu(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||oe;let r=n;const i=t.startsWith("update:"),o=i&&tu(s,t.slice(7));o&&(o.trim&&(r=n.map(u=>Pe(u)?u.trim():u)),o.number&&(r=n.map(Vs)));let a,l=s[a=Us(t)]||s[a=Us(jt(t))];!l&&i&&(l=s[a=Us(en(t))]),l&&Tt(l,e,6,r);const f=s[a+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,Tt(f,e,6,r)}}function su(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={};return i?(Q(i)?i.forEach(a=>o[a]=null):bt(o,i),Re(e)&&s.set(e,o),o):(Re(e)&&s.set(e,null),null)}function vs(e,t){return!e||!ts(t)?!1:(t=t.slice(2).replace(/Once$/,""),me(e,t[0].toLowerCase()+t.slice(1))||me(e,en(t))||me(e,t))}function Ed(){}function so(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:a,emit:l,render:f,renderCache:u,props:d,data:g,setupState:y,ctx:E,inheritAttrs:x}=e,M=bs(e);let m,H;try{if(n.shapeFlag&4){const $=r||s,z=$;m=At(f.call(z,$,u,d,y,g,E)),H=a}else{const $=t;m=At($.length>1?$(d,{attrs:a,slots:o,emit:l}):$(d,null)),H=t.props?a:ru(a)}}catch($){jn.length=0,gs($,e,1),m=Oe(Ye)}let Y=m;if(H&&x!==!1){const $=Object.keys(H),{shapeFlag:z}=Y;$.length&&z&7&&(i&&$.some(Hs)&&(H=iu(H,i)),Y=Kt(Y,H,!1,!0))}return n.dirs&&(Y=Kt(Y,null,!1,!0),Y.dirs=Y.dirs?Y.dirs.concat(n.dirs):n.dirs),n.transition&&Fn(Y,n.transition),m=Y,bs(M),m}const ru=e=>{let t;for(const n in e)(n==="class"||n==="style"||ts(n))&&((t||(t={}))[n]=e[n]);return t},iu=(e,t)=>{const n={};for(const s in e)(!Hs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function ou(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:a,patchFlag:l}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return s?ro(s,o,f):!!o;if(l&8){const u=t.dynamicProps;for(let d=0;de.__isSuspense;function au(e,t){t&&t.pendingBranch?Q(e)?t.effects.push(...e):t.effects.push(e):Ca(e)}const He=Symbol.for("v-fgt"),_s=Symbol.for("v-txt"),Ye=Symbol.for("v-cmt"),mr=Symbol.for("v-stc"),jn=[];let it=null;function F(e=!1){jn.push(it=e?null:[])}function uu(){jn.pop(),it=jn[jn.length-1]||null}let Vn=1;function oo(e,t=!1){Vn+=e,e<0&&it&&t&&(it.hasOnce=!0)}function lo(e){return e.dynamicChildren=Vn>0?it||mt:null,uu(),Vn>0&&it&&it.push(e),e}function W(e,t,n,s,r,i){return lo(w(e,t,n,s,r,i,!0))}function Et(e,t,n,s,r){return lo(Oe(e,t,n,s,r,!0))}function Ts(e){return e?e.__v_isVNode===!0:!1}function ln(e,t){return e.type===t.type&&e.key===t.key}const ao=({key:e})=>e!=null?e:null,ks=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Pe(e)||Ve(e)||be(e)?{i:ct,r:e,k:t,f:!!n}:e:null);function w(e,t=null,n=null,s=0,r=null,i=e===He?0:1,o=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ao(t),ref:t&&ks(t),scopeId:$i,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ct};return a?(br(l,n),i&128&&e.normalize(l)):n&&(l.shapeFlag|=Pe(n)?8:16),Vn>0&&!o&&it&&(l.patchFlag>0||i&6)&&l.patchFlag!==32&&it.push(l),l}const Oe=cu;function cu(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Na)&&(e=Ye),Ts(e)){const a=Kt(e,t,!0);return n&&br(a,n),Vn>0&&!i&&it&&(a.shapeFlag&6?it[it.indexOf(e)]=a:it.push(a)),a.patchFlag=-2,a}if(Tu(e)&&(e=e.__vccOpts),t){t=fu(t);let{class:a,style:l}=t;a&&!Pe(a)&&(t.class=we(a)),Re(l)&&(rr(l)&&!Q(l)&&(l=bt({},l)),t.style=qs(l))}const o=Pe(e)?1:io(e)?128:Ni(e)?64:Re(e)?4:be(e)?2:0;return w(e,t,n,s,r,o,i,!0)}function fu(e){return e?rr(e)||Ki(e)?bt({},e):e:null}function Kt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:a,transition:l}=e,f=t?pu(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&ao(f),ref:t&&t.ref?n&&i?Q(i)?i.concat(ks(t)):[i,ks(t)]:ks(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==He?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Kt(e.ssContent),ssFallback:e.ssFallback&&Kt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&s&&Fn(u,l.clone(u)),u}function Ss(e=" ",t=0){return Oe(_s,null,e,t)}function qe(e="",t=!1){return t?(F(),Et(Ye,null,e)):Oe(Ye,null,e)}function At(e){return e==null||typeof e=="boolean"?Oe(Ye):Q(e)?Oe(He,null,e.slice()):Ts(e)?Yt(e):Oe(_s,null,String(e))}function Yt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Kt(e)}function br(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(Q(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),br(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ki(t)?t._ctx=ct:r===3&&ct&&(ct.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else be(t)?(t={default:t,_ctx:ct},n=32):(t=String(t),s&64?(n=16,t=[Ss(t)]):n=8);e.children=t,e.shapeFlag|=n}function pu(...e){const t={};for(let n=0;nZt||ct;let Es,xr;{const e=is(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Es=t("__VUE_INSTANCE_SETTERS__",n=>Zt=n),xr=t("__VUE_SSR_SETTERS__",n=>qn=n)}const yr=e=>{const t=Zt;return Es(e),e.scope.on(),()=>{e.scope.off(),Es(t)}},co=()=>{Zt&&Zt.scope.off(),Es(null)};function fo(e){return e.vnode.shapeFlag&4}let qn=!1;function mu(e,t=!1,n=!1){t&&xr(t);const{props:s,children:r}=e.vnode,i=fo(e);Ua(e,s,i,t),Wa(e,r,n||t);const o=i?bu(e,t):void 0;return t&&xr(!1),o}function bu(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Fa);const{setup:s}=n;if(s){It();const r=e.setupContext=s.length>1?yu(e):null,i=yr(e),o=bn(s,e,0,[e.props,r]),a=ti(o);if(Mt(),i(),(a||e.sp)&&!Hn(e)&&$a(e),a){if(o.then(co,co),t)return o.then(l=>{po(e,l)}).catch(l=>{gs(l,e,0)});e.asyncDep=o}else po(e,o)}else ho(e)}function po(e,t,n){be(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Re(t)&&(e.setupState=Ri(t)),ho(e)}function ho(e,t,n){const s=e.type;e.render||(e.render=s.render||Jt)}const xu={get(e,t){return je(e,"get",""),e[t]}};function yu(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,xu),slots:e.slots,emit:e.emit,expose:t}}function As(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ri(ha(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Un)return Un[n](e)},has(t,n){return n in t||n in Un}})):e.proxy}const wu=/(?:^|[-_])(\w)/g,vu=e=>e.replace(wu,t=>t.toUpperCase()).replace(/[-_]/g,"");function _u(e,t=!0){return be(e)?e.displayName||e.name:e.name||t&&e.__name}function go(e,t,n=!1){let s=_u(t);if(!s&&t.__file){const r=t.__file.match(/([^/\\]+)\.\w+$/);r&&(s=r[1])}if(!s&&e&&e.parent){const r=i=>{for(const o in i)if(i[o]===t)return o};s=r(e.components||e.parent.type.components)||r(e.appContext.components)}return s?vu(s):n?"App":"Anonymous"}function Tu(e){return be(e)&&"__vccOpts"in e}const Ee=(e,t)=>wa(e,t,qn);function ku(e,t,n){const s=arguments.length;return s===2?Re(t)&&!Q(t)?Ts(t)?Oe(e,null,[t]):Oe(e,t):Oe(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Ts(n)&&(n=[n]),Oe(e,t,n))}const Su="3.5.18";let wr;const mo=typeof window!="undefined"&&window.trustedTypes;if(mo)try{wr=mo.createPolicy("vue",{createHTML:e=>e})}catch{}const bo=wr?e=>wr.createHTML(e):e=>e,Eu="http://www.w3.org/2000/svg",Au="http://www.w3.org/1998/Math/MathML",Dt=typeof document!="undefined"?document:null,xo=Dt&&Dt.createElement("template"),Ru={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Dt.createElementNS(Eu,e):t==="mathml"?Dt.createElementNS(Au,e):n?Dt.createElement(e,{is:n}):Dt.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Dt.createTextNode(e),createComment:e=>Dt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Dt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{xo.innerHTML=bo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const a=xo.content;if(s==="svg"||s==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Xt="transition",Wn="animation",Gn=Symbol("_vtc"),yo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Cu=bt({},Fi,yo),Pu=(e=>(e.displayName="Transition",e.props=Cu,e))((e,{slots:t})=>ku(La,Iu(e),t)),an=(e,t=[])=>{Q(e)?e.forEach(n=>n(...t)):e&&e(...t)},wo=e=>e?Q(e)?e.some(t=>t.length>1):e.length>1:!1;function Iu(e){const t={};for(const D in e)D in yo||(t[D]=e[D]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=i,appearActiveClass:f=o,appearToClass:u=a,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,E=Mu(r),x=E&&E[0],M=E&&E[1],{onBeforeEnter:m,onEnter:H,onEnterCancelled:Y,onLeave:$,onLeaveCancelled:z,onBeforeAppear:O=m,onAppear:P=H,onAppearCancelled:ee=Y}=t,V=(D,Z,Se,Ue)=>{D._enterCancelled=Ue,un(D,Z?u:a),un(D,Z?f:o),Se&&Se()},se=(D,Z)=>{D._isLeaving=!1,un(D,d),un(D,y),un(D,g),Z&&Z()},fe=D=>(Z,Se)=>{const Ue=D?P:H,te=()=>V(Z,D,Se);an(Ue,[Z,te]),vo(()=>{un(Z,D?l:i),Nt(Z,D?u:a),wo(Ue)||_o(Z,s,x,te)})};return bt(t,{onBeforeEnter(D){an(m,[D]),Nt(D,i),Nt(D,o)},onBeforeAppear(D){an(O,[D]),Nt(D,l),Nt(D,f)},onEnter:fe(!1),onAppear:fe(!0),onLeave(D,Z){D._isLeaving=!0;const Se=()=>se(D,Z);Nt(D,d),D._enterCancelled?(Nt(D,g),So()):(So(),Nt(D,g)),vo(()=>{D._isLeaving&&(un(D,d),Nt(D,y),wo($)||_o(D,s,M,Se))}),an($,[D,Se])},onEnterCancelled(D){V(D,!1,void 0,!0),an(Y,[D])},onAppearCancelled(D){V(D,!0,void 0,!0),an(ee,[D])},onLeaveCancelled(D){se(D),an(z,[D])}})}function Mu(e){if(e==null)return null;if(Re(e))return[vr(e.enter),vr(e.leave)];{const t=vr(e);return[t,t]}}function vr(e){return zl(e)}function Nt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Gn]||(e[Gn]=new Set)).add(t)}function un(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Gn];n&&(n.delete(t),n.size||(e[Gn]=void 0))}function vo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ou=0;function _o(e,t,n,s){const r=e._endId=++Ou,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:a,propCount:l}=Lu(e,t);if(!o)return s();const f=o+"end";let u=0;const d=()=>{e.removeEventListener(f,g),i()},g=y=>{y.target===e&&++u>=l&&d()};setTimeout(()=>{u(n[E]||"").split(", "),r=s(`${Xt}Delay`),i=s(`${Xt}Duration`),o=To(r,i),a=s(`${Wn}Delay`),l=s(`${Wn}Duration`),f=To(a,l);let u=null,d=0,g=0;t===Xt?o>0&&(u=Xt,d=o,g=i.length):t===Wn?f>0&&(u=Wn,d=f,g=l.length):(d=Math.max(o,f),u=d>0?o>f?Xt:Wn:null,g=u?u===Xt?i.length:l.length:0);const y=u===Xt&&/\b(transform|all)(,|$)/.test(s(`${Xt}Property`).toString());return{type:u,timeout:d,propCount:g,hasTransform:y}}function To(e,t){for(;e.lengthko(n)+ko(e[s])))}function ko(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function So(){return document.body.offsetHeight}function $u(e,t,n){const s=e[Gn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Eo=Symbol("_vod"),Du=Symbol("_vsh"),Nu=Symbol(""),Fu=/(^|;)\s*display\s*:/;function Bu(e,t,n){const s=e.style,r=Pe(n);let i=!1;if(n&&!r){if(t)if(Pe(t))for(const o of t.split(";")){const a=o.slice(0,o.indexOf(":")).trim();n[a]==null&&Rs(s,a,"")}else for(const o in t)n[o]==null&&Rs(s,o,"");for(const o in n)o==="display"&&(i=!0),Rs(s,o,n[o])}else if(r){if(t!==n){const o=s[Nu];o&&(n+=";"+o),s.cssText=n,i=Fu.test(n)}}else t&&e.removeAttribute("style");Eo in e&&(e[Eo]=i?s.display:"",e[Du]&&(s.display="none"))}const Ao=/\s*!important$/;function Rs(e,t,n){if(Q(n))n.forEach(s=>Rs(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Hu(e,t);Ao.test(n)?e.setProperty(en(s),n.replace(Ao,""),"important"):e[s]=n}}const Ro=["Webkit","Moz","ms"],_r={};function Hu(e,t){const n=_r[t];if(n)return n;let s=jt(t);if(s!=="filter"&&s in e)return _r[t]=s;s=ri(s);for(let r=0;rTr||(Vu.then(()=>Tr=0),Tr=Date.now());function Wu(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Tt(Gu(s,n.value),t,5,[s])};return n.value=e,n.attached=qu(),n}function Gu(e,t){if(Q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Lo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ku=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?$u(e,s,o):t==="style"?Bu(e,n,s):ts(t)?Hs(t)||Uu(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Yu(e,t,s,o))?(Io(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Po(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Pe(s))?Io(e,jt(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Po(e,t,s,o))};function Yu(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Lo(t)&&be(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Lo(t)&&Pe(n)?!1:t in e}const $o=e=>{const t=e.props["onUpdate:modelValue"]||!1;return Q(t)?n=>rs(t,n):t};function Zu(e){e.target.composing=!0}function Do(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const kr=Symbol("_assign"),Xu={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[kr]=$o(r);const i=s||r.props&&r.props.type==="number";vn(e,t?"change":"input",o=>{if(o.target.composing)return;let a=e.value;n&&(a=a.trim()),i&&(a=Vs(a)),e[kr](a)}),n&&vn(e,"change",()=>{e.value=e.value.trim()}),t||(vn(e,"compositionstart",Zu),vn(e,"compositionend",Do),vn(e,"change",Do))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[kr]=$o(o),e.composing)return;const a=(i||e.type==="number")&&!/^0\d/.test(e.value)?Vs(e.value):e.value,l=t==null?"":t;a!==l&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===l)||(e.value=l))}},Qu=["ctrl","shift","alt","meta"],Ju={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Qu.some(n=>e[`${n}Key`]&&!t.includes(n))},pt=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const t=tc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=rc(s);if(!r)return;const i=t._component;!be(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,sc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t};function sc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function rc(e){return Pe(e)?document.querySelector(e):e}const ic=["aria-pressed"],oc={key:0,viewBox:"0 0 24 24",width:"20",height:"20","aria-hidden":"true"},lc={key:1,viewBox:"0 0 24 24",width:"18",height:"18","aria-hidden":"true",fill:"none"},ac={__name:"ChatbotToggler",props:{isOpen:{type:Boolean,required:!0}},emits:["toggle"],setup(e){return(t,n)=>(F(),W("button",{class:"fixed bottom-5 right-5 z-9999 grid h-12 w-12 appearance-none place-items-center rounded-full border border-white/20 bg-gradient-to-br from-brand-500 to-brand-600 text-white shadow-[0_20px_36px_-20px_rgba(109,79,194,0.85)] transition-all duration-250 hover:-translate-y-0.5 hover:from-brand-600 hover:to-violet-700 hover:shadow-[0_22px_40px_-22px_rgba(109,79,194,1)] focus:outline-none max-[600px]:bottom-3 max-[600px]:right-3 max-[600px]:h-13 max-[600px]:w-13",style:{"border-radius":"9999px"},"aria-pressed":e.isOpen?"true":"false",onClick:n[0]||(n[0]=s=>t.$emit("toggle"))},[e.isOpen?(F(),W("svg",lc,n[2]||(n[2]=[w("path",{d:"M6 6l12 12M18 6L6 18",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"},null,-1)]))):(F(),W("svg",oc,n[1]||(n[1]=[w("path",{d:"M4 4h16a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H8l-4 4v-4H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linecap":"miter","stroke-linejoin":"miter"},null,-1)])))],8,ic))}},uc={class:"chat-header relative flex min-h-14 items-center justify-between px-4 pb-2.5 pt-3 text-white sm:px-5"},cc={class:"flex min-w-0 flex-1 items-center gap-2 sm:gap-2.5"},fc={xmlns:"http://www.w3.org/2000/svg",width:"35",height:"35",viewBox:"0 0 1024 1024",class:"h-8 w-8 shrink-0 rounded-full bg-white p-1.5 shadow-md motion-safe:animate-soft-float",style:{fill:"#6d4fc2"}},pc={class:"ml-2 flex items-center gap-1.5"},dc=["title"],hc=["title","aria-label"],gc={key:0,viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},mc={key:1,viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},bc=["title","aria-label"],xc={key:0,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},yc={key:1,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},wc={key:2,xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},vc={__name:"ChatHeader",props:{windowMode:{type:String,required:!0},autoReadEnabled:{type:Boolean,required:!0},activeTtsProvider:{type:String,required:!0}},emits:["close","cycleResize","toggleAutoRead"],setup(e){const t=e,n={default:"Compact",half:"Half Screen",full:"Full Screen"},s=Ee(()=>n[t.windowMode]||"Compact"),r=Ee(()=>t.windowMode==="default"?"Half Screen":t.windowMode==="half"?"Full Screen":"Compact"),i=Ee(()=>t.activeTtsProvider==="polly"?"TTS: Polly":t.activeTtsProvider==="browser"?"TTS: Browser":"TTS: Off"),o=Ee(()=>t.activeTtsProvider==="polly"?"bg-emerald-500/45":t.activeTtsProvider==="browser"?"bg-amber-500/45":"bg-slate-500/35");return(a,l)=>(F(),W("div",uc,[w("div",cc,[(F(),W("svg",fc,l[3]||(l[3]=[w("path",{d:"M738.3 287.6H285.7c-59 0-106.8 47.8-106.8 106.8v303.1c0 59 47.8 106.8 106.8 106.8h81.5v111.1c0 .7.8 1.1 1.4.7l166.9-110.6 41.8-.8h117.4l43.6-.4c59 0 106.8-47.8 106.8-106.8V394.5c0-59-47.8-106.9-106.8-106.9zM351.7 448.2c0-29.5 23.9-53.5 53.5-53.5s53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5-53.5-23.9-53.5-53.5zm157.9 267.1c-67.8 0-123.8-47.5-132.3-109h264.6c-8.6 61.5-64.5 109-132.3 109zm110-213.7c-29.5 0-53.5-23.9-53.5-53.5s23.9-53.5 53.5-53.5 53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5zM867.2 644.5V453.1h26.5c19.4 0 35.1 15.7 35.1 35.1v121.1c0 19.4-15.7 35.1-35.1 35.1h-26.5zM95.2 609.4V488.2c0-19.4 15.7-35.1 35.1-35.1h26.5v191.3h-26.5c-19.4 0-35.1-15.7-35.1-35.1zM561.5 149.6c0 23.4-15.6 43.3-36.9 49.7v44.9h-30v-44.9c-21.4-6.5-36.9-26.3-36.9-49.7 0-28.6 23.3-51.9 51.9-51.9s51.9 23.3 51.9 51.9z"},null,-1)]))),l[4]||(l[4]=w("h2",{class:"truncate text-xs font-semibold tracking-[0.01em] sm:text-base text-white/95"},"ChangAI from ERPGulf",-1))]),w("div",pc,[w("span",{class:we(["hidden rounded-full border border-white/25 px-2 py-1 text-[10px] font-semibold uppercase tracking-wide text-white/95 shadow-sm backdrop-blur-sm sm:inline",o.value]),title:`TTS provider: ${i.value}`},Je(i.value),11,dc),w("button",{class:we(["h-8 min-w-8 appearance-none items-center justify-center rounded-md border border-white/20 px-2 text-xs font-semibold text-white/90 transition-all duration-200 focus:outline-none sm:flex",e.autoReadEnabled?"bg-white/24 shadow-sm":"hover:bg-white/15"]),style:{"border-radius":"0.375rem"},title:e.autoReadEnabled?"Auto speech on":"Auto speech off","aria-label":e.autoReadEnabled?"Turn off auto speech":"Turn on auto speech",onClick:l[0]||(l[0]=f=>a.$emit("toggleAutoRead"))},[e.autoReadEnabled?(F(),W("svg",gc,l[5]||(l[5]=[w("path",{d:"M11 5L6 9H3v6h3l5 4V5z"},null,-1),w("path",{d:"M15 9a4 4 0 0 1 0 6"},null,-1),w("path",{d:"M18 7a7 7 0 0 1 0 10"},null,-1)]))):(F(),W("svg",mc,l[6]||(l[6]=[w("path",{d:"M11 5L6 9H3v6h3l5 4V5z"},null,-1),w("path",{d:"M22 9l-6 6"},null,-1),w("path",{d:"M16 9l6 6"},null,-1)])))],10,hc),w("button",{class:we(["flex h-8 min-w-8 appearance-none items-center justify-center rounded-md border border-white/20 px-2 text-xs font-semibold text-white/90 transition-all duration-200 focus:outline-none","bg-white/20 shadow-sm hover:bg-white/25"]),style:{"border-radius":"0.375rem"},title:`Resize mode: ${s.value} (click to ${r.value})`,"aria-label":`Resize mode ${s.value}. Click to switch to ${r.value}`,onClick:l[1]||(l[1]=f=>a.$emit("cycleResize"))},[e.windowMode==="default"?(F(),W("svg",xc,l[7]||(l[7]=[w("rect",{x:"7",y:"8",width:"10",height:"8",rx:"2"},null,-1)]))):e.windowMode==="half"?(F(),W("svg",yc,l[8]||(l[8]=[w("rect",{x:"4",y:"5",width:"16",height:"14",rx:"2"},null,-1),w("path",{d:"M12 5v14"},null,-1)]))):(F(),W("svg",wc,l[9]||(l[9]=[w("rect",{x:"4",y:"5",width:"16",height:"14",rx:"2"},null,-1),w("path",{d:"M8 8H6v2M16 8h2v2M8 16H6v-2M16 16h2v-2"},null,-1)])))],8,bc),w("button",{class:"grid h-8 w-8 shrink-0 appearance-none place-items-center rounded-full border border-white/20 text-white transition-all duration-200 hover:scale-105 hover:bg-white/20 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/70",style:{"border-radius":"9999px"},"aria-label":"Close chatbot",onClick:l[2]||(l[2]=f=>a.$emit("close"))},l[10]||(l[10]=[w("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24",width:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[w("path",{d:"M6 9l6 6 6-6"})],-1)]))])]))}},_c={class:"flex gap-1.5 border-b border-slate-200/80 px-2.5 pb-2.5 pt-1"},Tc=["onClick"],kc={class:"inline-flex items-center gap-1.5"},Sc={__name:"TabBar",props:{modelValue:{type:String,required:!0},debugEnabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e){const t=e,n=Ee(()=>{const s=[{id:"chat",label:"Chats"},{id:"debug",label:"Debug"},{id:"support",label:"Support"},{id:"settings",label:"Settings"}];return t.debugEnabled?s:s.filter(r=>r.id!=="debug")});return(s,r)=>(F(),W("div",_c,[(F(!0),W(He,null,ws(n.value,i=>(F(),W("button",{key:i.id,class:we(["group min-w-0 flex-1 h-9 appearance-none rounded-lg border border-transparent bg-transparent px-2 text-xs font-semibold transition-all duration-200 focus:outline-none",e.modelValue===i.id?"border-white/30 bg-linear-to-r from-violet-300/36 via-indigo-300/30 to-sky-300/28 text-white shadow-[0_4px_10px_rgba(20,24,40,0.22)]":"text-white/80 hover:border-white/25 hover:bg-white/12 hover:text-white"]),onClick:o=>s.$emit("update:modelValue",i.id)},[w("span",kc,[w("span",{class:we(["h-1.5 w-1.5 rounded-full transition-colors duration-200",e.modelValue===i.id?"bg-white":"bg-white/40 group-hover:bg-white/70"])},null,2),Ss(" "+Je(i.label),1)])],10,Tc))),128))]))}},Ec=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Ac={},Rc={xmlns:"http://www.w3.org/2000/svg",width:"50",height:"50",viewBox:"0 0 1024 1024",class:"h-7.5 w-7.5 shrink-0 self-end rounded-full bg-gradient-to-br from-brand-500 to-brand-600 p-1.5 fill-white shadow-[0_10px_18px_-12px_rgba(109,79,194,0.85)]"};function Cc(e,t){return F(),W("svg",Rc,t[0]||(t[0]=[w("path",{d:"M738.3 287.6H285.7c-59 0-106.8 47.8-106.8 106.8v303.1c0 59 47.8 106.8 106.8 106.8h81.5v111.1c0 .7.8 1.1 1.4.7l166.9-110.6 41.8-.8h117.4l43.6-.4c59 0 106.8-47.8 106.8-106.8V394.5c0-59-47.8-106.9-106.8-106.9zM351.7 448.2c0-29.5 23.9-53.5 53.5-53.5s53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5-53.5-23.9-53.5-53.5zm157.9 267.1c-67.8 0-123.8-47.5-132.3-109h264.6c-8.6 61.5-64.5 109-132.3 109zm110-213.7c-29.5 0-53.5-23.9-53.5-53.5s23.9-53.5 53.5-53.5 53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5zM867.2 644.5V453.1h26.5c19.4 0 35.1 15.7 35.1 35.1v121.1c0 19.4-15.7 35.1-35.1 35.1h-26.5zM95.2 609.4V488.2c0-19.4 15.7-35.1 35.1-35.1h26.5v191.3h-26.5c-19.4 0-35.1-15.7-35.1-35.1zM561.5 149.6c0 23.4-15.6 43.3-36.9 49.7v44.9h-30v-44.9c-21.4-6.5-36.9-26.3-36.9-49.7 0-28.6 23.3-51.9 51.9-51.9s51.9 23.3 51.9 51.9z"},null,-1)]))}const Fo=Ec(Ac,[["render",Cc]]),Cs={PIPELINE:"changai.changai.api.v2.text2sql_pipeline_v2.run_text2sql_pipeline",SUPPORT:"changai.changai.api.v2.text2sql_pipeline_v2.support_bot",SETTINGS:"changai.changai.api.v2.text2sql_pipeline_v2.get_frontend_settings",TTS:"changai.changai.api.v2.text2sql_pipeline_v2.synthesize_tts"};function Bo(e,t={},n="actual"){return n==="test"?Promise.resolve({Bot:`[TEST MODE] ${JSON.stringify(t)}`}):!window.frappe||!window.frappe.call?Promise.reject(new Error("Frappe API is unavailable in actual mode.")):new Promise((s,r)=>{window.frappe.call({method:e,args:t,callback(i){s(i.message)},error(i){r(i)}})})}function Pc(e,t,n="actual",s=null,r){if(n==="test")return{promise:Promise.resolve({Bot:`[TEST MODE] ${JSON.stringify({user_question:e,chat_id:t,request_id:s,sendNonErptoAI:r})}`}),cancel:()=>!1};if(!window.frappe||!window.frappe.call)return{promise:Promise.reject(new Error("Frappe API is unavailable in actual mode.")),cancel:()=>!1};let i=null,o=!1;return{promise:new Promise((f,u)=>{i=window.frappe.call({method:Cs.PIPELINE,args:{user_question:e,chat_id:t,request_id:s,sendNonErptoAI:r},callback(d){o=!0,f(d.message)},error(d){o=!0,u(d)}})}),cancel:()=>o||!i||typeof i.abort!="function"?!1:(i.abort(),o=!0,!0)}}function Ic(e,t="actual"){if(t==="test")return{promise:Promise.resolve(`[TEST MODE] ${JSON.stringify({message:e})}`),cancel:()=>!1};if(!window.frappe||!window.frappe.call)return{promise:Promise.reject(new Error("Frappe API is unavailable in actual mode.")),cancel:()=>!1};let n=null,s=!1;return{promise:new Promise((o,a)=>{n=window.frappe.call({method:Cs.SUPPORT,args:{message:e},callback(l){s=!0,o(l.message)},error(l){s=!0,a(l)}})}),cancel:()=>s||!n||typeof n.abort!="function"?!1:(n.abort(),s=!0,!0)}}function Mc(e="actual"){return Bo(Cs.SETTINGS,{},e)}function Oc(e,t="Zayd",n="actual"){return Bo(Cs.TTS,{text:e,voice_id:t},n)}function Sr(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var cn=Sr();function Ho(e){cn=e}var fn={exec:()=>null};function le(e,t=""){let n=typeof e=="string"?e:e.source,s={replace:(r,i)=>{let o=typeof i=="string"?i:i.source;return o=o.replace(We.caret,"$1"),n=n.replace(r,o),s},getRegex:()=>new RegExp(n,t)};return s}var Lc=((e="")=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:e=>new RegExp(`^ {0,${Math.min(3,e-1)}}>`)},$c=/^(?:[ \t]*(?:\n|$))+/,Dc=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Nc=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Kn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Fc=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Er=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,zo=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Uo=le(zo).replace(/bull/g,Er).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Bc=le(zo).replace(/bull/g,Er).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ar=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Hc=/^[^\n]+/,Rr=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,zc=le(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",Rr).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Uc=le(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Er).getRegex(),Ps="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Cr=/|$))/,jc=le("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Cr).replace("tag",Ps).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),jo=le(Ar).replace("hr",Kn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ps).getRegex(),Vc=le(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",jo).getRegex(),Pr={blockquote:Vc,code:Dc,def:zc,fences:Nc,heading:Fc,hr:Kn,html:jc,lheading:Uo,list:Uc,newline:$c,paragraph:jo,table:fn,text:Hc},Vo=le("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Kn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ps).getRegex(),qc={...Pr,lheading:Bc,table:Vo,paragraph:le(Ar).replace("hr",Kn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Vo).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Ps).getRegex()},Wc={...Pr,html:le(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Cr).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:fn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:le(Ar).replace("hr",Kn).replace("heading",` *#{1,6} *[^ -]`).replace("lheading",Uo).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Gc=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Kc=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,qo=/^( {2,}|\\)\n(?!\s*$)/,Yc=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Lc?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Go=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,ef=le(Go,"u").replace(/punct/g,_n).getRegex(),tf=le(Go,"u").replace(/punct/g,Wo).getRegex(),Ko="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",nf=le(Ko,"gu").replace(/notPunctSpace/g,Ir).replace(/punctSpace/g,Is).replace(/punct/g,_n).getRegex(),sf=le(Ko,"gu").replace(/notPunctSpace/g,Qc).replace(/punctSpace/g,Xc).replace(/punct/g,Wo).getRegex(),rf=le("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Ir).replace(/punctSpace/g,Is).replace(/punct/g,_n).getRegex(),of=le(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,_n).getRegex(),lf="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",af=le(lf,"gu").replace(/notPunctSpace/g,Ir).replace(/punctSpace/g,Is).replace(/punct/g,_n).getRegex(),uf=le(/\\(punct)/,"gu").replace(/punct/g,_n).getRegex(),cf=le(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ff=le(Cr).replace("(?:-->|$)","-->").getRegex(),pf=le("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",ff).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Ms=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,df=le(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",Ms).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Yo=le(/^!?\[(label)\]\[(ref)\]/).replace("label",Ms).replace("ref",Rr).getRegex(),Zo=le(/^!?\[(ref)\](?:\[\])?/).replace("ref",Rr).getRegex(),hf=le("reflink|nolink(?!\\()","g").replace("reflink",Yo).replace("nolink",Zo).getRegex(),Xo=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Mr={_backpedal:fn,anyPunctuation:uf,autolink:cf,blockSkip:Jc,br:qo,code:Kc,del:fn,delLDelim:fn,delRDelim:fn,emStrongLDelim:ef,emStrongRDelimAst:nf,emStrongRDelimUnd:rf,escape:Gc,link:df,nolink:Zo,punctuation:Zc,reflink:Yo,reflinkSearch:hf,tag:pf,text:Yc,url:fn},gf={...Mr,link:le(/^!?\[(label)\]\((.*?)\)/).replace("label",Ms).getRegex(),reflink:le(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",Ms).getRegex()},Or={...Mr,emStrongRDelimAst:sf,emStrongLDelim:tf,delLDelim:of,delRDelim:af,url:le(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",Xo).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:le(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},Qo=e=>bf[e];function Ct(e,t){if(t){if(We.escapeTest.test(e))return e.replace(We.escapeReplace,Qo)}else if(We.escapeTestNoEncode.test(e))return e.replace(We.escapeReplaceNoEncode,Qo);return e}function Jo(e){try{e=encodeURI(e).replace(We.percentDecode,"%")}catch{return null}return e}function el(e,t){var i;let n=e.replace(We.findPipe,(o,a,l)=>{let f=!1,u=a;for(;--u>=0&&l[u]==="\\";)f=!f;return f?"|":" |"}),s=n.split(We.splitPipe),r=0;if(s[0].trim()||s.shift(),s.length>0&&!((i=s.at(-1))!=null&&i.trim())&&s.pop(),t)if(s.length>t)s.splice(t);else for(;s.length=0&&We.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(` -`)}function xf(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let s=0;s0?-2:-1}function yf(e,t=0){let n=t,s="";for(let r of e)if(r===" "){let i=4-n%4;s+=" ".repeat(i),n+=i}else s+=r,n++;return s}function nl(e,t,n,s,r){let i=t.href,o=t.title||null,a=e[1].replace(r.other.outputLinkReplace,"$1");s.state.inLink=!0;let l={type:e[0].charAt(0)==="!"?"image":"link",raw:n,href:i,title:o,text:a,tokens:s.inlineTokens(a)};return s.state.inLink=!1,l}function wf(e,t,n){let s=e.match(n.other.indentCodeCompensation);if(s===null)return t;let r=s[1];return t.split(` -`).map(i=>{let o=i.match(n.other.beginningSpace);if(o===null)return i;let[a]=o;return a.length>=r.length?i.slice(r.length):i}).join(` -`)}var Ls=class{constructor(e){_e(this,"options");_e(this,"rules");_e(this,"lexer");this.options=e||cn}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:tl(t[0]),s=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:s}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],s=wf(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:s}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let s=Qt(n,"#");(this.options.pedantic||!s||this.rules.other.endingSpaceChar.test(s))&&(n=s.trim())}return{type:"heading",raw:Qt(t[0],` -`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Qt(t[0],` -`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Qt(t[0],` +var vd = Object.defineProperty; var _d = (Pt, oe, mt) => oe in Pt ? vd(Pt, oe, { enumerable: !0, configurable: !0, writable: !0, value: mt }) : Pt[oe] = mt; var _e = (Pt, oe, mt) => _d(Pt, typeof oe != "symbol" ? oe + "" : oe, mt); (function () { + "use strict"; var Fs; function Pt(e) { const t = Object.create(null); for (const n of e.split(",")) t[n] = 1; return n => n in t } const oe = {}, mt = [], Jt = () => { }, Dl = () => !1, ts = e => e.charCodeAt(0) === 111 && e.charCodeAt(1) === 110 && (e.charCodeAt(2) > 122 || e.charCodeAt(2) < 97), Hs = e => e.startsWith("onUpdate:"), bt = Object.assign, Jr = (e, t) => { const n = e.indexOf(t); n > -1 && e.splice(n, 1) }, Nl = Object.prototype.hasOwnProperty, me = (e, t) => Nl.call(e, t), Q = Array.isArray, hn = e => ns(e) === "[object Map]", ei = e => ns(e) === "[object Set]", be = e => typeof e == "function", Pe = e => typeof e == "string", Ut = e => typeof e == "symbol", Re = e => e !== null && typeof e == "object", ti = e => (Re(e) || be(e)) && be(e.then) && be(e.catch), ni = Object.prototype.toString, ns = e => ni.call(e), Fl = e => ns(e).slice(8, -1), si = e => ns(e) === "[object Object]", zs = e => Pe(e) && e !== "NaN" && e[0] !== "-" && "" + parseInt(e, 10) === e, Pn = Pt(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"), ss = e => { const t = Object.create(null); return n => t[n] || (t[n] = e(n)) }, Bl = /-(\w)/g, jt = ss(e => e.replace(Bl, (t, n) => n ? n.toUpperCase() : "")), Hl = /\B([A-Z])/g, en = ss(e => e.replace(Hl, "-$1").toLowerCase()), ri = ss(e => e.charAt(0).toUpperCase() + e.slice(1)), Us = ss(e => e ? `on${ri(e)}` : ""), Vt = (e, t) => !Object.is(e, t), rs = (e, ...t) => { for (let n = 0; n < e.length; n++)e[n](...t) }, js = (e, t, n, s = !1) => { Object.defineProperty(e, t, { configurable: !0, enumerable: !1, writable: s, value: n }) }, Vs = e => { const t = parseFloat(e); return isNaN(t) ? e : t }, zl = e => { const t = Pe(e) ? Number(e) : NaN; return isNaN(t) ? e : t }; let ii; const is = () => ii || (ii = typeof globalThis != "undefined" ? globalThis : typeof self != "undefined" ? self : typeof window != "undefined" ? window : typeof global != "undefined" ? global : {}); function qs(e) { if (Q(e)) { const t = {}; for (let n = 0; n < e.length; n++) { const s = e[n], r = Pe(s) ? ql(s) : qs(s); if (r) for (const i in r) t[i] = r[i] } return t } else if (Pe(e) || Re(e)) return e } const Ul = /;(?![^(]*\))/g, jl = /:([^]+)/, Vl = /\/\*[^]*?\*\//g; function ql(e) { const t = {}; return e.replace(Vl, "").split(Ul).forEach(n => { if (n) { const s = n.split(jl); s.length > 1 && (t[s[0].trim()] = s[1].trim()) } }), t } function we(e) { let t = ""; if (Pe(e)) t = e; else if (Q(e)) for (let n = 0; n < e.length; n++) { const s = we(e[n]); s && (t += s + " ") } else if (Re(e)) for (const n in e) e[n] && (t += n + " "); return t.trim() } const Wl = Pt("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly"); function oi(e) { return !!e || e === "" } const li = e => !!(e && e.__v_isRef === !0), Je = e => Pe(e) ? e : e == null ? "" : Q(e) || Re(e) && (e.toString === ni || !be(e.toString)) ? li(e) ? Je(e.value) : JSON.stringify(e, ai, 2) : String(e), ai = (e, t) => li(t) ? ai(e, t.value) : hn(t) ? { [`Map(${t.size})`]: [...t.entries()].reduce((n, [s, r], i) => (n[Ws(s, i) + " =>"] = r, n), {}) } : ei(t) ? { [`Set(${t.size})`]: [...t.values()].map(n => Ws(n)) } : Ut(t) ? Ws(t) : Re(t) && !Q(t) && !si(t) ? String(t) : t, Ws = (e, t = "") => { var n; return Ut(e) ? `Symbol(${(n = e.description) != null ? n : t})` : e }; let et; class Gl { constructor(t = !1) { this.detached = t, this._active = !0, this._on = 0, this.effects = [], this.cleanups = [], this._isPaused = !1, this.parent = et, !t && et && (this.index = (et.scopes || (et.scopes = [])).push(this) - 1) } get active() { return this._active } pause() { if (this._active) { this._isPaused = !0; let t, n; if (this.scopes) for (t = 0, n = this.scopes.length; t < n; t++)this.scopes[t].pause(); for (t = 0, n = this.effects.length; t < n; t++)this.effects[t].pause() } } resume() { if (this._active && this._isPaused) { this._isPaused = !1; let t, n; if (this.scopes) for (t = 0, n = this.scopes.length; t < n; t++)this.scopes[t].resume(); for (t = 0, n = this.effects.length; t < n; t++)this.effects[t].resume() } } run(t) { if (this._active) { const n = et; try { return et = this, t() } finally { et = n } } } on() { ++this._on === 1 && (this.prevScope = et, et = this) } off() { this._on > 0 && --this._on === 0 && (et = this.prevScope, this.prevScope = void 0) } stop(t) { if (this._active) { this._active = !1; let n, s; for (n = 0, s = this.effects.length; n < s; n++)this.effects[n].stop(); for (this.effects.length = 0, n = 0, s = this.cleanups.length; n < s; n++)this.cleanups[n](); if (this.cleanups.length = 0, this.scopes) { for (n = 0, s = this.scopes.length; n < s; n++)this.scopes[n].stop(!0); this.scopes.length = 0 } if (!this.detached && this.parent && !t) { const r = this.parent.scopes.pop(); r && r !== this && (this.parent.scopes[this.index] = r, r.index = this.index) } this.parent = void 0 } } } function Kl() { return et } let Te; const Gs = new WeakSet; class ui { constructor(t) { this.fn = t, this.deps = void 0, this.depsTail = void 0, this.flags = 5, this.next = void 0, this.cleanup = void 0, this.scheduler = void 0, et && et.active && et.effects.push(this) } pause() { this.flags |= 64 } resume() { this.flags & 64 && (this.flags &= -65, Gs.has(this) && (Gs.delete(this), this.trigger())) } notify() { this.flags & 2 && !(this.flags & 32) || this.flags & 8 || fi(this) } run() { if (!(this.flags & 1)) return this.fn(); this.flags |= 2, mi(this), pi(this); const t = Te, n = xt; Te = this, xt = !0; try { return this.fn() } finally { di(this), Te = t, xt = n, this.flags &= -3 } } stop() { if (this.flags & 1) { for (let t = this.deps; t; t = t.nextDep)Xs(t); this.deps = this.depsTail = void 0, mi(this), this.onStop && this.onStop(), this.flags &= -2 } } trigger() { this.flags & 64 ? Gs.add(this) : this.scheduler ? this.scheduler() : this.runIfDirty() } runIfDirty() { Zs(this) && this.run() } get dirty() { return Zs(this) } } let ci = 0, In, Mn; function fi(e, t = !1) { if (e.flags |= 8, t) { e.next = Mn, Mn = e; return } e.next = In, In = e } function Ks() { ci++ } function Ys() { if (--ci > 0) return; if (Mn) { let t = Mn; for (Mn = void 0; t;) { const n = t.next; t.next = void 0, t.flags &= -9, t = n } } let e; for (; In;) { let t = In; for (In = void 0; t;) { const n = t.next; if (t.next = void 0, t.flags &= -9, t.flags & 1) try { t.trigger() } catch (s) { e || (e = s) } t = n } } if (e) throw e } function pi(e) { for (let t = e.deps; t; t = t.nextDep)t.version = -1, t.prevActiveLink = t.dep.activeLink, t.dep.activeLink = t } function di(e) { let t, n = e.depsTail, s = n; for (; s;) { const r = s.prevDep; s.version === -1 ? (s === n && (n = r), Xs(s), Yl(s)) : t = s, s.dep.activeLink = s.prevActiveLink, s.prevActiveLink = void 0, s = r } e.deps = t, e.depsTail = n } function Zs(e) { for (let t = e.deps; t; t = t.nextDep)if (t.dep.version !== t.version || t.dep.computed && (hi(t.dep.computed) || t.dep.version !== t.version)) return !0; return !!e._dirty } function hi(e) { if (e.flags & 4 && !(e.flags & 16) || (e.flags &= -17, e.globalVersion === On) || (e.globalVersion = On, !e.isSSR && e.flags & 128 && (!e.deps && !e._dirty || !Zs(e)))) return; e.flags |= 2; const t = e.dep, n = Te, s = xt; Te = e, xt = !0; try { pi(e); const r = e.fn(e._value); (t.version === 0 || Vt(r, e._value)) && (e.flags |= 128, e._value = r, t.version++) } catch (r) { throw t.version++, r } finally { Te = n, xt = s, di(e), e.flags &= -3 } } function Xs(e, t = !1) { const { dep: n, prevSub: s, nextSub: r } = e; if (s && (s.nextSub = r, e.prevSub = void 0), r && (r.prevSub = s, e.nextSub = void 0), n.subs === e && (n.subs = s, !s && n.computed)) { n.computed.flags &= -5; for (let i = n.computed.deps; i; i = i.nextDep)Xs(i, !0) } !t && !--n.sc && n.map && n.map.delete(n.key) } function Yl(e) { const { prevDep: t, nextDep: n } = e; t && (t.nextDep = n, e.prevDep = void 0), n && (n.prevDep = t, e.nextDep = void 0) } let xt = !0; const gi = []; function It() { gi.push(xt), xt = !1 } function Mt() { const e = gi.pop(); xt = e === void 0 ? !0 : e } function mi(e) { const { cleanup: t } = e; if (e.cleanup = void 0, t) { const n = Te; Te = void 0; try { t() } finally { Te = n } } } let On = 0; class Zl { constructor(t, n) { this.sub = t, this.dep = n, this.version = n.version, this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0 } } class Qs { constructor(t) { this.computed = t, this.version = 0, this.activeLink = void 0, this.subs = void 0, this.map = void 0, this.key = void 0, this.sc = 0, this.__v_skip = !0 } track(t) { if (!Te || !xt || Te === this.computed) return; let n = this.activeLink; if (n === void 0 || n.sub !== Te) n = this.activeLink = new Zl(Te, this), Te.deps ? (n.prevDep = Te.depsTail, Te.depsTail.nextDep = n, Te.depsTail = n) : Te.deps = Te.depsTail = n, bi(n); else if (n.version === -1 && (n.version = this.version, n.nextDep)) { const s = n.nextDep; s.prevDep = n.prevDep, n.prevDep && (n.prevDep.nextDep = s), n.prevDep = Te.depsTail, n.nextDep = void 0, Te.depsTail.nextDep = n, Te.depsTail = n, Te.deps === n && (Te.deps = s) } return n } trigger(t) { this.version++, On++, this.notify(t) } notify(t) { Ks(); try { for (let n = this.subs; n; n = n.prevSub)n.sub.notify() && n.sub.dep.notify() } finally { Ys() } } } function bi(e) { if (e.dep.sc++, e.sub.flags & 4) { const t = e.dep.computed; if (t && !e.dep.subs) { t.flags |= 20; for (let s = t.deps; s; s = s.nextDep)bi(s) } const n = e.dep.subs; n !== e && (e.prevSub = n, n && (n.nextSub = e)), e.dep.subs = e } } const Js = new WeakMap, tn = Symbol(""), er = Symbol(""), Ln = Symbol(""); function je(e, t, n) { if (xt && Te) { let s = Js.get(e); s || Js.set(e, s = new Map); let r = s.get(n); r || (s.set(n, r = new Qs), r.map = s, r.key = n), r.track() } } function Ot(e, t, n, s, r, i) { const o = Js.get(e); if (!o) { On++; return } const a = l => { l && l.trigger() }; if (Ks(), t === "clear") o.forEach(a); else { const l = Q(e), f = l && zs(n); if (l && n === "length") { const u = Number(s); o.forEach((d, g) => { (g === "length" || g === Ln || !Ut(g) && g >= u) && a(d) }) } else switch ((n !== void 0 || o.has(void 0)) && a(o.get(n)), f && a(o.get(Ln)), t) { case "add": l ? f && a(o.get("length")) : (a(o.get(tn)), hn(e) && a(o.get(er))); break; case "delete": l || (a(o.get(tn)), hn(e) && a(o.get(er))); break; case "set": hn(e) && a(o.get(tn)); break } } Ys() } function gn(e) { const t = ue(e); return t === e ? t : (je(t, "iterate", Ln), ut(e) ? t : t.map(Be)) } function os(e) { return je(e = ue(e), "iterate", Ln), e } const Xl = { __proto__: null, [Symbol.iterator]() { return tr(this, Symbol.iterator, Be) }, concat(...e) { return gn(this).concat(...e.map(t => Q(t) ? gn(t) : t)) }, entries() { return tr(this, "entries", e => (e[1] = Be(e[1]), e)) }, every(e, t) { return Lt(this, "every", e, t, void 0, arguments) }, filter(e, t) { return Lt(this, "filter", e, t, n => n.map(Be), arguments) }, find(e, t) { return Lt(this, "find", e, t, Be, arguments) }, findIndex(e, t) { return Lt(this, "findIndex", e, t, void 0, arguments) }, findLast(e, t) { return Lt(this, "findLast", e, t, Be, arguments) }, findLastIndex(e, t) { return Lt(this, "findLastIndex", e, t, void 0, arguments) }, forEach(e, t) { return Lt(this, "forEach", e, t, void 0, arguments) }, includes(...e) { return nr(this, "includes", e) }, indexOf(...e) { return nr(this, "indexOf", e) }, join(e) { return gn(this).join(e) }, lastIndexOf(...e) { return nr(this, "lastIndexOf", e) }, map(e, t) { return Lt(this, "map", e, t, void 0, arguments) }, pop() { return $n(this, "pop") }, push(...e) { return $n(this, "push", e) }, reduce(e, ...t) { return xi(this, "reduce", e, t) }, reduceRight(e, ...t) { return xi(this, "reduceRight", e, t) }, shift() { return $n(this, "shift") }, some(e, t) { return Lt(this, "some", e, t, void 0, arguments) }, splice(...e) { return $n(this, "splice", e) }, toReversed() { return gn(this).toReversed() }, toSorted(e) { return gn(this).toSorted(e) }, toSpliced(...e) { return gn(this).toSpliced(...e) }, unshift(...e) { return $n(this, "unshift", e) }, values() { return tr(this, "values", Be) } }; function tr(e, t, n) { const s = os(e), r = s[t](); return s !== e && !ut(e) && (r._next = r.next, r.next = () => { const i = r._next(); return i.value && (i.value = n(i.value)), i }), r } const Ql = Array.prototype; function Lt(e, t, n, s, r, i) { const o = os(e), a = o !== e && !ut(e), l = o[t]; if (l !== Ql[t]) { const d = l.apply(e, i); return a ? Be(d) : d } let f = n; o !== e && (a ? f = function (d, g) { return n.call(this, Be(d), g, e) } : n.length > 2 && (f = function (d, g) { return n.call(this, d, g, e) })); const u = l.call(o, f, s); return a && r ? r(u) : u } function xi(e, t, n, s) { const r = os(e); let i = n; return r !== e && (ut(e) ? n.length > 3 && (i = function (o, a, l) { return n.call(this, o, a, l, e) }) : i = function (o, a, l) { return n.call(this, o, Be(a), l, e) }), r[t](i, ...s) } function nr(e, t, n) { const s = ue(e); je(s, "iterate", Ln); const r = s[t](...n); return (r === -1 || r === !1) && rr(n[0]) ? (n[0] = ue(n[0]), s[t](...n)) : r } function $n(e, t, n = []) { It(), Ks(); const s = ue(e)[t].apply(e, n); return Ys(), Mt(), s } const Jl = Pt("__proto__,__v_isRef,__isVue"), yi = new Set(Object.getOwnPropertyNames(Symbol).filter(e => e !== "arguments" && e !== "caller").map(e => Symbol[e]).filter(Ut)); function ea(e) { Ut(e) || (e = String(e)); const t = ue(this); return je(t, "has", e), t.hasOwnProperty(e) } class wi { constructor(t = !1, n = !1) { this._isReadonly = t, this._isShallow = n } get(t, n, s) { if (n === "__v_skip") return t.__v_skip; const r = this._isReadonly, i = this._isShallow; if (n === "__v_isReactive") return !r; if (n === "__v_isReadonly") return r; if (n === "__v_isShallow") return i; if (n === "__v_raw") return s === (r ? i ? Ei : Si : i ? ki : Ti).get(t) || Object.getPrototypeOf(t) === Object.getPrototypeOf(s) ? t : void 0; const o = Q(t); if (!r) { let l; if (o && (l = Xl[n])) return l; if (n === "hasOwnProperty") return ea } const a = Reflect.get(t, n, Ve(t) ? t : s); return (Ut(n) ? yi.has(n) : Jl(n)) || (r || je(t, "get", n), i) ? a : Ve(a) ? o && zs(n) ? a : a.value : Re(a) ? r ? Ai(a) : cs(a) : a } } class vi extends wi { constructor(t = !1) { super(!1, t) } set(t, n, s, r) { let i = t[n]; if (!this._isShallow) { const l = qt(i); if (!ut(s) && !qt(s) && (i = ue(i), s = ue(s)), !Q(t) && Ve(i) && !Ve(s)) return l ? !1 : (i.value = s, !0) } const o = Q(t) && zs(n) ? Number(n) < t.length : me(t, n), a = Reflect.set(t, n, s, Ve(t) ? t : r); return t === ue(r) && (o ? Vt(s, i) && Ot(t, "set", n, s) : Ot(t, "add", n, s)), a } deleteProperty(t, n) { const s = me(t, n); t[n]; const r = Reflect.deleteProperty(t, n); return r && s && Ot(t, "delete", n, void 0), r } has(t, n) { const s = Reflect.has(t, n); return (!Ut(n) || !yi.has(n)) && je(t, "has", n), s } ownKeys(t) { return je(t, "iterate", Q(t) ? "length" : tn), Reflect.ownKeys(t) } } class _i extends wi { constructor(t = !1) { super(!0, t) } set(t, n) { return !0 } deleteProperty(t, n) { return !0 } } const ta = new vi, na = new _i, sa = new vi(!0), ra = new _i(!0), sr = e => e, ls = e => Reflect.getPrototypeOf(e); function ia(e, t, n) { return function (...s) { const r = this.__v_raw, i = ue(r), o = hn(i), a = e === "entries" || e === Symbol.iterator && o, l = e === "keys" && o, f = r[e](...s), u = n ? sr : t ? ps : Be; return !t && je(i, "iterate", l ? er : tn), { next() { const { value: d, done: g } = f.next(); return g ? { value: d, done: g } : { value: a ? [u(d[0]), u(d[1])] : u(d), done: g } }, [Symbol.iterator]() { return this } } } } function as(e) { return function (...t) { return e === "delete" ? !1 : e === "clear" ? void 0 : this } } function oa(e, t) { const n = { get(r) { const i = this.__v_raw, o = ue(i), a = ue(r); e || (Vt(r, a) && je(o, "get", r), je(o, "get", a)); const { has: l } = ls(o), f = t ? sr : e ? ps : Be; if (l.call(o, r)) return f(i.get(r)); if (l.call(o, a)) return f(i.get(a)); i !== o && i.get(r) }, get size() { const r = this.__v_raw; return !e && je(ue(r), "iterate", tn), Reflect.get(r, "size", r) }, has(r) { const i = this.__v_raw, o = ue(i), a = ue(r); return e || (Vt(r, a) && je(o, "has", r), je(o, "has", a)), r === a ? i.has(r) : i.has(r) || i.has(a) }, forEach(r, i) { const o = this, a = o.__v_raw, l = ue(a), f = t ? sr : e ? ps : Be; return !e && je(l, "iterate", tn), a.forEach((u, d) => r.call(i, f(u), f(d), o)) } }; return bt(n, e ? { add: as("add"), set: as("set"), delete: as("delete"), clear: as("clear") } : { add(r) { !t && !ut(r) && !qt(r) && (r = ue(r)); const i = ue(this); return ls(i).has.call(i, r) || (i.add(r), Ot(i, "add", r, r)), this }, set(r, i) { !t && !ut(i) && !qt(i) && (i = ue(i)); const o = ue(this), { has: a, get: l } = ls(o); let f = a.call(o, r); f || (r = ue(r), f = a.call(o, r)); const u = l.call(o, r); return o.set(r, i), f ? Vt(i, u) && Ot(o, "set", r, i) : Ot(o, "add", r, i), this }, delete(r) { const i = ue(this), { has: o, get: a } = ls(i); let l = o.call(i, r); l || (r = ue(r), l = o.call(i, r)), a && a.call(i, r); const f = i.delete(r); return l && Ot(i, "delete", r, void 0), f }, clear() { const r = ue(this), i = r.size !== 0, o = r.clear(); return i && Ot(r, "clear", void 0, void 0), o } }), ["keys", "values", "entries", Symbol.iterator].forEach(r => { n[r] = ia(r, e, t) }), n } function us(e, t) { const n = oa(e, t); return (s, r, i) => r === "__v_isReactive" ? !e : r === "__v_isReadonly" ? e : r === "__v_raw" ? s : Reflect.get(me(n, r) && r in s ? n : s, r, i) } const la = { get: us(!1, !1) }, aa = { get: us(!1, !0) }, ua = { get: us(!0, !1) }, ca = { get: us(!0, !0) }, Ti = new WeakMap, ki = new WeakMap, Si = new WeakMap, Ei = new WeakMap; function fa(e) { switch (e) { case "Object": case "Array": return 1; case "Map": case "Set": case "WeakMap": case "WeakSet": return 2; default: return 0 } } function pa(e) { return e.__v_skip || !Object.isExtensible(e) ? 0 : fa(Fl(e)) } function cs(e) { return qt(e) ? e : fs(e, !1, ta, la, Ti) } function da(e) { return fs(e, !1, sa, aa, ki) } function Ai(e) { return fs(e, !0, na, ua, Si) } function kd(e) { return fs(e, !0, ra, ca, Ei) } function fs(e, t, n, s, r) { if (!Re(e) || e.__v_raw && !(t && e.__v_isReactive)) return e; const i = pa(e); if (i === 0) return e; const o = r.get(e); if (o) return o; const a = new Proxy(e, i === 2 ? s : n); return r.set(e, a), a } function mn(e) { return qt(e) ? mn(e.__v_raw) : !!(e && e.__v_isReactive) } function qt(e) { return !!(e && e.__v_isReadonly) } function ut(e) { return !!(e && e.__v_isShallow) } function rr(e) { return e ? !!e.__v_raw : !1 } function ue(e) { const t = e && e.__v_raw; return t ? ue(t) : e } function ha(e) { return !me(e, "__v_skip") && Object.isExtensible(e) && js(e, "__v_skip", !0), e } const Be = e => Re(e) ? cs(e) : e, ps = e => Re(e) ? Ai(e) : e; function Ve(e) { return e ? e.__v_isRef === !0 : !1 } function J(e) { return ga(e, !1) } function ga(e, t) { return Ve(e) ? e : new ma(e, t) } class ma { constructor(t, n) { this.dep = new Qs, this.__v_isRef = !0, this.__v_isShallow = !1, this._rawValue = n ? t : ue(t), this._value = n ? t : Be(t), this.__v_isShallow = n } get value() { return this.dep.track(), this._value } set value(t) { const n = this._rawValue, s = this.__v_isShallow || ut(t) || qt(t); t = s ? t : ue(t), Vt(t, n) && (this._rawValue = t, this._value = s ? t : Be(t), this.dep.trigger()) } } function ba(e) { return Ve(e) ? e.value : e } const xa = { get: (e, t, n) => t === "__v_raw" ? e : ba(Reflect.get(e, t, n)), set: (e, t, n, s) => { const r = e[t]; return Ve(r) && !Ve(n) ? (r.value = n, !0) : Reflect.set(e, t, n, s) } }; function Ri(e) { return mn(e) ? e : new Proxy(e, xa) } class ya { constructor(t, n, s) { this.fn = t, this.setter = n, this._value = void 0, this.dep = new Qs(this), this.__v_isRef = !0, this.deps = void 0, this.depsTail = void 0, this.flags = 16, this.globalVersion = On - 1, this.next = void 0, this.effect = this, this.__v_isReadonly = !n, this.isSSR = s } notify() { if (this.flags |= 16, !(this.flags & 8) && Te !== this) return fi(this, !0), !0 } get value() { const t = this.dep.track(); return hi(this), t && (t.version = this.dep.version), this._value } set value(t) { this.setter && this.setter(t) } } function wa(e, t, n = !1) { let s, r; return be(e) ? s = e : (s = e.get, r = e.set), new ya(s, r, n) } const ds = {}, hs = new WeakMap; let nn; function va(e, t = !1, n = nn) { if (n) { let s = hs.get(n); s || hs.set(n, s = []), s.push(e) } } function _a(e, t, n = oe) { const { immediate: s, deep: r, once: i, scheduler: o, augmentJob: a, call: l } = n, f = $ => r ? $ : ut($) || r === !1 || r === 0 ? $t($, 1) : $t($); let u, d, g, y, E = !1, x = !1; if (Ve(e) ? (d = () => e.value, E = ut(e)) : mn(e) ? (d = () => f(e), E = !0) : Q(e) ? (x = !0, E = e.some($ => mn($) || ut($)), d = () => e.map($ => { if (Ve($)) return $.value; if (mn($)) return f($); if (be($)) return l ? l($, 2) : $() })) : be(e) ? t ? d = l ? () => l(e, 2) : e : d = () => { if (g) { It(); try { g() } finally { Mt() } } const $ = nn; nn = u; try { return l ? l(e, 3, [y]) : e(y) } finally { nn = $ } } : d = Jt, t && r) { const $ = d, z = r === !0 ? 1 / 0 : r; d = () => $t($(), z) } const M = Kl(), m = () => { u.stop(), M && M.active && Jr(M.effects, u) }; if (i && t) { const $ = t; t = (...z) => { $(...z), m() } } let H = x ? new Array(e.length).fill(ds) : ds; const Y = $ => { if (!(!(u.flags & 1) || !u.dirty && !$)) if (t) { const z = u.run(); if (r || E || (x ? z.some((O, P) => Vt(O, H[P])) : Vt(z, H))) { g && g(); const O = nn; nn = u; try { const P = [z, H === ds ? void 0 : x && H[0] === ds ? [] : H, y]; H = z, l ? l(t, 3, P) : t(...P) } finally { nn = O } } } else u.run() }; return a && a(Y), u = new ui(d), u.scheduler = o ? () => o(Y, !1) : Y, y = $ => va($, !1, u), g = u.onStop = () => { const $ = hs.get(u); if ($) { if (l) l($, 4); else for (const z of $) z(); hs.delete(u) } }, t ? s ? Y(!0) : H = u.run() : o ? o(Y.bind(null, !0), !0) : u.run(), m.pause = u.pause.bind(u), m.resume = u.resume.bind(u), m.stop = m, m } function $t(e, t = 1 / 0, n) { if (t <= 0 || !Re(e) || e.__v_skip || (n = n || new Set, n.has(e))) return e; if (n.add(e), t--, Ve(e)) $t(e.value, t, n); else if (Q(e)) for (let s = 0; s < e.length; s++)$t(e[s], t, n); else if (ei(e) || hn(e)) e.forEach(s => { $t(s, t, n) }); else if (si(e)) { for (const s in e) $t(e[s], t, n); for (const s of Object.getOwnPropertySymbols(e)) Object.prototype.propertyIsEnumerable.call(e, s) && $t(e[s], t, n) } return e } const Dn = []; let ir = !1; function Sd(e, ...t) { + if (ir) return; ir = !0, It(); const n = Dn.length ? Dn[Dn.length - 1].component : null, s = n && n.appContext.config.warnHandler, r = Ta(); if (s) bn(s, n, 11, [e + t.map(i => { var o, a; return (a = (o = i.toString) == null ? void 0 : o.call(i)) != null ? a : JSON.stringify(i) }).join(""), n && n.proxy, r.map(({ vnode: i }) => `at <${go(n, i.type)}>`).join(` +`), r]); else { + const i = [`[Vue warn]: ${e}`, ...t]; r.length && i.push(` +`, ...ka(r)) + } Mt(), ir = !1 + } function Ta() { let e = Dn[Dn.length - 1]; if (!e) return []; const t = []; for (; e;) { const n = t[0]; n && n.vnode === e ? n.recurseCount++ : t.push({ vnode: e, recurseCount: 0 }); const s = e.component && e.component.parent; e = s && s.vnode } return t } function ka(e) { + const t = []; return e.forEach((n, s) => { + t.push(...s === 0 ? [] : [` +`], ...Sa(n)) + }), t + } function Sa({ vnode: e, recurseCount: t }) { const n = t > 0 ? `... (${t} recursive calls)` : "", s = e.component ? e.component.parent == null : !1, r = ` at <${go(e.component, e.type, s)}`, i = ">" + n; return e.props ? [r, ...Ea(e.props), i] : [r + i] } function Ea(e) { const t = [], n = Object.keys(e); return n.slice(0, 3).forEach(s => { t.push(...Ci(s, e[s])) }), n.length > 3 && t.push(" ..."), t } function Ci(e, t, n) { return Pe(t) ? (t = JSON.stringify(t), n ? t : [`${e}=${t}`]) : typeof t == "number" || typeof t == "boolean" || t == null ? n ? t : [`${e}=${t}`] : Ve(t) ? (t = Ci(e, ue(t.value), !0), n ? t : [`${e}=Ref<`, t, ">"]) : be(t) ? [`${e}=fn${t.name ? `<${t.name}>` : ""}`] : (t = ue(t), n ? t : [`${e}=`, t]) } function bn(e, t, n, s) { try { return s ? e(...s) : e() } catch (r) { gs(r, t, n) } } function Tt(e, t, n, s) { if (be(e)) { const r = bn(e, t, n, s); return r && ti(r) && r.catch(i => { gs(i, t, n) }), r } if (Q(e)) { const r = []; for (let i = 0; i < e.length; i++)r.push(Tt(e[i], t, n, s)); return r } } function gs(e, t, n, s = !0) { const r = t ? t.vnode : null, { errorHandler: i, throwUnhandledErrorInProduction: o } = t && t.appContext.config || oe; if (t) { let a = t.parent; const l = t.proxy, f = `https://vuejs.org/error-reference/#runtime-${n}`; for (; a;) { const u = a.ec; if (u) { for (let d = 0; d < u.length; d++)if (u[d](e, l, f) === !1) return } a = a.parent } if (i) { It(), bn(i, null, 10, [e, l, f]), Mt(); return } } Aa(e, n, r, s, o) } function Aa(e, t, n, s = !0, r = !1) { if (r) throw e } const Ke = []; let kt = -1; const xn = []; let Wt = null, yn = 0; const Pi = Promise.resolve(); let ms = null; function St(e) { const t = ms || Pi; return e ? t.then(this ? e.bind(this) : e) : t } function Ra(e) { let t = kt + 1, n = Ke.length; for (; t < n;) { const s = t + n >>> 1, r = Ke[s], i = Nn(r); i < e || i === e && r.flags & 2 ? t = s + 1 : n = s } return t } function or(e) { if (!(e.flags & 1)) { const t = Nn(e), n = Ke[Ke.length - 1]; !n || !(e.flags & 2) && t >= Nn(n) ? Ke.push(e) : Ke.splice(Ra(t), 0, e), e.flags |= 1, Ii() } } function Ii() { ms || (ms = Pi.then(Li)) } function Ca(e) { Q(e) ? xn.push(...e) : Wt && e.id === -1 ? Wt.splice(yn + 1, 0, e) : e.flags & 1 || (xn.push(e), e.flags |= 1), Ii() } function Mi(e, t, n = kt + 1) { for (; n < Ke.length; n++) { const s = Ke[n]; if (s && s.flags & 2) { if (e && s.id !== e.uid) continue; Ke.splice(n, 1), n--, s.flags & 4 && (s.flags &= -2), s(), s.flags & 4 || (s.flags &= -2) } } } function Oi(e) { if (xn.length) { const t = [...new Set(xn)].sort((n, s) => Nn(n) - Nn(s)); if (xn.length = 0, Wt) { Wt.push(...t); return } for (Wt = t, yn = 0; yn < Wt.length; yn++) { const n = Wt[yn]; n.flags & 4 && (n.flags &= -2), n.flags & 8 || n(), n.flags &= -2 } Wt = null, yn = 0 } } const Nn = e => e.id == null ? e.flags & 2 ? -1 : 1 / 0 : e.id; function Li(e) { try { for (kt = 0; kt < Ke.length; kt++) { const t = Ke[kt]; t && !(t.flags & 8) && (t.flags & 4 && (t.flags &= -2), bn(t, t.i, t.i ? 15 : 14), t.flags & 4 || (t.flags &= -2)) } } finally { for (; kt < Ke.length; kt++) { const t = Ke[kt]; t && (t.flags &= -2) } kt = -1, Ke.length = 0, Oi(), ms = null, (Ke.length || xn.length) && Li() } } let ct = null, $i = null; function bs(e) { const t = ct; return ct = e, $i = e && e.type.__scopeId || null, t } function Di(e, t = ct, n) { if (!t || e._n) return e; const s = (...r) => { s._d && oo(-1); const i = bs(t); let o; try { o = e(...r) } finally { bs(i), s._d && oo(1) } return o }; return s._n = !0, s._c = !0, s._d = !0, s } function Pa(e, t) { if (ct === null) return e; const n = As(ct), s = e.dirs || (e.dirs = []); for (let r = 0; r < t.length; r++) { let [i, o, a, l = oe] = t[r]; i && (be(i) && (i = { mounted: i, updated: i }), i.deep && $t(o), s.push({ dir: i, instance: n, value: o, oldValue: void 0, arg: a, modifiers: l })) } return e } function sn(e, t, n, s) { const r = e.dirs, i = t && t.dirs; for (let o = 0; o < r.length; o++) { const a = r[o]; i && (a.oldValue = i[o].value); let l = a.dir[s]; l && (It(), Tt(l, n, 8, [e.el, a, e, t]), Mt()) } } const Ia = Symbol("_vte"), Ni = e => e.__isTeleport, Gt = Symbol("_leaveCb"), xs = Symbol("_enterCb"); function Ma() { const e = { isMounted: !1, isLeaving: !1, isUnmounting: !1, leavingVNodes: new Map }; return zn(() => { e.isMounted = !0 }), ys(() => { e.isUnmounting = !0 }), e } const ft = [Function, Array], Fi = { mode: String, appear: Boolean, persisted: Boolean, onBeforeEnter: ft, onEnter: ft, onAfterEnter: ft, onEnterCancelled: ft, onBeforeLeave: ft, onLeave: ft, onAfterLeave: ft, onLeaveCancelled: ft, onBeforeAppear: ft, onAppear: ft, onAfterAppear: ft, onAppearCancelled: ft }, Bi = e => { const t = e.subTree; return t.component ? Bi(t.component) : t }, Oa = { name: "BaseTransition", props: Fi, setup(e, { slots: t }) { const n = uo(), s = Ma(); return () => { const r = t.default && ji(t.default(), !0); if (!r || !r.length) return; const i = Hi(r), o = ue(e), { mode: a } = o; if (s.isLeaving) return ar(i); const l = Ui(i); if (!l) return ar(i); let f = lr(l, o, s, n, d => f = d); l.type !== Ye && Fn(l, f); let u = n.subTree && Ui(n.subTree); if (u && u.type !== Ye && !ln(l, u) && Bi(n).type !== Ye) { let d = lr(u, o, s, n); if (Fn(u, d), a === "out-in" && l.type !== Ye) return s.isLeaving = !0, d.afterLeave = () => { s.isLeaving = !1, n.job.flags & 8 || n.update(), delete d.afterLeave, u = void 0 }, ar(i); a === "in-out" && l.type !== Ye ? d.delayLeave = (g, y, E) => { const x = zi(s, u); x[String(u.key)] = u, g[Gt] = () => { y(), g[Gt] = void 0, delete f.delayedLeave, u = void 0 }, f.delayedLeave = () => { E(), delete f.delayedLeave, u = void 0 } } : u = void 0 } else u && (u = void 0); return i } } }; function Hi(e) { let t = e[0]; if (e.length > 1) { for (const n of e) if (n.type !== Ye) { t = n; break } } return t } const La = Oa; function zi(e, t) { const { leavingVNodes: n } = e; let s = n.get(t.type); return s || (s = Object.create(null), n.set(t.type, s)), s } function lr(e, t, n, s, r) { const { appear: i, mode: o, persisted: a = !1, onBeforeEnter: l, onEnter: f, onAfterEnter: u, onEnterCancelled: d, onBeforeLeave: g, onLeave: y, onAfterLeave: E, onLeaveCancelled: x, onBeforeAppear: M, onAppear: m, onAfterAppear: H, onAppearCancelled: Y } = t, $ = String(e.key), z = zi(n, e), O = (V, se) => { V && Tt(V, s, 9, se) }, P = (V, se) => { const fe = se[1]; O(V, se), Q(V) ? V.every(D => D.length <= 1) && fe() : V.length <= 1 && fe() }, ee = { mode: o, persisted: a, beforeEnter(V) { let se = l; if (!n.isMounted) if (i) se = M || l; else return; V[Gt] && V[Gt](!0); const fe = z[$]; fe && ln(e, fe) && fe.el[Gt] && fe.el[Gt](), O(se, [V]) }, enter(V) { let se = f, fe = u, D = d; if (!n.isMounted) if (i) se = m || f, fe = H || u, D = Y || d; else return; let Z = !1; const Se = V[xs] = Ue => { Z || (Z = !0, Ue ? O(D, [V]) : O(fe, [V]), ee.delayedLeave && ee.delayedLeave(), V[xs] = void 0) }; se ? P(se, [V, Se]) : Se() }, leave(V, se) { const fe = String(e.key); if (V[xs] && V[xs](!0), n.isUnmounting) return se(); O(g, [V]); let D = !1; const Z = V[Gt] = Se => { D || (D = !0, se(), Se ? O(x, [V]) : O(E, [V]), V[Gt] = void 0, z[fe] === e && delete z[fe]) }; z[fe] = e, y ? P(y, [V, Z]) : Z() }, clone(V) { const se = lr(V, t, n, s, r); return r && r(se), se } }; return ee } function ar(e) { if (ur(e)) return e = Kt(e), e.children = null, e } function Ui(e) { if (!ur(e)) return Ni(e.type) && e.children ? Hi(e.children) : e; if (e.component) return e.component.subTree; const { shapeFlag: t, children: n } = e; if (n) { if (t & 16) return n[0]; if (t & 32 && be(n.default)) return n.default() } } function Fn(e, t) { e.shapeFlag & 6 && e.component ? (e.transition = t, Fn(e.component.subTree, t)) : e.shapeFlag & 128 ? (e.ssContent.transition = t.clone(e.ssContent), e.ssFallback.transition = t.clone(e.ssFallback)) : e.transition = t } function ji(e, t = !1, n) { let s = [], r = 0; for (let i = 0; i < e.length; i++) { let o = e[i]; const a = n == null ? o.key : String(n) + String(o.key != null ? o.key : i); o.type === He ? (o.patchFlag & 128 && r++, s = s.concat(ji(o.children, t, a))) : (t || o.type !== Ye) && s.push(a != null ? Kt(o, { key: a }) : o) } if (r > 1) for (let i = 0; i < s.length; i++)s[i].patchFlag = -2; return s } function $a(e) { e.ids = [e.ids[0] + e.ids[2]++ + "-", 0, 0] } function Bn(e, t, n, s, r = !1) { if (Q(e)) { e.forEach((E, x) => Bn(E, t && (Q(t) ? t[x] : t), n, s, r)); return } if (Hn(s) && !r) { s.shapeFlag & 512 && s.type.__asyncResolved && s.component.subTree.component && Bn(e, t, n, s.component.subTree); return } const i = s.shapeFlag & 4 ? As(s.component) : s.el, o = r ? null : i, { i: a, r: l } = e, f = t && t.r, u = a.refs === oe ? a.refs = {} : a.refs, d = a.setupState, g = ue(d), y = d === oe ? () => !1 : E => me(g, E); if (f != null && f !== l && (Pe(f) ? (u[f] = null, y(f) && (d[f] = null)) : Ve(f) && (f.value = null)), be(l)) bn(l, a, 12, [o, u]); else { const E = Pe(l), x = Ve(l); if (E || x) { const M = () => { if (e.f) { const m = E ? y(l) ? d[l] : u[l] : l.value; r ? Q(m) && Jr(m, i) : Q(m) ? m.includes(i) || m.push(i) : E ? (u[l] = [i], y(l) && (d[l] = u[l])) : (l.value = [i], e.k && (u[e.k] = l.value)) } else E ? (u[l] = o, y(l) && (d[l] = o)) : x && (l.value = o, e.k && (u[e.k] = o)) }; o ? (M.id = -1, rt(M, n)) : M() } } } is().requestIdleCallback, is().cancelIdleCallback; const Hn = e => !!e.type.__asyncLoader, ur = e => e.type.__isKeepAlive; function Da(e, t, n = Zt, s = !1) { if (n) { const r = n[e] || (n[e] = []), i = t.__weh || (t.__weh = (...o) => { It(); const a = yr(n), l = Tt(t, n, e, o); return a(), Mt(), l }); return s ? r.unshift(i) : r.push(i), i } } const Vi = e => (t, n = Zt) => { (!qn || e === "sp") && Da(e, (...s) => t(...s), n) }, zn = Vi("m"), ys = Vi("bum"), Na = Symbol.for("v-ndc"); function ws(e, t, n, s) { let r; const i = n, o = Q(e); if (o || Pe(e)) { const a = o && mn(e); let l = !1, f = !1; a && (l = !ut(e), f = qt(e), e = os(e)), r = new Array(e.length); for (let u = 0, d = e.length; u < d; u++)r[u] = t(l ? f ? ps(Be(e[u])) : Be(e[u]) : e[u], u, void 0, i) } else if (typeof e == "number") { r = new Array(e); for (let a = 0; a < e; a++)r[a] = t(a + 1, a, void 0, i) } else if (Re(e)) if (e[Symbol.iterator]) r = Array.from(e, (a, l) => t(a, l, void 0, i)); else { const a = Object.keys(e); r = new Array(a.length); for (let l = 0, f = a.length; l < f; l++) { const u = a[l]; r[l] = t(e[u], u, l, i) } } else r = []; return r } const cr = e => e ? fo(e) ? As(e) : cr(e.parent) : null, Un = bt(Object.create(null), { $: e => e, $el: e => e.vnode.el, $data: e => e.data, $props: e => e.props, $attrs: e => e.attrs, $slots: e => e.slots, $refs: e => e.refs, $parent: e => cr(e.parent), $root: e => cr(e.root), $host: e => e.ce, $emit: e => e.emit, $options: e => e.type, $forceUpdate: e => e.f || (e.f = () => { or(e.update) }), $nextTick: e => e.n || (e.n = St.bind(e.proxy)), $watch: e => Jt }), fr = (e, t) => e !== oe && !e.__isScriptSetup && me(e, t), Fa = { get({ _: e }, t) { if (t === "__v_skip") return !0; const { ctx: n, setupState: s, data: r, props: i, accessCache: o, type: a, appContext: l } = e; let f; if (t[0] !== "$") { const y = o[t]; if (y !== void 0) switch (y) { case 1: return s[t]; case 2: return r[t]; case 4: return n[t]; case 3: return i[t] } else { if (fr(s, t)) return o[t] = 1, s[t]; if (r !== oe && me(r, t)) return o[t] = 2, r[t]; if ((f = e.propsOptions[0]) && me(f, t)) return o[t] = 3, i[t]; if (n !== oe && me(n, t)) return o[t] = 4, n[t]; o[t] = 0 } } const u = Un[t]; let d, g; if (u) return t === "$attrs" && je(e.attrs, "get", ""), u(e); if ((d = a.__cssModules) && (d = d[t])) return d; if (n !== oe && me(n, t)) return o[t] = 4, n[t]; if (g = l.config.globalProperties, me(g, t)) return g[t] }, set({ _: e }, t, n) { const { data: s, setupState: r, ctx: i } = e; return fr(r, t) ? (r[t] = n, !0) : s !== oe && me(s, t) ? (s[t] = n, !0) : me(e.props, t) || t[0] === "$" && t.slice(1) in e ? !1 : (i[t] = n, !0) }, has({ _: { data: e, setupState: t, accessCache: n, ctx: s, appContext: r, propsOptions: i } }, o) { let a; return !!n[o] || e !== oe && me(e, o) || fr(t, o) || (a = i[0]) && me(a, o) || me(s, o) || me(Un, o) || me(r.config.globalProperties, o) }, defineProperty(e, t, n) { return n.get != null ? e._.accessCache[t] = 0 : me(n, "value") && this.set(e, t, n.value, null), Reflect.defineProperty(e, t, n) } }; function qi() { return { app: null, config: { isNativeTag: Dl, performance: !1, globalProperties: {}, optionMergeStrategies: {}, errorHandler: void 0, warnHandler: void 0, compilerOptions: {} }, mixins: [], components: {}, directives: {}, provides: Object.create(null), optionsCache: new WeakMap, propsCache: new WeakMap, emitsCache: new WeakMap } } let Ba = 0; function Ha(e, t) { return function (s, r = null) { be(s) || (s = bt({}, s)), r != null && !Re(r) && (r = null); const i = qi(), o = new WeakSet, a = []; let l = !1; const f = i.app = { _uid: Ba++, _component: s, _props: r, _container: null, _context: i, _instance: null, version: Su, get config() { return i.config }, set config(u) { }, use(u, ...d) { return o.has(u) || (u && be(u.install) ? (o.add(u), u.install(f, ...d)) : be(u) && (o.add(u), u(f, ...d))), f }, mixin(u) { return f }, component(u, d) { return d ? (i.components[u] = d, f) : i.components[u] }, directive(u, d) { return d ? (i.directives[u] = d, f) : i.directives[u] }, mount(u, d, g) { if (!l) { const y = f._ceVNode || Oe(s, r); return y.appContext = i, g === !0 ? g = "svg" : g === !1 && (g = void 0), e(y, u, g), l = !0, f._container = u, u.__vue_app__ = f, As(y.component) } }, onUnmount(u) { a.push(u) }, unmount() { l && (Tt(a, f._instance, 16), e(null, f._container), delete f._container.__vue_app__) }, provide(u, d) { return i.provides[u] = d, f }, runWithContext(u) { const d = wn; wn = f; try { return u() } finally { wn = d } } }; return f } } let wn = null; function za(e, t, n = !1) { const s = uo(); if (s || wn) { let r = wn ? wn._context.provides : s ? s.parent == null || s.ce ? s.vnode.appContext && s.vnode.appContext.provides : s.parent.provides : void 0; if (r && e in r) return r[e]; if (arguments.length > 1) return n && be(t) ? t.call(s && s.proxy) : t } } const Wi = {}, Gi = () => Object.create(Wi), Ki = e => Object.getPrototypeOf(e) === Wi; function Ua(e, t, n, s = !1) { const r = {}, i = Gi(); e.propsDefaults = Object.create(null), Yi(e, t, r, i); for (const o in e.propsOptions[0]) o in r || (r[o] = void 0); n ? e.props = s ? r : da(r) : e.type.props ? e.props = r : e.props = i, e.attrs = i } function ja(e, t, n, s) { const { props: r, attrs: i, vnode: { patchFlag: o } } = e, a = ue(r), [l] = e.propsOptions; let f = !1; if ((s || o > 0) && !(o & 16)) { if (o & 8) { const u = e.vnode.dynamicProps; for (let d = 0; d < u.length; d++) { let g = u[d]; if (vs(e.emitsOptions, g)) continue; const y = t[g]; if (l) if (me(i, g)) y !== i[g] && (i[g] = y, f = !0); else { const E = jt(g); r[E] = pr(l, a, E, y, e, !1) } else y !== i[g] && (i[g] = y, f = !0) } } } else { Yi(e, t, r, i) && (f = !0); let u; for (const d in a) (!t || !me(t, d) && ((u = en(d)) === d || !me(t, u))) && (l ? n && (n[d] !== void 0 || n[u] !== void 0) && (r[d] = pr(l, a, d, void 0, e, !0)) : delete r[d]); if (i !== a) for (const d in i) (!t || !me(t, d)) && (delete i[d], f = !0) } f && Ot(e.attrs, "set", "") } function Yi(e, t, n, s) { const [r, i] = e.propsOptions; let o = !1, a; if (t) for (let l in t) { if (Pn(l)) continue; const f = t[l]; let u; r && me(r, u = jt(l)) ? !i || !i.includes(u) ? n[u] = f : (a || (a = {}))[u] = f : vs(e.emitsOptions, l) || (!(l in s) || f !== s[l]) && (s[l] = f, o = !0) } if (i) { const l = ue(n), f = a || oe; for (let u = 0; u < i.length; u++) { const d = i[u]; n[d] = pr(r, l, d, f[d], e, !me(f, d)) } } return o } function pr(e, t, n, s, r, i) { const o = e[n]; if (o != null) { const a = me(o, "default"); if (a && s === void 0) { const l = o.default; if (o.type !== Function && !o.skipFactory && be(l)) { const { propsDefaults: f } = r; if (n in f) s = f[n]; else { const u = yr(r); s = f[n] = l.call(null, t), u() } } else s = l; r.ce && r.ce._setProp(n, s) } o[0] && (i && !a ? s = !1 : o[1] && (s === "" || s === en(n)) && (s = !0)) } return s } function Va(e, t, n = !1) { const s = t.propsCache, r = s.get(e); if (r) return r; const i = e.props, o = {}, a = []; if (!i) return Re(e) && s.set(e, mt), mt; if (Q(i)) for (let f = 0; f < i.length; f++) { const u = jt(i[f]); Zi(u) && (o[u] = oe) } else if (i) for (const f in i) { const u = jt(f); if (Zi(u)) { const d = i[f], g = o[u] = Q(d) || be(d) ? { type: d } : bt({}, d), y = g.type; let E = !1, x = !0; if (Q(y)) for (let M = 0; M < y.length; ++M) { const m = y[M], H = be(m) && m.name; if (H === "Boolean") { E = !0; break } else H === "String" && (x = !1) } else E = be(y) && y.name === "Boolean"; g[0] = E, g[1] = x, (E || me(g, "default")) && a.push(u) } } const l = [o, a]; return Re(e) && s.set(e, l), l } function Zi(e) { return e[0] !== "$" && !Pn(e) } const dr = e => e === "_" || e === "__" || e === "_ctx" || e === "$stable", hr = e => Q(e) ? e.map(At) : [At(e)], qa = (e, t, n) => { if (t._n) return t; const s = Di((...r) => hr(t(...r)), n); return s._c = !1, s }, Xi = (e, t, n) => { const s = e._ctx; for (const r in e) { if (dr(r)) continue; const i = e[r]; if (be(i)) t[r] = qa(r, i, s); else if (i != null) { const o = hr(i); t[r] = () => o } } }, Qi = (e, t) => { const n = hr(t); e.slots.default = () => n }, Ji = (e, t, n) => { for (const s in t) (n || !dr(s)) && (e[s] = t[s]) }, Wa = (e, t, n) => { const s = e.slots = Gi(); if (e.vnode.shapeFlag & 32) { const r = t.__; r && js(s, "__", r, !0); const i = t._; i ? (Ji(s, t, n), n && js(s, "_", i, !0)) : Xi(t, s) } else t && Qi(e, t) }, Ga = (e, t, n) => { const { vnode: s, slots: r } = e; let i = !0, o = oe; if (s.shapeFlag & 32) { const a = t._; a ? n && a === 1 ? i = !1 : Ji(r, t, n) : (i = !t.$stable, Xi(t, r)), o = t } else t && (Qi(e, t), o = { default: 1 }); if (i) for (const a in r) !dr(a) && o[a] == null && delete r[a] }, rt = au; function Ka(e) { return Ya(e) } function Ya(e, t) { const n = is(); n.__VUE__ = !0; const { insert: s, remove: r, patchProp: i, createElement: o, createText: a, createComment: l, setText: f, setElementText: u, parentNode: d, nextSibling: g, setScopeId: y = Jt, insertStaticContent: E } = e, x = (c, h, b, k = null, v = null, _ = null, I = void 0, R = null, A = !!h.dynamicChildren) => { if (c === h) return; c && !ln(c, h) && (k = ye(c), de(c, v, _, !0), c = null), h.patchFlag === -2 && (A = !1, h.dynamicChildren = null); const { type: S, ref: U, shapeFlag: L } = h; switch (S) { case _s: M(c, h, b, k); break; case Ye: m(c, h, b, k); break; case mr: c == null && H(h, b, k, I); break; case He: D(c, h, b, k, v, _, I, R, A); break; default: L & 1 ? z(c, h, b, k, v, _, I, R, A) : L & 6 ? Z(c, h, b, k, v, _, I, R, A) : (L & 64 || L & 128) && S.process(c, h, b, k, v, _, I, R, A, Ce) }U != null && v ? Bn(U, c && c.ref, _, h || c, !h) : U == null && c && c.ref != null && Bn(c.ref, null, _, c, !0) }, M = (c, h, b, k) => { if (c == null) s(h.el = a(h.children), b, k); else { const v = h.el = c.el; h.children !== c.children && f(v, h.children) } }, m = (c, h, b, k) => { c == null ? s(h.el = l(h.children || ""), b, k) : h.el = c.el }, H = (c, h, b, k) => { [c.el, c.anchor] = E(c.children, h, b, k, c.el, c.anchor) }, Y = ({ el: c, anchor: h }, b, k) => { let v; for (; c && c !== h;)v = g(c), s(c, b, k), c = v; s(h, b, k) }, $ = ({ el: c, anchor: h }) => { let b; for (; c && c !== h;)b = g(c), r(c), c = b; r(h) }, z = (c, h, b, k, v, _, I, R, A) => { h.type === "svg" ? I = "svg" : h.type === "math" && (I = "mathml"), c == null ? O(h, b, k, v, _, I, R, A) : V(c, h, v, _, I, R, A) }, O = (c, h, b, k, v, _, I, R) => { let A, S; const { props: U, shapeFlag: L, transition: j, dirs: K } = c; if (A = c.el = o(c.type, _, U && U.is, U), L & 8 ? u(A, c.children) : L & 16 && ee(c.children, A, null, k, v, gr(c, _), I, R), K && sn(c, null, k, "created"), P(A, c, c.scopeId, I, k), U) { for (const he in U) he !== "value" && !Pn(he) && i(A, he, null, U[he], _, k); "value" in U && i(A, "value", null, U.value, _), (S = U.onVnodeBeforeMount) && Rt(S, k, c) } K && sn(c, null, k, "beforeMount"); const ne = Za(v, j); ne && j.beforeEnter(A), s(A, h, b), ((S = U && U.onVnodeMounted) || ne || K) && rt(() => { S && Rt(S, k, c), ne && j.enter(A), K && sn(c, null, k, "mounted") }, v) }, P = (c, h, b, k, v) => { if (b && y(c, b), k) for (let _ = 0; _ < k.length; _++)y(c, k[_]); if (v) { let _ = v.subTree; if (h === _ || io(_.type) && (_.ssContent === h || _.ssFallback === h)) { const I = v.vnode; P(c, I, I.scopeId, I.slotScopeIds, v.parent) } } }, ee = (c, h, b, k, v, _, I, R, A = 0) => { for (let S = A; S < c.length; S++) { const U = c[S] = R ? Yt(c[S]) : At(c[S]); x(null, U, h, b, k, v, _, I, R) } }, V = (c, h, b, k, v, _, I) => { const R = h.el = c.el; let { patchFlag: A, dynamicChildren: S, dirs: U } = h; A |= c.patchFlag & 16; const L = c.props || oe, j = h.props || oe; let K; if (b && rn(b, !1), (K = j.onVnodeBeforeUpdate) && Rt(K, b, h, c), U && sn(h, c, b, "beforeUpdate"), b && rn(b, !0), (L.innerHTML && j.innerHTML == null || L.textContent && j.textContent == null) && u(R, ""), S ? se(c.dynamicChildren, S, R, b, k, gr(h, v), _) : I || pe(c, h, R, null, b, k, gr(h, v), _, !1), A > 0) { if (A & 16) fe(R, L, j, b, v); else if (A & 2 && L.class !== j.class && i(R, "class", null, j.class, v), A & 4 && i(R, "style", L.style, j.style, v), A & 8) { const ne = h.dynamicProps; for (let he = 0; he < ne.length; he++) { const ie = ne[he], ke = L[ie], $e = j[ie]; ($e !== ke || ie === "value") && i(R, ie, ke, $e, v, b) } } A & 1 && c.children !== h.children && u(R, h.children) } else !I && S == null && fe(R, L, j, b, v); ((K = j.onVnodeUpdated) || U) && rt(() => { K && Rt(K, b, h, c), U && sn(h, c, b, "updated") }, k) }, se = (c, h, b, k, v, _, I) => { for (let R = 0; R < h.length; R++) { const A = c[R], S = h[R], U = A.el && (A.type === He || !ln(A, S) || A.shapeFlag & 198) ? d(A.el) : b; x(A, S, U, null, k, v, _, I, !0) } }, fe = (c, h, b, k, v) => { if (h !== b) { if (h !== oe) for (const _ in h) !Pn(_) && !(_ in b) && i(c, _, h[_], null, v, k); for (const _ in b) { if (Pn(_)) continue; const I = b[_], R = h[_]; I !== R && _ !== "value" && i(c, _, R, I, v, k) } "value" in b && i(c, "value", h.value, b.value, v) } }, D = (c, h, b, k, v, _, I, R, A) => { const S = h.el = c ? c.el : a(""), U = h.anchor = c ? c.anchor : a(""); let { patchFlag: L, dynamicChildren: j, slotScopeIds: K } = h; K && (R = R ? R.concat(K) : K), c == null ? (s(S, b, k), s(U, b, k), ee(h.children || [], b, U, v, _, I, R, A)) : L > 0 && L & 64 && j && c.dynamicChildren ? (se(c.dynamicChildren, j, b, v, _, I, R), (h.key != null || v && h === v.subTree) && eo(c, h, !0)) : pe(c, h, b, U, v, _, I, R, A) }, Z = (c, h, b, k, v, _, I, R, A) => { h.slotScopeIds = R, c == null ? h.shapeFlag & 512 ? v.ctx.activate(h, b, k, I, A) : Se(h, b, k, v, _, I, A) : Ue(c, h, A) }, Se = (c, h, b, k, v, _, I) => { const R = c.component = gu(c, k, v); if (ur(c) && (R.ctx.renderer = Ce), mu(R, !1, I), R.asyncDep) { if (v && v.registerDep(R, te, I), !c.el) { const A = R.subTree = Oe(Ye); m(null, A, h, b), c.placeholder = A.el } } else te(R, c, h, b, v, _, I) }, Ue = (c, h, b) => { const k = h.component = c.component; if (ou(c, h, b)) if (k.asyncDep && !k.asyncResolved) { C(k, h, b); return } else k.next = h, k.update(); else h.el = c.el, k.vnode = h }, te = (c, h, b, k, v, _, I) => { const R = () => { if (c.isMounted) { let { next: L, bu: j, u: K, parent: ne, vnode: he } = c; { const lt = to(c); if (lt) { L && (L.el = he.el, C(c, L, I)), lt.asyncDep.then(() => { c.isUnmounted || R() }); return } } let ie = L, ke; rn(c, !1), L ? (L.el = he.el, C(c, L, I)) : L = he, j && rs(j), (ke = L.props && L.props.onVnodeBeforeUpdate) && Rt(ke, ne, L, he), rn(c, !0); const $e = so(c), ot = c.subTree; c.subTree = $e, x(ot, $e, d(ot.el), ye(ot), c, v, _), L.el = $e.el, ie === null && lu(c, $e.el), K && rt(K, v), (ke = L.props && L.props.onVnodeUpdated) && rt(() => Rt(ke, ne, L, he), v) } else { let L; const { el: j, props: K } = h, { bm: ne, m: he, parent: ie, root: ke, type: $e } = c, ot = Hn(h); rn(c, !1), ne && rs(ne), !ot && (L = K && K.onVnodeBeforeMount) && Rt(L, ie, h), rn(c, !0); { ke.ce && ke.ce._def.shadowRoot !== !1 && ke.ce._injectChildStyle($e); const lt = c.subTree = so(c); x(null, lt, b, k, c, v, _), h.el = lt.el } if (he && rt(he, v), !ot && (L = K && K.onVnodeMounted)) { const lt = h; rt(() => Rt(L, ie, lt), v) } (h.shapeFlag & 256 || ie && Hn(ie.vnode) && ie.vnode.shapeFlag & 256) && c.a && rt(c.a, v), c.isMounted = !0, h = b = k = null } }; c.scope.on(); const A = c.effect = new ui(R); c.scope.off(); const S = c.update = A.run.bind(A), U = c.job = A.runIfDirty.bind(A); U.i = c, U.id = c.uid, A.scheduler = () => or(U), rn(c, !0), S() }, C = (c, h, b) => { h.component = c; const k = c.vnode.props; c.vnode = h, c.next = null, ja(c, h.props, k, b), Ga(c, h.children, b), It(), Mi(c), Mt() }, pe = (c, h, b, k, v, _, I, R, A = !1) => { const S = c && c.children, U = c ? c.shapeFlag : 0, L = h.children, { patchFlag: j, shapeFlag: K } = h; if (j > 0) { if (j & 128) { re(S, L, b, k, v, _, I, R, A); return } else if (j & 256) { Ge(S, L, b, k, v, _, I, R, A); return } } K & 8 ? (U & 16 && nt(S, v, _), L !== S && u(b, L)) : U & 16 ? K & 16 ? re(S, L, b, k, v, _, I, R, A) : nt(S, v, _, !0) : (U & 8 && u(b, ""), K & 16 && ee(L, b, k, v, _, I, R, A)) }, Ge = (c, h, b, k, v, _, I, R, A) => { c = c || mt, h = h || mt; const S = c.length, U = h.length, L = Math.min(S, U); let j; for (j = 0; j < L; j++) { const K = h[j] = A ? Yt(h[j]) : At(h[j]); x(c[j], K, b, null, v, _, I, R, A) } S > U ? nt(c, v, _, !0, !1, L) : ee(h, b, k, v, _, I, R, A, L) }, re = (c, h, b, k, v, _, I, R, A) => { let S = 0; const U = h.length; let L = c.length - 1, j = U - 1; for (; S <= L && S <= j;) { const K = c[S], ne = h[S] = A ? Yt(h[S]) : At(h[S]); if (ln(K, ne)) x(K, ne, b, null, v, _, I, R, A); else break; S++ } for (; S <= L && S <= j;) { const K = c[L], ne = h[j] = A ? Yt(h[j]) : At(h[j]); if (ln(K, ne)) x(K, ne, b, null, v, _, I, R, A); else break; L--, j-- } if (S > L) { if (S <= j) { const K = j + 1, ne = K < U ? h[K].el : k; for (; S <= j;)x(null, h[S] = A ? Yt(h[S]) : At(h[S]), b, ne, v, _, I, R, A), S++ } } else if (S > j) for (; S <= L;)de(c[S], v, _, !0), S++; else { const K = S, ne = S, he = new Map; for (S = ne; S <= j; S++) { const De = h[S] = A ? Yt(h[S]) : At(h[S]); De.key != null && he.set(De.key, S) } let ie, ke = 0; const $e = j - ne + 1; let ot = !1, lt = 0; const Bt = new Array($e); for (S = 0; S < $e; S++)Bt[S] = 0; for (S = K; S <= L; S++) { const De = c[S]; if (ke >= $e) { de(De, v, _, !0); continue } let Qe; if (De.key != null) Qe = he.get(De.key); else for (ie = ne; ie <= j; ie++)if (Bt[ie - ne] === 0 && ln(De, h[ie])) { Qe = ie; break } Qe === void 0 ? de(De, v, _, !0) : (Bt[Qe - ne] = S + 1, Qe >= lt ? lt = Qe : ot = !0, x(De, h[Qe], b, null, v, _, I, R, A), ke++) } const Jn = ot ? Xa(Bt) : mt; for (ie = Jn.length - 1, S = $e - 1; S >= 0; S--) { const De = ne + S, Qe = h[De], at = h[De + 1], Ht = De + 1 < U ? at.el || at.placeholder : k; Bt[S] === 0 ? x(null, Qe, b, Ht, v, _, I, R, A) : ot && (ie < 0 || S !== Jn[ie] ? B(Qe, b, Ht, 2) : ie--) } } }, B = (c, h, b, k, v = null) => { const { el: _, type: I, transition: R, children: A, shapeFlag: S } = c; if (S & 6) { B(c.component.subTree, h, b, k); return } if (S & 128) { c.suspense.move(h, b, k); return } if (S & 64) { I.move(c, h, b, Ce); return } if (I === He) { s(_, h, b); for (let L = 0; L < A.length; L++)B(A[L], h, b, k); s(c.anchor, h, b); return } if (I === mr) { Y(c, h, b); return } if (k !== 2 && S & 1 && R) if (k === 0) R.beforeEnter(_), s(_, h, b), rt(() => R.enter(_), v); else { const { leave: L, delayLeave: j, afterLeave: K } = R, ne = () => { c.ctx.isUnmounted ? r(_) : s(_, h, b) }, he = () => { L(_, () => { ne(), K && K() }) }; j ? j(_, ne, he) : he() } else s(_, h, b) }, de = (c, h, b, k = !1, v = !1) => { const { type: _, props: I, ref: R, children: A, dynamicChildren: S, shapeFlag: U, patchFlag: L, dirs: j, cacheIndex: K } = c; if (L === -2 && (v = !1), R != null && (It(), Bn(R, null, b, c, !0), Mt()), K != null && (h.renderCache[K] = void 0), U & 256) { h.ctx.deactivate(c); return } const ne = U & 1 && j, he = !Hn(c); let ie; if (he && (ie = I && I.onVnodeBeforeUnmount) && Rt(ie, h, c), U & 6) ge(c.component, b, k); else { if (U & 128) { c.suspense.unmount(b, k); return } ne && sn(c, null, h, "beforeUnmount"), U & 64 ? c.type.remove(c, h, b, Ce, k) : S && !S.hasOnce && (_ !== He || L > 0 && L & 64) ? nt(S, h, b, !1, !0) : (_ === He && L & 384 || !v && U & 16) && nt(A, h, b), k && ae(c) } (he && (ie = I && I.onVnodeUnmounted) || ne) && rt(() => { ie && Rt(ie, h, c), ne && sn(c, null, h, "unmounted") }, b) }, ae = c => { const { type: h, el: b, anchor: k, transition: v } = c; if (h === He) { ve(b, k); return } if (h === mr) { $(c); return } const _ = () => { r(b), v && !v.persisted && v.afterLeave && v.afterLeave() }; if (c.shapeFlag & 1 && v && !v.persisted) { const { leave: I, delayLeave: R } = v, A = () => I(b, _); R ? R(c.el, _, A) : A() } else _() }, ve = (c, h) => { let b; for (; c !== h;)b = g(c), r(c), c = b; r(h) }, ge = (c, h, b) => { const { bum: k, scope: v, job: _, subTree: I, um: R, m: A, a: S, parent: U, slots: { __: L } } = c; no(A), no(S), k && rs(k), U && Q(L) && L.forEach(j => { U.renderCache[j] = void 0 }), v.stop(), _ && (_.flags |= 8, de(I, c, h, b)), R && rt(R, h), rt(() => { c.isUnmounted = !0 }, h), h && h.pendingBranch && !h.isUnmounted && c.asyncDep && !c.asyncResolved && c.suspenseId === h.pendingId && (h.deps--, h.deps === 0 && h.resolve()) }, nt = (c, h, b, k = !1, v = !1, _ = 0) => { for (let I = _; I < c.length; I++)de(c[I], h, b, k, v) }, ye = c => { if (c.shapeFlag & 6) return ye(c.component.subTree); if (c.shapeFlag & 128) return c.suspense.next(); const h = g(c.anchor || c.el), b = h && h[Ia]; return b ? g(b) : h }; let ht = !1; const G = (c, h, b) => { c == null ? h._vnode && de(h._vnode, null, null, !0) : x(h._vnode || null, c, h, null, null, null, b), h._vnode = c, ht || (ht = !0, Mi(), Oi(), ht = !1) }, Ce = { p: x, um: de, m: B, r: ae, mt: Se, mc: ee, pc: pe, pbc: se, n: ye, o: e }; return { render: G, hydrate: void 0, createApp: Ha(G) } } function gr({ type: e, props: t }, n) { return n === "svg" && e === "foreignObject" || n === "mathml" && e === "annotation-xml" && t && t.encoding && t.encoding.includes("html") ? void 0 : n } function rn({ effect: e, job: t }, n) { n ? (e.flags |= 32, t.flags |= 4) : (e.flags &= -33, t.flags &= -5) } function Za(e, t) { return (!e || e && !e.pendingBranch) && t && !t.persisted } function eo(e, t, n = !1) { const s = e.children, r = t.children; if (Q(s) && Q(r)) for (let i = 0; i < s.length; i++) { const o = s[i]; let a = r[i]; a.shapeFlag & 1 && !a.dynamicChildren && ((a.patchFlag <= 0 || a.patchFlag === 32) && (a = r[i] = Yt(r[i]), a.el = o.el), !n && a.patchFlag !== -2 && eo(o, a)), a.type === _s && (a.el = o.el), a.type === Ye && !a.el && (a.el = o.el) } } function Xa(e) { const t = e.slice(), n = [0]; let s, r, i, o, a; const l = e.length; for (s = 0; s < l; s++) { const f = e[s]; if (f !== 0) { if (r = n[n.length - 1], e[r] < f) { t[s] = r, n.push(s); continue } for (i = 0, o = n.length - 1; i < o;)a = i + o >> 1, e[n[a]] < f ? i = a + 1 : o = a; f < e[n[i]] && (i > 0 && (t[s] = n[i - 1]), n[i] = s) } } for (i = n.length, o = n[i - 1]; i-- > 0;)n[i] = o, o = t[o]; return n } function to(e) { const t = e.subTree.component; if (t) return t.asyncDep && !t.asyncResolved ? t : to(t) } function no(e) { if (e) for (let t = 0; t < e.length; t++)e[t].flags |= 8 } const Qa = Symbol.for("v-scx"), Ja = () => za(Qa); function on(e, t, n) { return eu(e, t, n) } function eu(e, t, n = oe) { const { immediate: s, deep: r, flush: i, once: o } = n, a = bt({}, n), l = t && s || !t && i !== "post"; let f; if (qn) { if (i === "sync") { const y = Ja(); f = y.__watcherHandles || (y.__watcherHandles = []) } else if (!l) { const y = () => { }; return y.stop = Jt, y.resume = Jt, y.pause = Jt, y } } const u = Zt; a.call = (y, E, x) => Tt(y, u, E, x); let d = !1; i === "post" ? a.scheduler = y => { rt(y, u && u.suspense) } : i !== "sync" && (d = !0, a.scheduler = (y, E) => { E ? y() : or(y) }), a.augmentJob = y => { t && (y.flags |= 4), d && (y.flags |= 2, u && (y.id = u.uid, y.i = u)) }; const g = _a(e, t, a); return qn && (f ? f.push(g) : l && g()), g } const tu = (e, t) => t === "modelValue" || t === "model-value" ? e.modelModifiers : e[`${t}Modifiers`] || e[`${jt(t)}Modifiers`] || e[`${en(t)}Modifiers`]; function nu(e, t, ...n) { if (e.isUnmounted) return; const s = e.vnode.props || oe; let r = n; const i = t.startsWith("update:"), o = i && tu(s, t.slice(7)); o && (o.trim && (r = n.map(u => Pe(u) ? u.trim() : u)), o.number && (r = n.map(Vs))); let a, l = s[a = Us(t)] || s[a = Us(jt(t))]; !l && i && (l = s[a = Us(en(t))]), l && Tt(l, e, 6, r); const f = s[a + "Once"]; if (f) { if (!e.emitted) e.emitted = {}; else if (e.emitted[a]) return; e.emitted[a] = !0, Tt(f, e, 6, r) } } function su(e, t, n = !1) { const s = t.emitsCache, r = s.get(e); if (r !== void 0) return r; const i = e.emits; let o = {}; return i ? (Q(i) ? i.forEach(a => o[a] = null) : bt(o, i), Re(e) && s.set(e, o), o) : (Re(e) && s.set(e, null), null) } function vs(e, t) { return !e || !ts(t) ? !1 : (t = t.slice(2).replace(/Once$/, ""), me(e, t[0].toLowerCase() + t.slice(1)) || me(e, en(t)) || me(e, t)) } function Ed() { } function so(e) { const { type: t, vnode: n, proxy: s, withProxy: r, propsOptions: [i], slots: o, attrs: a, emit: l, render: f, renderCache: u, props: d, data: g, setupState: y, ctx: E, inheritAttrs: x } = e, M = bs(e); let m, H; try { if (n.shapeFlag & 4) { const $ = r || s, z = $; m = At(f.call(z, $, u, d, y, g, E)), H = a } else { const $ = t; m = At($.length > 1 ? $(d, { attrs: a, slots: o, emit: l }) : $(d, null)), H = t.props ? a : ru(a) } } catch ($) { jn.length = 0, gs($, e, 1), m = Oe(Ye) } let Y = m; if (H && x !== !1) { const $ = Object.keys(H), { shapeFlag: z } = Y; $.length && z & 7 && (i && $.some(Hs) && (H = iu(H, i)), Y = Kt(Y, H, !1, !0)) } return n.dirs && (Y = Kt(Y, null, !1, !0), Y.dirs = Y.dirs ? Y.dirs.concat(n.dirs) : n.dirs), n.transition && Fn(Y, n.transition), m = Y, bs(M), m } const ru = e => { let t; for (const n in e) (n === "class" || n === "style" || ts(n)) && ((t || (t = {}))[n] = e[n]); return t }, iu = (e, t) => { const n = {}; for (const s in e) (!Hs(s) || !(s.slice(9) in t)) && (n[s] = e[s]); return n }; function ou(e, t, n) { const { props: s, children: r, component: i } = e, { props: o, children: a, patchFlag: l } = t, f = i.emitsOptions; if (t.dirs || t.transition) return !0; if (n && l >= 0) { if (l & 1024) return !0; if (l & 16) return s ? ro(s, o, f) : !!o; if (l & 8) { const u = t.dynamicProps; for (let d = 0; d < u.length; d++) { const g = u[d]; if (o[g] !== s[g] && !vs(f, g)) return !0 } } } else return (r || a) && (!a || !a.$stable) ? !0 : s === o ? !1 : s ? o ? ro(s, o, f) : !0 : !!o; return !1 } function ro(e, t, n) { const s = Object.keys(t); if (s.length !== Object.keys(e).length) return !0; for (let r = 0; r < s.length; r++) { const i = s[r]; if (t[i] !== e[i] && !vs(n, i)) return !0 } return !1 } function lu({ vnode: e, parent: t }, n) { for (; t;) { const s = t.subTree; if (s.suspense && s.suspense.activeBranch === e && (s.el = e.el), s === e) (e = t.vnode).el = n, t = t.parent; else break } } const io = e => e.__isSuspense; function au(e, t) { t && t.pendingBranch ? Q(e) ? t.effects.push(...e) : t.effects.push(e) : Ca(e) } const He = Symbol.for("v-fgt"), _s = Symbol.for("v-txt"), Ye = Symbol.for("v-cmt"), mr = Symbol.for("v-stc"), jn = []; let it = null; function F(e = !1) { jn.push(it = e ? null : []) } function uu() { jn.pop(), it = jn[jn.length - 1] || null } let Vn = 1; function oo(e, t = !1) { Vn += e, e < 0 && it && t && (it.hasOnce = !0) } function lo(e) { return e.dynamicChildren = Vn > 0 ? it || mt : null, uu(), Vn > 0 && it && it.push(e), e } function W(e, t, n, s, r, i) { return lo(w(e, t, n, s, r, i, !0)) } function Et(e, t, n, s, r) { return lo(Oe(e, t, n, s, r, !0)) } function Ts(e) { return e ? e.__v_isVNode === !0 : !1 } function ln(e, t) { return e.type === t.type && e.key === t.key } const ao = ({ key: e }) => e != null ? e : null, ks = ({ ref: e, ref_key: t, ref_for: n }) => (typeof e == "number" && (e = "" + e), e != null ? Pe(e) || Ve(e) || be(e) ? { i: ct, r: e, k: t, f: !!n } : e : null); function w(e, t = null, n = null, s = 0, r = null, i = e === He ? 0 : 1, o = !1, a = !1) { const l = { __v_isVNode: !0, __v_skip: !0, type: e, props: t, key: t && ao(t), ref: t && ks(t), scopeId: $i, slotScopeIds: null, children: n, component: null, suspense: null, ssContent: null, ssFallback: null, dirs: null, transition: null, el: null, anchor: null, target: null, targetStart: null, targetAnchor: null, staticCount: 0, shapeFlag: i, patchFlag: s, dynamicProps: r, dynamicChildren: null, appContext: null, ctx: ct }; return a ? (br(l, n), i & 128 && e.normalize(l)) : n && (l.shapeFlag |= Pe(n) ? 8 : 16), Vn > 0 && !o && it && (l.patchFlag > 0 || i & 6) && l.patchFlag !== 32 && it.push(l), l } const Oe = cu; function cu(e, t = null, n = null, s = 0, r = null, i = !1) { if ((!e || e === Na) && (e = Ye), Ts(e)) { const a = Kt(e, t, !0); return n && br(a, n), Vn > 0 && !i && it && (a.shapeFlag & 6 ? it[it.indexOf(e)] = a : it.push(a)), a.patchFlag = -2, a } if (Tu(e) && (e = e.__vccOpts), t) { t = fu(t); let { class: a, style: l } = t; a && !Pe(a) && (t.class = we(a)), Re(l) && (rr(l) && !Q(l) && (l = bt({}, l)), t.style = qs(l)) } const o = Pe(e) ? 1 : io(e) ? 128 : Ni(e) ? 64 : Re(e) ? 4 : be(e) ? 2 : 0; return w(e, t, n, s, r, o, i, !0) } function fu(e) { return e ? rr(e) || Ki(e) ? bt({}, e) : e : null } function Kt(e, t, n = !1, s = !1) { const { props: r, ref: i, patchFlag: o, children: a, transition: l } = e, f = t ? pu(r || {}, t) : r, u = { __v_isVNode: !0, __v_skip: !0, type: e.type, props: f, key: f && ao(f), ref: t && t.ref ? n && i ? Q(i) ? i.concat(ks(t)) : [i, ks(t)] : ks(t) : i, scopeId: e.scopeId, slotScopeIds: e.slotScopeIds, children: a, target: e.target, targetStart: e.targetStart, targetAnchor: e.targetAnchor, staticCount: e.staticCount, shapeFlag: e.shapeFlag, patchFlag: t && e.type !== He ? o === -1 ? 16 : o | 16 : o, dynamicProps: e.dynamicProps, dynamicChildren: e.dynamicChildren, appContext: e.appContext, dirs: e.dirs, transition: l, component: e.component, suspense: e.suspense, ssContent: e.ssContent && Kt(e.ssContent), ssFallback: e.ssFallback && Kt(e.ssFallback), placeholder: e.placeholder, el: e.el, anchor: e.anchor, ctx: e.ctx, ce: e.ce }; return l && s && Fn(u, l.clone(u)), u } function Ss(e = " ", t = 0) { return Oe(_s, null, e, t) } function qe(e = "", t = !1) { return t ? (F(), Et(Ye, null, e)) : Oe(Ye, null, e) } function At(e) { return e == null || typeof e == "boolean" ? Oe(Ye) : Q(e) ? Oe(He, null, e.slice()) : Ts(e) ? Yt(e) : Oe(_s, null, String(e)) } function Yt(e) { return e.el === null && e.patchFlag !== -1 || e.memo ? e : Kt(e) } function br(e, t) { let n = 0; const { shapeFlag: s } = e; if (t == null) t = null; else if (Q(t)) n = 16; else if (typeof t == "object") if (s & 65) { const r = t.default; r && (r._c && (r._d = !1), br(e, r()), r._c && (r._d = !0)); return } else { n = 32; const r = t._; !r && !Ki(t) ? t._ctx = ct : r === 3 && ct && (ct.slots._ === 1 ? t._ = 1 : (t._ = 2, e.patchFlag |= 1024)) } else be(t) ? (t = { default: t, _ctx: ct }, n = 32) : (t = String(t), s & 64 ? (n = 16, t = [Ss(t)]) : n = 8); e.children = t, e.shapeFlag |= n } function pu(...e) { const t = {}; for (let n = 0; n < e.length; n++) { const s = e[n]; for (const r in s) if (r === "class") t.class !== s.class && (t.class = we([t.class, s.class])); else if (r === "style") t.style = qs([t.style, s.style]); else if (ts(r)) { const i = t[r], o = s[r]; o && i !== o && !(Q(i) && i.includes(o)) && (t[r] = i ? [].concat(i, o) : o) } else r !== "" && (t[r] = s[r]) } return t } function Rt(e, t, n, s = null) { Tt(e, t, 7, [n, s]) } const du = qi(); let hu = 0; function gu(e, t, n) { const s = e.type, r = (t ? t.appContext : e.appContext) || du, i = { uid: hu++, vnode: e, type: s, parent: t, appContext: r, root: null, next: null, subTree: null, effect: null, update: null, job: null, scope: new Gl(!0), render: null, proxy: null, exposed: null, exposeProxy: null, withProxy: null, provides: t ? t.provides : Object.create(r.provides), ids: t ? t.ids : ["", 0, 0], accessCache: null, renderCache: [], components: null, directives: null, propsOptions: Va(s, r), emitsOptions: su(s, r), emit: null, emitted: null, propsDefaults: oe, inheritAttrs: s.inheritAttrs, ctx: oe, data: oe, props: oe, attrs: oe, slots: oe, refs: oe, setupState: oe, setupContext: null, suspense: n, suspenseId: n ? n.pendingId : 0, asyncDep: null, asyncResolved: !1, isMounted: !1, isUnmounted: !1, isDeactivated: !1, bc: null, c: null, bm: null, m: null, bu: null, u: null, um: null, bum: null, da: null, a: null, rtg: null, rtc: null, ec: null, sp: null }; return i.ctx = { _: i }, i.root = t ? t.root : i, i.emit = nu.bind(null, i), e.ce && e.ce(i), i } let Zt = null; const uo = () => Zt || ct; let Es, xr; { const e = is(), t = (n, s) => { let r; return (r = e[n]) || (r = e[n] = []), r.push(s), i => { r.length > 1 ? r.forEach(o => o(i)) : r[0](i) } }; Es = t("__VUE_INSTANCE_SETTERS__", n => Zt = n), xr = t("__VUE_SSR_SETTERS__", n => qn = n) } const yr = e => { const t = Zt; return Es(e), e.scope.on(), () => { e.scope.off(), Es(t) } }, co = () => { Zt && Zt.scope.off(), Es(null) }; function fo(e) { return e.vnode.shapeFlag & 4 } let qn = !1; function mu(e, t = !1, n = !1) { t && xr(t); const { props: s, children: r } = e.vnode, i = fo(e); Ua(e, s, i, t), Wa(e, r, n || t); const o = i ? bu(e, t) : void 0; return t && xr(!1), o } function bu(e, t) { const n = e.type; e.accessCache = Object.create(null), e.proxy = new Proxy(e.ctx, Fa); const { setup: s } = n; if (s) { It(); const r = e.setupContext = s.length > 1 ? yu(e) : null, i = yr(e), o = bn(s, e, 0, [e.props, r]), a = ti(o); if (Mt(), i(), (a || e.sp) && !Hn(e) && $a(e), a) { if (o.then(co, co), t) return o.then(l => { po(e, l) }).catch(l => { gs(l, e, 0) }); e.asyncDep = o } else po(e, o) } else ho(e) } function po(e, t, n) { be(t) ? e.type.__ssrInlineRender ? e.ssrRender = t : e.render = t : Re(t) && (e.setupState = Ri(t)), ho(e) } function ho(e, t, n) { const s = e.type; e.render || (e.render = s.render || Jt) } const xu = { get(e, t) { return je(e, "get", ""), e[t] } }; function yu(e) { const t = n => { e.exposed = n || {} }; return { attrs: new Proxy(e.attrs, xu), slots: e.slots, emit: e.emit, expose: t } } function As(e) { return e.exposed ? e.exposeProxy || (e.exposeProxy = new Proxy(Ri(ha(e.exposed)), { get(t, n) { if (n in t) return t[n]; if (n in Un) return Un[n](e) }, has(t, n) { return n in t || n in Un } })) : e.proxy } const wu = /(?:^|[-_])(\w)/g, vu = e => e.replace(wu, t => t.toUpperCase()).replace(/[-_]/g, ""); function _u(e, t = !0) { return be(e) ? e.displayName || e.name : e.name || t && e.__name } function go(e, t, n = !1) { let s = _u(t); if (!s && t.__file) { const r = t.__file.match(/([^/\\]+)\.\w+$/); r && (s = r[1]) } if (!s && e && e.parent) { const r = i => { for (const o in i) if (i[o] === t) return o }; s = r(e.components || e.parent.type.components) || r(e.appContext.components) } return s ? vu(s) : n ? "App" : "Anonymous" } function Tu(e) { return be(e) && "__vccOpts" in e } const Ee = (e, t) => wa(e, t, qn); function ku(e, t, n) { const s = arguments.length; return s === 2 ? Re(t) && !Q(t) ? Ts(t) ? Oe(e, null, [t]) : Oe(e, t) : Oe(e, null, t) : (s > 3 ? n = Array.prototype.slice.call(arguments, 2) : s === 3 && Ts(n) && (n = [n]), Oe(e, t, n)) } const Su = "3.5.18"; let wr; const mo = typeof window != "undefined" && window.trustedTypes; if (mo) try { wr = mo.createPolicy("vue", { createHTML: e => e }) } catch { } const bo = wr ? e => wr.createHTML(e) : e => e, Eu = "http://www.w3.org/2000/svg", Au = "http://www.w3.org/1998/Math/MathML", Dt = typeof document != "undefined" ? document : null, xo = Dt && Dt.createElement("template"), Ru = { insert: (e, t, n) => { t.insertBefore(e, n || null) }, remove: e => { const t = e.parentNode; t && t.removeChild(e) }, createElement: (e, t, n, s) => { const r = t === "svg" ? Dt.createElementNS(Eu, e) : t === "mathml" ? Dt.createElementNS(Au, e) : n ? Dt.createElement(e, { is: n }) : Dt.createElement(e); return e === "select" && s && s.multiple != null && r.setAttribute("multiple", s.multiple), r }, createText: e => Dt.createTextNode(e), createComment: e => Dt.createComment(e), setText: (e, t) => { e.nodeValue = t }, setElementText: (e, t) => { e.textContent = t }, parentNode: e => e.parentNode, nextSibling: e => e.nextSibling, querySelector: e => Dt.querySelector(e), setScopeId(e, t) { e.setAttribute(t, "") }, insertStaticContent(e, t, n, s, r, i) { const o = n ? n.previousSibling : t.lastChild; if (r && (r === i || r.nextSibling)) for (; t.insertBefore(r.cloneNode(!0), n), !(r === i || !(r = r.nextSibling));); else { xo.innerHTML = bo(s === "svg" ? `${e}` : s === "mathml" ? `${e}` : e); const a = xo.content; if (s === "svg" || s === "mathml") { const l = a.firstChild; for (; l.firstChild;)a.appendChild(l.firstChild); a.removeChild(l) } t.insertBefore(a, n) } return [o ? o.nextSibling : t.firstChild, n ? n.previousSibling : t.lastChild] } }, Xt = "transition", Wn = "animation", Gn = Symbol("_vtc"), yo = { name: String, type: String, css: { type: Boolean, default: !0 }, duration: [String, Number, Object], enterFromClass: String, enterActiveClass: String, enterToClass: String, appearFromClass: String, appearActiveClass: String, appearToClass: String, leaveFromClass: String, leaveActiveClass: String, leaveToClass: String }, Cu = bt({}, Fi, yo), Pu = (e => (e.displayName = "Transition", e.props = Cu, e))((e, { slots: t }) => ku(La, Iu(e), t)), an = (e, t = []) => { Q(e) ? e.forEach(n => n(...t)) : e && e(...t) }, wo = e => e ? Q(e) ? e.some(t => t.length > 1) : e.length > 1 : !1; function Iu(e) { const t = {}; for (const D in e) D in yo || (t[D] = e[D]); if (e.css === !1) return t; const { name: n = "v", type: s, duration: r, enterFromClass: i = `${n}-enter-from`, enterActiveClass: o = `${n}-enter-active`, enterToClass: a = `${n}-enter-to`, appearFromClass: l = i, appearActiveClass: f = o, appearToClass: u = a, leaveFromClass: d = `${n}-leave-from`, leaveActiveClass: g = `${n}-leave-active`, leaveToClass: y = `${n}-leave-to` } = e, E = Mu(r), x = E && E[0], M = E && E[1], { onBeforeEnter: m, onEnter: H, onEnterCancelled: Y, onLeave: $, onLeaveCancelled: z, onBeforeAppear: O = m, onAppear: P = H, onAppearCancelled: ee = Y } = t, V = (D, Z, Se, Ue) => { D._enterCancelled = Ue, un(D, Z ? u : a), un(D, Z ? f : o), Se && Se() }, se = (D, Z) => { D._isLeaving = !1, un(D, d), un(D, y), un(D, g), Z && Z() }, fe = D => (Z, Se) => { const Ue = D ? P : H, te = () => V(Z, D, Se); an(Ue, [Z, te]), vo(() => { un(Z, D ? l : i), Nt(Z, D ? u : a), wo(Ue) || _o(Z, s, x, te) }) }; return bt(t, { onBeforeEnter(D) { an(m, [D]), Nt(D, i), Nt(D, o) }, onBeforeAppear(D) { an(O, [D]), Nt(D, l), Nt(D, f) }, onEnter: fe(!1), onAppear: fe(!0), onLeave(D, Z) { D._isLeaving = !0; const Se = () => se(D, Z); Nt(D, d), D._enterCancelled ? (Nt(D, g), So()) : (So(), Nt(D, g)), vo(() => { D._isLeaving && (un(D, d), Nt(D, y), wo($) || _o(D, s, M, Se)) }), an($, [D, Se]) }, onEnterCancelled(D) { V(D, !1, void 0, !0), an(Y, [D]) }, onAppearCancelled(D) { V(D, !0, void 0, !0), an(ee, [D]) }, onLeaveCancelled(D) { se(D), an(z, [D]) } }) } function Mu(e) { if (e == null) return null; if (Re(e)) return [vr(e.enter), vr(e.leave)]; { const t = vr(e); return [t, t] } } function vr(e) { return zl(e) } function Nt(e, t) { t.split(/\s+/).forEach(n => n && e.classList.add(n)), (e[Gn] || (e[Gn] = new Set)).add(t) } function un(e, t) { t.split(/\s+/).forEach(s => s && e.classList.remove(s)); const n = e[Gn]; n && (n.delete(t), n.size || (e[Gn] = void 0)) } function vo(e) { requestAnimationFrame(() => { requestAnimationFrame(e) }) } let Ou = 0; function _o(e, t, n, s) { const r = e._endId = ++Ou, i = () => { r === e._endId && s() }; if (n != null) return setTimeout(i, n); const { type: o, timeout: a, propCount: l } = Lu(e, t); if (!o) return s(); const f = o + "end"; let u = 0; const d = () => { e.removeEventListener(f, g), i() }, g = y => { y.target === e && ++u >= l && d() }; setTimeout(() => { u < l && d() }, a + 1), e.addEventListener(f, g) } function Lu(e, t) { const n = window.getComputedStyle(e), s = E => (n[E] || "").split(", "), r = s(`${Xt}Delay`), i = s(`${Xt}Duration`), o = To(r, i), a = s(`${Wn}Delay`), l = s(`${Wn}Duration`), f = To(a, l); let u = null, d = 0, g = 0; t === Xt ? o > 0 && (u = Xt, d = o, g = i.length) : t === Wn ? f > 0 && (u = Wn, d = f, g = l.length) : (d = Math.max(o, f), u = d > 0 ? o > f ? Xt : Wn : null, g = u ? u === Xt ? i.length : l.length : 0); const y = u === Xt && /\b(transform|all)(,|$)/.test(s(`${Xt}Property`).toString()); return { type: u, timeout: d, propCount: g, hasTransform: y } } function To(e, t) { for (; e.length < t.length;)e = e.concat(e); return Math.max(...t.map((n, s) => ko(n) + ko(e[s]))) } function ko(e) { return e === "auto" ? 0 : Number(e.slice(0, -1).replace(",", ".")) * 1e3 } function So() { return document.body.offsetHeight } function $u(e, t, n) { const s = e[Gn]; s && (t = (t ? [t, ...s] : [...s]).join(" ")), t == null ? e.removeAttribute("class") : n ? e.setAttribute("class", t) : e.className = t } const Eo = Symbol("_vod"), Du = Symbol("_vsh"), Nu = Symbol(""), Fu = /(^|;)\s*display\s*:/; function Bu(e, t, n) { const s = e.style, r = Pe(n); let i = !1; if (n && !r) { if (t) if (Pe(t)) for (const o of t.split(";")) { const a = o.slice(0, o.indexOf(":")).trim(); n[a] == null && Rs(s, a, "") } else for (const o in t) n[o] == null && Rs(s, o, ""); for (const o in n) o === "display" && (i = !0), Rs(s, o, n[o]) } else if (r) { if (t !== n) { const o = s[Nu]; o && (n += ";" + o), s.cssText = n, i = Fu.test(n) } } else t && e.removeAttribute("style"); Eo in e && (e[Eo] = i ? s.display : "", e[Du] && (s.display = "none")) } const Ao = /\s*!important$/; function Rs(e, t, n) { if (Q(n)) n.forEach(s => Rs(e, t, s)); else if (n == null && (n = ""), t.startsWith("--")) e.setProperty(t, n); else { const s = Hu(e, t); Ao.test(n) ? e.setProperty(en(s), n.replace(Ao, ""), "important") : e[s] = n } } const Ro = ["Webkit", "Moz", "ms"], _r = {}; function Hu(e, t) { const n = _r[t]; if (n) return n; let s = jt(t); if (s !== "filter" && s in e) return _r[t] = s; s = ri(s); for (let r = 0; r < Ro.length; r++) { const i = Ro[r] + s; if (i in e) return _r[t] = i } return t } const Co = "http://www.w3.org/1999/xlink"; function Po(e, t, n, s, r, i = Wl(t)) { s && t.startsWith("xlink:") ? n == null ? e.removeAttributeNS(Co, t.slice(6, t.length)) : e.setAttributeNS(Co, t, n) : n == null || i && !oi(n) ? e.removeAttribute(t) : e.setAttribute(t, i ? "" : Ut(n) ? String(n) : n) } function Io(e, t, n, s, r) { if (t === "innerHTML" || t === "textContent") { n != null && (e[t] = t === "innerHTML" ? bo(n) : n); return } const i = e.tagName; if (t === "value" && i !== "PROGRESS" && !i.includes("-")) { const a = i === "OPTION" ? e.getAttribute("value") || "" : e.value, l = n == null ? e.type === "checkbox" ? "on" : "" : String(n); (a !== l || !("_value" in e)) && (e.value = l), n == null && e.removeAttribute(t), e._value = n; return } let o = !1; if (n === "" || n == null) { const a = typeof e[t]; a === "boolean" ? n = oi(n) : n == null && a === "string" ? (n = "", o = !0) : a === "number" && (n = 0, o = !0) } try { e[t] = n } catch { } o && e.removeAttribute(r || t) } function vn(e, t, n, s) { e.addEventListener(t, n, s) } function zu(e, t, n, s) { e.removeEventListener(t, n, s) } const Mo = Symbol("_vei"); function Uu(e, t, n, s, r = null) { const i = e[Mo] || (e[Mo] = {}), o = i[t]; if (s && o) o.value = s; else { const [a, l] = ju(t); if (s) { const f = i[t] = Wu(s, r); vn(e, a, f, l) } else o && (zu(e, a, o, l), i[t] = void 0) } } const Oo = /(?:Once|Passive|Capture)$/; function ju(e) { let t; if (Oo.test(e)) { t = {}; let s; for (; s = e.match(Oo);)e = e.slice(0, e.length - s[0].length), t[s[0].toLowerCase()] = !0 } return [e[2] === ":" ? e.slice(3) : en(e.slice(2)), t] } let Tr = 0; const Vu = Promise.resolve(), qu = () => Tr || (Vu.then(() => Tr = 0), Tr = Date.now()); function Wu(e, t) { const n = s => { if (!s._vts) s._vts = Date.now(); else if (s._vts <= n.attached) return; Tt(Gu(s, n.value), t, 5, [s]) }; return n.value = e, n.attached = qu(), n } function Gu(e, t) { if (Q(t)) { const n = e.stopImmediatePropagation; return e.stopImmediatePropagation = () => { n.call(e), e._stopped = !0 }, t.map(s => r => !r._stopped && s && s(r)) } else return t } const Lo = e => e.charCodeAt(0) === 111 && e.charCodeAt(1) === 110 && e.charCodeAt(2) > 96 && e.charCodeAt(2) < 123, Ku = (e, t, n, s, r, i) => { const o = r === "svg"; t === "class" ? $u(e, s, o) : t === "style" ? Bu(e, n, s) : ts(t) ? Hs(t) || Uu(e, t, n, s, i) : (t[0] === "." ? (t = t.slice(1), !0) : t[0] === "^" ? (t = t.slice(1), !1) : Yu(e, t, s, o)) ? (Io(e, t, s), !e.tagName.includes("-") && (t === "value" || t === "checked" || t === "selected") && Po(e, t, s, o, i, t !== "value")) : e._isVueCE && (/[A-Z]/.test(t) || !Pe(s)) ? Io(e, jt(t), s, i, t) : (t === "true-value" ? e._trueValue = s : t === "false-value" && (e._falseValue = s), Po(e, t, s, o)) }; function Yu(e, t, n, s) { if (s) return !!(t === "innerHTML" || t === "textContent" || t in e && Lo(t) && be(n)); if (t === "spellcheck" || t === "draggable" || t === "translate" || t === "autocorrect" || t === "form" || t === "list" && e.tagName === "INPUT" || t === "type" && e.tagName === "TEXTAREA") return !1; if (t === "width" || t === "height") { const r = e.tagName; if (r === "IMG" || r === "VIDEO" || r === "CANVAS" || r === "SOURCE") return !1 } return Lo(t) && Pe(n) ? !1 : t in e } const $o = e => { const t = e.props["onUpdate:modelValue"] || !1; return Q(t) ? n => rs(t, n) : t }; function Zu(e) { e.target.composing = !0 } function Do(e) { const t = e.target; t.composing && (t.composing = !1, t.dispatchEvent(new Event("input"))) } const kr = Symbol("_assign"), Xu = { created(e, { modifiers: { lazy: t, trim: n, number: s } }, r) { e[kr] = $o(r); const i = s || r.props && r.props.type === "number"; vn(e, t ? "change" : "input", o => { if (o.target.composing) return; let a = e.value; n && (a = a.trim()), i && (a = Vs(a)), e[kr](a) }), n && vn(e, "change", () => { e.value = e.value.trim() }), t || (vn(e, "compositionstart", Zu), vn(e, "compositionend", Do), vn(e, "change", Do)) }, mounted(e, { value: t }) { e.value = t == null ? "" : t }, beforeUpdate(e, { value: t, oldValue: n, modifiers: { lazy: s, trim: r, number: i } }, o) { if (e[kr] = $o(o), e.composing) return; const a = (i || e.type === "number") && !/^0\d/.test(e.value) ? Vs(e.value) : e.value, l = t == null ? "" : t; a !== l && (document.activeElement === e && e.type !== "range" && (s && t === n || r && e.value.trim() === l) || (e.value = l)) } }, Qu = ["ctrl", "shift", "alt", "meta"], Ju = { stop: e => e.stopPropagation(), prevent: e => e.preventDefault(), self: e => e.target !== e.currentTarget, ctrl: e => !e.ctrlKey, shift: e => !e.shiftKey, alt: e => !e.altKey, meta: e => !e.metaKey, left: e => "button" in e && e.button !== 0, middle: e => "button" in e && e.button !== 1, right: e => "button" in e && e.button !== 2, exact: (e, t) => Qu.some(n => e[`${n}Key`] && !t.includes(n)) }, pt = (e, t) => { const n = e._withMods || (e._withMods = {}), s = t.join("."); return n[s] || (n[s] = (r, ...i) => { for (let o = 0; o < t.length; o++) { const a = Ju[t[o]]; if (a && a(r, t)) return } return e(r, ...i) }) }, ec = bt({ patchProp: Ku }, Ru); let No; function tc() { return No || (No = Ka(ec)) } const nc = (...e) => { const t = tc().createApp(...e), { mount: n } = t; return t.mount = s => { const r = rc(s); if (!r) return; const i = t._component; !be(i) && !i.render && !i.template && (i.template = r.innerHTML), r.nodeType === 1 && (r.textContent = ""); const o = n(r, !1, sc(r)); return r instanceof Element && (r.removeAttribute("v-cloak"), r.setAttribute("data-v-app", "")), o }, t }; function sc(e) { if (e instanceof SVGElement) return "svg"; if (typeof MathMLElement == "function" && e instanceof MathMLElement) return "mathml" } function rc(e) { return Pe(e) ? document.querySelector(e) : e } const ic = ["aria-pressed"], oc = { key: 0, viewBox: "0 0 24 24", width: "20", height: "20", "aria-hidden": "true" }, lc = { key: 1, viewBox: "0 0 24 24", width: "18", height: "18", "aria-hidden": "true", fill: "none" }, ac = { __name: "ChatbotToggler", props: { isOpen: { type: Boolean, required: !0 } }, emits: ["toggle"], setup(e) { return (t, n) => (F(), W("button", { class: "fixed bottom-5 right-5 z-9999 grid h-12 w-12 appearance-none place-items-center rounded-full border border-white/20 bg-gradient-to-br from-brand-500 to-brand-600 text-white shadow-[0_20px_36px_-20px_rgba(109,79,194,0.85)] transition-all duration-250 hover:-translate-y-0.5 hover:from-brand-600 hover:to-violet-700 hover:shadow-[0_22px_40px_-22px_rgba(109,79,194,1)] focus:outline-none max-[600px]:bottom-3 max-[600px]:right-3 max-[600px]:h-13 max-[600px]:w-13", style: { "border-radius": "9999px" }, "aria-pressed": e.isOpen ? "true" : "false", onClick: n[0] || (n[0] = s => t.$emit("toggle")) }, [e.isOpen ? (F(), W("svg", lc, n[2] || (n[2] = [w("path", { d: "M6 6l12 12M18 6L6 18", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }, null, -1)]))) : (F(), W("svg", oc, n[1] || (n[1] = [w("path", { d: "M4 4h16a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H8l-4 4v-4H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z", fill: "currentColor", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "miter", "stroke-linejoin": "miter" }, null, -1)])))], 8, ic)) } }, uc = { class: "chat-header relative flex min-h-14 items-center justify-between px-4 pb-2.5 pt-3 text-white sm:px-5" }, cc = { class: "flex min-w-0 flex-1 items-center gap-2 sm:gap-2.5" }, fc = { xmlns: "http://www.w3.org/2000/svg", width: "35", height: "35", viewBox: "0 0 1024 1024", class: "h-8 w-8 shrink-0 rounded-full bg-white p-1.5 shadow-md motion-safe:animate-soft-float", style: { fill: "#6d4fc2" } }, pc = { class: "ml-2 flex items-center gap-1.5" }, dc = ["title"], hc = ["title", "aria-label"], gc = { key: 0, viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, mc = { key: 1, viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, bc = ["title", "aria-label"], xc = { key: 0, xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, yc = { key: 1, xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, wc = { key: 2, xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "aria-hidden": "true" }, vc = { __name: "ChatHeader", props: { windowMode: { type: String, required: !0 }, autoReadEnabled: { type: Boolean, required: !0 }, activeTtsProvider: { type: String, required: !0 } }, emits: ["close", "cycleResize", "toggleAutoRead"], setup(e) { const t = e, n = { default: "Compact", half: "Half Screen", full: "Full Screen" }, s = Ee(() => n[t.windowMode] || "Compact"), r = Ee(() => t.windowMode === "default" ? "Half Screen" : t.windowMode === "half" ? "Full Screen" : "Compact"), i = Ee(() => t.activeTtsProvider === "polly" ? "TTS: Polly" : t.activeTtsProvider === "browser" ? "TTS: Browser" : "TTS: Off"), o = Ee(() => t.activeTtsProvider === "polly" ? "bg-emerald-500/45" : t.activeTtsProvider === "browser" ? "bg-amber-500/45" : "bg-slate-500/35"); return (a, l) => (F(), W("div", uc, [w("div", cc, [(F(), W("svg", fc, l[3] || (l[3] = [w("path", { d: "M738.3 287.6H285.7c-59 0-106.8 47.8-106.8 106.8v303.1c0 59 47.8 106.8 106.8 106.8h81.5v111.1c0 .7.8 1.1 1.4.7l166.9-110.6 41.8-.8h117.4l43.6-.4c59 0 106.8-47.8 106.8-106.8V394.5c0-59-47.8-106.9-106.8-106.9zM351.7 448.2c0-29.5 23.9-53.5 53.5-53.5s53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5-53.5-23.9-53.5-53.5zm157.9 267.1c-67.8 0-123.8-47.5-132.3-109h264.6c-8.6 61.5-64.5 109-132.3 109zm110-213.7c-29.5 0-53.5-23.9-53.5-53.5s23.9-53.5 53.5-53.5 53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5zM867.2 644.5V453.1h26.5c19.4 0 35.1 15.7 35.1 35.1v121.1c0 19.4-15.7 35.1-35.1 35.1h-26.5zM95.2 609.4V488.2c0-19.4 15.7-35.1 35.1-35.1h26.5v191.3h-26.5c-19.4 0-35.1-15.7-35.1-35.1zM561.5 149.6c0 23.4-15.6 43.3-36.9 49.7v44.9h-30v-44.9c-21.4-6.5-36.9-26.3-36.9-49.7 0-28.6 23.3-51.9 51.9-51.9s51.9 23.3 51.9 51.9z" }, null, -1)]))), l[4] || (l[4] = w("h2", { class: "truncate text-xs font-semibold tracking-[0.01em] sm:text-base text-white/95" }, "ChangAI from ERPGulf", -1))]), w("div", pc, [w("span", { class: we(["hidden rounded-full border border-white/25 px-2 py-1 text-[10px] font-semibold uppercase tracking-wide text-white/95 shadow-sm backdrop-blur-sm sm:inline", o.value]), title: `TTS provider: ${i.value}` }, Je(i.value), 11, dc), w("button", { class: we(["h-8 min-w-8 appearance-none items-center justify-center rounded-md border border-white/20 px-2 text-xs font-semibold text-white/90 transition-all duration-200 focus:outline-none sm:flex", e.autoReadEnabled ? "bg-white/24 shadow-sm" : "hover:bg-white/15"]), style: { "border-radius": "0.375rem" }, title: e.autoReadEnabled ? "Auto speech on" : "Auto speech off", "aria-label": e.autoReadEnabled ? "Turn off auto speech" : "Turn on auto speech", onClick: l[0] || (l[0] = f => a.$emit("toggleAutoRead")) }, [e.autoReadEnabled ? (F(), W("svg", gc, l[5] || (l[5] = [w("path", { d: "M11 5L6 9H3v6h3l5 4V5z" }, null, -1), w("path", { d: "M15 9a4 4 0 0 1 0 6" }, null, -1), w("path", { d: "M18 7a7 7 0 0 1 0 10" }, null, -1)]))) : (F(), W("svg", mc, l[6] || (l[6] = [w("path", { d: "M11 5L6 9H3v6h3l5 4V5z" }, null, -1), w("path", { d: "M22 9l-6 6" }, null, -1), w("path", { d: "M16 9l6 6" }, null, -1)])))], 10, hc), w("button", { class: we(["flex h-8 min-w-8 appearance-none items-center justify-center rounded-md border border-white/20 px-2 text-xs font-semibold text-white/90 transition-all duration-200 focus:outline-none", "bg-white/20 shadow-sm hover:bg-white/25"]), style: { "border-radius": "0.375rem" }, title: `Resize mode: ${s.value} (click to ${r.value})`, "aria-label": `Resize mode ${s.value}. Click to switch to ${r.value}`, onClick: l[1] || (l[1] = f => a.$emit("cycleResize")) }, [e.windowMode === "default" ? (F(), W("svg", xc, l[7] || (l[7] = [w("rect", { x: "7", y: "8", width: "10", height: "8", rx: "2" }, null, -1)]))) : e.windowMode === "half" ? (F(), W("svg", yc, l[8] || (l[8] = [w("rect", { x: "4", y: "5", width: "16", height: "14", rx: "2" }, null, -1), w("path", { d: "M12 5v14" }, null, -1)]))) : (F(), W("svg", wc, l[9] || (l[9] = [w("rect", { x: "4", y: "5", width: "16", height: "14", rx: "2" }, null, -1), w("path", { d: "M8 8H6v2M16 8h2v2M8 16H6v-2M16 16h2v-2" }, null, -1)])))], 8, bc), w("button", { class: "grid h-8 w-8 shrink-0 appearance-none place-items-center rounded-full border border-white/20 text-white transition-all duration-200 hover:scale-105 hover:bg-white/20 focus:outline-none focus-visible:ring-2 focus-visible:ring-white/70", style: { "border-radius": "9999px" }, "aria-label": "Close chatbot", onClick: l[2] || (l[2] = f => a.$emit("close")) }, l[10] || (l[10] = [w("svg", { xmlns: "http://www.w3.org/2000/svg", height: "24", width: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2" }, [w("path", { d: "M6 9l6 6 6-6" })], -1)]))])])) } }, _c = { class: "flex gap-1.5 border-b border-slate-200/80 px-2.5 pb-2.5 pt-1" }, Tc = ["onClick"], kc = { class: "inline-flex items-center gap-1.5" }, Sc = { __name: "TabBar", props: { modelValue: { type: String, required: !0 }, debugEnabled: { type: Boolean, default: !1 } }, emits: ["update:modelValue"], setup(e) { const t = e, n = Ee(() => { const s = [{ id: "chat", label: "Chats" }, { id: "debug", label: "Debug" }, { id: "support", label: "Support" }, { id: "settings", label: "Settings" }]; return t.debugEnabled ? s : s.filter(r => r.id !== "debug") }); return (s, r) => (F(), W("div", _c, [(F(!0), W(He, null, ws(n.value, i => (F(), W("button", { key: i.id, class: we(["group min-w-0 flex-1 h-9 appearance-none rounded-lg border border-transparent bg-transparent px-2 text-xs font-semibold transition-all duration-200 focus:outline-none", e.modelValue === i.id ? "border-white/30 bg-linear-to-r from-violet-300/36 via-indigo-300/30 to-sky-300/28 text-white shadow-[0_4px_10px_rgba(20,24,40,0.22)]" : "text-white/80 hover:border-white/25 hover:bg-white/12 hover:text-white"]), onClick: o => s.$emit("update:modelValue", i.id) }, [w("span", kc, [w("span", { class: we(["h-1.5 w-1.5 rounded-full transition-colors duration-200", e.modelValue === i.id ? "bg-white" : "bg-white/40 group-hover:bg-white/70"]) }, null, 2), Ss(" " + Je(i.label), 1)])], 10, Tc))), 128))])) } }, Ec = (e, t) => { const n = e.__vccOpts || e; for (const [s, r] of t) n[s] = r; return n }, Ac = {}, Rc = { xmlns: "http://www.w3.org/2000/svg", width: "50", height: "50", viewBox: "0 0 1024 1024", class: "h-7.5 w-7.5 shrink-0 self-end rounded-full bg-gradient-to-br from-brand-500 to-brand-600 p-1.5 fill-white shadow-[0_10px_18px_-12px_rgba(109,79,194,0.85)]" }; function Cc(e, t) { return F(), W("svg", Rc, t[0] || (t[0] = [w("path", { d: "M738.3 287.6H285.7c-59 0-106.8 47.8-106.8 106.8v303.1c0 59 47.8 106.8 106.8 106.8h81.5v111.1c0 .7.8 1.1 1.4.7l166.9-110.6 41.8-.8h117.4l43.6-.4c59 0 106.8-47.8 106.8-106.8V394.5c0-59-47.8-106.9-106.8-106.9zM351.7 448.2c0-29.5 23.9-53.5 53.5-53.5s53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5-53.5-23.9-53.5-53.5zm157.9 267.1c-67.8 0-123.8-47.5-132.3-109h264.6c-8.6 61.5-64.5 109-132.3 109zm110-213.7c-29.5 0-53.5-23.9-53.5-53.5s23.9-53.5 53.5-53.5 53.5 23.9 53.5 53.5-23.9 53.5-53.5 53.5zM867.2 644.5V453.1h26.5c19.4 0 35.1 15.7 35.1 35.1v121.1c0 19.4-15.7 35.1-35.1 35.1h-26.5zM95.2 609.4V488.2c0-19.4 15.7-35.1 35.1-35.1h26.5v191.3h-26.5c-19.4 0-35.1-15.7-35.1-35.1zM561.5 149.6c0 23.4-15.6 43.3-36.9 49.7v44.9h-30v-44.9c-21.4-6.5-36.9-26.3-36.9-49.7 0-28.6 23.3-51.9 51.9-51.9s51.9 23.3 51.9 51.9z" }, null, -1)])) } const Fo = Ec(Ac, [["render", Cc]]), Cs = { PIPELINE: "changai.changai.api.v2.text2sql_pipeline_v2.run_text2sql_pipeline", SUPPORT: "changai.changai.api.v2.helpdesk_api.support_bot", SETTINGS: "changai.changai.api.v2.schema_utils.get_frontend_settings", TTS: "changai.changai.api.v2.tts.synthesize_tts" }; function Bo(e, t = {}, n = "actual") { return n === "test" ? Promise.resolve({ Bot: `[TEST MODE] ${JSON.stringify(t)}` }) : !window.frappe || !window.frappe.call ? Promise.reject(new Error("Frappe API is unavailable in actual mode.")) : new Promise((s, r) => { window.frappe.call({ method: e, args: t, callback(i) { s(i.message) }, error(i) { r(i) } }) }) } function Pc(e, t, n = "actual", s = null, r) { if (n === "test") return { promise: Promise.resolve({ Bot: `[TEST MODE] ${JSON.stringify({ user_question: e, chat_id: t, request_id: s, sendNonErptoAI: r })}` }), cancel: () => !1 }; if (!window.frappe || !window.frappe.call) return { promise: Promise.reject(new Error("Frappe API is unavailable in actual mode.")), cancel: () => !1 }; let i = null, o = !1; return { promise: new Promise((f, u) => { i = window.frappe.call({ method: Cs.PIPELINE, args: { user_question: e, chat_id: t, request_id: s, sendNonErptoAI: r }, callback(d) { o = !0, f(d.message) }, error(d) { o = !0, u(d) } }) }), cancel: () => o || !i || typeof i.abort != "function" ? !1 : (i.abort(), o = !0, !0) } } function Ic(e, t = "actual") { if (t === "test") return { promise: Promise.resolve(`[TEST MODE] ${JSON.stringify({ message: e })}`), cancel: () => !1 }; if (!window.frappe || !window.frappe.call) return { promise: Promise.reject(new Error("Frappe API is unavailable in actual mode.")), cancel: () => !1 }; let n = null, s = !1; return { promise: new Promise((o, a) => { n = window.frappe.call({ method: Cs.SUPPORT, args: { message: e }, callback(l) { s = !0, o(l.message) }, error(l) { s = !0, a(l) } }) }), cancel: () => s || !n || typeof n.abort != "function" ? !1 : (n.abort(), s = !0, !0) } } function Mc(e = "actual") { return Bo(Cs.SETTINGS, {}, e) } function Oc(e, t = "Zayd", n = "actual") { return Bo(Cs.TTS, { text: e, voice_id: t }, n) } function Sr() { return { async: !1, breaks: !1, extensions: null, gfm: !0, hooks: null, pedantic: !1, renderer: null, silent: !1, tokenizer: null, walkTokens: null } } var cn = Sr(); function Ho(e) { cn = e } var fn = { exec: () => null }; function le(e, t = "") { let n = typeof e == "string" ? e : e.source, s = { replace: (r, i) => { let o = typeof i == "string" ? i : i.source; return o = o.replace(We.caret, "$1"), n = n.replace(r, o), s }, getRegex: () => new RegExp(n, t) }; return s } var Lc = ((e = "") => { try { return !!new RegExp("(?<=1)(?/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] +\S/, listReplaceTask: /^\[[ xX]\] +/, listTaskCheckbox: /\[[ xX]\]/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: e => new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`), nextBulletRegex: e => new RegExp(`^ {0,${Math.min(3, e - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`), hrRegex: e => new RegExp(`^ {0,${Math.min(3, e - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), fencesBeginRegex: e => new RegExp(`^ {0,${Math.min(3, e - 1)}}(?:\`\`\`|~~~)`), headingBeginRegex: e => new RegExp(`^ {0,${Math.min(3, e - 1)}}#`), htmlBeginRegex: e => new RegExp(`^ {0,${Math.min(3, e - 1)}}<(?:[a-z].*>|!--)`, "i"), blockquoteBeginRegex: e => new RegExp(`^ {0,${Math.min(3, e - 1)}}>`) }, $c = /^(?:[ \t]*(?:\n|$))+/, Dc = /^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/, Nc = /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/, Kn = /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/, Fc = /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/, Er = / {0,3}(?:[*+-]|\d{1,9}[.)])/, zo = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/, Uo = le(zo).replace(/bull/g, Er).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/\|table/g, "").getRegex(), Bc = le(zo).replace(/bull/g, Er).replace(/blockCode/g, /(?: {4}| {0,3}\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\n>]+>\n/).replace(/table/g, / {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(), Ar = /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/, Hc = /^[^\n]+/, Rr = /(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/, zc = le(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label", Rr).replace("title", /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(), Uc = le(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g, Er).getRegex(), Ps = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul", Cr = /|$))/, jc = le("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))", "i").replace("comment", Cr).replace("tag", Ps).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(), jo = le(Ar).replace("hr", Kn).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("|table", "").replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", Ps).getRegex(), Vc = le(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph", jo).getRegex(), Pr = { blockquote: Vc, code: Dc, def: zc, fences: Nc, heading: Fc, hr: Kn, html: jc, lheading: Uo, list: Uc, newline: $c, paragraph: jo, table: fn, text: Hc }, Vo = le("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr", Kn).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("blockquote", " {0,3}>").replace("code", "(?: {4}| {0,3} )[^\\n]").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", Ps).getRegex(), qc = { ...Pr, lheading: Bc, table: Vo, paragraph: le(Ar).replace("hr", Kn).replace("heading", " {0,3}#{1,6}(?:\\s|$)").replace("|lheading", "").replace("table", Vo).replace("blockquote", " {0,3}>").replace("fences", " {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list", " {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html", ")|<(?:script|pre|style|textarea|!--)").replace("tag", Ps).getRegex() }, Wc = { + ...Pr, html: le(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment", Cr).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), def: /^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/, heading: /^(#{1,6})(.*)(?:\n+|$)/, fences: fn, lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/, paragraph: le(Ar).replace("hr", Kn).replace("heading", ` *#{1,6} *[^ +]`).replace("lheading", Uo).replace("|table", "").replace("blockquote", " {0,3}>").replace("|fences", "").replace("|list", "").replace("|html", "").replace("|tag", "").getRegex() + }, Gc = /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/, Kc = /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/, qo = /^( {2,}|\\)\n(?!\s*$)/, Yc = /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-", Lc ? "(?`+)[^`]+\k(?!`)/).replace("html", /<(?! )[^<>]*?>/).getRegex(), Go = /^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/, ef = le(Go, "u").replace(/punct/g, _n).getRegex(), tf = le(Go, "u").replace(/punct/g, Wo).getRegex(), Ko = "^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)", nf = le(Ko, "gu").replace(/notPunctSpace/g, Ir).replace(/punctSpace/g, Is).replace(/punct/g, _n).getRegex(), sf = le(Ko, "gu").replace(/notPunctSpace/g, Qc).replace(/punctSpace/g, Xc).replace(/punct/g, Wo).getRegex(), rf = le("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)", "gu").replace(/notPunctSpace/g, Ir).replace(/punctSpace/g, Is).replace(/punct/g, _n).getRegex(), of = le(/^~~?(?:((?!~)punct)|[^\s~])/, "u").replace(/punct/g, _n).getRegex(), lf = "^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)", af = le(lf, "gu").replace(/notPunctSpace/g, Ir).replace(/punctSpace/g, Is).replace(/punct/g, _n).getRegex(), uf = le(/\\(punct)/, "gu").replace(/punct/g, _n).getRegex(), cf = le(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(), ff = le(Cr).replace("(?:-->|$)", "-->").getRegex(), pf = le("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment", ff).replace("attribute", /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(), Ms = /(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/, df = le(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label", Ms).replace("href", /<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title", /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(), Yo = le(/^!?\[(label)\]\[(ref)\]/).replace("label", Ms).replace("ref", Rr).getRegex(), Zo = le(/^!?\[(ref)\](?:\[\])?/).replace("ref", Rr).getRegex(), hf = le("reflink|nolink(?!\\()", "g").replace("reflink", Yo).replace("nolink", Zo).getRegex(), Xo = /[hH][tT][tT][pP][sS]?|[fF][tT][pP]/, Mr = { _backpedal: fn, anyPunctuation: uf, autolink: cf, blockSkip: Jc, br: qo, code: Kc, del: fn, delLDelim: fn, delRDelim: fn, emStrongLDelim: ef, emStrongRDelimAst: nf, emStrongRDelimUnd: rf, escape: Gc, link: df, nolink: Zo, punctuation: Zc, reflink: Yo, reflinkSearch: hf, tag: pf, text: Yc, url: fn }, gf = { ...Mr, link: le(/^!?\[(label)\]\((.*?)\)/).replace("label", Ms).getRegex(), reflink: le(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", Ms).getRegex() }, Or = { ...Mr, emStrongRDelimAst: sf, emStrongLDelim: tf, delLDelim: of, delRDelim: af, url: le(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol", Xo).replace("email", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(), _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/, del: /^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/, text: le(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\": ">", '"': """, "'": "'" }, Qo = e => bf[e]; function Ct(e, t) { if (t) { if (We.escapeTest.test(e)) return e.replace(We.escapeReplace, Qo) } else if (We.escapeTestNoEncode.test(e)) return e.replace(We.escapeReplaceNoEncode, Qo); return e } function Jo(e) { try { e = encodeURI(e).replace(We.percentDecode, "%") } catch { return null } return e } function el(e, t) { var i; let n = e.replace(We.findPipe, (o, a, l) => { let f = !1, u = a; for (; --u >= 0 && l[u] === "\\";)f = !f; return f ? "|" : " |" }), s = n.split(We.splitPipe), r = 0; if (s[0].trim() || s.shift(), s.length > 0 && !((i = s.at(-1)) != null && i.trim()) && s.pop(), t) if (s.length > t) s.splice(t); else for (; s.length < t;)s.push(""); for (; r < s.length; r++)s[r] = s[r].trim().replace(We.slashPipe, "|"); return s } function Qt(e, t, n) { let s = e.length; if (s === 0) return ""; let r = 0; for (; r < s && e.charAt(s - r - 1) === t;)r++; return e.slice(0, s - r) } function tl(e) { + let t = e.split(` +`), n = t.length - 1; for (; n >= 0 && We.blankLine.test(t[n]);)n--; return t.length - n <= 2 ? e : t.slice(0, n + 1).join(` +`) + } function xf(e, t) { if (e.indexOf(t[1]) === -1) return -1; let n = 0; for (let s = 0; s < e.length; s++)if (e[s] === "\\") s++; else if (e[s] === t[0]) n++; else if (e[s] === t[1] && (n--, n < 0)) return s; return n > 0 ? -2 : -1 } function yf(e, t = 0) { let n = t, s = ""; for (let r of e) if (r === " ") { let i = 4 - n % 4; s += " ".repeat(i), n += i } else s += r, n++; return s } function nl(e, t, n, s, r) { let i = t.href, o = t.title || null, a = e[1].replace(r.other.outputLinkReplace, "$1"); s.state.inLink = !0; let l = { type: e[0].charAt(0) === "!" ? "image" : "link", raw: n, href: i, title: o, text: a, tokens: s.inlineTokens(a) }; return s.state.inLink = !1, l } function wf(e, t, n) { + let s = e.match(n.other.indentCodeCompensation); if (s === null) return t; let r = s[1]; return t.split(` +`).map(i => { let o = i.match(n.other.beginningSpace); if (o === null) return i; let [a] = o; return a.length >= r.length ? i.slice(r.length) : i }).join(` +`) + } var Ls = class { + constructor(e) { _e(this, "options"); _e(this, "rules"); _e(this, "lexer"); this.options = e || cn } space(e) { let t = this.rules.block.newline.exec(e); if (t && t[0].length > 0) return { type: "space", raw: t[0] } } code(e) { let t = this.rules.block.code.exec(e); if (t) { let n = this.options.pedantic ? t[0] : tl(t[0]), s = n.replace(this.rules.other.codeRemoveIndent, ""); return { type: "code", raw: n, codeBlockStyle: "indented", text: s } } } fences(e) { let t = this.rules.block.fences.exec(e); if (t) { let n = t[0], s = wf(n, t[3] || "", this.rules); return { type: "code", raw: n, lang: t[2] ? t[2].trim().replace(this.rules.inline.anyPunctuation, "$1") : t[2], text: s } } } heading(e) { + let t = this.rules.block.heading.exec(e); if (t) { + let n = t[2].trim(); if (this.rules.other.endingHash.test(n)) { let s = Qt(n, "#"); (this.options.pedantic || !s || this.rules.other.endingSpaceChar.test(s)) && (n = s.trim()) } return { + type: "heading", raw: Qt(t[0], ` +`), depth: t[1].length, text: n, tokens: this.lexer.inline(n) + } + } + } hr(e) { + let t = this.rules.block.hr.exec(e); if (t) return { + type: "hr", raw: Qt(t[0], ` +`) + } + } blockquote(e) { + let t = this.rules.block.blockquote.exec(e); if (t) { + let n = Qt(t[0], ` `).split(` -`),s="",r="",i=[];for(;n.length>0;){let o=!1,a=[],l;for(l=0;l1,r={type:"list",raw:"",ordered:s,start:s?+n.slice(0,-1):"",loose:!1,items:[]};n=s?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=s?n:"[*+-]");let i=this.rules.other.listItemRegex(n),o=!1;for(;e;){let l=!1,f="",u="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;f=t[0],e=e.substring(f.length);let d=yf(t[2].split(` -`,1)[0],t[1].length),g=e.split(` -`,1)[0],y=!d.trim(),E=0;if(this.options.pedantic?(E=2,u=d.trimStart()):y?E=t[1].length+1:(E=d.search(this.rules.other.nonSpaceChar),E=E>4?1:E,u=d.slice(E),E+=t[1].length),y&&this.rules.other.blankLine.test(g)&&(f+=g+` -`,e=e.substring(g.length+1),l=!0),!l){let x=this.rules.other.nextBulletRegex(E),M=this.rules.other.hrRegex(E),m=this.rules.other.fencesBeginRegex(E),H=this.rules.other.headingBeginRegex(E),Y=this.rules.other.htmlBeginRegex(E),$=this.rules.other.blockquoteBeginRegex(E);for(;e;){let z=e.split(` -`,1)[0],O;if(g=z,this.options.pedantic?(g=g.replace(this.rules.other.listReplaceNesting," "),O=g):O=g.replace(this.rules.other.tabCharGlobal," "),m.test(g)||H.test(g)||Y.test(g)||$.test(g)||x.test(g)||M.test(g))break;if(O.search(this.rules.other.nonSpaceChar)>=E||!g.trim())u+=` -`+O.slice(E);else{if(y||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||m.test(d)||H.test(d)||M.test(d))break;u+=` -`+g}y=!g.trim(),f+=z+` -`,e=e.substring(z.length+1),d=O.slice(E)}}r.loose||(o?r.loose=!0:this.rules.other.doubleBlankLine.test(f)&&(o=!0)),r.items.push({type:"list_item",raw:f,task:!!this.options.gfm&&this.rules.other.listIsTask.test(u),loose:!1,text:u,tokens:[]}),r.raw+=f}let a=r.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;r.raw=r.raw.trimEnd();for(let l of r.items){this.lexer.state.top=!1,l.tokens=this.lexer.blockTokens(l.text,[]);let f=l.tokens[0];if(l.task&&((f==null?void 0:f.type)==="text"||(f==null?void 0:f.type)==="paragraph")){l.text=l.text.replace(this.rules.other.listReplaceTask,""),f.raw=f.raw.replace(this.rules.other.listReplaceTask,""),f.text=f.text.replace(this.rules.other.listReplaceTask,"");for(let d=this.lexer.inlineQueue.length-1;d>=0;d--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[d].src)){this.lexer.inlineQueue[d].src=this.lexer.inlineQueue[d].src.replace(this.rules.other.listReplaceTask,"");break}let u=this.rules.other.listTaskCheckbox.exec(l.raw);if(u){let d={type:"checkbox",raw:u[0]+" ",checked:u[0]!=="[ ]"};l.checked=d.checked,r.loose?l.tokens[0]&&["paragraph","text"].includes(l.tokens[0].type)&&"tokens"in l.tokens[0]&&l.tokens[0].tokens?(l.tokens[0].raw=d.raw+l.tokens[0].raw,l.tokens[0].text=d.raw+l.tokens[0].text,l.tokens[0].tokens.unshift(d)):l.tokens.unshift({type:"paragraph",raw:d.raw,text:d.raw,tokens:[d]}):l.tokens.unshift(d)}}else l.task&&(l.task=!1);if(!r.loose){let u=l.tokens.filter(g=>g.type==="space"),d=u.length>0&&u.some(g=>this.rules.other.anyLine.test(g.raw));r.loose=d}}if(r.loose)for(let l of r.items){l.loose=!0;for(let f of l.tokens)f.type==="text"&&(f.type="paragraph")}return r}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=tl(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),s=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",r=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:Qt(t[0],` -`),href:s,title:r}}}table(e){var o;let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=el(t[1]),s=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),r=(o=t[3])!=null&&o.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(` -`):[],i={type:"table",raw:Qt(t[0],` -`),header:[],align:[],rows:[]};if(n.length===s.length){for(let a of s)this.rules.other.tableAlignRight.test(a)?i.align.push("right"):this.rules.other.tableAlignCenter.test(a)?i.align.push("center"):this.rules.other.tableAlignLeft.test(a)?i.align.push("left"):i.align.push(null);for(let a=0;a({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[f]})));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:Qt(t[0],` -`),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===` -`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let i=Qt(n.slice(0,-1),"\\");if((n.length-i.length)%2===0)return}else{let i=xf(t[2],"()");if(i===-2)return;if(i>-1){let o=(t[0].indexOf("!")===0?5:4)+t[1].length+i;t[2]=t[2].substring(0,i),t[0]=t[0].substring(0,o).trim(),t[3]=""}}let s=t[2],r="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(s);i&&(s=i[1],r=i[3])}else r=t[3]?t[3].slice(1,-1):"";return s=s.trim(),this.rules.other.startAngleBracket.test(s)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?s=s.slice(1):s=s.slice(1,-1)),nl(t,{href:s&&s.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let s=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[s.toLowerCase()];if(!r){let i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return nl(n,r,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let s=this.rules.inline.emStrongLDelim.exec(e);if(!(!s||!s[1]&&!s[2]&&!s[3]&&!s[4]||s[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(s[1]||s[3])||!n||this.rules.inline.punctuation.exec(n))){let r=[...s[0]].length-1,i,o,a=r,l=0,f=s[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(f.lastIndex=0,t=t.slice(-1*e.length+r);(s=f.exec(t))!==null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i)continue;if(o=[...i].length,s[3]||s[4]){a+=o;continue}else if((s[5]||s[6])&&r%3&&!((r+o)%3)){l+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a+l);let u=[...s[0]][0].length,d=e.slice(0,r+s.index+u+o);if(Math.min(r,o)%2){let y=d.slice(1,-1);return{type:"em",raw:d,text:y,tokens:this.lexer.inlineTokens(y)}}let g=d.slice(2,-2);return{type:"strong",raw:d,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),s=this.rules.other.nonSpaceChar.test(n),r=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return s&&r&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let s=this.rules.inline.delLDelim.exec(e);if(s&&(!s[1]||!n||this.rules.inline.punctuation.exec(n))){let r=[...s[0]].length-1,i,o,a=r,l=this.rules.inline.delRDelim;for(l.lastIndex=0,t=t.slice(-1*e.length+r);(s=l.exec(t))!==null;){if(i=s[1]||s[2]||s[3]||s[4]||s[5]||s[6],!i||(o=[...i].length,o!==r))continue;if(s[3]||s[4]){a+=o;continue}if(a-=o,a>0)continue;o=Math.min(o,o+a);let f=[...s[0]][0].length,u=e.slice(0,r+s.index+f+o),d=u.slice(r,-r);return{type:"del",raw:u,text:d,tokens:this.lexer.inlineTokens(d)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,s;return t[2]==="@"?(n=t[1],s="mailto:"+n):(n=t[1],s=n),{type:"link",raw:t[0],text:n,href:s,tokens:[{type:"text",raw:n,text:n}]}}}url(e){var n,s;let t;if(t=this.rules.inline.url.exec(e)){let r,i;if(t[2]==="@")r=t[0],i="mailto:"+r;else{let o;do o=t[0],t[0]=(s=(n=this.rules.inline._backpedal.exec(t[0]))==null?void 0:n[0])!=null?s:"";while(o!==t[0]);r=t[0],t[1]==="www."?i="http://"+t[0]:i=t[0]}return{type:"link",raw:t[0],text:r,href:i,tokens:[{type:"text",raw:r,text:r}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}},yt=class Xr{constructor(t){_e(this,"tokens");_e(this,"options");_e(this,"state");_e(this,"inlineQueue");_e(this,"tokenizer");this.tokens=[],this.tokens.links=Object.create(null),this.options=t||cn,this.options.tokenizer=this.options.tokenizer||new Ls,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:We,block:Os.normal,inline:Yn.normal};this.options.pedantic?(n.block=Os.pedantic,n.inline=Yn.pedantic):this.options.gfm&&(n.block=Os.gfm,this.options.breaks?n.inline=Yn.breaks:n.inline=Yn.gfm),this.tokenizer.rules=n}static get rules(){return{block:Os,inline:Yn}}static lex(t,n){return new Xr(n).lex(t)}static lexInline(t,n){return new Xr(n).inlineTokens(t)}lex(t){t=t.replace(We.carriageReturn,` -`),this.blockTokens(t,this.tokens);for(let n=0;n(l=u.call({lexer:this},t,n))?(t=t.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.space(t)){t=t.substring(l.raw.length);let u=n.at(-1);l.raw.length===1&&u!==void 0?u.raw+=` -`:n.push(l);continue}if(l=this.tokenizer.code(t)){t=t.substring(l.raw.length);let u=n.at(-1);(u==null?void 0:u.type)==="paragraph"||(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(` -`)?"":` -`)+l.raw,u.text+=` -`+l.text,this.inlineQueue.at(-1).src=u.text):n.push(l);continue}if(l=this.tokenizer.fences(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.heading(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.hr(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.blockquote(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.list(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.html(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.def(t)){t=t.substring(l.raw.length);let u=n.at(-1);(u==null?void 0:u.type)==="paragraph"||(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(` -`)?"":` -`)+l.raw,u.text+=` -`+l.raw,this.inlineQueue.at(-1).src=u.text):this.tokens.links[l.tag]||(this.tokens.links[l.tag]={href:l.href,title:l.title},n.push(l));continue}if(l=this.tokenizer.table(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.lheading(t)){t=t.substring(l.raw.length),n.push(l);continue}let f=t;if((a=this.options.extensions)!=null&&a.startBlock){let u=1/0,d=t.slice(1),g;this.options.extensions.startBlock.forEach(y=>{g=y.call({lexer:this},d),typeof g=="number"&&g>=0&&(u=Math.min(u,g))}),u<1/0&&u>=0&&(f=t.substring(0,u+1))}if(this.state.top&&(l=this.tokenizer.paragraph(f))){let u=n.at(-1);s&&(u==null?void 0:u.type)==="paragraph"?(u.raw+=(u.raw.endsWith(` -`)?"":` -`)+l.raw,u.text+=` -`+l.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=u.text):n.push(l),s=f.length!==t.length,t=t.substring(l.raw.length);continue}if(l=this.tokenizer.text(t)){t=t.substring(l.raw.length);let u=n.at(-1);(u==null?void 0:u.type)==="text"?(u.raw+=(u.raw.endsWith(` -`)?"":` -`)+l.raw,u.text+=` -`+l.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=u.text):n.push(l);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}inlineTokens(t,n=[]){var f,u,d,g,y,E;this.tokenizer.lexer=this;let s=t,r=null;if(this.tokens.links){let x=Object.keys(this.tokens.links);if(x.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(s))!==null;)x.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(s))!==null;)s=s.slice(0,r.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(r=this.tokenizer.rules.inline.blockSkip.exec(s))!==null;)i=r[2]?r[2].length:0,s=s.slice(0,r.index+i)+"["+"a".repeat(r[0].length-i-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);s=(d=(u=(f=this.options.hooks)==null?void 0:f.emStrongMask)==null?void 0:u.call({lexer:this},s))!=null?d:s;let o=!1,a="",l=1/0;for(;t;){if(t.length(x=m.call({lexer:this},t,n))?(t=t.substring(x.raw.length),n.push(x),!0):!1))continue;if(x=this.tokenizer.escape(t)){t=t.substring(x.raw.length),n.push(x);continue}if(x=this.tokenizer.tag(t)){t=t.substring(x.raw.length),n.push(x);continue}if(x=this.tokenizer.link(t)){t=t.substring(x.raw.length),n.push(x);continue}if(x=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(x.raw.length);let m=n.at(-1);x.type==="text"&&(m==null?void 0:m.type)==="text"?(m.raw+=x.raw,m.text+=x.text):n.push(x);continue}if(x=this.tokenizer.emStrong(t,s,a)){t=t.substring(x.raw.length),n.push(x);continue}if(x=this.tokenizer.codespan(t)){t=t.substring(x.raw.length),n.push(x);continue}if(x=this.tokenizer.br(t)){t=t.substring(x.raw.length),n.push(x);continue}if(x=this.tokenizer.del(t,s,a)){t=t.substring(x.raw.length),n.push(x);continue}if(x=this.tokenizer.autolink(t)){t=t.substring(x.raw.length),n.push(x);continue}if(!this.state.inLink&&(x=this.tokenizer.url(t))){t=t.substring(x.raw.length),n.push(x);continue}let M=t;if((E=this.options.extensions)!=null&&E.startInline){let m=1/0,H=t.slice(1),Y;this.options.extensions.startInline.forEach($=>{Y=$.call({lexer:this},H),typeof Y=="number"&&Y>=0&&(m=Math.min(m,Y))}),m<1/0&&m>=0&&(M=t.substring(0,m+1))}if(x=this.tokenizer.inlineText(M)){t=t.substring(x.raw.length),x.raw.slice(-1)!=="_"&&(a=x.raw.slice(-1)),o=!0;let m=n.at(-1);(m==null?void 0:m.type)==="text"?(m.raw+=x.raw,m.text+=x.text):n.push(x);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(!this.options.silent)throw new Error(n)}},$s=class{constructor(e){_e(this,"options");_e(this,"parser");this.options=e||cn}space(e){return""}code({text:e,lang:t,escaped:n}){var i;let s=(i=(t||"").match(We.notSpaceStart))==null?void 0:i[0],r=e.replace(We.endingNewline,"")+` -`;return s?'