diff --git a/backend/open_webui/retrieval/web/testdata/bing.json b/backend/open_webui/retrieval/web/testdata/bing.json
deleted file mode 100644
index 80324f3b40..0000000000
--- a/backend/open_webui/retrieval/web/testdata/bing.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "_type": "SearchResponse",
- "queryContext": {
- "originalQuery": "Top 10 international results"
- },
- "webPages": {
- "webSearchUrl": "https://www.bing.com/search?q=Top+10+international+results",
- "totalEstimatedMatches": 687,
- "value": [
- {
- "id": "https://api.bing.microsoft.com/api/v7/#WebPages.0",
- "name": "2024 Mexican Grand Prix - F1 results and latest standings ... - PlanetF1",
- "url": "https://www.planetf1.com/news/f1-results-2024-mexican-grand-prix-race-standings",
- "datePublished": "2024-10-27T00:00:00.0000000",
- "datePublishedFreshnessText": "1 day ago",
- "isFamilyFriendly": true,
- "displayUrl": "https://www.planetf1.com/news/f1-results-2024-mexican-grand-prix-race-standings",
- "snippet": "Nico Hulkenberg and Pierre Gasly completed the top 10. A full report of the Mexican Grand Prix is available at the bottom of this article. F1 results – 2024 Mexican Grand Prix",
- "dateLastCrawled": "2024-10-28T07:15:00.0000000Z",
- "cachedPageUrl": "https://cc.bingj.com/cache.aspx?q=Top+10+international+results&d=916492551782&mkt=en-US&setlang=en-US&w=zBsfaAPyF2tUrHFHr_vFFdUm8sng4g34",
- "language": "en",
- "isNavigational": false,
- "noCache": false
- },
- {
- "id": "https://api.bing.microsoft.com/api/v7/#WebPages.1",
- "name": "F1 Results Today: HUGE Verstappen penalties cause major title change",
- "url": "https://www.gpfans.com/en/f1-news/1033512/f1-results-today-mexican-grand-prix-huge-max-verstappen-penalties-cause-major-title-change/",
- "datePublished": "2024-10-27T00:00:00.0000000",
- "datePublishedFreshnessText": "1 day ago",
- "isFamilyFriendly": true,
- "displayUrl": "https://www.gpfans.com/en/f1-news/1033512/f1-results-today-mexican-grand-prix-huge-max...",
- "snippet": "Elsewhere, Mercedes duo Lewis Hamilton and George Russell came home in P4 and P5 respectively. Meanwhile, the surprise package of the day were Haas, with both Kevin Magnussen and Nico Hulkenberg finishing inside the points.. READ MORE: RB star issues apology after red flag CRASH at Mexican GP Mexican Grand Prix 2024 results. 1. Carlos Sainz [Ferrari] 2. Lando Norris [McLaren] - +4.705",
- "dateLastCrawled": "2024-10-28T06:06:00.0000000Z",
- "cachedPageUrl": "https://cc.bingj.com/cache.aspx?q=Top+10+international+results&d=2840656522642&mkt=en-US&setlang=en-US&w=-Tbkwxnq52jZCvG7l3CtgcwT1vwAjIUD",
- "language": "en",
- "isNavigational": false,
- "noCache": false
- },
- {
- "id": "https://api.bing.microsoft.com/api/v7/#WebPages.2",
- "name": "International Power Rankings: England flying, Kangaroos cruising, Fiji rise",
- "url": "https://www.loverugbyleague.com/post/international-power-rankings-england-flying-kangaroos-cruising-fiji-rise",
- "datePublished": "2024-10-28T00:00:00.0000000",
- "datePublishedFreshnessText": "7 hours ago",
- "isFamilyFriendly": true,
- "displayUrl": "https://www.loverugbyleague.com/post/international-power-rankings-england-flying...",
- "snippet": "LRL RECOMMENDS: England player ratings from first Test against Samoa as omnificent George Williams scores perfect 10. 2. Australia (Men) – SAME. The Kangaroos remain 2nd in our Power Rankings after their 22-10 win against New Zealand in Christchurch on Sunday. As was the case in their win against Tonga last week, Mal Meninga’s side weren ...",
- "dateLastCrawled": "2024-10-28T07:09:00.0000000Z",
- "cachedPageUrl": "https://cc.bingj.com/cache.aspx?q=Top+10+international+results&d=1535008462672&mkt=en-US&setlang=en-US&w=82ujhH4Kp0iuhCS7wh1xLUFYUeetaVVm",
- "language": "en",
- "isNavigational": false,
- "noCache": false
- }
- ],
- "someResultsRemoved": true
- }
-}
diff --git a/backend/open_webui/retrieval/web/testdata/brave.json b/backend/open_webui/retrieval/web/testdata/brave.json
deleted file mode 100644
index 0cc72109ef..0000000000
--- a/backend/open_webui/retrieval/web/testdata/brave.json
+++ /dev/null
@@ -1,998 +0,0 @@
-{
- "query": {
- "original": "python",
- "show_strict_warning": false,
- "is_navigational": true,
- "is_news_breaking": false,
- "spellcheck_off": true,
- "country": "us",
- "bad_results": false,
- "should_fallback": false,
- "postal_code": "",
- "city": "",
- "header_country": "",
- "more_results_available": true,
- "state": ""
- },
- "mixed": {
- "type": "mixed",
- "main": [
- {
- "type": "web",
- "index": 0,
- "all": false
- },
- {
- "type": "web",
- "index": 1,
- "all": false
- },
- {
- "type": "news",
- "all": true
- },
- {
- "type": "web",
- "index": 2,
- "all": false
- },
- {
- "type": "videos",
- "all": true
- },
- {
- "type": "web",
- "index": 3,
- "all": false
- },
- {
- "type": "web",
- "index": 4,
- "all": false
- },
- {
- "type": "web",
- "index": 5,
- "all": false
- },
- {
- "type": "web",
- "index": 6,
- "all": false
- },
- {
- "type": "web",
- "index": 7,
- "all": false
- },
- {
- "type": "web",
- "index": 8,
- "all": false
- },
- {
- "type": "web",
- "index": 9,
- "all": false
- },
- {
- "type": "web",
- "index": 10,
- "all": false
- },
- {
- "type": "web",
- "index": 11,
- "all": false
- },
- {
- "type": "web",
- "index": 12,
- "all": false
- },
- {
- "type": "web",
- "index": 13,
- "all": false
- },
- {
- "type": "web",
- "index": 14,
- "all": false
- },
- {
- "type": "web",
- "index": 15,
- "all": false
- },
- {
- "type": "web",
- "index": 16,
- "all": false
- },
- {
- "type": "web",
- "index": 17,
- "all": false
- },
- {
- "type": "web",
- "index": 18,
- "all": false
- },
- {
- "type": "web",
- "index": 19,
- "all": false
- }
- ],
- "top": [],
- "side": []
- },
- "news": {
- "type": "news",
- "results": [
- {
- "title": "Google lays off staff from Flutter, Dart and Python teams weeks before its developer conference | TechCrunch",
- "url": "https://techcrunch.com/2024/05/01/google-lays-off-staff-from-flutter-dart-python-weeks-before-its-developer-conference/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Google told TechCrunch that Flutter will have new updates to share at I/O this year.",
- "page_age": "2024-05-02T17:40:05",
- "family_friendly": true,
- "meta_url": {
- "scheme": "https",
- "netloc": "techcrunch.com",
- "hostname": "techcrunch.com",
- "favicon": "https://imgs.search.brave.com/N6VSEVahheQOb7lqfb47dhUOB4XD-6sfQOP94sCe3Oo/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvZGI5Njk0Yzlk/YWM3ZWMwZjg1MTM1/NmIyMWEyNzBjZDZj/ZDQyNmFlNGU0NDRi/MDgyYjQwOGU0Y2Qy/ZWMwNWQ2ZC90ZWNo/Y3J1bmNoLmNvbS8",
- "path": "› 2024 › 05 › 01 › google-lays-off-staff-from-flutter-dart-python-weeks-before-its-developer-conference"
- },
- "breaking": false,
- "thumbnail": {
- "src": "https://imgs.search.brave.com/gCI5UG8muOEOZDAx9vpu6L6r6R00mD7jOF08-biFoyQ/rs:fit:200:200:1/g:ce/aHR0cHM6Ly90ZWNo/Y3J1bmNoLmNvbS93/cC1jb250ZW50L3Vw/bG9hZHMvMjAxOC8x/MS9HZXR0eUltYWdl/cy0xMDAyNDg0NzQ2/LmpwZz9yZXNpemU9/MTIwMCw4MDA"
- },
- "age": "3 days ago",
- "extra_snippets": [
- "Ahead of Google’s annual I/O developer conference in May, the tech giant has laid off staff across key teams like Flutter, Dart, Python and others, according to reports from affected employees shared on social media. Google confirmed the layoffs to TechCrunch, but not the specific teams, roles or how many people were let go.",
- "In a separate post on Reddit, another commenter noted the Python team affected by the layoffs were those who managed the internal Python runtimes and toolchains and worked with OSS Python. Included in this group were “multiple current and former core devs and steering council members,” they said.",
- "Meanwhile, others shared on Y Combinator’s Hacker News, where a Python team member detailed their specific duties on the technical front and noted that, for years, much of the work was done with fewer than 10 people. Another Hacker News commenter said their early years on the Python team were spent paying down internal technical debt accumulated from not having a strong Python strategy.",
- "CNBC reports that a total of 200 people were let go across Google’s “Core” teams, which included those working on Python, app platforms, and other engineering roles. Some jobs were being shifted to India and Mexico, it said, citing internal documents."
- ]
- }
- ],
- "mutated_by_goggles": false
- },
- "type": "search",
- "videos": {
- "type": "videos",
- "results": [
- {
- "type": "video_result",
- "url": "https://www.youtube.com/watch?v=b093aqAZiPU",
- "title": "👩💻 Python for Beginners Tutorial - YouTube",
- "description": "In this step-by-step Python for beginner's tutorial, learn how you can get started programming in Python. In this video, I assume that you are completely new...",
- "age": "March 25, 2021",
- "page_age": "2021-03-25T10:00:08",
- "video": {},
- "meta_url": {
- "scheme": "https",
- "netloc": "youtube.com",
- "hostname": "www.youtube.com",
- "favicon": "https://imgs.search.brave.com/Ux4Hee4evZhvjuTKwtapBycOGjGDci2Gvn2pbSzvbC0/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTkyZTZiMWU3/YzU3Nzc5YjExYzUy/N2VhZTIxOWNlYjM5/ZGVjN2MyZDY4Nzdh/ZDYzMTYxNmI5N2Rk/Y2Q3N2FkNy93d3cu/eW91dHViZS5jb20v",
- "path": "› watch"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/tZI4Do4_EYcTCsD_MvE3Jx8FzjIXwIJ5ZuKhwiWTyZs/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9pLnl0/aW1nLmNvbS92aS9i/MDkzYXFBWmlQVS9t/YXhyZXNkZWZhdWx0/LmpwZw"
- }
- },
- {
- "type": "video_result",
- "url": "https://www.youtube.com/watch?v=rfscVS0vtbw",
- "title": "Learn Python - Full Course for Beginners [Tutorial] - YouTube",
- "description": "This course will give you a full introduction into all of the core concepts in python. Follow along with the videos and you'll be a python programmer in no t...",
- "age": "July 11, 2018",
- "page_age": "2018-07-11T18:00:42",
- "video": {},
- "meta_url": {
- "scheme": "https",
- "netloc": "youtube.com",
- "hostname": "www.youtube.com",
- "favicon": "https://imgs.search.brave.com/Ux4Hee4evZhvjuTKwtapBycOGjGDci2Gvn2pbSzvbC0/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTkyZTZiMWU3/YzU3Nzc5YjExYzUy/N2VhZTIxOWNlYjM5/ZGVjN2MyZDY4Nzdh/ZDYzMTYxNmI5N2Rk/Y2Q3N2FkNy93d3cu/eW91dHViZS5jb20v",
- "path": "› watch"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/65zkx_kPU_zJb-4nmvvY-q5-ZZwzceChz-N00V8cqvk/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9pLnl0/aW1nLmNvbS92aS9y/ZnNjVlMwdnRidy9t/YXhyZXNkZWZhdWx0/LmpwZw"
- }
- },
- {
- "type": "video_result",
- "url": "https://www.youtube.com/watch?v=_uQrJ0TkZlc",
- "title": "Python Tutorial - Python Full Course for Beginners - YouTube",
- "description": "Become a Python pro! 🚀 This comprehensive tutorial takes you from beginner to hero, covering the basics, machine learning, and web development projects.🚀 W...",
- "age": "February 18, 2019",
- "page_age": "2019-02-18T15:00:08",
- "video": {},
- "meta_url": {
- "scheme": "https",
- "netloc": "youtube.com",
- "hostname": "www.youtube.com",
- "favicon": "https://imgs.search.brave.com/Ux4Hee4evZhvjuTKwtapBycOGjGDci2Gvn2pbSzvbC0/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTkyZTZiMWU3/YzU3Nzc5YjExYzUy/N2VhZTIxOWNlYjM5/ZGVjN2MyZDY4Nzdh/ZDYzMTYxNmI5N2Rk/Y2Q3N2FkNy93d3cu/eW91dHViZS5jb20v",
- "path": "› watch"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/Djiv1pXLq1ClqBSE_86jQnEYR8bW8UJP6Cs7LrgyQzQ/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9pLnl0/aW1nLmNvbS92aS9f/dVFySjBUa1psYy9t/YXhyZXNkZWZhdWx0/LmpwZw"
- }
- },
- {
- "type": "video_result",
- "url": "https://www.youtube.com/watch?v=wRKgzC-MhIc",
- "title": "[] and {} vs list() and dict(), which is better?",
- "description": "Enjoy the videos and music you love, upload original content, and share it all with friends, family, and the world on YouTube.",
- "video": {},
- "meta_url": {
- "scheme": "https",
- "netloc": "youtube.com",
- "hostname": "www.youtube.com",
- "favicon": "https://imgs.search.brave.com/Ux4Hee4evZhvjuTKwtapBycOGjGDci2Gvn2pbSzvbC0/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTkyZTZiMWU3/YzU3Nzc5YjExYzUy/N2VhZTIxOWNlYjM5/ZGVjN2MyZDY4Nzdh/ZDYzMTYxNmI5N2Rk/Y2Q3N2FkNy93d3cu/eW91dHViZS5jb20v",
- "path": "› watch"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/Hw9ep2Pio13X1VZjRw_h9R2VH_XvZFOuGlQJVnVkeq0/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9pLnl0/aW1nLmNvbS92aS93/UktnekMtTWhJYy9o/cWRlZmF1bHQuanBn"
- }
- },
- {
- "type": "video_result",
- "url": "https://www.youtube.com/watch?v=LWdsF79H1Pg",
- "title": "print() vs. return in Python Functions - YouTube",
- "description": "In this video, you will learn the differences between the return statement and the print function when they are used inside Python functions. We will see an ...",
- "age": "June 11, 2022",
- "page_age": "2022-06-11T21:33:26",
- "video": {},
- "meta_url": {
- "scheme": "https",
- "netloc": "youtube.com",
- "hostname": "www.youtube.com",
- "favicon": "https://imgs.search.brave.com/Ux4Hee4evZhvjuTKwtapBycOGjGDci2Gvn2pbSzvbC0/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTkyZTZiMWU3/YzU3Nzc5YjExYzUy/N2VhZTIxOWNlYjM5/ZGVjN2MyZDY4Nzdh/ZDYzMTYxNmI5N2Rk/Y2Q3N2FkNy93d3cu/eW91dHViZS5jb20v",
- "path": "› watch"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/ebglnr5_jwHHpvon3WU-5hzt0eHdTZSVGg3Ts6R38xY/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9pLnl0/aW1nLmNvbS92aS9M/V2RzRjc5SDFQZy9t/YXhyZXNkZWZhdWx0/LmpwZw"
- }
- },
- {
- "type": "video_result",
- "url": "https://www.youtube.com/watch?v=AovxLr8jUH4",
- "title": "Python Tutorial for Beginners 5 - Python print() and input() Function ...",
- "description": "In this Video I am going to show How to use print() Function and input() Function in Python. In python The print() function is used to print the specified ...",
- "age": "August 28, 2018",
- "page_age": "2018-08-28T20:11:09",
- "video": {},
- "meta_url": {
- "scheme": "https",
- "netloc": "youtube.com",
- "hostname": "www.youtube.com",
- "favicon": "https://imgs.search.brave.com/Ux4Hee4evZhvjuTKwtapBycOGjGDci2Gvn2pbSzvbC0/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTkyZTZiMWU3/YzU3Nzc5YjExYzUy/N2VhZTIxOWNlYjM5/ZGVjN2MyZDY4Nzdh/ZDYzMTYxNmI5N2Rk/Y2Q3N2FkNy93d3cu/eW91dHViZS5jb20v",
- "path": "› watch"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/nCoLEcWkKtiecprWbS6nufwGCaSbPH7o0-sMeIkFmjI/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9pLnl0/aW1nLmNvbS92aS9B/b3Z4THI4alVINC9o/cWRlZmF1bHQuanBn"
- }
- }
- ],
- "mutated_by_goggles": false
- },
- "web": {
- "type": "search",
- "results": [
- {
- "title": "Welcome to Python.org",
- "url": "https://www.python.org",
- "is_source_local": false,
- "is_source_both": false,
- "description": "The official home of the Python Programming Language",
- "page_age": "2023-09-09T15:55:05",
- "profile": {
- "name": "Python",
- "url": "https://www.python.org",
- "long_name": "python.org",
- "img": "https://imgs.search.brave.com/vBaRH-v6oPS4csO4cdvuKhZ7-xDVvydin3oe3zXYxAI/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvNTJjMzZjNDBj/MmIzODgwMGUyOTRj/Y2E5MjM3YjRkYTZj/YWI1Yzk1NTlmYTgw/ZDBjNzM0MGMxZjQz/YWFjNTczYy93d3cu/cHl0aG9uLm9yZy8"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "python.org",
- "hostname": "www.python.org",
- "favicon": "https://imgs.search.brave.com/vBaRH-v6oPS4csO4cdvuKhZ7-xDVvydin3oe3zXYxAI/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvNTJjMzZjNDBj/MmIzODgwMGUyOTRj/Y2E5MjM3YjRkYTZj/YWI1Yzk1NTlmYTgw/ZDBjNzM0MGMxZjQz/YWFjNTczYy93d3cu/cHl0aG9uLm9yZy8",
- "path": ""
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/GGfNfe5rxJ8QWEoxXniSLc0-POLU3qPyTIpuqPdbmXk/rs:fit:200:200:1/g:ce/aHR0cHM6Ly93d3cu/cHl0aG9uLm9yZy9z/dGF0aWMvb3Blbmdy/YXBoLWljb24tMjAw/eDIwMC5wbmc",
- "original": "https://www.python.org/static/opengraph-icon-200x200.png",
- "logo": false
- },
- "age": "September 9, 2023",
- "cluster_type": "generic",
- "cluster": [
- {
- "title": "Downloads",
- "url": "https://www.python.org/downloads/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "The official home of the Python Programming Language",
- "family_friendly": true
- },
- {
- "title": "Macos",
- "url": "https://www.python.org/downloads/macos/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "The official home of the Python Programming Language",
- "family_friendly": true
- },
- {
- "title": "Windows",
- "url": "https://www.python.org/downloads/windows/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "The official home of the Python Programming Language",
- "family_friendly": true
- },
- {
- "title": "Getting Started",
- "url": "https://www.python.org/about/gettingstarted/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "The official home of the Python Programming Language",
- "family_friendly": true
- }
- ],
- "extra_snippets": [
- "Calculations are simple with Python, and expression syntax is straightforward: the operators +, -, * and / work as expected; parentheses () can be used for grouping. More about simple math functions in Python 3.",
- "The core of extensible programming is defining functions. Python allows mandatory and optional arguments, keyword arguments, and even arbitrary argument lists. More about defining functions in Python 3",
- "Lists (known as arrays in other languages) are one of the compound data types that Python understands. Lists can be indexed, sliced and manipulated with other built-in functions. More about lists in Python 3",
- "# Python 3: Simple output (with Unicode) >>> print(\"Hello, I'm Python!\") Hello, I'm Python! # Input, assignment >>> name = input('What is your name?\\n') >>> print('Hi, %s.' % name) What is your name? Python Hi, Python."
- ]
- },
- {
- "title": "Python (programming language) - Wikipedia",
- "url": "https://en.wikipedia.org/wiki/Python_(programming_language)",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), ...",
- "page_age": "2024-05-01T12:54:03",
- "profile": {
- "name": "Wikipedia",
- "url": "https://en.wikipedia.org/wiki/Python_(programming_language)",
- "long_name": "en.wikipedia.org",
- "img": "https://imgs.search.brave.com/0kxnVOiqv-faZvOJc7zpym4Zin1CTs1f1svfNZSzmfU/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvNjQwNGZhZWY0/ZTQ1YWUzYzQ3MDUw/MmMzMGY3NTQ0ZjNj/NDUwMDk5ZTI3MWRk/NWYyNTM4N2UwOTE0/NTI3ZDQzNy9lbi53/aWtpcGVkaWEub3Jn/Lw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "en.wikipedia.org",
- "hostname": "en.wikipedia.org",
- "favicon": "https://imgs.search.brave.com/0kxnVOiqv-faZvOJc7zpym4Zin1CTs1f1svfNZSzmfU/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvNjQwNGZhZWY0/ZTQ1YWUzYzQ3MDUw/MmMzMGY3NTQ0ZjNj/NDUwMDk5ZTI3MWRk/NWYyNTM4N2UwOTE0/NTI3ZDQzNy9lbi53/aWtpcGVkaWEub3Jn/Lw",
- "path": "› wiki › Python_(programming_language)"
- },
- "age": "4 days ago",
- "extra_snippets": [
- "Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), object-oriented and functional programming. It is often described as a \"batteries included\" language due to its comprehensive standard library.",
- "Guido van Rossum began working on Python in the late 1980s as a successor to the ABC programming language and first released it in 1991 as Python 0.9.0. Python 2.0 was released in 2000. Python 3.0, released in 2008, was a major revision not completely backward-compatible with earlier versions. Python 2.7.18, released in 2020, was the last release of Python 2.",
- "Python was invented in the late 1980s by Guido van Rossum at Centrum Wiskunde & Informatica (CWI) in the Netherlands as a successor to the ABC programming language, which was inspired by SETL, capable of exception handling and interfacing with the Amoeba operating system.",
- "Python consistently ranks as one of the most popular programming languages, and has gained widespread use in the machine learning community."
- ]
- },
- {
- "title": "Python Tutorial",
- "url": "https://www.w3schools.com/python/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.",
- "page_age": "2017-12-07T00:00:00",
- "profile": {
- "name": "W3Schools",
- "url": "https://www.w3schools.com/python/",
- "long_name": "w3schools.com",
- "img": "https://imgs.search.brave.com/JwO5r7z3HTBkU29vgNH_4rrSWLf2M4-8FMWNvbxrKX8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjVlMGVkZDVj/ZGMyZWRmMzAwODRi/ZDAwZGE4NWI3NmU4/MjRhNjEzOGFhZWY3/ZGViMjY1OWY2ZDYw/YTZiOGUyZS93d3cu/dzNzY2hvb2xzLmNv/bS8"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "w3schools.com",
- "hostname": "www.w3schools.com",
- "favicon": "https://imgs.search.brave.com/JwO5r7z3HTBkU29vgNH_4rrSWLf2M4-8FMWNvbxrKX8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjVlMGVkZDVj/ZGMyZWRmMzAwODRi/ZDAwZGE4NWI3NmU4/MjRhNjEzOGFhZWY3/ZGViMjY1OWY2ZDYw/YTZiOGUyZS93d3cu/dzNzY2hvb2xzLmNv/bS8",
- "path": "› python"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/EMfp8dodbJehmj0yCJh8317RHuaumsddnHI4bujvFcg/rs:fit:200:200:1/g:ce/aHR0cHM6Ly93d3cu/dzNzY2hvb2xzLmNv/bS9pbWFnZXMvdzNz/Y2hvb2xzX2xvZ29f/NDM2XzIucG5n",
- "original": "https://www.w3schools.com/images/w3schools_logo_436_2.png",
- "logo": true
- },
- "age": "December 7, 2017",
- "extra_snippets": [
- "Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.",
- "HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE",
- "Python Variables Variable Names Assign Multiple Values Output Variables Global Variables Variable Exercises Python Data Types Python Numbers Python Casting Python Strings",
- "Python Strings Slicing Strings Modify Strings Concatenate Strings Format Strings Escape Characters String Methods String Exercises Python Booleans Python Operators Python Lists"
- ]
- },
- {
- "title": "Online Python - IDE, Editor, Compiler, Interpreter",
- "url": "https://www.online-python.com/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Build and Run your Python code instantly. Online-Python is a quick and easy tool that helps you to build, compile, test your python programs.",
- "profile": {
- "name": "Online-python",
- "url": "https://www.online-python.com/",
- "long_name": "online-python.com",
- "img": "https://imgs.search.brave.com/kfaEvapwHxSsRObO52-I-otYFPHpG1h7UXJyUqDM2Ec/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvZGYxODdjNWQ0/NjZjZTNiMjk5NDY1/MWI5MTgyYjU3Y2Q3/MTI3NGM5MjUzY2Fi/OGQ3MTQ4MmIxMTQx/ZTcxNWFhMC93d3cu/b25saW5lLXB5dGhv/bi5jb20v"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "online-python.com",
- "hostname": "www.online-python.com",
- "favicon": "https://imgs.search.brave.com/kfaEvapwHxSsRObO52-I-otYFPHpG1h7UXJyUqDM2Ec/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvZGYxODdjNWQ0/NjZjZTNiMjk5NDY1/MWI5MTgyYjU3Y2Q3/MTI3NGM5MjUzY2Fi/OGQ3MTQ4MmIxMTQx/ZTcxNWFhMC93d3cu/b25saW5lLXB5dGhv/bi5jb20v",
- "path": ""
- },
- "extra_snippets": [
- "Build, run, and share Python code online for free with the help of online-integrated python's development environment (IDE). It is one of the most efficient, dependable, and potent online compilers for the Python programming language. It is not necessary for you to bother about establishing a Python environment in your local.",
- "It is one of the most efficient, dependable, and potent online compilers for the Python programming language. It is not necessary for you to bother about establishing a Python environment in your local. Now You can immediately execute the Python code in the web browser of your choice.",
- "It is not necessary for you to bother about establishing a Python environment in your local. Now You can immediately execute the Python code in the web browser of your choice. Using this Python editor is simple and quick to get up and running with. Simply type in the programme, and then press the RUN button!",
- "Now You can immediately execute the Python code in the web browser of your choice. Using this Python editor is simple and quick to get up and running with. Simply type in the programme, and then press the RUN button! The code can be saved online by choosing the SHARE option, which also gives you the ability to access your code from any location providing you have internet access."
- ]
- },
- {
- "title": "Python · GitHub",
- "url": "https://github.com/python",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Repositories related to the Python Programming language - Python",
- "page_age": "2023-03-06T00:00:00",
- "profile": {
- "name": "GitHub",
- "url": "https://github.com/python",
- "long_name": "github.com",
- "img": "https://imgs.search.brave.com/v8685zI4XInM0zxlNI2s7oE_2Sb-EL7lAy81WXbkQD8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYWQyNWM1NjA5/ZjZmZjNlYzI2MDNk/N2VkNmJhYjE2MzZl/MDY5ZTMxMDUzZmY1/NmU3NWIzNWVmMjk0/NTBjMjJjZi9naXRo/dWIuY29tLw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "github.com",
- "hostname": "github.com",
- "favicon": "https://imgs.search.brave.com/v8685zI4XInM0zxlNI2s7oE_2Sb-EL7lAy81WXbkQD8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYWQyNWM1NjA5/ZjZmZjNlYzI2MDNk/N2VkNmJhYjE2MzZl/MDY5ZTMxMDUzZmY1/NmU3NWIzNWVmMjk0/NTBjMjJjZi9naXRo/dWIuY29tLw",
- "path": "› python"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/POoaRfu_7gfp-D_O3qMNJrwDqJNbiDu1HuBpNJ_MpVQ/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9hdmF0/YXJzLmdpdGh1YnVz/ZXJjb250ZW50LmNv/bS91LzE1MjU5ODE_/cz0yMDAmYW1wO3Y9/NA",
- "original": "https://avatars.githubusercontent.com/u/1525981?s=200&v=4",
- "logo": false
- },
- "age": "March 6, 2023",
- "extra_snippets": ["Configuration for Python planets (e.g. http://planetpython.org)"]
- },
- {
- "title": "Online Python Compiler (Interpreter)",
- "url": "https://www.programiz.com/python-programming/online-compiler/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Write and run Python code using our online compiler (interpreter). You can use Python Shell like IDLE, and take inputs from the user in our Python compiler.",
- "page_age": "2020-06-02T00:00:00",
- "profile": {
- "name": "Programiz",
- "url": "https://www.programiz.com/python-programming/online-compiler/",
- "long_name": "programiz.com",
- "img": "https://imgs.search.brave.com/ozj4JFayZ3Fs5c9eTp7M5g12azQ_Hblgu4dpTuHRz6U/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMGJlN2U1YjVi/Y2M3ZDU5OGMwMWNi/M2Q3YjhjOTM1ZTFk/Y2NkZjE4NGQwOGIx/MTQ4NjI2YmNhODVj/MzFkMmJhYy93d3cu/cHJvZ3JhbWl6LmNv/bS8"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "programiz.com",
- "hostname": "www.programiz.com",
- "favicon": "https://imgs.search.brave.com/ozj4JFayZ3Fs5c9eTp7M5g12azQ_Hblgu4dpTuHRz6U/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMGJlN2U1YjVi/Y2M3ZDU5OGMwMWNi/M2Q3YjhjOTM1ZTFk/Y2NkZjE4NGQwOGIx/MTQ4NjI2YmNhODVj/MzFkMmJhYy93d3cu/cHJvZ3JhbWl6LmNv/bS8",
- "path": "› python-programming › online-compiler"
- },
- "age": "June 2, 2020",
- "extra_snippets": [
- "Python Online Compiler Online R Compiler SQL Online Editor Online HTML/CSS Editor Online Java Compiler C Online Compiler C++ Online Compiler C# Online Compiler JavaScript Online Compiler Online GoLang Compiler Online PHP Compiler Online Swift Compiler Online Rust Compiler",
- "# Online Python compiler (interpreter) to run Python online. # Write Python 3 code in this online editor and run it. print(\"Try programiz.pro\")"
- ]
- },
- {
- "title": "Python Developer",
- "url": "https://twitter.com/Python_Dv/status/1786763460992544791",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Python Developer",
- "page_age": "2024-05-04T14:30:03",
- "profile": {
- "name": "X",
- "url": "https://twitter.com/Python_Dv/status/1786763460992544791",
- "long_name": "twitter.com",
- "img": "https://imgs.search.brave.com/Zq483bGX0GnSgym-1P7iyOyEDX3PkDZSNT8m56F862A/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvN2MxOTUxNzhj/OTY1ZTQ3N2I0MjJk/MTY5NGM0MTRlYWVi/MjU1YWE2NDUwYmQ2/YTA2MDFhMDlkZDEx/NTAzZGNiNi90d2l0/dGVyLmNvbS8"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "twitter.com",
- "hostname": "twitter.com",
- "favicon": "https://imgs.search.brave.com/Zq483bGX0GnSgym-1P7iyOyEDX3PkDZSNT8m56F862A/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvN2MxOTUxNzhj/OTY1ZTQ3N2I0MjJk/MTY5NGM0MTRlYWVi/MjU1YWE2NDUwYmQ2/YTA2MDFhMDlkZDEx/NTAzZGNiNi90d2l0/dGVyLmNvbS8",
- "path": "› Python_Dv › status › 1786763460992544791"
- },
- "age": "20 hours ago"
- },
- {
- "title": "input table name? - python script - KNIME Extensions - KNIME Community Forum",
- "url": "https://forum.knime.com/t/input-table-name-python-script/78978",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Hi, when running a python script node, I get the error seen on the screenshot Same happens with this code too: The script input is output from the csv reader node. How can I get the right name for that table? Best wishes, Dario",
- "page_age": "2024-05-04T09:20:44",
- "profile": {
- "name": "Knime",
- "url": "https://forum.knime.com/t/input-table-name-python-script/78978",
- "long_name": "forum.knime.com",
- "img": "https://imgs.search.brave.com/WQoOhAD5i6uEhJ-qXvlWMJwbGA52f2Ycc_ns36EK698/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTAxNzMxNjFl/MzJjNzU5NzRkOTMz/Mjg4NDU2OWUxM2Rj/YzVkOGM3MzIwNzI2/YTY1NzYxNzA1MDE5/NzQzOWU3NC9mb3J1/bS5rbmltZS5jb20v"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "article",
- "meta_url": {
- "scheme": "https",
- "netloc": "forum.knime.com",
- "hostname": "forum.knime.com",
- "favicon": "https://imgs.search.brave.com/WQoOhAD5i6uEhJ-qXvlWMJwbGA52f2Ycc_ns36EK698/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTAxNzMxNjFl/MzJjNzU5NzRkOTMz/Mjg4NDU2OWUxM2Rj/YzVkOGM3MzIwNzI2/YTY1NzYxNzA1MDE5/NzQzOWU3NC9mb3J1/bS5rbmltZS5jb20v",
- "path": " › knime extensions"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/DtEl38dcvuM1kGfhN0T5HfOrsMJcztWNyriLvtDJmKI/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9mb3J1/bS1jZG4ua25pbWUu/Y29tL3VwbG9hZHMv/ZGVmYXVsdC9vcmln/aW5hbC8zWC9lLzYv/ZTY0M2M2NzFlNzAz/MDg2MjkwMWY2YzJh/OWFjOWI5ZmEwM2M3/ZjMwZi5wbmc",
- "original": "https://forum-cdn.knime.com/uploads/default/original/3X/e/6/e643c671e7030862901f6c2a9ac9b9fa03c7f30f.png",
- "logo": false
- },
- "age": "1 day ago",
- "extra_snippets": [
- "Hi, when running a python script node, I get the error seen on the screenshot Same happens with this code too: The script input is output from the csv reader node. How can I get the right name for that table? …"
- ]
- },
- {
- "title": "What does the Double Star operator mean in Python? - GeeksforGeeks",
- "url": "https://www.geeksforgeeks.org/what-does-the-double-star-operator-mean-in-python/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.",
- "page_age": "2023-03-14T17:15:04",
- "profile": {
- "name": "GeeksforGeeks",
- "url": "https://www.geeksforgeeks.org/what-does-the-double-star-operator-mean-in-python/",
- "long_name": "geeksforgeeks.org",
- "img": "https://imgs.search.brave.com/fhzcfv5xltx6-YBvJI9RZgS7xZo0dPNaASsrB8YOsCs/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjBhOGQ3MmNi/ZWE5N2EwMmZjYzA1/ZTI0ZTFhMGUyMTE0/MGM0ZTBmMWZlM2Y2/Yzk2ODMxZTRhYTBi/NDdjYTE0OS93d3cu/Z2Vla3Nmb3JnZWVr/cy5vcmcv"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "article",
- "meta_url": {
- "scheme": "https",
- "netloc": "geeksforgeeks.org",
- "hostname": "www.geeksforgeeks.org",
- "favicon": "https://imgs.search.brave.com/fhzcfv5xltx6-YBvJI9RZgS7xZo0dPNaASsrB8YOsCs/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjBhOGQ3MmNi/ZWE5N2EwMmZjYzA1/ZTI0ZTFhMGUyMTE0/MGM0ZTBmMWZlM2Y2/Yzk2ODMxZTRhYTBi/NDdjYTE0OS93d3cu/Z2Vla3Nmb3JnZWVr/cy5vcmcv",
- "path": "› what-does-the-double-star-operator-mean-in-python"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/GcR-j_dLbyHkbHEI3ffLMi6xpXGhF_2Z8POIoqtokhM/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9tZWRp/YS5nZWVrc2Zvcmdl/ZWtzLm9yZy93cC1j/b250ZW50L3VwbG9h/ZHMvZ2ZnXzIwMFgy/MDAtMTAweDEwMC5w/bmc",
- "original": "https://media.geeksforgeeks.org/wp-content/uploads/gfg_200X200-100x100.png",
- "logo": false
- },
- "age": "March 14, 2023",
- "extra_snippets": [
- "Difference between / vs. // operator in Python",
- "Double Star or (**) is one of the Arithmetic Operator (Like +, -, *, **, /, //, %) in Python Language. It is also known as Power Operator.",
- "The time complexity of the given Python program is O(n), where n is the number of key-value pairs in the input dictionary.",
- "Inplace Operators in Python | Set 2 (ixor(), iand(), ipow(),…)"
- ]
- },
- {
- "title": "r/Python",
- "url": "https://www.reddit.com/r/Python/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "The official Python community for Reddit! Stay up to date with the latest news, packages, and meta information relating to the Python programming language. --- If you have questions or are new to Python use r/LearnPython",
- "page_age": "2022-12-30T16:25:02",
- "profile": {
- "name": "Reddit",
- "url": "https://www.reddit.com/r/Python/",
- "long_name": "reddit.com",
- "img": "https://imgs.search.brave.com/mAZYEK9Wi13WLDUge7XZ8YuDTwm6DP6gBjvz1GdYZVY/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvN2ZiNTU0M2Nj/MTFhZjRiYWViZDlk/MjJiMjBjMzFjMDRk/Y2IzYWI0MGI0MjVk/OGY5NzQzOGQ5NzQ5/NWJhMWI0NC93d3cu/cmVkZGl0LmNvbS8"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "reddit.com",
- "hostname": "www.reddit.com",
- "favicon": "https://imgs.search.brave.com/mAZYEK9Wi13WLDUge7XZ8YuDTwm6DP6gBjvz1GdYZVY/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvN2ZiNTU0M2Nj/MTFhZjRiYWViZDlk/MjJiMjBjMzFjMDRk/Y2IzYWI0MGI0MjVk/OGY5NzQzOGQ5NzQ5/NWJhMWI0NC93d3cu/cmVkZGl0LmNvbS8",
- "path": "› r › Python"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/zWd10t3zg34ciHiAB-K5WWK3h_H4LedeDot9BVX7Ydo/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9zdHls/ZXMucmVkZGl0bWVk/aWEuY29tL3Q1XzJx/aDB5L3N0eWxlcy9j/b21tdW5pdHlJY29u/X2NpZmVobDR4dDdu/YzEucG5n",
- "original": "https://styles.redditmedia.com/t5_2qh0y/styles/communityIcon_cifehl4xt7nc1.png",
- "logo": false
- },
- "age": "December 30, 2022",
- "extra_snippets": [
- "r/Python: The official Python community for Reddit! Stay up to date with the latest news, packages, and meta information relating to the Python…",
- "By default, Python allows you to import and use anything, anywhere. Over time, this results in modules that were intended to be separate getting tightly coupled together, and domain boundaries breaking down. We experienced this first-hand at a unicorn startup, where the eng team paused development for over a year in an attempt to split up packages into independent services.",
- "Hello r/Python! It's time to share what you've been working on! Whether it's a work-in-progress, a completed masterpiece, or just a rough idea, let us know what you're up to!",
- "Whether it's your job, your hobby, or your passion project, all Python-related work is welcome here."
- ]
- },
- {
- "title": "GitHub - python/cpython: The Python programming language",
- "url": "https://github.com/python/cpython",
- "is_source_local": false,
- "is_source_both": false,
- "description": "The Python programming language. Contribute to python/cpython development by creating an account on GitHub.",
- "page_age": "2022-10-29T00:00:00",
- "profile": {
- "name": "GitHub",
- "url": "https://github.com/python/cpython",
- "long_name": "github.com",
- "img": "https://imgs.search.brave.com/v8685zI4XInM0zxlNI2s7oE_2Sb-EL7lAy81WXbkQD8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYWQyNWM1NjA5/ZjZmZjNlYzI2MDNk/N2VkNmJhYjE2MzZl/MDY5ZTMxMDUzZmY1/NmU3NWIzNWVmMjk0/NTBjMjJjZi9naXRo/dWIuY29tLw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "software",
- "meta_url": {
- "scheme": "https",
- "netloc": "github.com",
- "hostname": "github.com",
- "favicon": "https://imgs.search.brave.com/v8685zI4XInM0zxlNI2s7oE_2Sb-EL7lAy81WXbkQD8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYWQyNWM1NjA5/ZjZmZjNlYzI2MDNk/N2VkNmJhYjE2MzZl/MDY5ZTMxMDUzZmY1/NmU3NWIzNWVmMjk0/NTBjMjJjZi9naXRo/dWIuY29tLw",
- "path": "› python › cpython"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/BJbWFRUqgP-tKIyGK9ByXjuYjHO2mtYigUOEFNz_gXk/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9vcGVu/Z3JhcGguZ2l0aHVi/YXNzZXRzLmNvbS82/MTY5YmJkNTQ0YzAy/NDg0MGU4NDdjYTU1/YTU3ZGZmMDA2ZDAw/YWQ1NDIzOTFmYTQ3/YmJjODg3OWM0NWYw/MTZhL3B5dGhvbi9j/cHl0aG9u",
- "original": "https://opengraph.githubassets.com/6169bbd544c024840e847ca55a57dff006d00ad542391fa47bbc8879c45f016a/python/cpython",
- "logo": false
- },
- "age": "October 29, 2022",
- "extra_snippets": [
- "You can pass many options to the configure script; run ./configure --help to find out more. On macOS case-insensitive file systems and on Cygwin, the executable is called python.exe; elsewhere it's just python.",
- "Building a complete Python installation requires the use of various additional third-party libraries, depending on your build platform and configure options. Not all standard library modules are buildable or usable on all platforms. Refer to the Install dependencies section of the Developer Guide for current detailed information on dependencies for various Linux distributions and macOS.",
- "To get an optimized build of Python, configure --enable-optimizations before you run make. This sets the default make targets up to enable Profile Guided Optimization (PGO) and may be used to auto-enable Link Time Optimization (LTO) on some platforms. For more details, see the sections below.",
- "Copyright © 2001-2024 Python Software Foundation. All rights reserved."
- ]
- },
- {
- "title": "5. Data Structures — Python 3.12.3 documentation",
- "url": "https://docs.python.org/3/tutorial/datastructures.html",
- "is_source_local": false,
- "is_source_both": false,
- "description": "This chapter describes some things you’ve learned about already in more detail, and adds some new things as well. More on Lists: The list data type has some more methods. Here are all of the method...",
- "page_age": "2023-07-04T00:00:00",
- "profile": {
- "name": "Python documentation",
- "url": "https://docs.python.org/3/tutorial/datastructures.html",
- "long_name": "docs.python.org",
- "img": "https://imgs.search.brave.com/F5Ym7eSElhGdGUFKLRxDj9Z_tc180ldpeMvQ2Q6ARbA/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMTUzOTFjOGVi/YTcyOTVmODA3ODIy/YjE2NzFjY2ViMjhl/NzRlY2JhYTc5YjNm/ZjhmODAyZWI2OGUw/ZjU4NDVlNy9kb2Nz/LnB5dGhvbi5vcmcv"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "docs.python.org",
- "hostname": "docs.python.org",
- "favicon": "https://imgs.search.brave.com/F5Ym7eSElhGdGUFKLRxDj9Z_tc180ldpeMvQ2Q6ARbA/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMTUzOTFjOGVi/YTcyOTVmODA3ODIy/YjE2NzFjY2ViMjhl/NzRlY2JhYTc5YjNm/ZjhmODAyZWI2OGUw/ZjU4NDVlNy9kb2Nz/LnB5dGhvbi5vcmcv",
- "path": "› 3 › tutorial › datastructures.html"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/Y7GrMRF8WorDIMLuOl97XC8ltYpoOCqNwWF2pQIIKls/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9kb2Nz/LnB5dGhvbi5vcmcv/My9fc3RhdGljL29n/LWltYWdlLnBuZw",
- "original": "https://docs.python.org/3/_static/og-image.png",
- "logo": false
- },
- "age": "July 4, 2023",
- "extra_snippets": [
- "You might have noticed that methods like insert, remove or sort that only modify the list have no return value printed – they return the default None. [1] This is a design principle for all mutable data structures in Python.",
- "We saw that lists and strings have many common properties, such as indexing and slicing operations. They are two examples of sequence data types (see Sequence Types — list, tuple, range). Since Python is an evolving language, other sequence data types may be added. There is also another standard sequence data type: the tuple.",
- "Python also includes a data type for sets. A set is an unordered collection with no duplicate elements. Basic uses include membership testing and eliminating duplicate entries. Set objects also support mathematical operations like union, intersection, difference, and symmetric difference.",
- "Another useful data type built into Python is the dictionary (see Mapping Types — dict). Dictionaries are sometimes found in other languages as “associative memories” or “associative arrays”. Unlike sequences, which are indexed by a range of numbers, dictionaries are indexed by keys, which can be any immutable type; strings and numbers can always be keys."
- ]
- },
- {
- "title": "Something wrong with python packages / AUR Issues, Discussion & PKGBUILD Requests / Arch Linux Forums",
- "url": "https://bbs.archlinux.org/viewtopic.php?id=295466",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Big Python updates require Python packages to be rebuild. For some reason they didn't think a bump that made it necessary to rebuild half the official repo was a news post.",
- "page_age": "2024-05-04T08:30:02",
- "profile": {
- "name": "Archlinux",
- "url": "https://bbs.archlinux.org/viewtopic.php?id=295466",
- "long_name": "bbs.archlinux.org",
- "img": "https://imgs.search.brave.com/3au9oqkzSri_aLEec3jo-0bFgLuICkydrWfjFcC8lkI/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvNWNkODM1MWJl/ZmJhMzkzNzYzMDkz/NmEyMWMxNjI5MjNk/NGJmZjFhNTBlZDNl/Mzk5MzJjOGZkYjZl/MjNmY2IzNS9iYnMu/YXJjaGxpbnV4Lm9y/Zy8"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "bbs.archlinux.org",
- "hostname": "bbs.archlinux.org",
- "favicon": "https://imgs.search.brave.com/3au9oqkzSri_aLEec3jo-0bFgLuICkydrWfjFcC8lkI/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvNWNkODM1MWJl/ZmJhMzkzNzYzMDkz/NmEyMWMxNjI5MjNk/NGJmZjFhNTBlZDNl/Mzk5MzJjOGZkYjZl/MjNmY2IzNS9iYnMu/YXJjaGxpbnV4Lm9y/Zy8",
- "path": "› viewtopic.php"
- },
- "age": "1 day ago",
- "extra_snippets": [
- "Traceback (most recent call last): File \"/usr/lib/python3.12/importlib/metadata/__init__.py\", line 397, in from_name return next(cls.discover(name=name)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ StopIteration During handling of the above exception, another exception occurred: Traceback (most recent call last): File \"/usr/bin/informant\", line 33, in sys.exit(load_entry_point('informant==0.5.0', 'console_scripts', 'informant')()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File \"/usr/bin/informant\", line 22, in importlib_load_entry_point for entry_point in distribution(dis"
- ]
- },
- {
- "title": "Introduction to Python",
- "url": "https://www.w3schools.com/python/python_intro.asp",
- "is_source_local": false,
- "is_source_both": false,
- "description": "W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.",
- "profile": {
- "name": "W3Schools",
- "url": "https://www.w3schools.com/python/python_intro.asp",
- "long_name": "w3schools.com",
- "img": "https://imgs.search.brave.com/JwO5r7z3HTBkU29vgNH_4rrSWLf2M4-8FMWNvbxrKX8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjVlMGVkZDVj/ZGMyZWRmMzAwODRi/ZDAwZGE4NWI3NmU4/MjRhNjEzOGFhZWY3/ZGViMjY1OWY2ZDYw/YTZiOGUyZS93d3cu/dzNzY2hvb2xzLmNv/bS8"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "w3schools.com",
- "hostname": "www.w3schools.com",
- "favicon": "https://imgs.search.brave.com/JwO5r7z3HTBkU29vgNH_4rrSWLf2M4-8FMWNvbxrKX8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjVlMGVkZDVj/ZGMyZWRmMzAwODRi/ZDAwZGE4NWI3NmU4/MjRhNjEzOGFhZWY3/ZGViMjY1OWY2ZDYw/YTZiOGUyZS93d3cu/dzNzY2hvb2xzLmNv/bS8",
- "path": "› python › python_intro.asp"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/EMfp8dodbJehmj0yCJh8317RHuaumsddnHI4bujvFcg/rs:fit:200:200:1/g:ce/aHR0cHM6Ly93d3cu/dzNzY2hvb2xzLmNv/bS9pbWFnZXMvdzNz/Y2hvb2xzX2xvZ29f/NDM2XzIucG5n",
- "original": "https://www.w3schools.com/images/w3schools_logo_436_2.png",
- "logo": true
- },
- "extra_snippets": [
- "Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.",
- "HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE",
- "Python Variables Variable Names Assign Multiple Values Output Variables Global Variables Variable Exercises Python Data Types Python Numbers Python Casting Python Strings",
- "Python Strings Slicing Strings Modify Strings Concatenate Strings Format Strings Escape Characters String Methods String Exercises Python Booleans Python Operators Python Lists"
- ]
- },
- {
- "title": "bug: AUR package wants to use python but does not find any preset version · Issue #1740 · asdf-vm/asdf",
- "url": "https://github.com/asdf-vm/asdf/issues/1740",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Describe the Bug I am not sure why this is happening, I am trying to install tlpui from AUR and it fails, here are some logs to help: ==> Making package: tlpui 2:1.6.5-1 (Mi 10 apr 2024 23:19:15 +0...",
- "page_age": "2024-05-04T06:45:04",
- "profile": {
- "name": "GitHub",
- "url": "https://github.com/asdf-vm/asdf/issues/1740",
- "long_name": "github.com",
- "img": "https://imgs.search.brave.com/v8685zI4XInM0zxlNI2s7oE_2Sb-EL7lAy81WXbkQD8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYWQyNWM1NjA5/ZjZmZjNlYzI2MDNk/N2VkNmJhYjE2MzZl/MDY5ZTMxMDUzZmY1/NmU3NWIzNWVmMjk0/NTBjMjJjZi9naXRo/dWIuY29tLw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "software",
- "meta_url": {
- "scheme": "https",
- "netloc": "github.com",
- "hostname": "github.com",
- "favicon": "https://imgs.search.brave.com/v8685zI4XInM0zxlNI2s7oE_2Sb-EL7lAy81WXbkQD8/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYWQyNWM1NjA5/ZjZmZjNlYzI2MDNk/N2VkNmJhYjE2MzZl/MDY5ZTMxMDUzZmY1/NmU3NWIzNWVmMjk0/NTBjMjJjZi9naXRo/dWIuY29tLw",
- "path": "› asdf-vm › asdf › issues › 1740"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/KrLW5s_2n4jyP8XLbc3ZPVBaLD963tQgWzG9EWPZlQs/rs:fit:200:200:1/g:ce/aHR0cHM6Ly9vcGVu/Z3JhcGguZ2l0aHVi/YXNzZXRzLmNvbS81/MTE0ZTdkOGIwODM2/YmQ2MTY3NzQ1ZGI4/MmZjMGE3OGUyMjcw/MGFlY2ZjMWZkODBl/MDYzZTNiN2ZjOWNj/NzYyL2FzZGYtdm0v/YXNkZi9pc3N1ZXMv/MTc0MA",
- "original": "https://opengraph.githubassets.com/5114e7d8b0836bd6167745db82fc0a78e22700aecfc1fd80e063e3b7fc9cc762/asdf-vm/asdf/issues/1740",
- "logo": false
- },
- "age": "1 day ago",
- "extra_snippets": [
- "==> Starting build()... No preset version installed for command python Please install a version by running one of the following: asdf install python 3.8 or add one of the following versions in your config file at /home/ferret/.tool-versions python 3.11.0 python 3.12.1 python 3.12.3 ==> ERROR: A failure occurred in build(). Aborting...",
- "-> error making: tlpui-exit status 4 -> Failed to install the following packages. Manual intervention is required: tlpui - exit status 4 ferret@FX505DT in ~ $ cat /home/ferret/.tool-versions nodejs 21.6.0 python 3.12.3 ferret@FX505DT in ~ $ python -V Python 3.12.3 ferret@FX505DT in ~ $ which python /home/ferret/.asdf/shims/python",
- "Describe the Bug I am not sure why this is happening, I am trying to install tlpui from AUR and it fails, here are some logs to help: ==> Making package: tlpui 2:1.6.5-1 (Mi 10 apr 2024 23:19:15 +0300) ==> Retrieving sources... -> Found ..."
- ]
- },
- {
- "title": "What are python.exe and python3.exe, and why do they appear to point to App Installer? | Windows 11 Forum",
- "url": "https://www.elevenforum.com/t/what-are-python-exe-and-python3-exe-and-why-do-they-appear-to-point-to-app-installer.24886/",
- "is_source_local": false,
- "is_source_both": false,
- "description": "I was looking at App execution aliases (Settings > Apps > Advanced app settings > App execution aliases) on my new computer -- my first Windows 11 computer. Why are python.exe and python3.exe listed as App Installer? I assume that App Installer refers to installation of Microsoft Store / UWP...",
- "page_age": "2024-05-03T17:30:04",
- "profile": {
- "name": "Windows 11 Forum",
- "url": "https://www.elevenforum.com/t/what-are-python-exe-and-python3-exe-and-why-do-they-appear-to-point-to-app-installer.24886/",
- "long_name": "elevenforum.com",
- "img": "https://imgs.search.brave.com/XVRAYMEj6Im8i7jV5RxeTwpiRPtY9IWg4wRIuh-WhEw/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvZjk5MDZkMDIw/M2U1OWIwNjM5Y2U1/M2U2NzNiNzVkNTA5/NzA5OTI1ZTFmOTc4/MzU3OTlhYzU5OTVi/ZGNjNTY4MS93d3cu/ZWxldmVuZm9ydW0u/Y29tLw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "elevenforum.com",
- "hostname": "www.elevenforum.com",
- "favicon": "https://imgs.search.brave.com/XVRAYMEj6Im8i7jV5RxeTwpiRPtY9IWg4wRIuh-WhEw/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvZjk5MDZkMDIw/M2U1OWIwNjM5Y2U1/M2U2NzNiNzVkNTA5/NzA5OTI1ZTFmOTc4/MzU3OTlhYzU5OTVi/ZGNjNTY4MS93d3cu/ZWxldmVuZm9ydW0u/Y29tLw",
- "path": " › windows support forums › apps and software"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/DVoFcE6d_-lx3BVGNS-RZK_lZzxQ8VhwZVf3AVqEJFA/rs:fit:200:200:1/g:ce/aHR0cHM6Ly93d3cu/ZWxldmVuZm9ydW0u/Y29tL2RhdGEvYXNz/ZXRzL2xvZ28vbWV0/YTEtMjAxLnBuZw",
- "original": "https://www.elevenforum.com/data/assets/logo/meta1-201.png",
- "logo": true
- },
- "age": "2 days ago",
- "extra_snippets": [
- "Why are python.exe and python3.exe listed as App Installer? I assume that App Installer refers to installation of Microsoft Store / UWP apps, but if that's the case, then why are they called python.exe and python3.exe? Or are python.exe and python3.exe simply serving as aliases / pointers pointing to App Installer, which is itself a Microsoft Store App?",
- "Or are python.exe and python3.exe simply serving as aliases / pointers pointing to App Installer, which is itself a Microsoft Store App? I wish to soon install Python, along with an integrated development editor (IDE), on my machine, so that I can code in Python.",
- "I wish to soon install Python, along with an integrated development editor (IDE), on my machine, so that I can code in Python. But is a Python interpreter already on my computer as suggested, if obliquely, by the presence of python.exe and python3.exe? I kind of doubt it."
- ]
- },
- {
- "title": "How to Watermark Your Images Using Python OpenCV in ...",
- "url": "https://medium.com/@daily_data_prep/how-to-watermark-your-images-using-python-opencv-in-bulk-e472085389a1",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Medium is an open platform where readers find dynamic thinking, and where expert and undiscovered voices can share their writing on any topic.",
- "page_age": "2024-05-03T14:05:06",
- "profile": {
- "name": "Medium",
- "url": "https://medium.com/@daily_data_prep/how-to-watermark-your-images-using-python-opencv-in-bulk-e472085389a1",
- "long_name": "medium.com",
- "img": "https://imgs.search.brave.com/qvE2kIQCiAsnPv2C6P9xM5J2VVWdm55g-A-2Q_yIJ0g/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTZhYmQ1N2Q4/NDg4ZDcyODIyMDZi/MzFmOWNhNjE3Y2E4/Y2YzMThjNjljNDIx/ZjllZmNhYTcwODhl/YTcwNDEzYy9tZWRp/dW0uY29tLw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "medium.com",
- "hostname": "medium.com",
- "favicon": "https://imgs.search.brave.com/qvE2kIQCiAsnPv2C6P9xM5J2VVWdm55g-A-2Q_yIJ0g/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvOTZhYmQ1N2Q4/NDg4ZDcyODIyMDZi/MzFmOWNhNjE3Y2E4/Y2YzMThjNjljNDIx/ZjllZmNhYTcwODhl/YTcwNDEzYy9tZWRp/dW0uY29tLw",
- "path": "› @daily_data_prep › how-to-watermark-your-images-using-python-opencv-in-bulk-e472085389a1"
- },
- "age": "2 days ago"
- },
- {
- "title": "Increment and Decrement Operators in Python?",
- "url": "https://www.tutorialspoint.com/increment-and-decrement-operators-in-python",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Increment and Decrement Operators in Python - Python does not have unary increment/decrement operator (++/--). Instead to increment a value, usea += 1to decrement a value, use −a -= 1Example>>> a = 0 >>> >>> #Increment >>> a +=1 >>> >>> #Decrement >>> a -= 1 >>> >>> #value of a >>> a 0Python ...",
- "page_age": "2023-08-23T00:00:00",
- "profile": {
- "name": "Tutorialspoint",
- "url": "https://www.tutorialspoint.com/increment-and-decrement-operators-in-python",
- "long_name": "tutorialspoint.com",
- "img": "https://imgs.search.brave.com/Wt8BSkivPlFwcU5yBtf7YzuvTuRExyd_502cdABCS5c/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjcyYjAzYmVl/ODU4MzZiMjJiYTFh/MjJhZDNmNWE4YzA5/MDgyYTZhMDg3NTYw/M2NiY2NiZTUxN2I5/MjU1MWFmMS93d3cu/dHV0b3JpYWxzcG9p/bnQuY29tLw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "tutorialspoint.com",
- "hostname": "www.tutorialspoint.com",
- "favicon": "https://imgs.search.brave.com/Wt8BSkivPlFwcU5yBtf7YzuvTuRExyd_502cdABCS5c/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYjcyYjAzYmVl/ODU4MzZiMjJiYTFh/MjJhZDNmNWE4YzA5/MDgyYTZhMDg3NTYw/M2NiY2NiZTUxN2I5/MjU1MWFmMS93d3cu/dHV0b3JpYWxzcG9p/bnQuY29tLw",
- "path": "› increment-and-decrement-operators-in-python"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/ddG5vyZGLVudvecEbQJPeG8tGuaZ7g3Xz6Gyjdl5WA8/rs:fit:200:200:1/g:ce/aHR0cHM6Ly93d3cu/dHV0b3JpYWxzcG9p/bnQuY29tL2ltYWdl/cy90cF9sb2dvXzQz/Ni5wbmc",
- "original": "https://www.tutorialspoint.com/images/tp_logo_436.png",
- "logo": true
- },
- "age": "August 23, 2023",
- "extra_snippets": [
- "Increment and Decrement Operators in Python - Python does not have unary increment/decrement operator (++/--). Instead to increment a value, usea += 1to decrement a value, use −a -= 1Example>>> a = 0 >>> >>> #Increment >>> a +=1 >>> >>> #Decrement >>> a -= 1 >>> >>> #value of a >>> a 0Python does not provide multiple ways to do the same thing",
- "So what above statement means in python is: create an object of type int having value 1 and give the name a to it. The object is an instance of int having value 1 and the name a refers to it. The assigned name a and the object to which it refers are distinct.",
- "Python does not provide multiple ways to do the same thing .",
- "However, be careful if you are coming from a language like C, Python doesn’t have \"variables\" in the sense that C does, instead python uses names and objects and in python integers (int’s) are immutable."
- ]
- },
- {
- "title": "Gumroad – How not to suck at Python / SideFX Houdini | CG Persia",
- "url": "https://cgpersia.com/2024/05/gumroad-how-not-to-suck-at-python-sidefx-houdini-195370.html",
- "is_source_local": false,
- "is_source_both": false,
- "description": "Info: This course is made for artists or TD (technical director) willing to learn Python to improve their workflows inside SideFX Houdini, get faster in production and develop all the tools you always wished you had.",
- "page_age": "2024-05-03T08:35:03",
- "profile": {
- "name": "Cgpersia",
- "url": "https://cgpersia.com/2024/05/gumroad-how-not-to-suck-at-python-sidefx-houdini-195370.html",
- "long_name": "cgpersia.com",
- "img": "https://imgs.search.brave.com/VjyaopAm-M9sWvM7n-KnGZ3T5swIOwwE80iF5QVqQPg/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYmE0MzQ4NmI2/NjFhMTA1ZDBiN2Iw/ZWNiNDUxNjUwYjdh/MGE5ZjQ0ZjIxNzll/NmVkZDE2YzYyMDBh/NDNiMDgwMy9jZ3Bl/cnNpYS5jb20v"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "cgpersia.com",
- "hostname": "cgpersia.com",
- "favicon": "https://imgs.search.brave.com/VjyaopAm-M9sWvM7n-KnGZ3T5swIOwwE80iF5QVqQPg/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvYmE0MzQ4NmI2/NjFhMTA1ZDBiN2Iw/ZWNiNDUxNjUwYjdh/MGE5ZjQ0ZjIxNzll/NmVkZDE2YzYyMDBh/NDNiMDgwMy9jZ3Bl/cnNpYS5jb20v",
- "path": "› 2024 › 05 › gumroad-how-not-to-suck-at-python-sidefx-houdini-195370.html"
- },
- "age": "2 days ago",
- "extra_snippets": [
- "Posted in: 2D, CG Releases, Downloads, Learning, Tutorials, Videos. Tagged: Gumroad, Python, Sidefx. Leave a Comment",
- "01 – Python – Fundamentals Get the Fundamentals of python before starting the fun stuff ! 02 – Python Construction Part02 digging further into python concepts 03 – Houdini – Python Basics Applying some basic python in Houdini and starting to make tools !",
- "02 – Python Construction Part02 digging further into python concepts 03 – Houdini – Python Basics Applying some basic python in Houdini and starting to make tools ! 04 – Houdini – Python Intermediate Applying some more advanced python in Houdini to make tools ! 05 – Houdini – Python Expert Using QtDesigner in combinaison with Houdini Python/Pyside to create advanced tools."
- ]
- },
- {
- "title": "How to install Python: The complete Python programmer’s guide",
- "url": "https://www.pluralsight.com/resources/blog/software-development/python-installation-guide",
- "is_source_local": false,
- "is_source_both": false,
- "description": "An easy guide on how set up your operating system so you can program in Python, and how to update or uninstall it. For Linux, Windows, and macOS.",
- "page_age": "2024-05-02T07:30:02",
- "profile": {
- "name": "Pluralsight",
- "url": "https://www.pluralsight.com/resources/blog/software-development/python-installation-guide",
- "long_name": "pluralsight.com",
- "img": "https://imgs.search.brave.com/zvwQNSVu9-jR2CRlNcsTzxjaXKPlXNuh-Jo9-0yA1OE/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMTNkNWQyNjk3/M2Q0NzYyMmUyNDc3/ZjYwMWFlZDI5YTI4/ODhmYzc2MDkzMjAy/MjNkMWY1MDE3NTQw/MzI5NWVkZS93d3cu/cGx1cmFsc2lnaHQu/Y29tLw"
- },
- "language": "en",
- "family_friendly": true,
- "type": "search_result",
- "subtype": "generic",
- "meta_url": {
- "scheme": "https",
- "netloc": "pluralsight.com",
- "hostname": "www.pluralsight.com",
- "favicon": "https://imgs.search.brave.com/zvwQNSVu9-jR2CRlNcsTzxjaXKPlXNuh-Jo9-0yA1OE/rs:fit:32:32:1/g:ce/aHR0cDovL2Zhdmlj/b25zLnNlYXJjaC5i/cmF2ZS5jb20vaWNv/bnMvMTNkNWQyNjk3/M2Q0NzYyMmUyNDc3/ZjYwMWFlZDI5YTI4/ODhmYzc2MDkzMjAy/MjNkMWY1MDE3NTQw/MzI5NWVkZS93d3cu/cGx1cmFsc2lnaHQu/Y29tLw",
- "path": " › blog › blog"
- },
- "thumbnail": {
- "src": "https://imgs.search.brave.com/xrv5PHH2Bzmq2rcIYzk__8h5RqCj6kS3I6SGCNw5dZM/rs:fit:200:200:1/g:ce/aHR0cHM6Ly93d3cu/cGx1cmFsc2lnaHQu/Y29tL2NvbnRlbnQv/ZGFtL3BzL2ltYWdl/cy9yZXNvdXJjZS1j/ZW50ZXIvYmxvZy9o/ZWFkZXItaGVyby1p/bWFnZXMvUHl0aG9u/LndlYnA",
- "original": "https://www.pluralsight.com/content/dam/ps/images/resource-center/blog/header-hero-images/Python.webp",
- "logo": false
- },
- "age": "3 days ago",
- "extra_snippets": [
- "Whether it’s your first time programming or you’re a seasoned programmer, you’ll have to install or update Python every now and then --- or if necessary, uninstall it. In this article, you'll learn how to do just that.",
- "Some systems come with Python, so to start off, we’ll first check to see if it’s installed on your system before we proceed. To do that, we’ll need to open a terminal. Since you might be new to programming, let’s go over how to open a terminal for Linux, Windows, and macOS.",
- "Before we dive into setting up your system so you can program in Python, let’s talk terminal basics and benefits.",
- "However, let’s focus on why we need it for working with Python. We use a terminal, or command line, to:"
- ]
- }
- ],
- "family_friendly": true
- }
-}
diff --git a/backend/open_webui/retrieval/web/testdata/google_pse.json b/backend/open_webui/retrieval/web/testdata/google_pse.json
deleted file mode 100644
index 15da9729cd..0000000000
--- a/backend/open_webui/retrieval/web/testdata/google_pse.json
+++ /dev/null
@@ -1,442 +0,0 @@
-{
- "kind": "customsearch#search",
- "url": {
- "type": "application/json",
- "template": "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json"
- },
- "queries": {
- "request": [
- {
- "title": "Google Custom Search - lectures",
- "totalResults": "2450000000",
- "searchTerms": "lectures",
- "count": 10,
- "startIndex": 1,
- "inputEncoding": "utf8",
- "outputEncoding": "utf8",
- "safe": "off",
- "cx": "0473ef98502d44e18"
- }
- ],
- "nextPage": [
- {
- "title": "Google Custom Search - lectures",
- "totalResults": "2450000000",
- "searchTerms": "lectures",
- "count": 10,
- "startIndex": 11,
- "inputEncoding": "utf8",
- "outputEncoding": "utf8",
- "safe": "off",
- "cx": "0473ef98502d44e18"
- }
- ]
- },
- "context": {
- "title": "LLM Search"
- },
- "searchInformation": {
- "searchTime": 0.445959,
- "formattedSearchTime": "0.45",
- "totalResults": "2450000000",
- "formattedTotalResults": "2,450,000,000"
- },
- "items": [
- {
- "kind": "customsearch#result",
- "title": "The Feynman Lectures on Physics",
- "htmlTitle": "The Feynman \u003cb\u003eLectures\u003c/b\u003e on Physics",
- "link": "https://www.feynmanlectures.caltech.edu/",
- "displayLink": "www.feynmanlectures.caltech.edu",
- "snippet": "This edition has been designed for ease of reading on devices of any size or shape; text, figures and equations can all be zoomed without degradation.",
- "htmlSnippet": "This edition has been designed for ease of reading on devices of any size or shape; text, figures and equations can all be zoomed without degradation.",
- "cacheId": "CyXMWYWs9UEJ",
- "formattedUrl": "https://www.feynmanlectures.caltech.edu/",
- "htmlFormattedUrl": "https://www.feynman\u003cb\u003electures\u003c/b\u003e.caltech.edu/",
- "pagemap": {
- "metatags": [
- {
- "viewport": "width=device-width, initial-scale=1.0"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Video Lectures",
- "htmlTitle": "Video \u003cb\u003eLectures\u003c/b\u003e",
- "link": "https://www.reddit.com/r/lectures/",
- "displayLink": "www.reddit.com",
- "snippet": "r/lectures: This subreddit is all about video lectures, talks and interesting public speeches. The topics include mathematics, physics, computer…",
- "htmlSnippet": "r/\u003cb\u003electures\u003c/b\u003e: This subreddit is all about video \u003cb\u003electures\u003c/b\u003e, talks and interesting public speeches. The topics include mathematics, physics, computer…",
- "formattedUrl": "https://www.reddit.com/r/lectures/",
- "htmlFormattedUrl": "https://www.reddit.com/r/\u003cb\u003electures\u003c/b\u003e/",
- "pagemap": {
- "cse_thumbnail": [
- {
- "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTZtOjhfkgUKQbL3DZxe5F6OVsgeDNffleObjJ7n9RllKQTSsimax7VIaY&s",
- "width": "192",
- "height": "192"
- }
- ],
- "metatags": [
- {
- "og:image": "https://www.redditstatic.com/shreddit/assets/favicon/192x192.png",
- "theme-color": "#000000",
- "og:image:width": "256",
- "og:type": "website",
- "twitter:card": "summary",
- "twitter:title": "r/lectures",
- "og:site_name": "Reddit",
- "og:title": "r/lectures",
- "og:image:height": "256",
- "bingbot": "noarchive",
- "msapplication-navbutton-color": "#000000",
- "og:description": "This subreddit is all about video lectures, talks and interesting public speeches.\n\nThe topics include mathematics, physics, computer science, programming, engineering, biology, medicine, economics, politics, social sciences, and any other subjects!",
- "twitter:image": "https://www.redditstatic.com/shreddit/assets/favicon/192x192.png",
- "apple-mobile-web-app-status-bar-style": "black",
- "twitter:site": "@reddit",
- "viewport": "width=device-width, initial-scale=1, viewport-fit=cover",
- "apple-mobile-web-app-capable": "yes",
- "og:ttl": "600",
- "og:url": "https://www.reddit.com/r/lectures/"
- }
- ],
- "cse_image": [
- {
- "src": "https://www.redditstatic.com/shreddit/assets/favicon/192x192.png"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Lectures & Discussions | Flint Institute of Arts",
- "htmlTitle": "\u003cb\u003eLectures\u003c/b\u003e & Discussions | Flint Institute of Arts",
- "link": "https://flintarts.org/events/lectures",
- "displayLink": "flintarts.org",
- "snippet": "It will trace the intricate relationship between jewelry, attire, and the expression of personal identity, social hierarchy, and spiritual belief systems that ...",
- "htmlSnippet": "It will trace the intricate relationship between jewelry, attire, and the expression of personal identity, social hierarchy, and spiritual belief systems that ...",
- "cacheId": "jvpb9DxrfxoJ",
- "formattedUrl": "https://flintarts.org/events/lectures",
- "htmlFormattedUrl": "https://flintarts.org/events/\u003cb\u003electures\u003c/b\u003e",
- "pagemap": {
- "cse_thumbnail": [
- {
- "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS23tMtAeNhJbOWdGxShYsmnyzFdzOC9Hb7lRykA9Pw72z1IlKTkjTdZw&s",
- "width": "447",
- "height": "113"
- }
- ],
- "metatags": [
- {
- "og:image": "https://flintarts.org/uploads/images/page-headers/_headerImage/nightshot.jpg",
- "og:type": "website",
- "viewport": "width=device-width, initial-scale=1",
- "og:title": "Lectures & Discussions | Flint Institute of Arts",
- "og:description": "The Flint Institute of Arts is the second largest art museum in Michigan and one of the largest museum art schools in the nation."
- }
- ],
- "cse_image": [
- {
- "src": "https://flintarts.org/uploads/images/page-headers/_headerImage/nightshot.jpg"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Mandel Lectures | Mandel Center for the Humanities ... - Waltham",
- "htmlTitle": "Mandel \u003cb\u003eLectures\u003c/b\u003e | Mandel Center for the Humanities ... - Waltham",
- "link": "https://www.brandeis.edu/mandel-center-humanities/mandel-lectures.html",
- "displayLink": "www.brandeis.edu",
- "snippet": "Past Lectures · Lecture 1: \"Invisible Music: The Sonic Idea of Black Revolution From Captivity to Reconstruction\" · Lecture 2: \"Solidarity in Sound: Grassroots ...",
- "htmlSnippet": "Past \u003cb\u003eLectures\u003c/b\u003e · \u003cb\u003eLecture\u003c/b\u003e 1: "Invisible Music: The Sonic Idea of Black Revolution From Captivity to Reconstruction" · \u003cb\u003eLecture\u003c/b\u003e 2: "Solidarity in Sound: Grassroots ...",
- "cacheId": "cQLOZr0kgEEJ",
- "formattedUrl": "https://www.brandeis.edu/mandel-center-humanities/mandel-lectures.html",
- "htmlFormattedUrl": "https://www.brandeis.edu/mandel-center-humanities/mandel-\u003cb\u003electures\u003c/b\u003e.html",
- "pagemap": {
- "cse_thumbnail": [
- {
- "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQWlU7bcJ5pIHk7RBCk2QKE-48ejF7hyPV0pr-20_cBt2BGdfKtiYXBuyw&s",
- "width": "275",
- "height": "183"
- }
- ],
- "metatags": [
- {
- "og:image": "https://www.brandeis.edu/mandel-center-humanities/events/events-images/mlhzumba",
- "twitter:card": "summary_large_image",
- "viewport": "width=device-width,initial-scale=1,minimum-scale=1",
- "og:title": "Mandel Lectures in the Humanities",
- "og:url": "https://www.brandeis.edu/mandel-center-humanities/mandel-lectures.html",
- "og:description": "Annual Lecture Series",
- "twitter:image": "https://www.brandeis.edu/mandel-center-humanities/events/events-images/mlhzumba"
- }
- ],
- "cse_image": [
- {
- "src": "https://www.brandeis.edu/mandel-center-humanities/events/events-images/mlhzumba"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Brian Douglas - YouTube",
- "htmlTitle": "Brian Douglas - YouTube",
- "link": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "displayLink": "www.youtube.com",
- "snippet": "Welcome to Control Systems Lectures! This collection of videos is intended to supplement a first year controls class, not replace it.",
- "htmlSnippet": "Welcome to Control Systems \u003cb\u003eLectures\u003c/b\u003e! This collection of videos is intended to supplement a first year controls class, not replace it.",
- "cacheId": "NEROyBHolL0J",
- "formattedUrl": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "htmlFormattedUrl": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "pagemap": {
- "hcard": [
- {
- "fn": "Brian Douglas",
- "url": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg"
- }
- ],
- "cse_thumbnail": [
- {
- "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR7G0CeCBz_wVTZgjnhEr2QbiKP7f3uYzKitZYn74Mi32cDmVxvsegJoLI&s",
- "width": "225",
- "height": "225"
- }
- ],
- "imageobject": [
- {
- "width": "900",
- "url": "https://yt3.googleusercontent.com/ytc/AIdro_nLo68wetImbwGUYP3stve_iKmAEccjhqB-q4o79xdInN4=s900-c-k-c0x00ffffff-no-rj",
- "height": "900"
- }
- ],
- "person": [
- {
- "name": "Brian Douglas",
- "url": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg"
- }
- ],
- "metatags": [
- {
- "apple-itunes-app": "app-id=544007664, app-argument=https://m.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg?referring_app=com.apple.mobilesafari-smartbanner, affiliate-data=ct=smart_app_banner_polymer&pt=9008",
- "og:image": "https://yt3.googleusercontent.com/ytc/AIdro_nLo68wetImbwGUYP3stve_iKmAEccjhqB-q4o79xdInN4=s900-c-k-c0x00ffffff-no-rj",
- "twitter:app:url:iphone": "vnd.youtube://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "twitter:app:id:googleplay": "com.google.android.youtube",
- "theme-color": "rgb(255, 255, 255)",
- "og:image:width": "900",
- "twitter:card": "summary",
- "og:site_name": "YouTube",
- "twitter:url": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "twitter:app:url:ipad": "vnd.youtube://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "al:android:package": "com.google.android.youtube",
- "twitter:app:name:googleplay": "YouTube",
- "al:ios:url": "vnd.youtube://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "twitter:app:id:iphone": "544007664",
- "og:description": "Welcome to Control Systems Lectures! This collection of videos is intended to supplement a first year controls class, not replace it. My goal is to take specific concepts in controls and expand on them in order to provide an intuitive understanding which will ultimately make you a better controls engineer. \n\nI'm glad you made it to my channel and I hope you find it useful.\n\nShoot me a message at controlsystemlectures@gmail.com, leave a comment or question and I'll get back to you if I can. Don't forget to subscribe!\n \nTwitter: @BrianBDouglas for engineering tweets and announcement of new videos.\nWebpage: http://engineeringmedia.com\n\nHere is the hardware/software I use: http://www.youtube.com/watch?v=m-M5_mIyHe4\n\nHere's a list of my favorite references: http://bit.ly/2skvmWd\n\n--Brian",
- "al:ios:app_store_id": "544007664",
- "twitter:image": "https://yt3.googleusercontent.com/ytc/AIdro_nLo68wetImbwGUYP3stve_iKmAEccjhqB-q4o79xdInN4=s900-c-k-c0x00ffffff-no-rj",
- "twitter:site": "@youtube",
- "og:type": "profile",
- "twitter:title": "Brian Douglas",
- "al:ios:app_name": "YouTube",
- "og:title": "Brian Douglas",
- "og:image:height": "900",
- "twitter:app:id:ipad": "544007664",
- "al:web:url": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg?feature=applinks",
- "al:android:url": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg?feature=applinks",
- "fb:app_id": "87741124305",
- "twitter:app:url:googleplay": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "twitter:app:name:ipad": "YouTube",
- "viewport": "width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,",
- "twitter:description": "Welcome to Control Systems Lectures! This collection of videos is intended to supplement a first year controls class, not replace it. My goal is to take specific concepts in controls and expand on them in order to provide an intuitive understanding which will ultimately make you a better controls engineer. \n\nI'm glad you made it to my channel and I hope you find it useful.\n\nShoot me a message at controlsystemlectures@gmail.com, leave a comment or question and I'll get back to you if I can. Don't forget to subscribe!\n \nTwitter: @BrianBDouglas for engineering tweets and announcement of new videos.\nWebpage: http://engineeringmedia.com\n\nHere is the hardware/software I use: http://www.youtube.com/watch?v=m-M5_mIyHe4\n\nHere's a list of my favorite references: http://bit.ly/2skvmWd\n\n--Brian",
- "og:url": "https://www.youtube.com/channel/UCq0imsn84ShAe9PBOFnoIrg",
- "al:android:app_name": "YouTube",
- "twitter:app:name:iphone": "YouTube"
- }
- ],
- "cse_image": [
- {
- "src": "https://yt3.googleusercontent.com/ytc/AIdro_nLo68wetImbwGUYP3stve_iKmAEccjhqB-q4o79xdInN4=s900-c-k-c0x00ffffff-no-rj"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Lecture - Wikipedia",
- "htmlTitle": "\u003cb\u003eLecture\u003c/b\u003e - Wikipedia",
- "link": "https://en.wikipedia.org/wiki/Lecture",
- "displayLink": "en.wikipedia.org",
- "snippet": "Lecture ... For the academic rank, see Lecturer. A lecture (from Latin: lēctūra 'reading') is an oral presentation intended to present information or teach people ...",
- "htmlSnippet": "\u003cb\u003eLecture\u003c/b\u003e ... For the academic rank, see \u003cb\u003eLecturer\u003c/b\u003e. A \u003cb\u003electure\u003c/b\u003e (from Latin: lēctūra 'reading') is an oral presentation intended to present information or teach people ...",
- "cacheId": "d9Pjta02fmgJ",
- "formattedUrl": "https://en.wikipedia.org/wiki/Lecture",
- "htmlFormattedUrl": "https://en.wikipedia.org/wiki/Lecture",
- "pagemap": {
- "metatags": [
- {
- "referrer": "origin",
- "og:image": "https://upload.wikimedia.org/wikipedia/commons/thumb/2/26/ADFA_Lecture_Theatres.jpg/1200px-ADFA_Lecture_Theatres.jpg",
- "theme-color": "#eaecf0",
- "og:image:width": "1200",
- "og:type": "website",
- "viewport": "width=device-width, initial-scale=1.0, user-scalable=yes, minimum-scale=0.25, maximum-scale=5.0",
- "og:title": "Lecture - Wikipedia",
- "og:image:height": "799",
- "format-detection": "telephone=no"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Mount Wilson Observatory | Lectures",
- "htmlTitle": "Mount Wilson Observatory | \u003cb\u003eLectures\u003c/b\u003e",
- "link": "https://www.mtwilson.edu/lectures/",
- "displayLink": "www.mtwilson.edu",
- "snippet": "Talks & Telescopes: August 24, 2024 – Panel: The Triumph of Hubble ... Compelling talks followed by picnicking and convivial stargazing through both the big ...",
- "htmlSnippet": "Talks & Telescopes: August 24, 2024 – Panel: The Triumph of Hubble ... Compelling talks followed by picnicking and convivial stargazing through both the big ...",
- "cacheId": "wdXI0azqx5UJ",
- "formattedUrl": "https://www.mtwilson.edu/lectures/",
- "htmlFormattedUrl": "https://www.mtwilson.edu/\u003cb\u003electures\u003c/b\u003e/",
- "pagemap": {
- "metatags": [
- {
- "viewport": "width=device-width,initial-scale=1,user-scalable=no"
- }
- ],
- "webpage": [
- {
- "image": "http://www.mtwilson.edu/wp-content/uploads/2016/09/Logo.jpg",
- "url": "https://www.facebook.com/WilsonObs"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Lectures | NBER",
- "htmlTitle": "\u003cb\u003eLectures\u003c/b\u003e | NBER",
- "link": "https://www.nber.org/research/lectures",
- "displayLink": "www.nber.org",
- "snippet": "Results 1 - 50 of 354 ... Among featured events at the NBER Summer Institute are the Martin Feldstein Lecture, which examines a current issue involving economic ...",
- "htmlSnippet": "Results 1 - 50 of 354 \u003cb\u003e...\u003c/b\u003e Among featured events at the NBER Summer Institute are the Martin Feldstein \u003cb\u003eLecture\u003c/b\u003e, which examines a current issue involving economic ...",
- "cacheId": "CvvP3U3nb44J",
- "formattedUrl": "https://www.nber.org/research/lectures",
- "htmlFormattedUrl": "https://www.nber.org/research/\u003cb\u003electures\u003c/b\u003e",
- "pagemap": {
- "cse_thumbnail": [
- {
- "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTmeViEZyV1YmFEFLhcA6WdgAG3v3RV6tB93ncyxSJ5JPst_p2aWrL7D1k&s",
- "width": "310",
- "height": "163"
- }
- ],
- "metatags": [
- {
- "og:image": "https://www.nber.org/sites/default/files/2022-06/NBER-FB-Share-Tile-1200.jpg",
- "og:site_name": "NBER",
- "handheldfriendly": "true",
- "viewport": "width=device-width, initial-scale=1.0",
- "og:title": "Lectures",
- "mobileoptimized": "width",
- "og:url": "https://www.nber.org/research/lectures"
- }
- ],
- "cse_image": [
- {
- "src": "https://www.nber.org/sites/default/files/2022-06/NBER-FB-Share-Tile-1200.jpg"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "STUDENTS CANNOT ACCESS RECORDED LECTURES ... - Solved",
- "htmlTitle": "STUDENTS CANNOT ACCESS RECORDED LECTURES ... - Solved",
- "link": "https://community.canvaslms.com/t5/Canvas-Question-Forum/STUDENTS-CANNOT-ACCESS-RECORDED-LECTURES/td-p/190358",
- "displayLink": "community.canvaslms.com",
- "snippet": "Mar 19, 2020 ... I believe the issue is that students were not invited. Are you trying to capture your screen? If not, there is an option to just record your web ...",
- "htmlSnippet": "Mar 19, 2020 \u003cb\u003e...\u003c/b\u003e I believe the issue is that students were not invited. Are you trying to capture your screen? If not, there is an option to just record your web ...",
- "cacheId": "wqrynQXX61sJ",
- "formattedUrl": "https://community.canvaslms.com/t5/Canvas...LECTURES/td-p/190358",
- "htmlFormattedUrl": "https://community.canvaslms.com/t5/Canvas...\u003cb\u003eLECTURES\u003c/b\u003e/td-p/190358",
- "pagemap": {
- "cse_thumbnail": [
- {
- "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRUqXau3N8LfKgSD7OJOvV7xzGarLKRU-ckWXy1ZQ1p4CLPsedvLKmLMhk&s",
- "width": "310",
- "height": "163"
- }
- ],
- "metatags": [
- {
- "og:image": "https://community.canvaslms.com/html/@6A1FDD4D5FF35E4BBB4083A1022FA0DB/assets/CommunityPreview23.png",
- "og:type": "article",
- "article:section": "Canvas Question Forum",
- "article:published_time": "2020-03-19T15:50:03.409Z",
- "og:site_name": "Instructure Community",
- "article:modified_time": "2020-03-19T13:55:53-07:00",
- "viewport": "width=device-width, initial-scale=1.0, user-scalable=yes",
- "og:title": "STUDENTS CANNOT ACCESS RECORDED LECTURES",
- "og:url": "https://community.canvaslms.com/t5/Canvas-Question-Forum/STUDENTS-CANNOT-ACCESS-RECORDED-LECTURES/m-p/190358#M93667",
- "og:description": "I can access and see my recorded lectures but my students can't. They have an error message when they try to open the recorded presentation or notes.",
- "article:author": "https://community.canvaslms.com/t5/user/viewprofilepage/user-id/794287",
- "twitter:image": "https://community.canvaslms.com/html/@6A1FDD4D5FF35E4BBB4083A1022FA0DB/assets/CommunityPreview23.png"
- }
- ],
- "cse_image": [
- {
- "src": "https://community.canvaslms.com/html/@6A1FDD4D5FF35E4BBB4083A1022FA0DB/assets/CommunityPreview23.png"
- }
- ]
- }
- },
- {
- "kind": "customsearch#result",
- "title": "Public Lecture Series - Sam Fox School of Design & Visual Arts",
- "htmlTitle": "Public \u003cb\u003eLecture\u003c/b\u003e Series - Sam Fox School of Design & Visual Arts",
- "link": "https://samfoxschool.wustl.edu/calendar/series/2-public-lecture-series",
- "displayLink": "samfoxschool.wustl.edu",
- "snippet": "The Sam Fox School's Spring 2024 Public Lecture Series highlights design and art as catalysts for change. Renowned speakers will delve into themes like ...",
- "htmlSnippet": "The Sam Fox School's Spring 2024 Public \u003cb\u003eLecture\u003c/b\u003e Series highlights design and art as catalysts for change. Renowned speakers will delve into themes like ...",
- "cacheId": "B-cgQG0j6tUJ",
- "formattedUrl": "https://samfoxschool.wustl.edu/calendar/series/2-public-lecture-series",
- "htmlFormattedUrl": "https://samfoxschool.wustl.edu/calendar/series/2-public-lecture-series",
- "pagemap": {
- "cse_thumbnail": [
- {
- "src": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQSmHaGianm-64m-qauYjkPK_Q0JKWe-7yom4m1ogFYTmpWArA7k6dmk0sR&s",
- "width": "307",
- "height": "164"
- }
- ],
- "website": [
- {
- "name": "Public Lecture Series - Sam Fox School of Design & Visual Arts — Washington University in St. Louis"
- }
- ],
- "metatags": [
- {
- "og:image": "https://dvsp0hlm0xrn3.cloudfront.net/assets/default_og_image-44e73dee4b9d1e2c6a6295901371270c8ec5899eaed48ee8167a9b12f1b0f8b3.jpg",
- "og:type": "website",
- "og:site_name": "Sam Fox School of Design & Visual Arts — Washington University in St. Louis",
- "viewport": "width=device-width, initial-scale=1.0",
- "og:title": "Public Lecture Series - Sam Fox School of Design & Visual Arts — Washington University in St. Louis",
- "csrf-token": "jBQsfZGY3RH8NVs0-KVDBYB-2N2kib4UYZHYdrShfTdLkvzfSvGeOaMrRKTRdYBPRKzdcGIuP7zwm9etqX_uvg",
- "csrf-param": "authenticity_token",
- "og:description": "The Sam Fox School's Spring 2024 Public Lecture Series highlights design and art as catalysts for change. Renowned speakers will delve into themes like social equity, resilient cities, and the impact of emerging technologies on contemporary life. Speakers include artists, architects, designers, and critics of the highest caliber, widely recognized for their research-based practices and multidisciplinary approaches to their fields."
- }
- ],
- "cse_image": [
- {
- "src": "https://dvsp0hlm0xrn3.cloudfront.net/assets/default_og_image-44e73dee4b9d1e2c6a6295901371270c8ec5899eaed48ee8167a9b12f1b0f8b3.jpg"
- }
- ]
- }
- }
- ]
-}
diff --git a/backend/open_webui/retrieval/web/testdata/searchapi.json b/backend/open_webui/retrieval/web/testdata/searchapi.json
deleted file mode 100644
index fa3d1c3d74..0000000000
--- a/backend/open_webui/retrieval/web/testdata/searchapi.json
+++ /dev/null
@@ -1,357 +0,0 @@
-{
- "search_metadata": {
- "id": "search_VW19X7MebbAtdMwoQe68NbDz",
- "status": "Success",
- "created_at": "2024-08-27T13:43:20Z",
- "request_time_taken": 0.6,
- "parsing_time_taken": 0.72,
- "total_time_taken": 1.32,
- "request_url": "https://www.google.com/search?q=chatgpt&oq=chatgpt&gl=us&hl=en&ie=UTF-8",
- "html_url": "https://www.searchapi.io/api/v1/searches/search_VW19X7MebbAtdMwoQe68NbDz.html",
- "json_url": "https://www.searchapi.io/api/v1/searches/search_VW19X7MebbAtdMwoQe68NbDz"
- },
- "search_parameters": {
- "engine": "google",
- "q": "chatgpt",
- "device": "desktop",
- "google_domain": "google.com",
- "hl": "en",
- "gl": "us"
- },
- "search_information": {
- "query_displayed": "chatgpt",
- "total_results": 1010000000,
- "time_taken_displayed": 0.37,
- "detected_location": "United States"
- },
- "knowledge_graph": {
- "kgmid": "/g/11khcfz0y2",
- "knowledge_graph_type": "Kp3 verticals",
- "title": "ChatGPT",
- "type": "Software",
- "description": "ChatGPT is a chatbot and virtual assistant developed by OpenAI and launched on November 30, 2022. Based on large language models, it enables users to refine and steer a conversation towards a desired length, format, style, level of detail, and language.",
- "source": {
- "name": "Wikipedia",
- "link": "https://en.wikipedia.org/wiki/ChatGPT"
- },
- "developer": "OpenAI, Microsoft",
- "developer_links": [
- {
- "text": "OpenAI",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=OpenAI&si=ACC90nwLLwns5sISZcdzuISy7t-NHozt8Cbt6G3WNQfC9ekAgItjbuK5dmA2L3ta2Ero3Ypd_sib6W4Pr5sCi7O_W3yzdqxwyrjzsYeYOtNg2ogL1xVq9TKwgD48tL7rygfkRfNyy4k-R5yQgywoFukoCUths6NdRX69gl50cvd6dpZcMzVelCxT7mxXlRchl6XkueG326znDiZL-ODNOysdnCc4XoeAQUFtbaVjja6Vc7WkQF4X8rUdbDKPVU9WyLOV765d8Y777kMI7-nXGGyD7xXJX5E3HA%3D%3D&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQmxMoAHoECD0QAg"
- },
- {
- "text": "Microsoft",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=Microsoft&si=ACC90nyvvWro6QmnyY1IfSdgk5wwjB1r8BGd_IWRjXqmKPQqm-SdjhIP74XAMBYys4zy1Z9yzXEom04F9Qy-tMOt2d-L6jIC5cXse6I528G870-4sF-DZYAPj0F1HoGTUOqpWuP7jbEPm3w_-mCH0wVgBHBGCgxRrCaUn8_k2-aga9V9JD6hkq2kM8zVmERCqCM8rqo3bNfbPdJ-baTq4w8Pkxdan3K--CfOtXX--lTjJtO6BnfG2RdpY_jBfy3uZZ7DeAE4-P4rvKuty6UL6le4dqqDt-kLQA%3D%3D&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQmxMoAXoECD0QAw"
- }
- ],
- "initial_release_date": "November 30, 2022",
- "programming_language": "Python",
- "programming_language_links": [
- {
- "text": "Python",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=Python&si=ACC90nyvvWro6QmnyY1IfSdgk5wwjB1r8BGd_IWRjXqmKPQqmwbtPHPEcZi5JOYKaqe_iu1m4TVPotntrDVKbuXCkoFhx-K-Dp6PbewOILPFWjhDofHha-WRuSQCgY7LnBkzXtVH7pxiRdHONv3wpVsflGBg_EdTHCxOnyWt1nDgBmCjsfchXU7DKtJq159-V0-seE_cp7VV&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQmxMoAHoECDYQAg"
- }
- ],
- "engine": "GPT-4; GPT-4o; GPT-4o mini",
- "engine_links": [
- {
- "text": "GPT-4",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=GPT-4&stick=H4sIAAAAAAAAAONgVuLVT9c3NMy2TI_PNUtOX8TK6h4QomsCAKiBOxkZAAAA&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQmxMoAHoECDUQAg"
- },
- {
- "text": "GPT-4o",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=GPT-4o&stick=H4sIAAAAAAAAAONgVuLVT9c3NCyryEg3rMooWMTK5h4QomuSDwC3NAfvGgAAAA&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQmxMoAXoECDUQAw"
- },
- {
- "text": "GPT-4o",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=GPT-4o&stick=H4sIAAAAAAAAAONgVuLVT9c3NCyryEg3rMooWMTK5h4QomuSDwC3NAfvGgAAAA&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQmxMoAnoECDUQBA"
- }
- ],
- "license": "Proprietary",
- "platform": "Cloud computing platforms",
- "platform_links": [
- {
- "text": "Cloud computing",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=Cloud+computing&stick=H4sIAAAAAAAAAONgVuLSz9U3MKqMt8w1XsTK75yTX5qikJyfW1BakpmXDgB-4JvxIAAAAA&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQmxMoAHoECDcQAg"
- }
- ],
- "stable_release": "July 18, 2024; 40 days ago",
- "image": "data:image/png;base64,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"
- },
- "organic_results": [
- {
- "position": 1,
- "title": "ChatGPT | OpenAI",
- "link": "https://openai.com/chatgpt/",
- "source": "OpenAI",
- "domain": "openai.com",
- "displayed_link": "https://openai.com › chatgpt",
- "snippet": "ChatGPT helps you get answers, find inspiration and be more productive. It is free to use and easy to try. Just ask and ChatGPT can help with writing, ...",
- "snippet_highlighted_words": ["ChatGPT", "ChatGPT"],
- "sitelinks": {
- "expanded": [
- {
- "title": "Introducing ChatGPT",
- "link": "https://openai.com/index/chatgpt/",
- "snippet": "We've trained a model called ChatGPT which interacts in a ..."
- },
- {
- "title": "Download ChatGPT",
- "link": "https://openai.com/chatgpt/download/",
- "snippet": "Download ChatGPT Use ChatGPT your way. Talk to type or have a ..."
- },
- {
- "title": "Pricing",
- "link": "https://openai.com/chatgpt/pricing/",
- "snippet": "Pricing · $25per user / month billed annually · $30per user / month ..."
- },
- {
- "title": "“What is ChatGPT?” article",
- "link": "https://help.openai.com/en/articles/6783457-what-is-chatgpt",
- "snippet": "How does ChatGPT work? ChatGPT is fine-tuned from ..."
- },
- {
- "title": "For Teams",
- "link": "https://openai.com/chatgpt/team/",
- "snippet": "ChatGPT simplifies lead qualification and forecasting ..."
- }
- ]
- },
- "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAAAAABWESUoAAABQElEQVR4Ac3PIYyDMBiG4VefPDtxEj0xM39qZl40mcPhMzONOjWNrqxA4UgmqklweBQKVfFdGhbSZZvfY5qmb35++DAbO4XQF7xjpN42s1oyXtlr2gN4SRpynnTaANtesy1tkOOR8aoAJ12J6ngmGkknCqn5gv0y8Jv03eYy+PEAu07jCQ66sDqqpohBCVb2PMtvSbeoxRJcLlIFVFKVBuOwBDdNxkzjEbKbVDwHvgZw8j+Qq2fVhhjkxB2g7JwqKJMRhUqo5Lol8OTxMbSsehXw45e9ao+J92EkGaFbBscxLqnbPRhYOVXr/53L+wTVaUDmNZ+tLNyDWgdWl3gxo7otHMYY5DYdwLc6gB18tVLBSVJD6qr6fsoBVt7wyCm4PxfiRyBTx5N8kCQP8DtrzysZrebG9ZLhnaILYbIbPss/4c/row+G/FAAAAAASUVORK5CYII="
- },
- {
- "position": 2,
- "title": "ChatGPT",
- "link": "https://chatgpt.com/",
- "source": "ChatGPT",
- "domain": "chatgpt.com",
- "displayed_link": "https://chatgpt.com",
- "snippet": "ChatGPT helps you get answers, find inspiration and be more productive. It is free to use and easy to try. Just ask and ChatGPT can help with writing, learning,",
- "snippet_highlighted_words": ["ChatGPT", "ChatGPT"],
- "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAABGElEQVR4Aa3SIWzCUBSF4d8rDA6LnMfiMPjU18xiJjHPCxzBVePqaqsrK6sqK5qgnmjybzShzQKb4tjv3mvuwX/yHhya9i8cDgCXlziwKm99TnIM5RN+rlQvkO5Z97+wP1FpAbkadwwzWgAOW4L2rcppxoZLjc2i1xMEzZYzblMrbBILzpaQV0wYqUfcbNNk3+kZPibsaEek1oqjxj3DA6W8Y5uobs7kuggTphvNOKWq6/HQlQl70sF4oNaS2NNaMzxQ4Krt9rBPliMW82akubKqDFSuR9x9TiiF8QsybfnBLtDNePhQm3ifSOyAyhlvpKoZy0pzsuiM2kKSwlWNhKd/FiHsFsXtVrB5XbAAEHyN2jTv7+1TvgE1rn+XcUk3JAAAAABJRU5ErkJggg=="
- },
- {
- "position": 3,
- "title": "OpenAI",
- "link": "https://openai.com/",
- "source": "OpenAI",
- "domain": "openai.com",
- "displayed_link": "https://openai.com",
- "snippet": "ChatGPT on your desktop. Chat about email, screenshots, files, and anything on your screen. Chat about email, screenshots, files ...",
- "snippet_highlighted_words": ["ChatGPT"],
- "sitelinks": {
- "inline": [
- {
- "title": "ChatGPT",
- "link": "https://openai.com/chatgpt/"
- },
- {
- "title": "Introducing ChatGPT",
- "link": "https://openai.com/index/chatgpt/"
- },
- {
- "title": "Download ChatGPT",
- "link": "https://openai.com/chatgpt/download/"
- },
- {
- "title": "ChatGPT for teams",
- "link": "https://openai.com/chatgpt/team/"
- }
- ]
- },
- "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAAAAABWESUoAAABQElEQVR4Ac3PIYyDMBiG4VefPDtxEj0xM39qZl40mcPhMzONOjWNrqxA4UgmqklweBQKVfFdGhbSZZvfY5qmb35++DAbO4XQF7xjpN42s1oyXtlr2gN4SRpynnTaANtesy1tkOOR8aoAJ12J6ngmGkknCqn5gv0y8Jv03eYy+PEAu07jCQ66sDqqpohBCVb2PMtvSbeoxRJcLlIFVFKVBuOwBDdNxkzjEbKbVDwHvgZw8j+Qq2fVhhjkxB2g7JwqKJMRhUqo5Lol8OTxMbSsehXw45e9ao+J92EkGaFbBscxLqnbPRhYOVXr/53L+wTVaUDmNZ+tLNyDWgdWl3gxo7otHMYY5DYdwLc6gB18tVLBSVJD6qr6fsoBVt7wyCm4PxfiRyBTx5N8kCQP8DtrzysZrebG9ZLhnaILYbIbPss/4c/row+G/FAAAAAASUVORK5CYII="
- },
- {
- "position": 4,
- "title": "ChatGPT - Apps on Google Play",
- "link": "https://play.google.com/store/apps/details?id=com.openai.chatgpt&hl=en_US",
- "source": "Google Play",
- "domain": "play.google.com",
- "displayed_link": "https://play.google.com › store › apps › details › id=com...",
- "snippet": "With the official ChatGPT app, get instant answers and inspiration wherever you are. This app is free and brings you the newest model improvements from ...",
- "snippet_highlighted_words": ["ChatGPT"],
- "rich_snippet": {
- "detected_extensions": {
- "rating": 4.8,
- "reviews": 3113820
- },
- "extensions": ["Rating: 4.8", "3,113,820 votes", "Free", "Android", "Business/Productivity"]
- },
- "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADNklEQVR4AcXUA4wdURiG4VPbtu32mmvUtm3bts2gnNq2bbtBbSzn3n79M8nZrvdcZZO8yUTzPUMGIFmLOlBJTXhtqcPUUaoDxRwp16aObORuHcNpxmwnUjM5/uICam0PyKza2miJSmoGOlH0HlIGjwPUm9tOqrXdD6qt9RANEb39VEGPAXym/5YMK9ehxu5ahKgbH4I3m0rjdoDfBEj+EwDDyrUiiO9UR7ffAd8pMvzHAyJ3Ivr74R7AtD8SIRATURO1ttWBakuCCN4BqrDLAApRiAmAcflm1NilJUSwCAJqqcm8nBs7pRu4y+gCIAoRqdwJ07LtdCfUSSLUlEZqjBQbevwctVvX1QUA7zd8pkYIIfh41o2d0Xh7ICJOpAFOsic0ZHYBIIZQKynjaLQtCPLJVKCrRyQhaAjUYaqIMCBxxA5CqAgRRIjmUMapzBu7oHG0cZmPx2welU4AkARi6T7U3KWHanuAgshCV952hy/sJ1MmNs77Q5mcAHBEuIKwLD6Mmrv1yCS1QMftfsApJjLO+0A1cxjAEb5TwxRE/uX30PmkFrjAgJPRn7lQklMAXwL4TAtB8UVA927PIA8sBNxikC+mhHzMgwA+7j0tFEWXAN1GXkGksSzkMpXxdWBZ/L3LYLvMRBHfqLbCAD7uNT0MJRYDfYedQ4S5FOymonjvbcD7Slb86Fsa9psM9itJIuxUsPhLGG282BJg8ODjgL4QbKbieO+nxyc/NT55a/CughXfu5dLCrGGyir2GcYzPoTGYSiESFNJGtfhk69aSUH4qPG+YoKIc1Q58R+R+Hj8iJ5lYbuUArazKd/QkL9Tv2Lfqb9hpfGiSYzHh3hXxjv05/Di/e23GB8TB/Bxy4xw5YUbMfAwjRdJajw6Yun7KpaM37uWY/YbBDjpIICP023HxH47AV0ehJtLi4wfp0pR7H01M6OvwnGA/9Rf0v/xHTSeF2GWMviQ+PhzykoxJVcA1eZBKh5jvGxi47+oHnzULYCacyFN7is0Po9KRzG3Am7XbzopxFoeoZZyCY0foIrwIbcDZFPxzN+9qy2JZ/whZeADngJEP0k76gB1kOooOuwKIFn7B3LHHIJtp64TAAAAAElFTkSuQmCC",
- "thumbnail": "data:image/jpeg;base64,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"
- },
- {
- "position": 5,
- "title": "ChatGPT on the App Store - Apple",
- "link": "https://apps.apple.com/us/app/chatgpt/id6448311069",
- "source": "Apple",
- "domain": "apps.apple.com",
- "displayed_link": "https://apps.apple.com › app › chatgpt",
- "snippet": "This official app is free, syncs your history across devices, and brings you the newest model improvements from OpenAI. With ChatGPT in your pocket ...",
- "snippet_highlighted_words": ["ChatGPT"],
- "rich_snippet": {
- "detected_extensions": {
- "rating": 4.9,
- "reviews": 1026513
- },
- "extensions": ["Rating: 4.9", "1,026,513 reviews", "Free", "iOS", "Business/Productivity"]
- },
- "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAC5UlEQVR4Aa1XQ3hkQRjc+ynX2OZtbfu+tm3b1nlt27a9O4qNS5xxbdd+cTKvXydT31fJoPuvmvf6/ejw86dBlX6CwwQXCq6t5cLaz/xV4+ld6F8r9NdgsCAjIwf5+UUoLCwBydf8jN+JNQbBddzjDQM+gocErRSyWm2QgWu4lntq9/q01UAfwYKCgmK43W6ognu4lzEE+6oamCboLC0tR3vBGIwlOF2vgZm5uQWoqamBXrhcLpw5cxZ79uxFKxCxrGBMxpYZ6Eu33KAXNDp+/AQEBgbzv8Y6Kxi7+e1ofuAKVS/7zp27KE7i6dNnem5HAbVaM3CYh0YF/PWRkdEUpxHoQe3BPNTcQJCgTc9pT0tLh8VigdPpBLFv3368evVKBC7A16/fkJmZKX06qCXo39jAej67Wnjx4iVGjBiJ0NBwBAeHYsCAgTh48BCuXLmCKVOmIioqBrwS4eGRGDduPMxmMzyBWtRsbMCglWSePXuOkJAwCuhmnz79YLVaPSUrGjDWGQhgCvWEyspKdOrURUk8JiYO799/0Exg1KQ2DQxjHveEO3fuKomTPBcyUJPaNLCQxcQTNm3arGzAYDBABmoK7UU0sE7rAC5dukxJPCgoRPy6DMhATWpLDWzbtl35Cty//0DBgOQW3LhxU9nAsGEj4HA4dN0CySHkwvy6bKfECRMmISsrS34IZY8hMXnyFAZV5rFjx6WPoa5E9PnzZ2XxpKQUlJaWaiUik1IqXrBgkZKB06fPwBOKiv4fwA3Ni5FdK3NVVFSgd+++usRnzJilXIzII7JynJOTAxaa7t17Yt68+bh37z6+fPmKCxcuYvToMejVqzdWrVrNMi0rx4cVGxIFKDQkCi2ZAhRaMklTavWqeF6epCltxuneasvLyurb8lmqg0lfLw4m/dozmh0RtBUV6R/NuJZ7avf6eGs4ZeIwMoVmZrYcTvkZv+MarlUZTlUZIDi8diRfX8uFtZ8FqMb7Bx+2VJbBTrlcAAAAAElFTkSuQmCC"
- },
- {
- "position": 6,
- "title": "What is ChatGPT and why does it matter? Here's what you ...",
- "link": "https://www.zdnet.com/article/what-is-chatgpt-and-why-does-it-matter-heres-everything-you-need-to-know/",
- "source": "ZDNET",
- "domain": "www.zdnet.com",
- "displayed_link": "https://www.zdnet.com › ... › Artificial Intelligence",
- "snippet": "ChatGPT is an AI chatbot with natural language processing (NLP) that allows you to have human-like conversations to complete various tasks. The ...",
- "snippet_highlighted_words": ["ChatGPT"],
- "date": "Jun 17, 2024",
- "favicon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAMAAABF0y+mAAAAMFBMVEXQ/0rQ/0vM+0oDAxDV/0yixjxlfCpTZiV/nDK75USTtTg7SR/F8Uiu1UAfJhhyjC65DF56AAAAAXRSTlP3Yz+/2QAAANRJREFUKJHdkkGSxCAIRaOAAore/7YDJNPVSVfPAeYtdPEK5FMex1/U8pV/JutMatwVH9JaouTH1ok3SWsEjWGNBXve5JQ5qS+XJLJB8V3iZK8AZhBEAb5JBVjNEFPaU65tIibR1saiZ2XgbzpDH1H2ZtWttB316SSpZ5TeWymNtSfK501X2wFWo23mVR7DE49f2VYrkdPONVaEXmq9JHVIGUQSl/ia1jxFyOYT2YeUletTIyJ5SEIf4WoLfJNCE73EhJKoJHv9hHjFyQNzeefp8jvHD3ZbC4DWezICAAAAAElFTkSuQmCC"
- }
- ],
- "inline_images": {
- "images": [
- {
- "title": "upload.wikimedia.org/wikipedia/commons/e/ef/ChatGP...",
- "source": {
- "name": "en.wikipedia.org",
- "link": "https://en.wikipedia.org/wiki/ChatGPT"
- },
- "original": {
- "link": "https://upload.wikimedia.org/wikipedia/commons/e/ef/ChatGPT-Logo.svg",
- "height": 800,
- "width": 800,
- "size": "1KB"
- },
- "thumbnail": "data:image/png;base64,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"
- },
- {
- "title": "Introducing ChatGPT | OpenAI",
- "source": {
- "name": "OpenAI",
- "link": "https://openai.com/index/chatgpt/"
- },
- "original": {
- "link": "https://images.ctfassets.net/kftzwdyauwt9/40in10B8KtAGrQvwRv5cop/8241bb17c283dced48ea034a41d7464a/chatgpt_diagram_light.png?w=3840&q=90&fm=webp",
- "height": 1153,
- "width": 1940,
- "size": "93KB"
- },
- "thumbnail": "data:image/png;base64,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"
- },
- {
- "title": "What Is ChatGPT? Everything You Need to Know | TechTarget",
- "source": {
- "name": "TechTarget",
- "link": "https://www.techtarget.com/whatis/definition/ChatGPT"
- },
- "original": {
- "link": "https://cdn.ttgtmedia.com/rms/onlineimages/chatgpt_screenshot-f_mobile.jpg",
- "height": 252,
- "width": 559,
- "size": "12KB"
- },
- "thumbnail": "data:image/jpeg;base64,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"
- },
- {
- "title": "ChatGPT Tutorial - A Crash Course on Chat GPT for Beginners",
- "source": {
- "name": "YouTube",
- "link": "https://m.youtube.com/watch?v=JTxsNm9IdYU"
- },
- "original": {
- "link": "https://i.ytimg.com/vi/JTxsNm9IdYU/maxresdefault.jpg",
- "height": 720,
- "width": 1280,
- "size": "134KB"
- },
- "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRIDD6PSH-o5_a4uY4vMZypbGD47mIWLL6VsTXNuADpOw&s"
- },
- {
- "title": "Introducing ChatGPT and Whisper APIs | OpenAI",
- "source": {
- "name": "OpenAI",
- "link": "https://openai.com/index/introducing-chatgpt-and-whisper-apis/"
- },
- "original": {
- "link": "https://images.ctfassets.net/kftzwdyauwt9/44fefabe-41f8-4dbf-d80656c1f876/8dec20d14a894ae52ae07449452a89c5/introducing-chatgpt-and-whisper-apis.jpg?w=3840&q=90&fm=webp",
- "height": 2048,
- "width": 2048,
- "size": "93KB"
- },
- "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ_IQLO0924Gl1jYnj0yWaeKwSWj8tbTbk0Jc6cAvQv6A&s"
- }
- ]
- },
- "inline_videos": [
- {
- "position": 1,
- "title": "2 MINUTES AGO: OpenAI Just Released the Most Powerful ...",
- "link": "https://www.youtube.com/watch?v=7idowVzHZ9g",
- "source": "YouTube",
- "channel": "AI Uncovered",
- "date": "1 day ago",
- "image": "data:image/jpeg;base64,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"
- },
- {
- "position": 2,
- "title": "OpenAI Secretly Released a NEW ChatGPT Model and It’s ...",
- "link": "https://www.youtube.com/watch?v=uh4baKXL6K4",
- "source": "YouTube",
- "channel": "Unveiling AI News",
- "date": "21 hours ago",
- "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD84QzQ5OjcBCgoKDQwNGg8PGjclHyU3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3N//AABEIAFMAlAMBIgACEQEDEQH/xAAbAAABBQEBAAAAAAAAAAAAAAAGAAIDBAUBB//EADYQAAIBAwMCAwYFAwQDAAAAAAECAwAEEQUSIQYxE0FRFCIyYXGBQpGhscEjYnIHFlLwFTOC/8QAGgEAAgMBAQAAAAAAAAAAAAAAAgQAAQMFBv/EACkRAAICAQQBAQgDAAAAAAAAAAABAhEDBBIhMUFRBRMiMnGh0fAzYZH/2gAMAwEAAhEDEQA/APJJDU0EWxdxHvH9KjRd8yqe2c1eVUz75GcE4IOPvVisSuFmnbbCNi+cjfwPOro0SAKpuJp5GYZBDADFMaW4RhIjbSoGCF5+lQzXFyyLJk7QCBxwKzcmNRh6l9NLsYoxzOAT73vZ2/PtWXr+lXFmFmWRJrRvgdDyP8h5VH7dMMNubag4GfOprXVpFlXeVCtw4PIP1qk5BNR8GDSrYu1t0nYQhRGeVB8h6VWZUP4VrQAogkHI71Nv3L+9OdUHkBUR2jtjmoQaeK7mmkj1pZqFDs13NNzXQahKHU4VHkeop4PlUBZIlWI6rqyjuQPvViLnGKsykWVHFKur2pVZhZy0GZ2YjIRSTWtpVq093vlGQVzgeX3qvp8aRl1fksvPzq1FO8NyFQ4JA3DyrOY1iXJr2FkuqTMkUAeNfiHY961LHpcSPiVO3ljgfLFaX+nyNEJGdC2Rgue3/eaML24trRN8rxx57FiBSk2zpQS9Dzu+6QgEp8BAuTnFYOodMojf+sJx5DvXo8+rWk91EltLFK/Jbw2zxig3U+o7GS9KmRs84jA+GghKW7g1lGFcgBrVsbbw0f4kZ0J+QwR+9ZdG3VEcLWceoRHKOwV/kw4/Yj8qGJdqjLDj6U+ujnNU6NnoLwvatT8bZj2Ndu/Hf2iHt9s0Ua9eWqWfU+t6PLFa3630cMscWAVkWRx4ifJ1OT/cG9RQZ07pdvrV7NbyTeAqW7Sh9owCCAM/LmteDo6EK/tbXIljtopHijMakOzOpGWIGBt9aJRbFsmqxY3UnyEUmuy/7n1prvULgW9rokbwtAVLRuy2xYpnjcTnP3pt/NPd2hu+mZJJNYuLG1ZJiEW7kh3TiUjb+PcIgdvO0D50N2PSdpfoZIbmdI1M0bB9pKyqyhF4453Dt9qoDp6NuoItJFwy7YBJcuVzsOzewA88dqm1lLVYm2r67DZm1Q6fqH/iGH+4Rb2IvjbFQxk3T7s44zs8Pd8+/NZ/UGnNrWnXVlosFvc6hFfwyXcdoUCh2tkWRlxxs8UPkjgH5UO2mhadqonOk3VwxS2aURXCqhVwwABb4cEHPB4q1a9IJJqiWlzcPHELOKWWQbW2ySEAKMcEZPf0FTayS1eKN26oKdRmvbq7E3Rc1v4LancnUZEZPDP9TCGX1h2dvw/F51WsrrTLTQ5XvIra4tJNOWKYQKB7rahcAtGDyCBhl+goXTRNOOmNLLJereJdCyaPamwTEHz77cj61Yl6as/EaO3mvGaC8jtZ5niXw2ZmCttI5GNw796m1lPVY7oLbu0a0jjtun7nxtSigsUkn0/aZntNjbmhyfNthODn4c8ZoU6zt1t+oHxKsjSwxSyMqovvlBuyEJXdnvg4zmp7jpbTba7tYLiW+j9puTbojpHuzkAP/gc/WsS/itbe9lhsjMY42KkygAlgSD28qumgI6iGX5RL2pUl7UqgA57hormEICxLDgdznjFalxYXFjOBcJtZuQQQQR9RxWJLKYNQgm4/pujjPyOf4r2a70uG7hezigVLe3gz4oH485GP1/KsMsttHR0+NStmjpaBNJg8GP4YwQvqaFtZ0bVtWc3F47JHvwkCjOU+fzPpRhp06qiKQFAUDAq9K6CMkNxilV6j9eAV6K6Xj0yaW7kQqWO1UfnA+lDvVfS9rFrk0iRYE+JUOcDPmKM11SUQzzRWs08aDEaQ4y7feg3qXqK4lu7eG5szA4ALLkNtPOeRwfKri3douSXTMq/0uReltTjUDaoWYDPYq2Tj7bqCISJYSjeXH2r0m5vFktJYsZSSJlI9cggivOLeMRQ734JH6U1ibcbEsySlwR2t1PYtcCEgGaFoJMjPunGf2rVHU+pOreP7NcBoo4XE8AcMqElcg+eSeay7lOzj71CnB+tapsWljhLmSNW01nUhIbayESe0XUcqwxRhV8RSNoA7AZAqZoeoINUutXMEi3UFxiZ8AgO/G3b55zjAz3rP02ZLXU7O5lzshnSRsDJwGBOKMZurrIxs1tBK0rSxTOGUAOyuvz/4oPvV8eWL5VOM0sWO77/foZl6nU2Utn0+KFLlGtY4YERUGTuYAA+6xxnn0pA9WIY7CGJ4ZGhTa0JVS0cQ2j3wcYGeefOren6tp2mXLPbNdzpc3guJTJGAYwA3A55OW703TtZ03TYI7FDPJbLHPumkt1b3pNoA2ZwVGOcnmpuj6gSxZ1H+L7P9/Jlay+ueDctqEKxo10k8rJt4lKkL2PmM01+qNSkBz7MHdkeSRYFDSshDKWI7nIq9Lf6JPZXdlLczRpNNHKrwWKoAVUgjYDjzHNDLhRIwjJZATtJGCRUYeOEZqpw6/r6FuK+nTUhqAI9oE3jZxxuznt6ZrrStNK8r/E7Fmx6mqi1OlUaOKRaU8V2o1PFKrMqHX8W9NwHbg/SvQen+v9Pj6e8HU5ZE1CKPw8bCRNgYU5H65oGicSrg43eYqrPZ85i7elBKKkuRnHlcHwe0Wd0Lq0hni4EqBgD5ZqxNI7QHc+0fib0FB/RWpSSaH4UwO6zbw2/w/C37j/5oklmM0e2Mggjn6UjOO10dCGTdGyOPVLmS0C2emS+Go90uVTI9QM80Ma1c3nhqj6csabi3vSKzE/nRncQXE1qqRssYxgMPKgnWNN8CUFr1pWPbK4/mih2G5raZssjHTpnlG0tGw257ZGP5oRun3NsXsO/1rf1y4MVuIA2Xc+XoKH1QscDvTkVSOdOVsfF78RB8uKrlMHB8qvbQiY8hVZhuJNEDuGqM4rd6esDeXCxRwmWZyFjT1JrGjWiroy6Wy1a2uJDiNJV8QkZ9wnDfoTS+p+Q7PsRKWouraTr/AAK4Ok7DwzHMZHm8MHxrYo6FyiuFVce8u10y7Oi5YAH1G+qNBGmxLlTtkTfGzxGJxg4Ksp7EEHzI7EE16GIfBgilC3YggYiMowZZv6aoqnbu8b3UXbhV4zuweSLdfT2/hCyhlWV7Zn4TO2BTt/pD1wwY8cDdgUq4qNNHoIZZ5d0Zcpp3x1S+3g8wlXaxFMAqece+ajxXQj0eJytKbo4KlSmAU5aIyZODxXKaDxXagFFgqVOVODU0MhdirDnHepZI6jhikaZfCRnb0UVZjGYWf6fLMdUulWMtAYMSt5Kcjbn68/rRLc2E0Mu62baP+PlTdBiGn9OaaYlCrPPmdh+JyWXB+mBW867/AC7UrlXxD+GXwgdf6xqULm3KhPQt/FDmpXM+4vPNub5Uaa1bvcTLGF4HnjtWVL02kRFxqHNuoyEB5kPkPp61UOXQU5cGHf29vP0/psdxhblzLIr+ag7cZ+WAPzoc9me3ciZcN5fT5Vt6tO1xfAD4IxgAeX/eKsxFvZ9pOR5ZFN7aQlKdvgF5Pe4HambKJ1MUhxcW0cnzK811tL0+Ye4skJ9VbI/I1e0H3gMhMCrNrO8DZU/WtWTQZMZt545f7T7pP8frWdNZzQNtmiZD/cKCcFJUzbBrJ4JqcHTLttrl5a7/AGWeSHeMP4Tsu4ehweapXN7JLHs4C/Ko/CrnhVktPBeDo5PbuqyRcXLvsqMuTmm7KuGKmGOtqOX7y3ZV20sVYMdMK1CbhlKnYpVC7N5UV5kVhkFgDW94McERSJAi/KlSrSBzW+At6ekaPpU7Dx4xGCM8cetasBy7JxtC9sV2lWWXyO4W6RRviVKbSRuYg4rI1QYgcc/F60qVTH0iZHywQMaeOfdHxH96vxRJ4ZG3ilSrfwJ2yMxpub3R3rqoo8qVKrBseow3HFTFiwKNyvoe1KlVA2Dd2ipcyoi4UOQBUJA9KVKszdDSBTGA9KVKqDRGwFRMBSpVDSJGaVKlUCP/2Q=="
- },
- {
- "position": 3,
- "title": "OpenAI's ChatGPT Does Research… And Breaks Itself!",
- "link": "https://www.youtube.com/watch?v=iC-wRBsAhEs",
- "source": "YouTube",
- "channel": "Two Minute Papers",
- "date": "2 days ago",
- "image": "data:image/jpeg;base64,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"
- }
- ],
- "inline_videos_more_link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&tbm=vid&q=chatgpt&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ8ccDegQIIhAH",
- "related_searches": [
- {
- "query": "ChatGPT login",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+login&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhUEAE"
- },
- {
- "query": "ChatGPT free",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+free&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhXEAE"
- },
- {
- "query": "ChatGPT 4",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+4&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhREAE"
- },
- {
- "query": "ChatGPT app",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+app&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhQEAE"
- },
- {
- "query": "ChatGPT download",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+download&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhPEAE"
- },
- {
- "query": "ChatGPT OpenAI",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+OpenAI&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhOEAE"
- },
- {
- "query": "ChatGPT website",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+website&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhVEAE"
- },
- {
- "query": "ChatGPT free online",
- "link": "https://www.google.com/search?sca_esv=acb05f42373aaad6&gl=us&hl=en&q=ChatGPT+free+online&sa=X&ved=2ahUKEwi17_rnppWIAxX2rokEHfAoEzYQ1QJ6BAhWEAE"
- }
- ],
- "pagination": {
- "current": 1,
- "next": "https://www.google.com/search?q=chatgpt&oq=chatgpt&gl=us&hl=en&start=10&ie=UTF-8"
- }
-}
diff --git a/backend/open_webui/retrieval/web/testdata/searxng.json b/backend/open_webui/retrieval/web/testdata/searxng.json
deleted file mode 100644
index 0e6952baa8..0000000000
--- a/backend/open_webui/retrieval/web/testdata/searxng.json
+++ /dev/null
@@ -1,476 +0,0 @@
-{
- "query": "python",
- "number_of_results": 116000000,
- "results": [
- {
- "url": "https://www.python.org/",
- "title": "Welcome to Python.org",
- "content": "Python is a versatile and powerful language that lets you work quickly and integrate systems more effectively. Learn how to get started, download the latest version, access documentation, find jobs, and join the Python community.",
- "engine": "bing",
- "parsed_url": ["https", "www.python.org", "/", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "qwant", "duckduckgo"],
- "positions": [1, 1, 1],
- "score": 9.0,
- "category": "general"
- },
- {
- "url": "https://wiki.nerdvpn.de/wiki/Python_(programming_language)",
- "title": "Python (programming language) - Wikipedia",
- "content": "Python is a high-level, general-purpose programming language. Its design philosophy emphasizes code readability with the use of significant indentation. Python is dynamically typed and garbage-collected. It supports multiple programming paradigms, including structured (particularly procedural), object-oriented and functional programming.",
- "engine": "bing",
- "parsed_url": ["https", "wiki.nerdvpn.de", "/wiki/Python_(programming_language)", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "qwant", "duckduckgo"],
- "positions": [4, 3, 2],
- "score": 3.25,
- "category": "general"
- },
- {
- "url": "https://docs.python.org/3/tutorial/index.html",
- "title": "The Python Tutorial \u2014 Python 3.12.3 documentation",
- "content": "3 days ago \u00b7 Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python\u2019s elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many \u2026",
- "engine": "bing",
- "parsed_url": ["https", "docs.python.org", "/3/tutorial/index.html", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "qwant", "duckduckgo"],
- "positions": [5, 5, 3],
- "score": 2.2,
- "category": "general"
- },
- {
- "url": "https://www.python.org/downloads/",
- "title": "Download Python | Python.org",
- "content": "Python is a popular programming language for various purposes. Find the latest version of Python for different operating systems, download release notes, and learn about the development process.",
- "engine": "bing",
- "parsed_url": ["https", "www.python.org", "/downloads/", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "duckduckgo"],
- "positions": [2, 2],
- "score": 2.0,
- "category": "general"
- },
- {
- "url": "https://www.python.org/about/gettingstarted/",
- "title": "Python For Beginners | Python.org",
- "content": "Learn the basics of Python, a popular and easy-to-use programming language, from installing it to using it for various purposes. Find out how to access online documentation, tutorials, books, code samples, and more resources to help you get started with Python.",
- "engine": "bing",
- "parsed_url": ["https", "www.python.org", "/about/gettingstarted/", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "qwant", "duckduckgo"],
- "positions": [9, 4, 4],
- "score": 1.8333333333333333,
- "category": "general"
- },
- {
- "url": "https://www.python.org/shell/",
- "title": "Welcome to Python.org",
- "content": "Python is a versatile and easy-to-use programming language that lets you work quickly. Learn more about Python, download the latest version, access documentation, find jobs, and join the community.",
- "engine": "bing",
- "parsed_url": ["https", "www.python.org", "/shell/", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "qwant", "duckduckgo"],
- "positions": [3, 10, 8],
- "score": 1.675,
- "category": "general"
- },
- {
- "url": "https://realpython.com/",
- "title": "Python Tutorials \u2013 Real Python",
- "content": "Real Python offers comprehensive and up-to-date tutorials, books, and courses for Python developers of all skill levels. Whether you want to learn Python basics, web development, data science, machine learning, or more, you can find clear and practical guides and code examples here.",
- "engine": "bing",
- "parsed_url": ["https", "realpython.com", "/", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "qwant", "duckduckgo"],
- "positions": [6, 6, 5],
- "score": 1.6,
- "category": "general"
- },
- {
- "url": "https://wiki.nerdvpn.de/wiki/Python",
- "title": "Python",
- "content": "Topics referred to by the same term",
- "engine": "wikipedia",
- "parsed_url": ["https", "wiki.nerdvpn.de", "/wiki/Python", "", "", ""],
- "template": "default.html",
- "engines": ["wikipedia"],
- "positions": [1],
- "score": 1.0,
- "category": "general"
- },
- {
- "title": "Online Python - IDE, Editor, Compiler, Interpreter",
- "content": "Online Python IDE is a free online tool that lets you write, execute, and share Python code in the web browser. Learn about Python, its features, and its popularity as a general-purpose programming language for web development, data science, and more.",
- "url": "https://www.online-python.com/",
- "engine": "duckduckgo",
- "parsed_url": ["https", "www.online-python.com", "/", "", "", ""],
- "template": "default.html",
- "engines": ["qwant", "duckduckgo"],
- "positions": [8, 6],
- "score": 0.5833333333333333,
- "category": "general"
- },
- {
- "url": "https://micropython.org/",
- "title": "MicroPython - Python for microcontrollers",
- "content": "MicroPython is a full Python compiler and runtime that runs on the bare-metal. You get an interactive prompt (the REPL) to execute commands immediately, along ...",
- "img_src": null,
- "engine": "google",
- "parsed_url": ["https", "micropython.org", "/", "", "", ""],
- "template": "default.html",
- "engines": ["google"],
- "positions": [1],
- "score": 1.0,
- "category": "general"
- },
- {
- "url": "https://dictionary.cambridge.org/uk/dictionary/english/python",
- "title": "PYTHON | \u0417\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u0432 \u0430\u043d\u0433\u043b\u0456\u0439\u0441\u044c\u043a\u0456\u0439 \u043c\u043e\u0432\u0456 - Cambridge Dictionary",
- "content": "Apr 17, 2024 \u2014 \u0412\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f PYTHON: 1. a very large snake that kills animals for food by wrapping itself around them and crushing them\u2026. \u0414\u0456\u0437\u043d\u0430\u0439\u0442\u0435\u0441\u044f \u0431\u0456\u043b\u044c\u0448\u0435.",
- "img_src": null,
- "engine": "google",
- "parsed_url": [
- "https",
- "dictionary.cambridge.org",
- "/uk/dictionary/english/python",
- "",
- "",
- ""
- ],
- "template": "default.html",
- "engines": ["google"],
- "positions": [2],
- "score": 0.5,
- "category": "general"
- },
- {
- "url": "https://www.codetoday.co.uk/code",
- "title": "Web-based Python Editor (with Turtle graphics)",
- "content": "Quick way of starting to write Python code, including drawing with Turtle, provided by CodeToday using Trinket.io Ideal for young children to start ...",
- "img_src": null,
- "engine": "google",
- "parsed_url": ["https", "www.codetoday.co.uk", "/code", "", "", ""],
- "template": "default.html",
- "engines": ["google"],
- "positions": [3],
- "score": 0.3333333333333333,
- "category": "general"
- },
- {
- "url": "https://snapcraft.io/docs/python-plugin",
- "title": "The python plugin | Snapcraft documentation",
- "content": "The python plugin can be used by either Python 2 or Python 3 based parts using a setup.py script for building the project, or using a package published to ...",
- "img_src": null,
- "engine": "google",
- "parsed_url": ["https", "snapcraft.io", "/docs/python-plugin", "", "", ""],
- "template": "default.html",
- "engines": ["google"],
- "positions": [4],
- "score": 0.25,
- "category": "general"
- },
- {
- "url": "https://www.developer-tech.com/categories/developer-languages/developer-languages-python/",
- "title": "Latest Python Developer News",
- "content": "Python's status as the primary language for AI and machine learning projects, from its extensive data-handling capabilities to its flexibility and ...",
- "img_src": null,
- "engine": "google",
- "parsed_url": [
- "https",
- "www.developer-tech.com",
- "/categories/developer-languages/developer-languages-python/",
- "",
- "",
- ""
- ],
- "template": "default.html",
- "engines": ["google"],
- "positions": [5],
- "score": 0.2,
- "category": "general"
- },
- {
- "url": "https://subjectguides.york.ac.uk/coding/python",
- "title": "Coding: a Practical Guide - Python - Subject Guides",
- "content": "Python is a coding language used for a wide range of things, including working with data, building systems and software, and even creating games.",
- "img_src": null,
- "engine": "google",
- "parsed_url": ["https", "subjectguides.york.ac.uk", "/coding/python", "", "", ""],
- "template": "default.html",
- "engines": ["google"],
- "positions": [6],
- "score": 0.16666666666666666,
- "category": "general"
- },
- {
- "url": "https://hub.salford.ac.uk/psytech/python/getting-started-python/",
- "title": "Getting Started - Python - Salford PsyTech Home - The Hub",
- "content": "Python in itself is a very friendly programming language, when we get to grips with writing code, once you grasp the logic, it will become very intuitive.",
- "img_src": null,
- "engine": "google",
- "parsed_url": [
- "https",
- "hub.salford.ac.uk",
- "/psytech/python/getting-started-python/",
- "",
- "",
- ""
- ],
- "template": "default.html",
- "engines": ["google"],
- "positions": [7],
- "score": 0.14285714285714285,
- "category": "general"
- },
- {
- "url": "https://snapcraft.io/docs/python-apps",
- "title": "Python apps | Snapcraft documentation",
- "content": "Snapcraft can be used to package and distribute Python applications in a way that enables convenient installation by users. The process of creating a snap ...",
- "img_src": null,
- "engine": "google",
- "parsed_url": ["https", "snapcraft.io", "/docs/python-apps", "", "", ""],
- "template": "default.html",
- "engines": ["google"],
- "positions": [8],
- "score": 0.125,
- "category": "general"
- },
- {
- "url": "https://anvil.works/",
- "title": "Anvil | Build Web Apps with Nothing but Python",
- "content": "Anvil is a free Python-based drag-and-drop web app builder.\u200eSign Up \u00b7 \u200eSign in \u00b7 \u200ePricing \u00b7 \u200eForum",
- "img_src": null,
- "engine": "google",
- "parsed_url": ["https", "anvil.works", "/", "", "", ""],
- "template": "default.html",
- "engines": ["google"],
- "positions": [9],
- "score": 0.1111111111111111,
- "category": "general"
- },
- {
- "url": "https://docs.python.org/",
- "title": "Python 3.12.3 documentation",
- "content": "3 days ago \u00b7 This is the official documentation for Python 3.12.3. Documentation sections: What's new in Python 3.12? Or all \"What's new\" documents since Python 2.0. Tutorial. Start here: a tour of Python's syntax and features. Library reference. Standard library and builtins. Language reference.",
- "engine": "bing",
- "parsed_url": ["https", "docs.python.org", "/", "", "", ""],
- "template": "default.html",
- "engines": ["bing", "duckduckgo"],
- "positions": [7, 13],
- "score": 0.43956043956043955,
- "category": "general"
- },
- {
- "title": "How to Use Python: Your First Steps - Real Python",
- "content": "Learn the basics of Python syntax, installation, error handling, and more in this tutorial. You'll also code your first Python program and test your knowledge with a quiz.",
- "url": "https://realpython.com/python-first-steps/",
- "engine": "duckduckgo",
- "parsed_url": ["https", "realpython.com", "/python-first-steps/", "", "", ""],
- "template": "default.html",
- "engines": ["qwant", "duckduckgo"],
- "positions": [14, 7],
- "score": 0.42857142857142855,
- "category": "general"
- },
- {
- "title": "The Python Tutorial \u2014 Python 3.11.8 documentation",
- "content": "This tutorial introduces the reader informally to the basic concepts and features of the Python language and system. It helps to have a Python interpreter handy for hands-on experience, but all examples are self-contained, so the tutorial can be read off-line as well. For a description of standard objects and modules, see The Python Standard ...",
- "url": "https://docs.python.org/3.11/tutorial/",
- "engine": "duckduckgo",
- "parsed_url": ["https", "docs.python.org", "/3.11/tutorial/", "", "", ""],
- "template": "default.html",
- "engines": ["duckduckgo"],
- "positions": [7],
- "score": 0.14285714285714285,
- "category": "general"
- },
- {
- "url": "https://realpython.com/python-introduction/",
- "title": "Introduction to Python 3 \u2013 Real Python",
- "content": "Python programming language, including a brief history of the development of Python and reasons why you might select Python as your language of choice.",
- "engine": "bing",
- "parsed_url": ["https", "realpython.com", "/python-introduction/", "", "", ""],
- "template": "default.html",
- "engines": ["bing"],
- "positions": [8],
- "score": 0.125,
- "category": "general"
- },
- {
- "title": "Our Documentation | Python.org",
- "content": "Find online or download Python's documentation, tutorials, and guides for beginners and advanced users. Learn how to port from Python 2 to Python 3, contribute to Python, and access Python videos and books.",
- "url": "https://www.python.org/doc/",
- "engine": "duckduckgo",
- "parsed_url": ["https", "www.python.org", "/doc/", "", "", ""],
- "template": "default.html",
- "engines": ["duckduckgo"],
- "positions": [9],
- "score": 0.1111111111111111,
- "category": "general"
- },
- {
- "title": "Welcome to Python.org",
- "url": "http://www.get-python.org/shell/",
- "content": "The mission of the Python Software Foundation is to promote, protect, and advance the Python programming language, and to support and facilitate the growth of a diverse and international community of Python programmers. Learn more. Become a Member Donate to the PSF.",
- "engine": "qwant",
- "parsed_url": ["http", "www.get-python.org", "/shell/", "", "", ""],
- "template": "default.html",
- "engines": ["qwant"],
- "positions": [9],
- "score": 0.1111111111111111,
- "category": "general"
- },
- {
- "title": "About Python\u2122 | Python.org",
- "content": "Python is a powerful, fast, and versatile programming language that runs on various platforms and is easy to learn. Learn how to get started, explore the applications, and join the community of Python programmers and users.",
- "url": "https://www.python.org/about/",
- "engine": "duckduckgo",
- "parsed_url": ["https", "www.python.org", "/about/", "", "", ""],
- "template": "default.html",
- "engines": ["duckduckgo"],
- "positions": [11],
- "score": 0.09090909090909091,
- "category": "general"
- },
- {
- "title": "Online Python Compiler (Interpreter) - Programiz",
- "content": "Write and run Python code using this online tool. You can use Python Shell like IDLE, and take inputs from the user in our Python compiler.",
- "url": "https://www.programiz.com/python-programming/online-compiler/",
- "engine": "duckduckgo",
- "parsed_url": [
- "https",
- "www.programiz.com",
- "/python-programming/online-compiler/",
- "",
- "",
- ""
- ],
- "template": "default.html",
- "engines": ["duckduckgo"],
- "positions": [12],
- "score": 0.08333333333333333,
- "category": "general"
- },
- {
- "title": "Welcome to Python.org",
- "content": "Python is a versatile and powerful language that lets you work quickly and integrate systems more effectively. Download the latest version, read the documentation, find jobs, events, success stories, and more on Python.org.",
- "url": "https://www.python.org/?downloads",
- "engine": "duckduckgo",
- "parsed_url": ["https", "www.python.org", "/", "", "downloads", ""],
- "template": "default.html",
- "engines": ["duckduckgo"],
- "positions": [15],
- "score": 0.06666666666666667,
- "category": "general"
- },
- {
- "url": "https://www.matillion.com/blog/the-importance-of-python-and-its-growing-influence-on-data-productivty-a-matillion-perspective",
- "title": "The Importance of Python and its Growing Influence on ...",
- "content": "Jan 30, 2024 \u2014 The synergy of low-code functionality with Python's versatility empowers data professionals to orchestrate complex transformations seamlessly.",
- "img_src": null,
- "engine": "google",
- "parsed_url": [
- "https",
- "www.matillion.com",
- "/blog/the-importance-of-python-and-its-growing-influence-on-data-productivty-a-matillion-perspective",
- "",
- "",
- ""
- ],
- "template": "default.html",
- "engines": ["google"],
- "positions": [10],
- "score": 0.1,
- "category": "general"
- },
- {
- "title": "BeginnersGuide - Python Wiki",
- "content": "This is the program that reads Python programs and carries out their instructions; you need it before you can do any Python programming. Mac and Linux distributions may include an outdated version of Python (Python 2), but you should install an updated one (Python 3). See BeginnersGuide/Download for instructions to download the correct version ...",
- "url": "https://wiki.python.org/moin/BeginnersGuide",
- "engine": "duckduckgo",
- "parsed_url": ["https", "wiki.python.org", "/moin/BeginnersGuide", "", "", ""],
- "template": "default.html",
- "engines": ["duckduckgo"],
- "positions": [16],
- "score": 0.0625,
- "category": "general"
- },
- {
- "title": "Learn Python - Free Interactive Python Tutorial",
- "content": "Learn Python from scratch or improve your skills with this website that offers tutorials, exercises, tests and certification. Explore topics such as basics, data science, advanced features and more with DataCamp.",
- "url": "https://www.learnpython.org/",
- "engine": "duckduckgo",
- "parsed_url": ["https", "www.learnpython.org", "/", "", "", ""],
- "template": "default.html",
- "engines": ["duckduckgo"],
- "positions": [17],
- "score": 0.058823529411764705,
- "category": "general"
- }
- ],
- "answers": [],
- "corrections": [],
- "infoboxes": [
- {
- "infobox": "Python",
- "id": "https://en.wikipedia.org/wiki/Python_(programming_language)",
- "content": "general-purpose programming language",
- "img_src": "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/.PY_file_recreation.png/500px-.PY_file_recreation.png",
- "urls": [
- {
- "title": "Official website",
- "url": "https://www.python.org/",
- "official": true
- },
- {
- "title": "Wikipedia (en)",
- "url": "https://en.wikipedia.org/wiki/Python_(programming_language)"
- },
- {
- "title": "Wikidata",
- "url": "http://www.wikidata.org/entity/Q28865"
- }
- ],
- "attributes": [
- {
- "label": "Inception",
- "value": "Wednesday, February 20, 1991",
- "entity": "P571"
- },
- {
- "label": "Developer",
- "value": "Python Software Foundation, Guido van Rossum",
- "entity": "P178"
- },
- {
- "label": "Copyright license",
- "value": "Python Software Foundation License",
- "entity": "P275"
- },
- {
- "label": "Programmed in",
- "value": "C, Python",
- "entity": "P277"
- },
- {
- "label": "Software version identifier",
- "value": "3.12.3, 3.13.0a6",
- "entity": "P348"
- }
- ],
- "engine": "wikidata",
- "engines": ["wikidata"]
- }
- ],
- "suggestions": [
- "python turtle",
- "micro python tutorial",
- "python docs",
- "python compiler",
- "snapcraft python",
- "micropython vs python",
- "python online",
- "python download"
- ],
- "unresponsive_engines": []
-}
diff --git a/backend/open_webui/retrieval/web/testdata/serper.json b/backend/open_webui/retrieval/web/testdata/serper.json
deleted file mode 100644
index b269eaf5b3..0000000000
--- a/backend/open_webui/retrieval/web/testdata/serper.json
+++ /dev/null
@@ -1,190 +0,0 @@
-{
- "searchParameters": {
- "q": "apple inc",
- "gl": "us",
- "hl": "en",
- "autocorrect": true,
- "page": 1,
- "type": "search"
- },
- "knowledgeGraph": {
- "title": "Apple",
- "type": "Technology company",
- "website": "http://www.apple.com/",
- "imageUrl": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQwGQRv5TjjkycpctY66mOg_e2-npacrmjAb6_jAWhzlzkFE3OTjxyzbA&s=0",
- "description": "Apple Inc. is an American multinational technology company specializing in consumer electronics, software and online services headquartered in Cupertino, California, United States.",
- "descriptionSource": "Wikipedia",
- "descriptionLink": "https://en.wikipedia.org/wiki/Apple_Inc.",
- "attributes": {
- "Headquarters": "Cupertino, CA",
- "CEO": "Tim Cook (Aug 24, 2011–)",
- "Founded": "April 1, 1976, Los Altos, CA",
- "Sales": "1 (800) 692-7753",
- "Products": "iPhone, Apple Watch, iPad, and more",
- "Founders": "Steve Jobs, Steve Wozniak, and Ronald Wayne",
- "Subsidiaries": "Apple Store, Beats Electronics, Beddit, and more"
- }
- },
- "organic": [
- {
- "title": "Apple",
- "link": "https://www.apple.com/",
- "snippet": "Discover the innovative world of Apple and shop everything iPhone, iPad, Apple Watch, Mac, and Apple TV, plus explore accessories, entertainment, ...",
- "sitelinks": [
- {
- "title": "Support",
- "link": "https://support.apple.com/"
- },
- {
- "title": "iPhone",
- "link": "https://www.apple.com/iphone/"
- },
- {
- "title": "Apple makes business better.",
- "link": "https://www.apple.com/business/"
- },
- {
- "title": "Mac",
- "link": "https://www.apple.com/mac/"
- }
- ],
- "position": 1
- },
- {
- "title": "Apple Inc. - Wikipedia",
- "link": "https://en.wikipedia.org/wiki/Apple_Inc.",
- "snippet": "Apple Inc. is an American multinational technology company specializing in consumer electronics, software and online services headquartered in Cupertino, ...",
- "attributes": {
- "Products": "AirPods; Apple Watch; iPad; iPhone; Mac",
- "Founders": "Steve Jobs; Steve Wozniak; Ronald Wayne",
- "Founded": "April 1, 1976; 46 years ago in Los Altos, California, U.S",
- "Industry": "Consumer electronics; Software services; Online services"
- },
- "sitelinks": [
- {
- "title": "History",
- "link": "https://en.wikipedia.org/wiki/History_of_Apple_Inc."
- },
- {
- "title": "Timeline of Apple Inc. products",
- "link": "https://en.wikipedia.org/wiki/Timeline_of_Apple_Inc._products"
- },
- {
- "title": "List of software by Apple Inc.",
- "link": "https://en.wikipedia.org/wiki/List_of_software_by_Apple_Inc."
- },
- {
- "title": "Apple Store",
- "link": "https://en.wikipedia.org/wiki/Apple_Store"
- }
- ],
- "position": 2
- },
- {
- "title": "Apple Inc. | History, Products, Headquarters, & Facts | Britannica",
- "link": "https://www.britannica.com/topic/Apple-Inc",
- "snippet": "Apple Inc., formerly Apple Computer, Inc., American manufacturer of personal computers, smartphones, tablet computers, computer peripherals, ...",
- "date": "Aug 31, 2022",
- "attributes": {
- "Related People": "Steve Jobs Steve Wozniak Jony Ive Tim Cook Angela Ahrendts",
- "Date": "1976 - present",
- "Areas Of Involvement": "peripheral device"
- },
- "position": 3
- },
- {
- "title": "AAPL: Apple Inc Stock Price Quote - NASDAQ GS - Bloomberg.com",
- "link": "https://www.bloomberg.com/quote/AAPL:US",
- "snippet": "Stock analysis for Apple Inc (AAPL:NASDAQ GS) including stock price, stock chart, company news, key statistics, fundamentals and company profile.",
- "position": 4
- },
- {
- "title": "Apple Inc. (AAPL) Company Profile & Facts - Yahoo Finance",
- "link": "https://finance.yahoo.com/quote/AAPL/profile/",
- "snippet": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide. It also sells various related ...",
- "position": 5
- },
- {
- "title": "AAPL | Apple Inc. Stock Price & News - WSJ",
- "link": "https://www.wsj.com/market-data/quotes/AAPL",
- "snippet": "Apple, Inc. engages in the design, manufacture, and sale of smartphones, personal computers, tablets, wearables and accessories, and other varieties of ...",
- "position": 6
- },
- {
- "title": "Apple Inc Company Profile - Apple Inc Overview - GlobalData",
- "link": "https://www.globaldata.com/company-profile/apple-inc/",
- "snippet": "Apple Inc (Apple) designs, manufactures, and markets smartphones, tablets, personal computers (PCs), portable and wearable devices. The company also offers ...",
- "position": 7
- },
- {
- "title": "Apple Inc (AAPL) Stock Price & News - Google Finance",
- "link": "https://www.google.com/finance/quote/AAPL:NASDAQ?hl=en",
- "snippet": "Get the latest Apple Inc (AAPL) real-time quote, historical performance, charts, and other financial information to help you make more informed trading and ...",
- "position": 8
- }
- ],
- "peopleAlsoAsk": [
- {
- "question": "What does Apple Inc mean?",
- "snippet": "Apple Inc., formerly Apple Computer, Inc., American manufacturer of personal\ncomputers, smartphones, tablet computers, computer peripherals, and computer\nsoftware. It was the first successful personal computer company and the\npopularizer of the graphical user interface.\nAug 31, 2022",
- "title": "Apple Inc. | History, Products, Headquarters, & Facts | Britannica",
- "link": "https://www.britannica.com/topic/Apple-Inc"
- },
- {
- "question": "Is Apple and Apple Inc same?",
- "snippet": "Apple was founded as Apple Computer Company on April 1, 1976, by Steve Jobs,\nSteve Wozniak and Ronald Wayne to develop and sell Wozniak's Apple I personal\ncomputer. It was incorporated by Jobs and Wozniak as Apple Computer, Inc.",
- "title": "Apple Inc. - Wikipedia",
- "link": "https://en.wikipedia.org/wiki/Apple_Inc."
- },
- {
- "question": "Who owns Apple Inc?",
- "snippet": "Apple Inc. is owned by two main institutional investors (Vanguard Group and\nBlackRock, Inc). While its major individual shareholders comprise people like\nArt Levinson, Tim Cook, Bruce Sewell, Al Gore, Johny Sroujli, and others.",
- "title": "Who Owns Apple In 2022? - FourWeekMBA",
- "link": "https://fourweekmba.com/who-owns-apple/"
- },
- {
- "question": "What products does Apple Inc offer?",
- "snippet": "APPLE FOOTER\nStore.\nMac.\niPad.\niPhone.\nWatch.\nAirPods.\nTV & Home.\nAirTag.",
- "title": "More items...",
- "link": "https://www.apple.com/business/"
- }
- ],
- "relatedSearches": [
- {
- "query": "Who invented the iPhone"
- },
- {
- "query": "Apple Inc competitors"
- },
- {
- "query": "Apple iPad"
- },
- {
- "query": "iPhones"
- },
- {
- "query": "Apple Inc us"
- },
- {
- "query": "Apple company history"
- },
- {
- "query": "Apple Store"
- },
- {
- "query": "Apple customer service"
- },
- {
- "query": "Apple Watch"
- },
- {
- "query": "Apple Inc Industry"
- },
- {
- "query": "Apple Inc registered address"
- },
- {
- "query": "Apple Inc Bloomberg"
- }
- ]
-}
diff --git a/backend/open_webui/retrieval/web/testdata/serply.json b/backend/open_webui/retrieval/web/testdata/serply.json
deleted file mode 100644
index 0fc2a31e4d..0000000000
--- a/backend/open_webui/retrieval/web/testdata/serply.json
+++ /dev/null
@@ -1,206 +0,0 @@
-{
- "ads": [],
- "ads_count": 0,
- "answers": [],
- "results": [
- {
- "title": "Apple",
- "link": "https://www.apple.com/",
- "description": "Discover the innovative world of Apple and shop everything iPhone, iPad, Apple Watch, Mac, and Apple TV, plus explore accessories, entertainment, ...",
- "additional_links": [
- {
- "text": "AppleApplehttps://www.apple.com",
- "href": "https://www.apple.com/"
- }
- ],
- "cite": {},
- "subdomains": [
- {
- "title": "Support",
- "link": "https://support.apple.com/",
- "description": "SupportContact - iPhone Support - Billing and Subscriptions - Apple Repair"
- },
- {
- "title": "Store",
- "link": "https://www.apple.com/store",
- "description": "StoreShop iPhone - Shop iPad - App Store - Shop Mac - ..."
- },
- {
- "title": "Mac",
- "link": "https://www.apple.com/mac/",
- "description": "MacMacBook Air - MacBook Pro - iMac - Compare Mac models - Mac mini"
- },
- {
- "title": "iPad",
- "link": "https://www.apple.com/ipad/",
- "description": "iPadShop iPad - iPad Pro - iPad Air - Compare iPad models - ..."
- },
- {
- "title": "Watch",
- "link": "https://www.apple.com/watch/",
- "description": "WatchShop Apple Watch - Series 9 - SE - Ultra 2 - Nike - Hermès - ..."
- }
- ],
- "realPosition": 1
- },
- {
- "title": "Apple",
- "link": "https://www.apple.com/",
- "description": "Discover the innovative world of Apple and shop everything iPhone, iPad, Apple Watch, Mac, and Apple TV, plus explore accessories, entertainment, ...",
- "additional_links": [
- {
- "text": "AppleApplehttps://www.apple.com",
- "href": "https://www.apple.com/"
- }
- ],
- "cite": {},
- "realPosition": 2
- },
- {
- "title": "Apple Inc.",
- "link": "https://en.wikipedia.org/wiki/Apple_Inc.",
- "description": "Apple Inc. (formerly Apple Computer, Inc.) is an American multinational corporation and technology company headquartered in Cupertino, California, ...",
- "additional_links": [
- {
- "text": "Apple Inc.Wikipediahttps://en.wikipedia.org › wiki › Apple_Inc",
- "href": "https://en.wikipedia.org/wiki/Apple_Inc."
- },
- {
- "text": "",
- "href": "https://en.wikipedia.org/wiki/Apple_Inc."
- },
- {
- "text": "History",
- "href": "https://en.wikipedia.org/wiki/History_of_Apple_Inc."
- },
- {
- "text": "List of Apple products",
- "href": "https://en.wikipedia.org/wiki/List_of_Apple_products"
- },
- {
- "text": "Litigation involving Apple Inc.",
- "href": "https://en.wikipedia.org/wiki/Litigation_involving_Apple_Inc."
- },
- {
- "text": "Apple Park",
- "href": "https://en.wikipedia.org/wiki/Apple_Park"
- }
- ],
- "cite": {
- "domain": "https://en.wikipedia.org › wiki › Apple_Inc",
- "span": " › wiki › Apple_Inc"
- },
- "realPosition": 3
- },
- {
- "title": "Apple Inc. (AAPL) Company Profile & Facts",
- "link": "https://finance.yahoo.com/quote/AAPL/profile/",
- "description": "Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide. The company offers iPhone, a line ...",
- "additional_links": [
- {
- "text": "Apple Inc. (AAPL) Company Profile & FactsYahoo Financehttps://finance.yahoo.com › quote › AAPL › profile",
- "href": "https://finance.yahoo.com/quote/AAPL/profile/"
- }
- ],
- "cite": {
- "domain": "https://finance.yahoo.com › quote › AAPL › profile",
- "span": " › quote › AAPL › profile"
- },
- "realPosition": 4
- },
- {
- "title": "Apple Inc - Company Profile and News",
- "link": "https://www.bloomberg.com/profile/company/AAPL:US",
- "description": "Apple Inc. Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables and accessories, and sells a variety of related ...",
- "additional_links": [
- {
- "text": "Apple Inc - Company Profile and NewsBloomberghttps://www.bloomberg.com › company › AAPL:US",
- "href": "https://www.bloomberg.com/profile/company/AAPL:US"
- },
- {
- "text": "",
- "href": "https://www.bloomberg.com/profile/company/AAPL:US"
- }
- ],
- "cite": {
- "domain": "https://www.bloomberg.com › company › AAPL:US",
- "span": " › company › AAPL:US"
- },
- "realPosition": 5
- },
- {
- "title": "Apple Inc. | History, Products, Headquarters, & Facts",
- "link": "https://www.britannica.com/money/Apple-Inc",
- "description": "May 22, 2024 — Apple Inc. is an American multinational technology company that revolutionized the technology sector through its innovation of computer ...",
- "additional_links": [
- {
- "text": "Apple Inc. | History, Products, Headquarters, & FactsBritannicahttps://www.britannica.com › money › Apple-Inc",
- "href": "https://www.britannica.com/money/Apple-Inc"
- },
- {
- "text": "",
- "href": "https://www.britannica.com/money/Apple-Inc"
- }
- ],
- "cite": {
- "domain": "https://www.britannica.com › money › Apple-Inc",
- "span": " › money › Apple-Inc"
- },
- "realPosition": 6
- }
- ],
- "shopping_ads": [],
- "places": [
- {
- "title": "Apple Inc."
- },
- {
- "title": "Apple Inc"
- },
- {
- "title": "Apple Inc"
- }
- ],
- "related_searches": {
- "images": [],
- "text": [
- {
- "title": "apple inc full form",
- "link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+Inc+full+form&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhPEAE"
- },
- {
- "title": "apple company history",
- "link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+company+history&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhOEAE"
- },
- {
- "title": "apple store",
- "link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+Store&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhQEAE"
- },
- {
- "title": "apple id",
- "link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+id&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhSEAE"
- },
- {
- "title": "apple inc industry",
- "link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+Inc+industry&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhREAE"
- },
- {
- "title": "apple login",
- "link": "https://www.google.com/search?sca_esv=6b6df170a5c9891b&sca_upv=1&q=Apple+login&sa=X&ved=2ahUKEwjLxuSJwM-GAxUHODQIHYuJBhgQ1QJ6BAhTEAE"
- }
- ]
- },
- "image_results": [],
- "carousel": [],
- "total": 2450000000,
- "knowledge_graph": "",
- "related_questions": [
- "What does the Apple Inc do?",
- "Why did Apple change to Apple Inc?",
- "Who owns Apple Inc.?",
- "What is Apple Inc best known for?"
- ],
- "carousel_count": 0,
- "ts": 2.491065263748169,
- "device_type": null
-}
diff --git a/backend/open_webui/retrieval/web/testdata/serpstack.json b/backend/open_webui/retrieval/web/testdata/serpstack.json
deleted file mode 100644
index a82f689d8b..0000000000
--- a/backend/open_webui/retrieval/web/testdata/serpstack.json
+++ /dev/null
@@ -1,276 +0,0 @@
-{
- "request": {
- "success": true,
- "total_time_taken": 3.4,
- "processed_timestamp": 1714968442,
- "search_url": "http://www.google.com/search?q=mcdonalds\u0026gl=us\u0026hl=en\u0026safe=0\u0026num=10"
- },
- "search_parameters": {
- "engine": "google",
- "type": "web",
- "device": "desktop",
- "auto_location": "1",
- "google_domain": "google.com",
- "gl": "us",
- "hl": "en",
- "safe": "0",
- "news_type": "all",
- "exclude_autocorrected_results": "0",
- "images_color": "any",
- "page": "1",
- "num": "10",
- "output": "json",
- "csv_fields": "search_parameters.query,organic_results.position,organic_results.title,organic_results.url,organic_results.domain",
- "query": "mcdonalds",
- "action": "search",
- "access_key": "aac48e007e15c532bb94ffb34532a4b2",
- "error": {}
- },
- "search_information": {
- "total_results": 1170000000,
- "time_taken_displayed": 0.49,
- "detected_location": {},
- "did_you_mean": {},
- "no_results_for_original_query": false,
- "showing_results_for": {}
- },
- "organic_results": [
- {
- "position": 1,
- "title": "Our Full McDonald\u0027s Food Menu",
- "snippet": "",
- "prerender": false,
- "cached_page_url": {},
- "related_pages_url": {},
- "url": "https://www.mcdonalds.com/us/en-us/full-menu.html",
- "domain": "www.mcdonalds.com",
- "displayed_url": "https://www.mcdonalds.com \u203a en-us \u203a full-menu"
- },
- {
- "position": 2,
- "title": "McDonald\u0027s",
- "snippet": "McDonald\u0027s is the world\u0027s largest fast food restaurant chain, serving over 69 million customers daily in over 100 countries in more than 40,000 outlets as of\u00a0...",
- "prerender": false,
- "cached_page_url": {},
- "related_pages_url": {},
- "url": "https://en.wikipedia.org/wiki/McDonald%27s",
- "domain": "en.wikipedia.org",
- "displayed_url": "https://en.wikipedia.org \u203a wiki \u203a McDonald\u0027s"
- },
- {
- "position": 3,
- "title": "Restaurants Near Me: Nearby McDonald\u0027s Locations",
- "snippet": "",
- "prerender": false,
- "cached_page_url": {},
- "related_pages_url": {},
- "url": "https://www.mcdonalds.com/us/en-us/restaurant-locator.html",
- "domain": "www.mcdonalds.com",
- "displayed_url": "https://www.mcdonalds.com \u203a en-us \u203a restaurant-locator"
- },
- {
- "position": 4,
- "title": "Download the McDonald\u0027s App: Deals, Promotions \u0026 ...",
- "snippet": "Download the McDonald\u0027s app for Mobile Order \u0026 Pay, exclusive deals and coupons, menu information and special promotions.",
- "prerender": false,
- "cached_page_url": {},
- "related_pages_url": {},
- "url": "https://www.mcdonalds.com/us/en-us/download-app.html",
- "domain": "www.mcdonalds.com",
- "displayed_url": "https://www.mcdonalds.com \u203a en-us \u203a download-app"
- },
- {
- "position": 5,
- "title": "McDonald\u0027s Restaurant Careers in the US",
- "snippet": "McDonald\u0027s restaurant jobs are one-of-a-kind \u2013 just like you. Restaurants are hiring across all levels, from Crew team to Management. Apply today!",
- "prerender": false,
- "cached_page_url": {},
- "related_pages_url": {},
- "url": "https://jobs.mchire.com/",
- "domain": "jobs.mchire.com",
- "displayed_url": "https://jobs.mchire.com"
- }
- ],
- "inline_images": [
- {
- "image_url": "https://serpstack-assets.apilayer.net/2418910010831954152.png",
- "title": ""
- }
- ],
- "local_results": [
- {
- "position": 1,
- "title": "McDonald\u0027s",
- "coordinates": {
- "latitude": 0,
- "longitude": 0
- },
- "address": "",
- "rating": 0,
- "reviews": 0,
- "type": "",
- "price": {},
- "url": 0
- },
- {
- "position": 2,
- "title": "McDonald\u0027s",
- "coordinates": {
- "latitude": 0,
- "longitude": 0
- },
- "address": "",
- "rating": 0,
- "reviews": 0,
- "type": "",
- "price": {},
- "url": 0
- },
- {
- "position": 3,
- "title": "McDonald\u0027s",
- "coordinates": {
- "latitude": 0,
- "longitude": 0
- },
- "address": "",
- "rating": 0,
- "reviews": 0,
- "type": "",
- "price": {},
- "url": 0
- }
- ],
- "top_stories": [
- {
- "block_position": 1,
- "title": "Menu nutrition",
- "url": "/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026q=mcdonald%27s+double+quarter+pounder+with+cheese\u0026stick=H4sIAAAAAAAAAONgFuLUz9U3ME-vLDBX4tVP1zc0TCsuNE0ytjTTUs5OttJPy89P0c9NzSuNLyjKL8tMSS2yAvNS80qKMlOLF7Hq5ian5Ocl5qSoFyuk5Jcm5aQqFJYmFpWkFikU5JfmATUolGeWZCgkZ6SmFqcCAM4ilJtxAAAA\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4Qri56BAh0EAM",
- "source": "",
- "uploaded": "",
- "uploaded_utc": "2024-05-06T04:07:22.082Z"
- },
- {
- "block_position": 2,
- "title": "Profiles",
- "url": "https://www.instagram.com/McDonalds",
- "source": "",
- "uploaded": "",
- "uploaded_utc": "2024-05-06T04:07:22.082Z"
- },
- {
- "block_position": 3,
- "title": "People also search for",
- "url": "/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026si=ACC90nzx_D3_zUKRnpAjmO0UBLNxnt7EyN4YYdru6U3bxLI-L5Wg8IL2sxPFxxcDEhVbocy-LJPZIvZySijw0ho2hfZ-KtV-sSEEJ9lw7JuEkXHDnRK5y4Dm8aqbiLwugbLbslwjG3hO_gpDTFZK2VoUGZPy2nrmOBCy0G3PoOfoiEtct2GSZlUz0uufG-xP8emtNzQKQpvjkAm5Zmi57iVZueiD62upz7-x2N3dAbwtm6FkInAPRw1yR91zuT7F3lEaPblTW3LaRwCDC0bvaRCh9x4N9zHgY1OOQa_rzts2jf5WpXcuw4Y%3D\u0026q=Burger+King\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4Qs9oBKAB6BAhzEAI",
- "source": "",
- "uploaded": "",
- "uploaded_utc": "2024-05-06T04:07:22.082Z"
- }
- ],
- "related_questions": [
- {
- "question": "What\u0027s a number 7 at McDonald\u0027s?What\u0027s a number 7 at McDonald\u0027s?What\u0027s a number 7 at McDonald\u0027s?",
- "answer": "",
- "title": "",
- "displayed_url": ""
- },
- {
- "question": "Why is McDonald\u0027s changing their name?Why is McDonald\u0027s changing their name?Why is McDonald\u0027s changing their name?",
- "answer": "",
- "title": "",
- "displayed_url": ""
- },
- {
- "question": "What is the oldest still running Mcdonalds?What is the oldest still running Mcdonalds?What is the oldest still running Mcdonalds?",
- "answer": "",
- "title": "",
- "displayed_url": ""
- },
- {
- "question": "Why is McDonald\u0027s now WcDonald\u0027s?Why is McDonald\u0027s now WcDonald\u0027s?Why is McDonald\u0027s now WcDonald\u0027s?",
- "answer": "",
- "title": "",
- "displayed_url": ""
- }
- ],
- "knowledge_graph": {
- "title": "",
- "type": "Fast-food restaurant company",
- "image_urls": ["https://serpstack-assets.apilayer.net/2418910010831954152.png"],
- "description": "McDonald\u0027s Corporation is an American multinational fast food chain, founded in 1940 as a restaurant operated by Richard and Maurice McDonald, in San Bernardino, California, United States.",
- "source": {
- "name": "Wikipedia",
- "url": "https://en.wikipedia.org/wiki/McDonald\u0027s"
- },
- "people_also_search_for": [],
- "known_attributes": [
- {
- "attribute": "kc:/business/business_operation:founder",
- "link": "http://www.google.com/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026q=Ray+Kroc\u0026si=ACC90nzx_D3_zUKRnpAjmO0UBLNxnt7EyN4YYdru6U3bxLI-LxARWRdbk5SkoY2sDn5Qq7yOmqYGei6qZ7sfJhsjZXBPgjMlLbS7824rpJOm69GzqVWMdoNIZiFX2T4A2td14sZOn4a1BexZLtZXHU7NZdF6VsWbGMVuiSYtXdev7uaUjEJKumiwlqTAATTebOriYTEBuSzC\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4QmxMoAHoECHgQAg",
- "name": "Founder: ",
- "value": "Ray Kroc"
- },
- {
- "attribute": "kc:/organization/organization:ceo",
- "link": "http://www.google.com/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026q=Chris+Kempczinski\u0026si=ACC90nwLLwns5sISZcdzuISy7t-NHozt8Cbt6G3WNQfC9ekAgKFbjdEFCDgxLbt57EDZGosYDGiZuq1AcBhA6IhTOSZxfVSySuGQ3VDwmmTA7Z93n3K3596jAuZH9VVv5h8PyvKJSuGuSsQWviJTl3eKj2UL1ZIWuDgkjyVMnC47rN7j0G9PlHRCCLdQF7VDQ1gubTiC4onXqLRBTbwAj6a--PD6Jv_NoA%3D%3D\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4QmxMoAHoECHUQAg",
- "name": "CEO: ",
- "value": "Chris Kempczinski (Nov 1, 2019\u2013)"
- },
- {
- "attribute": "kc:/business/employer:revenue",
- "link": "",
- "name": "Revenue: ",
- "value": "25.49\u00a0billion USD (2023)"
- },
- {
- "attribute": "kc:/organization/organization:founded",
- "link": "http://www.google.com/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026q=Des+Plaines\u0026si=ACC90nyvvWro6QmnyY1IfSdgk5wwjB1r8BGd_IWRjXqmKPQqm_yqLtI_DBi5PXGOtg_Z3qrzzEP6mcih1nN7h5A7v6OefnEJiC7a8dBR-v9LxlRubfyR6vlMr3fZ3TmVKWwz9FRpvZb1eYNt-RM7KIDKQlwGEIgINvzhxjUrv6uxSmceduzxd8W7Pkz71XGwxF0F8OlSzHlx\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4QmxMoAHoECG4QAg",
- "name": "Founded: ",
- "value": "April 15, 1955, Des Plaines, IL"
- },
- {
- "attribute": "kc:/organization/organization:headquarters",
- "link": "http://www.google.com/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026q=Chicago\u0026si=ACC90nyvvWro6QmnyY1IfSdgk5wwjB1r8BGd_IWRjXqmKPQqm-46AEJ_kJbUIEvsvEEZqteiYJvXVXs2ScRNDvFFpjfeAaW3dxtpTGCgcsf5RMdi6IdzOdtjJMN3ZaFwqZOmdi7tC6r0Mh1O9bnP3HrVDB9hH02m7aA6f70dCAfTdpOFnGxDU6wVMAI5MxWBE3wTugtUDOK-\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4QmxMoAHoECHYQAg",
- "name": "Headquarters: ",
- "value": "Chicago, IL"
- },
- {
- "attribute": "kc:/organization/organization:president",
- "link": "http://www.google.com/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026q=Chris+Kempczinski\u0026si=ACC90nwLLwns5sISZcdzuISy7t-NHozt8Cbt6G3WNQfC9ekAgKFbjdEFCDgxLbt57EDZGosYDGiZuq1AcBhA6IhTOSZxfVSySuGQ3VDwmmTA7Z93n3K3596jAuZH9VVv5h8PyvKJSuGuSsQWviJTl3eKj2UL1ZIWuDgkjyVMnC47rN7j0G9PlHRCCLdQF7VDQ1gubTiC4onXqLRBTbwAj6a--PD6Jv_NoA%3D%3D\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4QmxMoAHoECHEQAg",
- "name": "President: ",
- "value": "Chris Kempczinski"
- }
- ],
- "website": "https://www.mcdonalds.com/us/en-us.html",
- "profiles": [
- {
- "name": "Instagram",
- "url": "https://www.instagram.com/McDonalds"
- },
- {
- "name": "X (Twitter)",
- "url": "https://twitter.com/McDonalds"
- },
- {
- "name": "Facebook",
- "url": "https://www.facebook.com/McDonaldsUS"
- },
- {
- "name": "YouTube",
- "url": "https://www.youtube.com/user/McDonaldsUS"
- },
- {
- "name": "Pinterest",
- "url": "https://www.pinterest.com/mcdonalds"
- }
- ],
- "founded": "April 15, 1955, Des Plaines, IL",
- "headquarters": "Chicago, IL",
- "founders": [
- {
- "name": "Ray Kroc",
- "link": "http://www.google.com/search?safe=0\u0026sca_esv=c9c7fd42856085e2\u0026sca_upv=1\u0026gl=us\u0026hl=en\u0026q=Ray+Kroc\u0026si=ACC90nzx_D3_zUKRnpAjmO0UBLNxnt7EyN4YYdru6U3bxLI-LxARWRdbk5SkoY2sDn5Qq7yOmqYGei6qZ7sfJhsjZXBPgjMlLbS7824rpJOm69GzqVWMdoNIZiFX2T4A2td14sZOn4a1BexZLtZXHU7NZdF6VsWbGMVuiSYtXdev7uaUjEJKumiwlqTAATTebOriYTEBuSzC\u0026sa=X\u0026ved=2ahUKEwjF55alk_iFAxXlamwGHbqgAs4QmxMoAHoECHgQAg"
- }
- ]
- }
-}
diff --git a/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js b/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js
index 8656897872..5ea59d21ef 100644
--- a/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js
+++ b/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js
@@ -1,72362 +1,2 @@
/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */
-!(function webpackUniversalModuleDefinition(s, o) {
- 'object' == typeof exports && 'object' == typeof module
- ? (module.exports = o())
- : 'function' == typeof define && define.amd
- ? define([], o)
- : 'object' == typeof exports
- ? (exports.SwaggerUIBundle = o())
- : (s.SwaggerUIBundle = o());
-})(this, () =>
- (() => {
- var s,
- o,
- i = {
- 69119: (s, o) => {
- 'use strict';
- (Object.defineProperty(o, '__esModule', { value: !0 }),
- (o.BLANK_URL =
- o.relativeFirstCharacters =
- o.whitespaceEscapeCharsRegex =
- o.urlSchemeRegex =
- o.ctrlCharactersRegex =
- o.htmlCtrlEntityRegex =
- o.htmlEntitiesRegex =
- o.invalidProtocolRegex =
- void 0),
- (o.invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im),
- (o.htmlEntitiesRegex = /(\w+)(^\w|;)?/g),
- (o.htmlCtrlEntityRegex = /&(newline|tab);/gi),
- (o.ctrlCharactersRegex = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim),
- (o.urlSchemeRegex = /^.+(:|:)/gim),
- (o.whitespaceEscapeCharsRegex = /(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g),
- (o.relativeFirstCharacters = ['.', '/']),
- (o.BLANK_URL = 'about:blank'));
- },
- 16750: (s, o, i) => {
- 'use strict';
- o.J = void 0;
- var u = i(69119);
- function decodeURI(s) {
- try {
- return decodeURIComponent(s);
- } catch (o) {
- return s;
- }
- }
- o.J = function sanitizeUrl(s) {
- if (!s) return u.BLANK_URL;
- var o,
- i,
- _ = decodeURI(s);
- do {
- o =
- (_ = decodeURI(
- (_ = ((i = _),
- i
- .replace(u.ctrlCharactersRegex, '')
- .replace(u.htmlEntitiesRegex, function (s, o) {
- return String.fromCharCode(o);
- }))
- .replace(u.htmlCtrlEntityRegex, '')
- .replace(u.ctrlCharactersRegex, '')
- .replace(u.whitespaceEscapeCharsRegex, '')
- .trim())
- )).match(u.ctrlCharactersRegex) ||
- _.match(u.htmlEntitiesRegex) ||
- _.match(u.htmlCtrlEntityRegex) ||
- _.match(u.whitespaceEscapeCharsRegex);
- } while (o && o.length > 0);
- var w = _;
- if (!w) return u.BLANK_URL;
- if (
- (function isRelativeUrlWithoutProtocol(s) {
- return u.relativeFirstCharacters.indexOf(s[0]) > -1;
- })(w)
- )
- return w;
- var x = w.match(u.urlSchemeRegex);
- if (!x) return w;
- var C = x[0];
- return u.invalidProtocolRegex.test(C) ? u.BLANK_URL : w;
- };
- },
- 67526: (s, o) => {
- 'use strict';
- ((o.byteLength = function byteLength(s) {
- var o = getLens(s),
- i = o[0],
- u = o[1];
- return (3 * (i + u)) / 4 - u;
- }),
- (o.toByteArray = function toByteArray(s) {
- var o,
- i,
- w = getLens(s),
- x = w[0],
- C = w[1],
- j = new _(
- (function _byteLength(s, o, i) {
- return (3 * (o + i)) / 4 - i;
- })(0, x, C)
- ),
- L = 0,
- B = C > 0 ? x - 4 : x;
- for (i = 0; i < B; i += 4)
- ((o =
- (u[s.charCodeAt(i)] << 18) |
- (u[s.charCodeAt(i + 1)] << 12) |
- (u[s.charCodeAt(i + 2)] << 6) |
- u[s.charCodeAt(i + 3)]),
- (j[L++] = (o >> 16) & 255),
- (j[L++] = (o >> 8) & 255),
- (j[L++] = 255 & o));
- 2 === C &&
- ((o = (u[s.charCodeAt(i)] << 2) | (u[s.charCodeAt(i + 1)] >> 4)),
- (j[L++] = 255 & o));
- 1 === C &&
- ((o =
- (u[s.charCodeAt(i)] << 10) |
- (u[s.charCodeAt(i + 1)] << 4) |
- (u[s.charCodeAt(i + 2)] >> 2)),
- (j[L++] = (o >> 8) & 255),
- (j[L++] = 255 & o));
- return j;
- }),
- (o.fromByteArray = function fromByteArray(s) {
- for (
- var o, u = s.length, _ = u % 3, w = [], x = 16383, C = 0, j = u - _;
- C < j;
- C += x
- )
- w.push(encodeChunk(s, C, C + x > j ? j : C + x));
- 1 === _
- ? ((o = s[u - 1]), w.push(i[o >> 2] + i[(o << 4) & 63] + '=='))
- : 2 === _ &&
- ((o = (s[u - 2] << 8) + s[u - 1]),
- w.push(i[o >> 10] + i[(o >> 4) & 63] + i[(o << 2) & 63] + '='));
- return w.join('');
- }));
- for (
- var i = [],
- u = [],
- _ = 'undefined' != typeof Uint8Array ? Uint8Array : Array,
- w = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
- x = 0;
- x < 64;
- ++x
- )
- ((i[x] = w[x]), (u[w.charCodeAt(x)] = x));
- function getLens(s) {
- var o = s.length;
- if (o % 4 > 0) throw new Error('Invalid string. Length must be a multiple of 4');
- var i = s.indexOf('=');
- return (-1 === i && (i = o), [i, i === o ? 0 : 4 - (i % 4)]);
- }
- function encodeChunk(s, o, u) {
- for (var _, w, x = [], C = o; C < u; C += 3)
- ((_ = ((s[C] << 16) & 16711680) + ((s[C + 1] << 8) & 65280) + (255 & s[C + 2])),
- x.push(i[((w = _) >> 18) & 63] + i[(w >> 12) & 63] + i[(w >> 6) & 63] + i[63 & w]));
- return x.join('');
- }
- ((u['-'.charCodeAt(0)] = 62), (u['_'.charCodeAt(0)] = 63));
- },
- 48287: (s, o, i) => {
- 'use strict';
- const u = i(67526),
- _ = i(251),
- w =
- 'function' == typeof Symbol && 'function' == typeof Symbol.for
- ? Symbol.for('nodejs.util.inspect.custom')
- : null;
- ((o.Buffer = Buffer),
- (o.SlowBuffer = function SlowBuffer(s) {
- +s != s && (s = 0);
- return Buffer.alloc(+s);
- }),
- (o.INSPECT_MAX_BYTES = 50));
- const x = 2147483647;
- function createBuffer(s) {
- if (s > x) throw new RangeError('The value "' + s + '" is invalid for option "size"');
- const o = new Uint8Array(s);
- return (Object.setPrototypeOf(o, Buffer.prototype), o);
- }
- function Buffer(s, o, i) {
- if ('number' == typeof s) {
- if ('string' == typeof o)
- throw new TypeError(
- 'The "string" argument must be of type string. Received type number'
- );
- return allocUnsafe(s);
- }
- return from(s, o, i);
- }
- function from(s, o, i) {
- if ('string' == typeof s)
- return (function fromString(s, o) {
- ('string' == typeof o && '' !== o) || (o = 'utf8');
- if (!Buffer.isEncoding(o)) throw new TypeError('Unknown encoding: ' + o);
- const i = 0 | byteLength(s, o);
- let u = createBuffer(i);
- const _ = u.write(s, o);
- _ !== i && (u = u.slice(0, _));
- return u;
- })(s, o);
- if (ArrayBuffer.isView(s))
- return (function fromArrayView(s) {
- if (isInstance(s, Uint8Array)) {
- const o = new Uint8Array(s);
- return fromArrayBuffer(o.buffer, o.byteOffset, o.byteLength);
- }
- return fromArrayLike(s);
- })(s);
- if (null == s)
- throw new TypeError(
- 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' +
- typeof s
- );
- if (isInstance(s, ArrayBuffer) || (s && isInstance(s.buffer, ArrayBuffer)))
- return fromArrayBuffer(s, o, i);
- if (
- 'undefined' != typeof SharedArrayBuffer &&
- (isInstance(s, SharedArrayBuffer) || (s && isInstance(s.buffer, SharedArrayBuffer)))
- )
- return fromArrayBuffer(s, o, i);
- if ('number' == typeof s)
- throw new TypeError(
- 'The "value" argument must not be of type number. Received type number'
- );
- const u = s.valueOf && s.valueOf();
- if (null != u && u !== s) return Buffer.from(u, o, i);
- const _ = (function fromObject(s) {
- if (Buffer.isBuffer(s)) {
- const o = 0 | checked(s.length),
- i = createBuffer(o);
- return (0 === i.length || s.copy(i, 0, 0, o), i);
- }
- if (void 0 !== s.length)
- return 'number' != typeof s.length || numberIsNaN(s.length)
- ? createBuffer(0)
- : fromArrayLike(s);
- if ('Buffer' === s.type && Array.isArray(s.data)) return fromArrayLike(s.data);
- })(s);
- if (_) return _;
- if (
- 'undefined' != typeof Symbol &&
- null != Symbol.toPrimitive &&
- 'function' == typeof s[Symbol.toPrimitive]
- )
- return Buffer.from(s[Symbol.toPrimitive]('string'), o, i);
- throw new TypeError(
- 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' +
- typeof s
- );
- }
- function assertSize(s) {
- if ('number' != typeof s) throw new TypeError('"size" argument must be of type number');
- if (s < 0) throw new RangeError('The value "' + s + '" is invalid for option "size"');
- }
- function allocUnsafe(s) {
- return (assertSize(s), createBuffer(s < 0 ? 0 : 0 | checked(s)));
- }
- function fromArrayLike(s) {
- const o = s.length < 0 ? 0 : 0 | checked(s.length),
- i = createBuffer(o);
- for (let u = 0; u < o; u += 1) i[u] = 255 & s[u];
- return i;
- }
- function fromArrayBuffer(s, o, i) {
- if (o < 0 || s.byteLength < o)
- throw new RangeError('"offset" is outside of buffer bounds');
- if (s.byteLength < o + (i || 0))
- throw new RangeError('"length" is outside of buffer bounds');
- let u;
- return (
- (u =
- void 0 === o && void 0 === i
- ? new Uint8Array(s)
- : void 0 === i
- ? new Uint8Array(s, o)
- : new Uint8Array(s, o, i)),
- Object.setPrototypeOf(u, Buffer.prototype),
- u
- );
- }
- function checked(s) {
- if (s >= x)
- throw new RangeError(
- 'Attempt to allocate Buffer larger than maximum size: 0x' +
- x.toString(16) +
- ' bytes'
- );
- return 0 | s;
- }
- function byteLength(s, o) {
- if (Buffer.isBuffer(s)) return s.length;
- if (ArrayBuffer.isView(s) || isInstance(s, ArrayBuffer)) return s.byteLength;
- if ('string' != typeof s)
- throw new TypeError(
- 'The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' +
- typeof s
- );
- const i = s.length,
- u = arguments.length > 2 && !0 === arguments[2];
- if (!u && 0 === i) return 0;
- let _ = !1;
- for (;;)
- switch (o) {
- case 'ascii':
- case 'latin1':
- case 'binary':
- return i;
- case 'utf8':
- case 'utf-8':
- return utf8ToBytes(s).length;
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return 2 * i;
- case 'hex':
- return i >>> 1;
- case 'base64':
- return base64ToBytes(s).length;
- default:
- if (_) return u ? -1 : utf8ToBytes(s).length;
- ((o = ('' + o).toLowerCase()), (_ = !0));
- }
- }
- function slowToString(s, o, i) {
- let u = !1;
- if (((void 0 === o || o < 0) && (o = 0), o > this.length)) return '';
- if (((void 0 === i || i > this.length) && (i = this.length), i <= 0)) return '';
- if ((i >>>= 0) <= (o >>>= 0)) return '';
- for (s || (s = 'utf8'); ; )
- switch (s) {
- case 'hex':
- return hexSlice(this, o, i);
- case 'utf8':
- case 'utf-8':
- return utf8Slice(this, o, i);
- case 'ascii':
- return asciiSlice(this, o, i);
- case 'latin1':
- case 'binary':
- return latin1Slice(this, o, i);
- case 'base64':
- return base64Slice(this, o, i);
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return utf16leSlice(this, o, i);
- default:
- if (u) throw new TypeError('Unknown encoding: ' + s);
- ((s = (s + '').toLowerCase()), (u = !0));
- }
- }
- function swap(s, o, i) {
- const u = s[o];
- ((s[o] = s[i]), (s[i] = u));
- }
- function bidirectionalIndexOf(s, o, i, u, _) {
- if (0 === s.length) return -1;
- if (
- ('string' == typeof i
- ? ((u = i), (i = 0))
- : i > 2147483647
- ? (i = 2147483647)
- : i < -2147483648 && (i = -2147483648),
- numberIsNaN((i = +i)) && (i = _ ? 0 : s.length - 1),
- i < 0 && (i = s.length + i),
- i >= s.length)
- ) {
- if (_) return -1;
- i = s.length - 1;
- } else if (i < 0) {
- if (!_) return -1;
- i = 0;
- }
- if (('string' == typeof o && (o = Buffer.from(o, u)), Buffer.isBuffer(o)))
- return 0 === o.length ? -1 : arrayIndexOf(s, o, i, u, _);
- if ('number' == typeof o)
- return (
- (o &= 255),
- 'function' == typeof Uint8Array.prototype.indexOf
- ? _
- ? Uint8Array.prototype.indexOf.call(s, o, i)
- : Uint8Array.prototype.lastIndexOf.call(s, o, i)
- : arrayIndexOf(s, [o], i, u, _)
- );
- throw new TypeError('val must be string, number or Buffer');
- }
- function arrayIndexOf(s, o, i, u, _) {
- let w,
- x = 1,
- C = s.length,
- j = o.length;
- if (
- void 0 !== u &&
- ('ucs2' === (u = String(u).toLowerCase()) ||
- 'ucs-2' === u ||
- 'utf16le' === u ||
- 'utf-16le' === u)
- ) {
- if (s.length < 2 || o.length < 2) return -1;
- ((x = 2), (C /= 2), (j /= 2), (i /= 2));
- }
- function read(s, o) {
- return 1 === x ? s[o] : s.readUInt16BE(o * x);
- }
- if (_) {
- let u = -1;
- for (w = i; w < C; w++)
- if (read(s, w) === read(o, -1 === u ? 0 : w - u)) {
- if ((-1 === u && (u = w), w - u + 1 === j)) return u * x;
- } else (-1 !== u && (w -= w - u), (u = -1));
- } else
- for (i + j > C && (i = C - j), w = i; w >= 0; w--) {
- let i = !0;
- for (let u = 0; u < j; u++)
- if (read(s, w + u) !== read(o, u)) {
- i = !1;
- break;
- }
- if (i) return w;
- }
- return -1;
- }
- function hexWrite(s, o, i, u) {
- i = Number(i) || 0;
- const _ = s.length - i;
- u ? (u = Number(u)) > _ && (u = _) : (u = _);
- const w = o.length;
- let x;
- for (u > w / 2 && (u = w / 2), x = 0; x < u; ++x) {
- const u = parseInt(o.substr(2 * x, 2), 16);
- if (numberIsNaN(u)) return x;
- s[i + x] = u;
- }
- return x;
- }
- function utf8Write(s, o, i, u) {
- return blitBuffer(utf8ToBytes(o, s.length - i), s, i, u);
- }
- function asciiWrite(s, o, i, u) {
- return blitBuffer(
- (function asciiToBytes(s) {
- const o = [];
- for (let i = 0; i < s.length; ++i) o.push(255 & s.charCodeAt(i));
- return o;
- })(o),
- s,
- i,
- u
- );
- }
- function base64Write(s, o, i, u) {
- return blitBuffer(base64ToBytes(o), s, i, u);
- }
- function ucs2Write(s, o, i, u) {
- return blitBuffer(
- (function utf16leToBytes(s, o) {
- let i, u, _;
- const w = [];
- for (let x = 0; x < s.length && !((o -= 2) < 0); ++x)
- ((i = s.charCodeAt(x)), (u = i >> 8), (_ = i % 256), w.push(_), w.push(u));
- return w;
- })(o, s.length - i),
- s,
- i,
- u
- );
- }
- function base64Slice(s, o, i) {
- return 0 === o && i === s.length ? u.fromByteArray(s) : u.fromByteArray(s.slice(o, i));
- }
- function utf8Slice(s, o, i) {
- i = Math.min(s.length, i);
- const u = [];
- let _ = o;
- for (; _ < i; ) {
- const o = s[_];
- let w = null,
- x = o > 239 ? 4 : o > 223 ? 3 : o > 191 ? 2 : 1;
- if (_ + x <= i) {
- let i, u, C, j;
- switch (x) {
- case 1:
- o < 128 && (w = o);
- break;
- case 2:
- ((i = s[_ + 1]),
- 128 == (192 & i) && ((j = ((31 & o) << 6) | (63 & i)), j > 127 && (w = j)));
- break;
- case 3:
- ((i = s[_ + 1]),
- (u = s[_ + 2]),
- 128 == (192 & i) &&
- 128 == (192 & u) &&
- ((j = ((15 & o) << 12) | ((63 & i) << 6) | (63 & u)),
- j > 2047 && (j < 55296 || j > 57343) && (w = j)));
- break;
- case 4:
- ((i = s[_ + 1]),
- (u = s[_ + 2]),
- (C = s[_ + 3]),
- 128 == (192 & i) &&
- 128 == (192 & u) &&
- 128 == (192 & C) &&
- ((j = ((15 & o) << 18) | ((63 & i) << 12) | ((63 & u) << 6) | (63 & C)),
- j > 65535 && j < 1114112 && (w = j)));
- }
- }
- (null === w
- ? ((w = 65533), (x = 1))
- : w > 65535 &&
- ((w -= 65536), u.push(((w >>> 10) & 1023) | 55296), (w = 56320 | (1023 & w))),
- u.push(w),
- (_ += x));
- }
- return (function decodeCodePointsArray(s) {
- const o = s.length;
- if (o <= C) return String.fromCharCode.apply(String, s);
- let i = '',
- u = 0;
- for (; u < o; ) i += String.fromCharCode.apply(String, s.slice(u, (u += C)));
- return i;
- })(u);
- }
- ((o.kMaxLength = x),
- (Buffer.TYPED_ARRAY_SUPPORT = (function typedArraySupport() {
- try {
- const s = new Uint8Array(1),
- o = {
- foo: function () {
- return 42;
- }
- };
- return (
- Object.setPrototypeOf(o, Uint8Array.prototype),
- Object.setPrototypeOf(s, o),
- 42 === s.foo()
- );
- } catch (s) {
- return !1;
- }
- })()),
- Buffer.TYPED_ARRAY_SUPPORT ||
- 'undefined' == typeof console ||
- 'function' != typeof console.error ||
- console.error(
- 'This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.'
- ),
- Object.defineProperty(Buffer.prototype, 'parent', {
- enumerable: !0,
- get: function () {
- if (Buffer.isBuffer(this)) return this.buffer;
- }
- }),
- Object.defineProperty(Buffer.prototype, 'offset', {
- enumerable: !0,
- get: function () {
- if (Buffer.isBuffer(this)) return this.byteOffset;
- }
- }),
- (Buffer.poolSize = 8192),
- (Buffer.from = function (s, o, i) {
- return from(s, o, i);
- }),
- Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype),
- Object.setPrototypeOf(Buffer, Uint8Array),
- (Buffer.alloc = function (s, o, i) {
- return (function alloc(s, o, i) {
- return (
- assertSize(s),
- s <= 0
- ? createBuffer(s)
- : void 0 !== o
- ? 'string' == typeof i
- ? createBuffer(s).fill(o, i)
- : createBuffer(s).fill(o)
- : createBuffer(s)
- );
- })(s, o, i);
- }),
- (Buffer.allocUnsafe = function (s) {
- return allocUnsafe(s);
- }),
- (Buffer.allocUnsafeSlow = function (s) {
- return allocUnsafe(s);
- }),
- (Buffer.isBuffer = function isBuffer(s) {
- return null != s && !0 === s._isBuffer && s !== Buffer.prototype;
- }),
- (Buffer.compare = function compare(s, o) {
- if (
- (isInstance(s, Uint8Array) && (s = Buffer.from(s, s.offset, s.byteLength)),
- isInstance(o, Uint8Array) && (o = Buffer.from(o, o.offset, o.byteLength)),
- !Buffer.isBuffer(s) || !Buffer.isBuffer(o))
- )
- throw new TypeError(
- 'The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'
- );
- if (s === o) return 0;
- let i = s.length,
- u = o.length;
- for (let _ = 0, w = Math.min(i, u); _ < w; ++_)
- if (s[_] !== o[_]) {
- ((i = s[_]), (u = o[_]));
- break;
- }
- return i < u ? -1 : u < i ? 1 : 0;
- }),
- (Buffer.isEncoding = function isEncoding(s) {
- switch (String(s).toLowerCase()) {
- case 'hex':
- case 'utf8':
- case 'utf-8':
- case 'ascii':
- case 'latin1':
- case 'binary':
- case 'base64':
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return !0;
- default:
- return !1;
- }
- }),
- (Buffer.concat = function concat(s, o) {
- if (!Array.isArray(s))
- throw new TypeError('"list" argument must be an Array of Buffers');
- if (0 === s.length) return Buffer.alloc(0);
- let i;
- if (void 0 === o) for (o = 0, i = 0; i < s.length; ++i) o += s[i].length;
- const u = Buffer.allocUnsafe(o);
- let _ = 0;
- for (i = 0; i < s.length; ++i) {
- let o = s[i];
- if (isInstance(o, Uint8Array))
- _ + o.length > u.length
- ? (Buffer.isBuffer(o) || (o = Buffer.from(o)), o.copy(u, _))
- : Uint8Array.prototype.set.call(u, o, _);
- else {
- if (!Buffer.isBuffer(o))
- throw new TypeError('"list" argument must be an Array of Buffers');
- o.copy(u, _);
- }
- _ += o.length;
- }
- return u;
- }),
- (Buffer.byteLength = byteLength),
- (Buffer.prototype._isBuffer = !0),
- (Buffer.prototype.swap16 = function swap16() {
- const s = this.length;
- if (s % 2 != 0) throw new RangeError('Buffer size must be a multiple of 16-bits');
- for (let o = 0; o < s; o += 2) swap(this, o, o + 1);
- return this;
- }),
- (Buffer.prototype.swap32 = function swap32() {
- const s = this.length;
- if (s % 4 != 0) throw new RangeError('Buffer size must be a multiple of 32-bits');
- for (let o = 0; o < s; o += 4) (swap(this, o, o + 3), swap(this, o + 1, o + 2));
- return this;
- }),
- (Buffer.prototype.swap64 = function swap64() {
- const s = this.length;
- if (s % 8 != 0) throw new RangeError('Buffer size must be a multiple of 64-bits');
- for (let o = 0; o < s; o += 8)
- (swap(this, o, o + 7),
- swap(this, o + 1, o + 6),
- swap(this, o + 2, o + 5),
- swap(this, o + 3, o + 4));
- return this;
- }),
- (Buffer.prototype.toString = function toString() {
- const s = this.length;
- return 0 === s
- ? ''
- : 0 === arguments.length
- ? utf8Slice(this, 0, s)
- : slowToString.apply(this, arguments);
- }),
- (Buffer.prototype.toLocaleString = Buffer.prototype.toString),
- (Buffer.prototype.equals = function equals(s) {
- if (!Buffer.isBuffer(s)) throw new TypeError('Argument must be a Buffer');
- return this === s || 0 === Buffer.compare(this, s);
- }),
- (Buffer.prototype.inspect = function inspect() {
- let s = '';
- const i = o.INSPECT_MAX_BYTES;
- return (
- (s = this.toString('hex', 0, i)
- .replace(/(.{2})/g, '$1 ')
- .trim()),
- this.length > i && (s += ' ... '),
- ''
- );
- }),
- w && (Buffer.prototype[w] = Buffer.prototype.inspect),
- (Buffer.prototype.compare = function compare(s, o, i, u, _) {
- if (
- (isInstance(s, Uint8Array) && (s = Buffer.from(s, s.offset, s.byteLength)),
- !Buffer.isBuffer(s))
- )
- throw new TypeError(
- 'The "target" argument must be one of type Buffer or Uint8Array. Received type ' +
- typeof s
- );
- if (
- (void 0 === o && (o = 0),
- void 0 === i && (i = s ? s.length : 0),
- void 0 === u && (u = 0),
- void 0 === _ && (_ = this.length),
- o < 0 || i > s.length || u < 0 || _ > this.length)
- )
- throw new RangeError('out of range index');
- if (u >= _ && o >= i) return 0;
- if (u >= _) return -1;
- if (o >= i) return 1;
- if (this === s) return 0;
- let w = (_ >>>= 0) - (u >>>= 0),
- x = (i >>>= 0) - (o >>>= 0);
- const C = Math.min(w, x),
- j = this.slice(u, _),
- L = s.slice(o, i);
- for (let s = 0; s < C; ++s)
- if (j[s] !== L[s]) {
- ((w = j[s]), (x = L[s]));
- break;
- }
- return w < x ? -1 : x < w ? 1 : 0;
- }),
- (Buffer.prototype.includes = function includes(s, o, i) {
- return -1 !== this.indexOf(s, o, i);
- }),
- (Buffer.prototype.indexOf = function indexOf(s, o, i) {
- return bidirectionalIndexOf(this, s, o, i, !0);
- }),
- (Buffer.prototype.lastIndexOf = function lastIndexOf(s, o, i) {
- return bidirectionalIndexOf(this, s, o, i, !1);
- }),
- (Buffer.prototype.write = function write(s, o, i, u) {
- if (void 0 === o) ((u = 'utf8'), (i = this.length), (o = 0));
- else if (void 0 === i && 'string' == typeof o) ((u = o), (i = this.length), (o = 0));
- else {
- if (!isFinite(o))
- throw new Error(
- 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
- );
- ((o >>>= 0),
- isFinite(i)
- ? ((i >>>= 0), void 0 === u && (u = 'utf8'))
- : ((u = i), (i = void 0)));
- }
- const _ = this.length - o;
- if (
- ((void 0 === i || i > _) && (i = _),
- (s.length > 0 && (i < 0 || o < 0)) || o > this.length)
- )
- throw new RangeError('Attempt to write outside buffer bounds');
- u || (u = 'utf8');
- let w = !1;
- for (;;)
- switch (u) {
- case 'hex':
- return hexWrite(this, s, o, i);
- case 'utf8':
- case 'utf-8':
- return utf8Write(this, s, o, i);
- case 'ascii':
- case 'latin1':
- case 'binary':
- return asciiWrite(this, s, o, i);
- case 'base64':
- return base64Write(this, s, o, i);
- case 'ucs2':
- case 'ucs-2':
- case 'utf16le':
- case 'utf-16le':
- return ucs2Write(this, s, o, i);
- default:
- if (w) throw new TypeError('Unknown encoding: ' + u);
- ((u = ('' + u).toLowerCase()), (w = !0));
- }
- }),
- (Buffer.prototype.toJSON = function toJSON() {
- return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) };
- }));
- const C = 4096;
- function asciiSlice(s, o, i) {
- let u = '';
- i = Math.min(s.length, i);
- for (let _ = o; _ < i; ++_) u += String.fromCharCode(127 & s[_]);
- return u;
- }
- function latin1Slice(s, o, i) {
- let u = '';
- i = Math.min(s.length, i);
- for (let _ = o; _ < i; ++_) u += String.fromCharCode(s[_]);
- return u;
- }
- function hexSlice(s, o, i) {
- const u = s.length;
- ((!o || o < 0) && (o = 0), (!i || i < 0 || i > u) && (i = u));
- let _ = '';
- for (let u = o; u < i; ++u) _ += B[s[u]];
- return _;
- }
- function utf16leSlice(s, o, i) {
- const u = s.slice(o, i);
- let _ = '';
- for (let s = 0; s < u.length - 1; s += 2)
- _ += String.fromCharCode(u[s] + 256 * u[s + 1]);
- return _;
- }
- function checkOffset(s, o, i) {
- if (s % 1 != 0 || s < 0) throw new RangeError('offset is not uint');
- if (s + o > i) throw new RangeError('Trying to access beyond buffer length');
- }
- function checkInt(s, o, i, u, _, w) {
- if (!Buffer.isBuffer(s))
- throw new TypeError('"buffer" argument must be a Buffer instance');
- if (o > _ || o < w) throw new RangeError('"value" argument is out of bounds');
- if (i + u > s.length) throw new RangeError('Index out of range');
- }
- function wrtBigUInt64LE(s, o, i, u, _) {
- checkIntBI(o, u, _, s, i, 7);
- let w = Number(o & BigInt(4294967295));
- ((s[i++] = w),
- (w >>= 8),
- (s[i++] = w),
- (w >>= 8),
- (s[i++] = w),
- (w >>= 8),
- (s[i++] = w));
- let x = Number((o >> BigInt(32)) & BigInt(4294967295));
- return (
- (s[i++] = x),
- (x >>= 8),
- (s[i++] = x),
- (x >>= 8),
- (s[i++] = x),
- (x >>= 8),
- (s[i++] = x),
- i
- );
- }
- function wrtBigUInt64BE(s, o, i, u, _) {
- checkIntBI(o, u, _, s, i, 7);
- let w = Number(o & BigInt(4294967295));
- ((s[i + 7] = w),
- (w >>= 8),
- (s[i + 6] = w),
- (w >>= 8),
- (s[i + 5] = w),
- (w >>= 8),
- (s[i + 4] = w));
- let x = Number((o >> BigInt(32)) & BigInt(4294967295));
- return (
- (s[i + 3] = x),
- (x >>= 8),
- (s[i + 2] = x),
- (x >>= 8),
- (s[i + 1] = x),
- (x >>= 8),
- (s[i] = x),
- i + 8
- );
- }
- function checkIEEE754(s, o, i, u, _, w) {
- if (i + u > s.length) throw new RangeError('Index out of range');
- if (i < 0) throw new RangeError('Index out of range');
- }
- function writeFloat(s, o, i, u, w) {
- return (
- (o = +o),
- (i >>>= 0),
- w || checkIEEE754(s, 0, i, 4),
- _.write(s, o, i, u, 23, 4),
- i + 4
- );
- }
- function writeDouble(s, o, i, u, w) {
- return (
- (o = +o),
- (i >>>= 0),
- w || checkIEEE754(s, 0, i, 8),
- _.write(s, o, i, u, 52, 8),
- i + 8
- );
- }
- ((Buffer.prototype.slice = function slice(s, o) {
- const i = this.length;
- ((s = ~~s) < 0 ? (s += i) < 0 && (s = 0) : s > i && (s = i),
- (o = void 0 === o ? i : ~~o) < 0 ? (o += i) < 0 && (o = 0) : o > i && (o = i),
- o < s && (o = s));
- const u = this.subarray(s, o);
- return (Object.setPrototypeOf(u, Buffer.prototype), u);
- }),
- (Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE =
- function readUIntLE(s, o, i) {
- ((s >>>= 0), (o >>>= 0), i || checkOffset(s, o, this.length));
- let u = this[s],
- _ = 1,
- w = 0;
- for (; ++w < o && (_ *= 256); ) u += this[s + w] * _;
- return u;
- }),
- (Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE =
- function readUIntBE(s, o, i) {
- ((s >>>= 0), (o >>>= 0), i || checkOffset(s, o, this.length));
- let u = this[s + --o],
- _ = 1;
- for (; o > 0 && (_ *= 256); ) u += this[s + --o] * _;
- return u;
- }),
- (Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 =
- function readUInt8(s, o) {
- return ((s >>>= 0), o || checkOffset(s, 1, this.length), this[s]);
- }),
- (Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE =
- function readUInt16LE(s, o) {
- return (
- (s >>>= 0),
- o || checkOffset(s, 2, this.length),
- this[s] | (this[s + 1] << 8)
- );
- }),
- (Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE =
- function readUInt16BE(s, o) {
- return (
- (s >>>= 0),
- o || checkOffset(s, 2, this.length),
- (this[s] << 8) | this[s + 1]
- );
- }),
- (Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE =
- function readUInt32LE(s, o) {
- return (
- (s >>>= 0),
- o || checkOffset(s, 4, this.length),
- (this[s] | (this[s + 1] << 8) | (this[s + 2] << 16)) + 16777216 * this[s + 3]
- );
- }),
- (Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE =
- function readUInt32BE(s, o) {
- return (
- (s >>>= 0),
- o || checkOffset(s, 4, this.length),
- 16777216 * this[s] + ((this[s + 1] << 16) | (this[s + 2] << 8) | this[s + 3])
- );
- }),
- (Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(s) {
- validateNumber((s >>>= 0), 'offset');
- const o = this[s],
- i = this[s + 7];
- (void 0 !== o && void 0 !== i) || boundsError(s, this.length - 8);
- const u = o + 256 * this[++s] + 65536 * this[++s] + this[++s] * 2 ** 24,
- _ = this[++s] + 256 * this[++s] + 65536 * this[++s] + i * 2 ** 24;
- return BigInt(u) + (BigInt(_) << BigInt(32));
- })),
- (Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(s) {
- validateNumber((s >>>= 0), 'offset');
- const o = this[s],
- i = this[s + 7];
- (void 0 !== o && void 0 !== i) || boundsError(s, this.length - 8);
- const u = o * 2 ** 24 + 65536 * this[++s] + 256 * this[++s] + this[++s],
- _ = this[++s] * 2 ** 24 + 65536 * this[++s] + 256 * this[++s] + i;
- return (BigInt(u) << BigInt(32)) + BigInt(_);
- })),
- (Buffer.prototype.readIntLE = function readIntLE(s, o, i) {
- ((s >>>= 0), (o >>>= 0), i || checkOffset(s, o, this.length));
- let u = this[s],
- _ = 1,
- w = 0;
- for (; ++w < o && (_ *= 256); ) u += this[s + w] * _;
- return ((_ *= 128), u >= _ && (u -= Math.pow(2, 8 * o)), u);
- }),
- (Buffer.prototype.readIntBE = function readIntBE(s, o, i) {
- ((s >>>= 0), (o >>>= 0), i || checkOffset(s, o, this.length));
- let u = o,
- _ = 1,
- w = this[s + --u];
- for (; u > 0 && (_ *= 256); ) w += this[s + --u] * _;
- return ((_ *= 128), w >= _ && (w -= Math.pow(2, 8 * o)), w);
- }),
- (Buffer.prototype.readInt8 = function readInt8(s, o) {
- return (
- (s >>>= 0),
- o || checkOffset(s, 1, this.length),
- 128 & this[s] ? -1 * (255 - this[s] + 1) : this[s]
- );
- }),
- (Buffer.prototype.readInt16LE = function readInt16LE(s, o) {
- ((s >>>= 0), o || checkOffset(s, 2, this.length));
- const i = this[s] | (this[s + 1] << 8);
- return 32768 & i ? 4294901760 | i : i;
- }),
- (Buffer.prototype.readInt16BE = function readInt16BE(s, o) {
- ((s >>>= 0), o || checkOffset(s, 2, this.length));
- const i = this[s + 1] | (this[s] << 8);
- return 32768 & i ? 4294901760 | i : i;
- }),
- (Buffer.prototype.readInt32LE = function readInt32LE(s, o) {
- return (
- (s >>>= 0),
- o || checkOffset(s, 4, this.length),
- this[s] | (this[s + 1] << 8) | (this[s + 2] << 16) | (this[s + 3] << 24)
- );
- }),
- (Buffer.prototype.readInt32BE = function readInt32BE(s, o) {
- return (
- (s >>>= 0),
- o || checkOffset(s, 4, this.length),
- (this[s] << 24) | (this[s + 1] << 16) | (this[s + 2] << 8) | this[s + 3]
- );
- }),
- (Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(s) {
- validateNumber((s >>>= 0), 'offset');
- const o = this[s],
- i = this[s + 7];
- (void 0 !== o && void 0 !== i) || boundsError(s, this.length - 8);
- const u = this[s + 4] + 256 * this[s + 5] + 65536 * this[s + 6] + (i << 24);
- return (
- (BigInt(u) << BigInt(32)) +
- BigInt(o + 256 * this[++s] + 65536 * this[++s] + this[++s] * 2 ** 24)
- );
- })),
- (Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(s) {
- validateNumber((s >>>= 0), 'offset');
- const o = this[s],
- i = this[s + 7];
- (void 0 !== o && void 0 !== i) || boundsError(s, this.length - 8);
- const u = (o << 24) + 65536 * this[++s] + 256 * this[++s] + this[++s];
- return (
- (BigInt(u) << BigInt(32)) +
- BigInt(this[++s] * 2 ** 24 + 65536 * this[++s] + 256 * this[++s] + i)
- );
- })),
- (Buffer.prototype.readFloatLE = function readFloatLE(s, o) {
- return ((s >>>= 0), o || checkOffset(s, 4, this.length), _.read(this, s, !0, 23, 4));
- }),
- (Buffer.prototype.readFloatBE = function readFloatBE(s, o) {
- return ((s >>>= 0), o || checkOffset(s, 4, this.length), _.read(this, s, !1, 23, 4));
- }),
- (Buffer.prototype.readDoubleLE = function readDoubleLE(s, o) {
- return ((s >>>= 0), o || checkOffset(s, 8, this.length), _.read(this, s, !0, 52, 8));
- }),
- (Buffer.prototype.readDoubleBE = function readDoubleBE(s, o) {
- return ((s >>>= 0), o || checkOffset(s, 8, this.length), _.read(this, s, !1, 52, 8));
- }),
- (Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE =
- function writeUIntLE(s, o, i, u) {
- if (((s = +s), (o >>>= 0), (i >>>= 0), !u)) {
- checkInt(this, s, o, i, Math.pow(2, 8 * i) - 1, 0);
- }
- let _ = 1,
- w = 0;
- for (this[o] = 255 & s; ++w < i && (_ *= 256); ) this[o + w] = (s / _) & 255;
- return o + i;
- }),
- (Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE =
- function writeUIntBE(s, o, i, u) {
- if (((s = +s), (o >>>= 0), (i >>>= 0), !u)) {
- checkInt(this, s, o, i, Math.pow(2, 8 * i) - 1, 0);
- }
- let _ = i - 1,
- w = 1;
- for (this[o + _] = 255 & s; --_ >= 0 && (w *= 256); ) this[o + _] = (s / w) & 255;
- return o + i;
- }),
- (Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 =
- function writeUInt8(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 1, 255, 0),
- (this[o] = 255 & s),
- o + 1
- );
- }),
- (Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE =
- function writeUInt16LE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 2, 65535, 0),
- (this[o] = 255 & s),
- (this[o + 1] = s >>> 8),
- o + 2
- );
- }),
- (Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE =
- function writeUInt16BE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 2, 65535, 0),
- (this[o] = s >>> 8),
- (this[o + 1] = 255 & s),
- o + 2
- );
- }),
- (Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE =
- function writeUInt32LE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 4, 4294967295, 0),
- (this[o + 3] = s >>> 24),
- (this[o + 2] = s >>> 16),
- (this[o + 1] = s >>> 8),
- (this[o] = 255 & s),
- o + 4
- );
- }),
- (Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE =
- function writeUInt32BE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 4, 4294967295, 0),
- (this[o] = s >>> 24),
- (this[o + 1] = s >>> 16),
- (this[o + 2] = s >>> 8),
- (this[o + 3] = 255 & s),
- o + 4
- );
- }),
- (Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(
- s,
- o = 0
- ) {
- return wrtBigUInt64LE(this, s, o, BigInt(0), BigInt('0xffffffffffffffff'));
- })),
- (Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(
- s,
- o = 0
- ) {
- return wrtBigUInt64BE(this, s, o, BigInt(0), BigInt('0xffffffffffffffff'));
- })),
- (Buffer.prototype.writeIntLE = function writeIntLE(s, o, i, u) {
- if (((s = +s), (o >>>= 0), !u)) {
- const u = Math.pow(2, 8 * i - 1);
- checkInt(this, s, o, i, u - 1, -u);
- }
- let _ = 0,
- w = 1,
- x = 0;
- for (this[o] = 255 & s; ++_ < i && (w *= 256); )
- (s < 0 && 0 === x && 0 !== this[o + _ - 1] && (x = 1),
- (this[o + _] = (((s / w) | 0) - x) & 255));
- return o + i;
- }),
- (Buffer.prototype.writeIntBE = function writeIntBE(s, o, i, u) {
- if (((s = +s), (o >>>= 0), !u)) {
- const u = Math.pow(2, 8 * i - 1);
- checkInt(this, s, o, i, u - 1, -u);
- }
- let _ = i - 1,
- w = 1,
- x = 0;
- for (this[o + _] = 255 & s; --_ >= 0 && (w *= 256); )
- (s < 0 && 0 === x && 0 !== this[o + _ + 1] && (x = 1),
- (this[o + _] = (((s / w) | 0) - x) & 255));
- return o + i;
- }),
- (Buffer.prototype.writeInt8 = function writeInt8(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 1, 127, -128),
- s < 0 && (s = 255 + s + 1),
- (this[o] = 255 & s),
- o + 1
- );
- }),
- (Buffer.prototype.writeInt16LE = function writeInt16LE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 2, 32767, -32768),
- (this[o] = 255 & s),
- (this[o + 1] = s >>> 8),
- o + 2
- );
- }),
- (Buffer.prototype.writeInt16BE = function writeInt16BE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 2, 32767, -32768),
- (this[o] = s >>> 8),
- (this[o + 1] = 255 & s),
- o + 2
- );
- }),
- (Buffer.prototype.writeInt32LE = function writeInt32LE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 4, 2147483647, -2147483648),
- (this[o] = 255 & s),
- (this[o + 1] = s >>> 8),
- (this[o + 2] = s >>> 16),
- (this[o + 3] = s >>> 24),
- o + 4
- );
- }),
- (Buffer.prototype.writeInt32BE = function writeInt32BE(s, o, i) {
- return (
- (s = +s),
- (o >>>= 0),
- i || checkInt(this, s, o, 4, 2147483647, -2147483648),
- s < 0 && (s = 4294967295 + s + 1),
- (this[o] = s >>> 24),
- (this[o + 1] = s >>> 16),
- (this[o + 2] = s >>> 8),
- (this[o + 3] = 255 & s),
- o + 4
- );
- }),
- (Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(
- s,
- o = 0
- ) {
- return wrtBigUInt64LE(
- this,
- s,
- o,
- -BigInt('0x8000000000000000'),
- BigInt('0x7fffffffffffffff')
- );
- })),
- (Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(
- s,
- o = 0
- ) {
- return wrtBigUInt64BE(
- this,
- s,
- o,
- -BigInt('0x8000000000000000'),
- BigInt('0x7fffffffffffffff')
- );
- })),
- (Buffer.prototype.writeFloatLE = function writeFloatLE(s, o, i) {
- return writeFloat(this, s, o, !0, i);
- }),
- (Buffer.prototype.writeFloatBE = function writeFloatBE(s, o, i) {
- return writeFloat(this, s, o, !1, i);
- }),
- (Buffer.prototype.writeDoubleLE = function writeDoubleLE(s, o, i) {
- return writeDouble(this, s, o, !0, i);
- }),
- (Buffer.prototype.writeDoubleBE = function writeDoubleBE(s, o, i) {
- return writeDouble(this, s, o, !1, i);
- }),
- (Buffer.prototype.copy = function copy(s, o, i, u) {
- if (!Buffer.isBuffer(s)) throw new TypeError('argument should be a Buffer');
- if (
- (i || (i = 0),
- u || 0 === u || (u = this.length),
- o >= s.length && (o = s.length),
- o || (o = 0),
- u > 0 && u < i && (u = i),
- u === i)
- )
- return 0;
- if (0 === s.length || 0 === this.length) return 0;
- if (o < 0) throw new RangeError('targetStart out of bounds');
- if (i < 0 || i >= this.length) throw new RangeError('Index out of range');
- if (u < 0) throw new RangeError('sourceEnd out of bounds');
- (u > this.length && (u = this.length),
- s.length - o < u - i && (u = s.length - o + i));
- const _ = u - i;
- return (
- this === s && 'function' == typeof Uint8Array.prototype.copyWithin
- ? this.copyWithin(o, i, u)
- : Uint8Array.prototype.set.call(s, this.subarray(i, u), o),
- _
- );
- }),
- (Buffer.prototype.fill = function fill(s, o, i, u) {
- if ('string' == typeof s) {
- if (
- ('string' == typeof o
- ? ((u = o), (o = 0), (i = this.length))
- : 'string' == typeof i && ((u = i), (i = this.length)),
- void 0 !== u && 'string' != typeof u)
- )
- throw new TypeError('encoding must be a string');
- if ('string' == typeof u && !Buffer.isEncoding(u))
- throw new TypeError('Unknown encoding: ' + u);
- if (1 === s.length) {
- const o = s.charCodeAt(0);
- (('utf8' === u && o < 128) || 'latin1' === u) && (s = o);
- }
- } else 'number' == typeof s ? (s &= 255) : 'boolean' == typeof s && (s = Number(s));
- if (o < 0 || this.length < o || this.length < i)
- throw new RangeError('Out of range index');
- if (i <= o) return this;
- let _;
- if (
- ((o >>>= 0),
- (i = void 0 === i ? this.length : i >>> 0),
- s || (s = 0),
- 'number' == typeof s)
- )
- for (_ = o; _ < i; ++_) this[_] = s;
- else {
- const w = Buffer.isBuffer(s) ? s : Buffer.from(s, u),
- x = w.length;
- if (0 === x)
- throw new TypeError('The value "' + s + '" is invalid for argument "value"');
- for (_ = 0; _ < i - o; ++_) this[_ + o] = w[_ % x];
- }
- return this;
- }));
- const j = {};
- function E(s, o, i) {
- j[s] = class NodeError extends i {
- constructor() {
- (super(),
- Object.defineProperty(this, 'message', {
- value: o.apply(this, arguments),
- writable: !0,
- configurable: !0
- }),
- (this.name = `${this.name} [${s}]`),
- this.stack,
- delete this.name);
- }
- get code() {
- return s;
- }
- set code(s) {
- Object.defineProperty(this, 'code', {
- configurable: !0,
- enumerable: !0,
- value: s,
- writable: !0
- });
- }
- toString() {
- return `${this.name} [${s}]: ${this.message}`;
- }
- };
- }
- function addNumericalSeparator(s) {
- let o = '',
- i = s.length;
- const u = '-' === s[0] ? 1 : 0;
- for (; i >= u + 4; i -= 3) o = `_${s.slice(i - 3, i)}${o}`;
- return `${s.slice(0, i)}${o}`;
- }
- function checkIntBI(s, o, i, u, _, w) {
- if (s > i || s < o) {
- const u = 'bigint' == typeof o ? 'n' : '';
- let _;
- throw (
- (_ =
- w > 3
- ? 0 === o || o === BigInt(0)
- ? `>= 0${u} and < 2${u} ** ${8 * (w + 1)}${u}`
- : `>= -(2${u} ** ${8 * (w + 1) - 1}${u}) and < 2 ** ${8 * (w + 1) - 1}${u}`
- : `>= ${o}${u} and <= ${i}${u}`),
- new j.ERR_OUT_OF_RANGE('value', _, s)
- );
- }
- !(function checkBounds(s, o, i) {
- (validateNumber(o, 'offset'),
- (void 0 !== s[o] && void 0 !== s[o + i]) || boundsError(o, s.length - (i + 1)));
- })(u, _, w);
- }
- function validateNumber(s, o) {
- if ('number' != typeof s) throw new j.ERR_INVALID_ARG_TYPE(o, 'number', s);
- }
- function boundsError(s, o, i) {
- if (Math.floor(s) !== s)
- throw (validateNumber(s, i), new j.ERR_OUT_OF_RANGE(i || 'offset', 'an integer', s));
- if (o < 0) throw new j.ERR_BUFFER_OUT_OF_BOUNDS();
- throw new j.ERR_OUT_OF_RANGE(i || 'offset', `>= ${i ? 1 : 0} and <= ${o}`, s);
- }
- (E(
- 'ERR_BUFFER_OUT_OF_BOUNDS',
- function (s) {
- return s
- ? `${s} is outside of buffer bounds`
- : 'Attempt to access memory outside buffer bounds';
- },
- RangeError
- ),
- E(
- 'ERR_INVALID_ARG_TYPE',
- function (s, o) {
- return `The "${s}" argument must be of type number. Received type ${typeof o}`;
- },
- TypeError
- ),
- E(
- 'ERR_OUT_OF_RANGE',
- function (s, o, i) {
- let u = `The value of "${s}" is out of range.`,
- _ = i;
- return (
- Number.isInteger(i) && Math.abs(i) > 2 ** 32
- ? (_ = addNumericalSeparator(String(i)))
- : 'bigint' == typeof i &&
- ((_ = String(i)),
- (i > BigInt(2) ** BigInt(32) || i < -(BigInt(2) ** BigInt(32))) &&
- (_ = addNumericalSeparator(_)),
- (_ += 'n')),
- (u += ` It must be ${o}. Received ${_}`),
- u
- );
- },
- RangeError
- ));
- const L = /[^+/0-9A-Za-z-_]/g;
- function utf8ToBytes(s, o) {
- let i;
- o = o || 1 / 0;
- const u = s.length;
- let _ = null;
- const w = [];
- for (let x = 0; x < u; ++x) {
- if (((i = s.charCodeAt(x)), i > 55295 && i < 57344)) {
- if (!_) {
- if (i > 56319) {
- (o -= 3) > -1 && w.push(239, 191, 189);
- continue;
- }
- if (x + 1 === u) {
- (o -= 3) > -1 && w.push(239, 191, 189);
- continue;
- }
- _ = i;
- continue;
- }
- if (i < 56320) {
- ((o -= 3) > -1 && w.push(239, 191, 189), (_ = i));
- continue;
- }
- i = 65536 + (((_ - 55296) << 10) | (i - 56320));
- } else _ && (o -= 3) > -1 && w.push(239, 191, 189);
- if (((_ = null), i < 128)) {
- if ((o -= 1) < 0) break;
- w.push(i);
- } else if (i < 2048) {
- if ((o -= 2) < 0) break;
- w.push((i >> 6) | 192, (63 & i) | 128);
- } else if (i < 65536) {
- if ((o -= 3) < 0) break;
- w.push((i >> 12) | 224, ((i >> 6) & 63) | 128, (63 & i) | 128);
- } else {
- if (!(i < 1114112)) throw new Error('Invalid code point');
- if ((o -= 4) < 0) break;
- w.push(
- (i >> 18) | 240,
- ((i >> 12) & 63) | 128,
- ((i >> 6) & 63) | 128,
- (63 & i) | 128
- );
- }
- }
- return w;
- }
- function base64ToBytes(s) {
- return u.toByteArray(
- (function base64clean(s) {
- if ((s = (s = s.split('=')[0]).trim().replace(L, '')).length < 2) return '';
- for (; s.length % 4 != 0; ) s += '=';
- return s;
- })(s)
- );
- }
- function blitBuffer(s, o, i, u) {
- let _;
- for (_ = 0; _ < u && !(_ + i >= o.length || _ >= s.length); ++_) o[_ + i] = s[_];
- return _;
- }
- function isInstance(s, o) {
- return (
- s instanceof o ||
- (null != s &&
- null != s.constructor &&
- null != s.constructor.name &&
- s.constructor.name === o.name)
- );
- }
- function numberIsNaN(s) {
- return s != s;
- }
- const B = (function () {
- const s = '0123456789abcdef',
- o = new Array(256);
- for (let i = 0; i < 16; ++i) {
- const u = 16 * i;
- for (let _ = 0; _ < 16; ++_) o[u + _] = s[i] + s[_];
- }
- return o;
- })();
- function defineBigIntMethod(s) {
- return 'undefined' == typeof BigInt ? BufferBigIntNotDefined : s;
- }
- function BufferBigIntNotDefined() {
- throw new Error('BigInt not supported');
- }
- },
- 17965: (s, o, i) => {
- 'use strict';
- var u = i(16426),
- _ = { 'text/plain': 'Text', 'text/html': 'Url', default: 'Text' };
- s.exports = function copy(s, o) {
- var i,
- w,
- x,
- C,
- j,
- L,
- B = !1;
- (o || (o = {}), (i = o.debug || !1));
- try {
- if (
- ((x = u()),
- (C = document.createRange()),
- (j = document.getSelection()),
- ((L = document.createElement('span')).textContent = s),
- (L.ariaHidden = 'true'),
- (L.style.all = 'unset'),
- (L.style.position = 'fixed'),
- (L.style.top = 0),
- (L.style.clip = 'rect(0, 0, 0, 0)'),
- (L.style.whiteSpace = 'pre'),
- (L.style.webkitUserSelect = 'text'),
- (L.style.MozUserSelect = 'text'),
- (L.style.msUserSelect = 'text'),
- (L.style.userSelect = 'text'),
- L.addEventListener('copy', function (u) {
- if ((u.stopPropagation(), o.format))
- if ((u.preventDefault(), void 0 === u.clipboardData)) {
- (i && console.warn('unable to use e.clipboardData'),
- i && console.warn('trying IE specific stuff'),
- window.clipboardData.clearData());
- var w = _[o.format] || _.default;
- window.clipboardData.setData(w, s);
- } else (u.clipboardData.clearData(), u.clipboardData.setData(o.format, s));
- o.onCopy && (u.preventDefault(), o.onCopy(u.clipboardData));
- }),
- document.body.appendChild(L),
- C.selectNodeContents(L),
- j.addRange(C),
- !document.execCommand('copy'))
- )
- throw new Error('copy command was unsuccessful');
- B = !0;
- } catch (u) {
- (i && console.error('unable to copy using execCommand: ', u),
- i && console.warn('trying IE specific stuff'));
- try {
- (window.clipboardData.setData(o.format || 'text', s),
- o.onCopy && o.onCopy(window.clipboardData),
- (B = !0));
- } catch (u) {
- (i && console.error('unable to copy using clipboardData: ', u),
- i && console.error('falling back to prompt'),
- (w = (function format(s) {
- var o = (/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl') + '+C';
- return s.replace(/#{\s*key\s*}/g, o);
- })('message' in o ? o.message : 'Copy to clipboard: #{key}, Enter')),
- window.prompt(w, s));
- }
- } finally {
- (j && ('function' == typeof j.removeRange ? j.removeRange(C) : j.removeAllRanges()),
- L && document.body.removeChild(L),
- x());
- }
- return B;
- };
- },
- 2205: function (s, o, i) {
- var u;
- ((u = void 0 !== i.g ? i.g : this),
- (s.exports = (function (s) {
- if (s.CSS && s.CSS.escape) return s.CSS.escape;
- var cssEscape = function (s) {
- if (0 == arguments.length)
- throw new TypeError('`CSS.escape` requires an argument.');
- for (
- var o, i = String(s), u = i.length, _ = -1, w = '', x = i.charCodeAt(0);
- ++_ < u;
- )
- 0 != (o = i.charCodeAt(_))
- ? (w +=
- (o >= 1 && o <= 31) ||
- 127 == o ||
- (0 == _ && o >= 48 && o <= 57) ||
- (1 == _ && o >= 48 && o <= 57 && 45 == x)
- ? '\\' + o.toString(16) + ' '
- : (0 == _ && 1 == u && 45 == o) ||
- !(
- o >= 128 ||
- 45 == o ||
- 95 == o ||
- (o >= 48 && o <= 57) ||
- (o >= 65 && o <= 90) ||
- (o >= 97 && o <= 122)
- )
- ? '\\' + i.charAt(_)
- : i.charAt(_))
- : (w += '�');
- return w;
- };
- return (s.CSS || (s.CSS = {}), (s.CSS.escape = cssEscape), cssEscape);
- })(u)));
- },
- 81919: (s, o, i) => {
- 'use strict';
- var u = i(48287).Buffer;
- function isSpecificValue(s) {
- return s instanceof u || s instanceof Date || s instanceof RegExp;
- }
- function cloneSpecificValue(s) {
- if (s instanceof u) {
- var o = u.alloc ? u.alloc(s.length) : new u(s.length);
- return (s.copy(o), o);
- }
- if (s instanceof Date) return new Date(s.getTime());
- if (s instanceof RegExp) return new RegExp(s);
- throw new Error('Unexpected situation');
- }
- function deepCloneArray(s) {
- var o = [];
- return (
- s.forEach(function (s, i) {
- 'object' == typeof s && null !== s
- ? Array.isArray(s)
- ? (o[i] = deepCloneArray(s))
- : isSpecificValue(s)
- ? (o[i] = cloneSpecificValue(s))
- : (o[i] = _({}, s))
- : (o[i] = s);
- }),
- o
- );
- }
- function safeGetProperty(s, o) {
- return '__proto__' === o ? void 0 : s[o];
- }
- var _ = (s.exports = function () {
- if (arguments.length < 1 || 'object' != typeof arguments[0]) return !1;
- if (arguments.length < 2) return arguments[0];
- var s,
- o,
- i = arguments[0];
- return (
- Array.prototype.slice.call(arguments, 1).forEach(function (u) {
- 'object' != typeof u ||
- null === u ||
- Array.isArray(u) ||
- Object.keys(u).forEach(function (w) {
- return (
- (o = safeGetProperty(i, w)),
- (s = safeGetProperty(u, w)) === i
- ? void 0
- : 'object' != typeof s || null === s
- ? void (i[w] = s)
- : Array.isArray(s)
- ? void (i[w] = deepCloneArray(s))
- : isSpecificValue(s)
- ? void (i[w] = cloneSpecificValue(s))
- : 'object' != typeof o || null === o || Array.isArray(o)
- ? void (i[w] = _({}, s))
- : void (i[w] = _(o, s))
- );
- });
- }),
- i
- );
- });
- },
- 14744: (s) => {
- 'use strict';
- var o = function isMergeableObject(s) {
- return (
- (function isNonNullObject(s) {
- return !!s && 'object' == typeof s;
- })(s) &&
- !(function isSpecial(s) {
- var o = Object.prototype.toString.call(s);
- return (
- '[object RegExp]' === o ||
- '[object Date]' === o ||
- (function isReactElement(s) {
- return s.$$typeof === i;
- })(s)
- );
- })(s)
- );
- };
- var i = 'function' == typeof Symbol && Symbol.for ? Symbol.for('react.element') : 60103;
- function cloneUnlessOtherwiseSpecified(s, o) {
- return !1 !== o.clone && o.isMergeableObject(s)
- ? deepmerge(
- (function emptyTarget(s) {
- return Array.isArray(s) ? [] : {};
- })(s),
- s,
- o
- )
- : s;
- }
- function defaultArrayMerge(s, o, i) {
- return s.concat(o).map(function (s) {
- return cloneUnlessOtherwiseSpecified(s, i);
- });
- }
- function getKeys(s) {
- return Object.keys(s).concat(
- (function getEnumerableOwnPropertySymbols(s) {
- return Object.getOwnPropertySymbols
- ? Object.getOwnPropertySymbols(s).filter(function (o) {
- return Object.propertyIsEnumerable.call(s, o);
- })
- : [];
- })(s)
- );
- }
- function propertyIsOnObject(s, o) {
- try {
- return o in s;
- } catch (s) {
- return !1;
- }
- }
- function mergeObject(s, o, i) {
- var u = {};
- return (
- i.isMergeableObject(s) &&
- getKeys(s).forEach(function (o) {
- u[o] = cloneUnlessOtherwiseSpecified(s[o], i);
- }),
- getKeys(o).forEach(function (_) {
- (function propertyIsUnsafe(s, o) {
- return (
- propertyIsOnObject(s, o) &&
- !(Object.hasOwnProperty.call(s, o) && Object.propertyIsEnumerable.call(s, o))
- );
- })(s, _) ||
- (propertyIsOnObject(s, _) && i.isMergeableObject(o[_])
- ? (u[_] = (function getMergeFunction(s, o) {
- if (!o.customMerge) return deepmerge;
- var i = o.customMerge(s);
- return 'function' == typeof i ? i : deepmerge;
- })(_, i)(s[_], o[_], i))
- : (u[_] = cloneUnlessOtherwiseSpecified(o[_], i)));
- }),
- u
- );
- }
- function deepmerge(s, i, u) {
- (((u = u || {}).arrayMerge = u.arrayMerge || defaultArrayMerge),
- (u.isMergeableObject = u.isMergeableObject || o),
- (u.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified));
- var _ = Array.isArray(i);
- return _ === Array.isArray(s)
- ? _
- ? u.arrayMerge(s, i, u)
- : mergeObject(s, i, u)
- : cloneUnlessOtherwiseSpecified(i, u);
- }
- deepmerge.all = function deepmergeAll(s, o) {
- if (!Array.isArray(s)) throw new Error('first argument should be an array');
- return s.reduce(function (s, i) {
- return deepmerge(s, i, o);
- }, {});
- };
- var u = deepmerge;
- s.exports = u;
- },
- 42838: function (s) {
- s.exports = (function () {
- 'use strict';
- const {
- entries: s,
- setPrototypeOf: o,
- isFrozen: i,
- getPrototypeOf: u,
- getOwnPropertyDescriptor: _
- } = Object;
- let { freeze: w, seal: x, create: C } = Object,
- { apply: j, construct: L } = 'undefined' != typeof Reflect && Reflect;
- (w ||
- (w = function freeze(s) {
- return s;
- }),
- x ||
- (x = function seal(s) {
- return s;
- }),
- j ||
- (j = function apply(s, o, i) {
- return s.apply(o, i);
- }),
- L ||
- (L = function construct(s, o) {
- return new s(...o);
- }));
- const B = unapply(Array.prototype.forEach),
- $ = unapply(Array.prototype.pop),
- V = unapply(Array.prototype.push),
- U = unapply(String.prototype.toLowerCase),
- z = unapply(String.prototype.toString),
- Y = unapply(String.prototype.match),
- Z = unapply(String.prototype.replace),
- ee = unapply(String.prototype.indexOf),
- ie = unapply(String.prototype.trim),
- ae = unapply(Object.prototype.hasOwnProperty),
- le = unapply(RegExp.prototype.test),
- ce = unconstruct(TypeError);
- function unapply(s) {
- return function (o) {
- for (var i = arguments.length, u = new Array(i > 1 ? i - 1 : 0), _ = 1; _ < i; _++)
- u[_ - 1] = arguments[_];
- return j(s, o, u);
- };
- }
- function unconstruct(s) {
- return function () {
- for (var o = arguments.length, i = new Array(o), u = 0; u < o; u++)
- i[u] = arguments[u];
- return L(s, i);
- };
- }
- function addToSet(s, u) {
- let _ = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : U;
- o && o(s, null);
- let w = u.length;
- for (; w--; ) {
- let o = u[w];
- if ('string' == typeof o) {
- const s = _(o);
- s !== o && (i(u) || (u[w] = s), (o = s));
- }
- s[o] = !0;
- }
- return s;
- }
- function cleanArray(s) {
- for (let o = 0; o < s.length; o++) ae(s, o) || (s[o] = null);
- return s;
- }
- function clone(o) {
- const i = C(null);
- for (const [u, _] of s(o))
- ae(o, u) &&
- (Array.isArray(_)
- ? (i[u] = cleanArray(_))
- : _ && 'object' == typeof _ && _.constructor === Object
- ? (i[u] = clone(_))
- : (i[u] = _));
- return i;
- }
- function lookupGetter(s, o) {
- for (; null !== s; ) {
- const i = _(s, o);
- if (i) {
- if (i.get) return unapply(i.get);
- if ('function' == typeof i.value) return unapply(i.value);
- }
- s = u(s);
- }
- function fallbackValue() {
- return null;
- }
- return fallbackValue;
- }
- const pe = w([
- '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',
- 'section',
- 'select',
- 'shadow',
- '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'
- ]),
- de = w([
- 'svg',
- 'a',
- 'altglyph',
- 'altglyphdef',
- 'altglyphitem',
- 'animatecolor',
- 'animatemotion',
- 'animatetransform',
- 'circle',
- 'clippath',
- 'defs',
- 'desc',
- 'ellipse',
- 'filter',
- 'font',
- 'g',
- 'glyph',
- 'glyphref',
- 'hkern',
- 'image',
- 'line',
- 'lineargradient',
- 'marker',
- 'mask',
- 'metadata',
- 'mpath',
- 'path',
- 'pattern',
- 'polygon',
- 'polyline',
- 'radialgradient',
- 'rect',
- 'stop',
- 'style',
- 'switch',
- 'symbol',
- 'text',
- 'textpath',
- 'title',
- 'tref',
- 'tspan',
- 'view',
- 'vkern'
- ]),
- fe = w([
- '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'
- ]),
- ye = w([
- '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'
- ]),
- be = w([
- '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'
- ]),
- _e = w([
- 'maction',
- 'maligngroup',
- 'malignmark',
- 'mlongdiv',
- 'mscarries',
- 'mscarry',
- 'msgroup',
- 'mstack',
- 'msline',
- 'msrow',
- 'semantics',
- 'annotation',
- 'annotation-xml',
- 'mprescripts',
- 'none'
- ]),
- we = w(['#text']),
- Se = w([
- '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',
- 'face',
- 'for',
- 'headers',
- 'height',
- 'hidden',
- 'high',
- 'href',
- 'hreflang',
- 'id',
- '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',
- 'pattern',
- 'placeholder',
- 'playsinline',
- 'popover',
- 'popovertarget',
- 'popovertargetaction',
- 'poster',
- 'preload',
- 'pubdate',
- 'radiogroup',
- 'readonly',
- 'rel',
- 'required',
- 'rev',
- 'reversed',
- 'role',
- 'rows',
- 'rowspan',
- 'spellcheck',
- 'scope',
- 'selected',
- 'shape',
- 'size',
- 'sizes',
- 'span',
- 'srclang',
- 'start',
- 'src',
- 'srcset',
- 'step',
- 'style',
- 'summary',
- 'tabindex',
- 'title',
- 'translate',
- 'type',
- 'usemap',
- 'valign',
- 'value',
- 'width',
- 'wrap',
- 'xmlns',
- 'slot'
- ]),
- xe = w([
- 'accent-height',
- 'accumulate',
- 'additive',
- 'alignment-baseline',
- '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',
- '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',
- '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',
- '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',
- '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',
- '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'
- ]),
- Pe = w([
- 'accent',
- 'accentunder',
- 'align',
- 'bevelled',
- 'close',
- 'columnsalign',
- 'columnlines',
- 'columnspan',
- 'denomalign',
- 'depth',
- 'dir',
- 'display',
- 'displaystyle',
- 'encoding',
- 'fence',
- 'frame',
- 'height',
- 'href',
- 'id',
- 'largeop',
- 'length',
- 'linethickness',
- 'lspace',
- 'lquote',
- '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'
- ]),
- Te = w(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']),
- Re = x(/\{\{[\w\W]*|[\w\W]*\}\}/gm),
- qe = x(/<%[\w\W]*|[\w\W]*%>/gm),
- $e = x(/\${[\w\W]*}/gm),
- ze = x(/^data-[\-\w.\u00B7-\uFFFF]/),
- We = x(/^aria-[\-\w]+$/),
- He = x(
- /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i
- ),
- Ye = x(/^(?:\w+script|data):/i),
- Xe = x(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),
- Qe = x(/^html$/i),
- et = x(/^[a-z][.\w]*(-[.\w]+)+$/i);
- var tt = Object.freeze({
- __proto__: null,
- MUSTACHE_EXPR: Re,
- ERB_EXPR: qe,
- TMPLIT_EXPR: $e,
- DATA_ATTR: ze,
- ARIA_ATTR: We,
- IS_ALLOWED_URI: He,
- IS_SCRIPT_OR_DATA: Ye,
- ATTR_WHITESPACE: Xe,
- DOCTYPE_NAME: Qe,
- CUSTOM_ELEMENT: et
- });
- const rt = {
- element: 1,
- attribute: 2,
- text: 3,
- cdataSection: 4,
- entityReference: 5,
- entityNode: 6,
- progressingInstruction: 7,
- comment: 8,
- document: 9,
- documentType: 10,
- documentFragment: 11,
- notation: 12
- },
- nt = function getGlobal() {
- return 'undefined' == typeof window ? null : window;
- },
- st = function _createTrustedTypesPolicy(s, o) {
- if ('object' != typeof s || 'function' != typeof s.createPolicy) return null;
- let i = null;
- const u = 'data-tt-policy-suffix';
- o && o.hasAttribute(u) && (i = o.getAttribute(u));
- const _ = 'dompurify' + (i ? '#' + i : '');
- try {
- return s.createPolicy(_, { createHTML: (s) => s, createScriptURL: (s) => s });
- } catch (s) {
- return (
- console.warn('TrustedTypes policy ' + _ + ' could not be created.'),
- null
- );
- }
- };
- function createDOMPurify() {
- let o = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : nt();
- const DOMPurify = (s) => createDOMPurify(s);
- if (
- ((DOMPurify.version = '3.1.6'),
- (DOMPurify.removed = []),
- !o || !o.document || o.document.nodeType !== rt.document)
- )
- return ((DOMPurify.isSupported = !1), DOMPurify);
- let { document: i } = o;
- const u = i,
- _ = u.currentScript,
- {
- DocumentFragment: x,
- HTMLTemplateElement: j,
- Node: L,
- Element: Re,
- NodeFilter: qe,
- NamedNodeMap: $e = o.NamedNodeMap || o.MozNamedAttrMap,
- HTMLFormElement: ze,
- DOMParser: We,
- trustedTypes: Ye
- } = o,
- Xe = Re.prototype,
- et = lookupGetter(Xe, 'cloneNode'),
- ot = lookupGetter(Xe, 'remove'),
- it = lookupGetter(Xe, 'nextSibling'),
- at = lookupGetter(Xe, 'childNodes'),
- lt = lookupGetter(Xe, 'parentNode');
- if ('function' == typeof j) {
- const s = i.createElement('template');
- s.content && s.content.ownerDocument && (i = s.content.ownerDocument);
- }
- let ct,
- ut = '';
- const {
- implementation: pt,
- createNodeIterator: ht,
- createDocumentFragment: dt,
- getElementsByTagName: mt
- } = i,
- { importNode: gt } = u;
- let yt = {};
- DOMPurify.isSupported =
- 'function' == typeof s &&
- 'function' == typeof lt &&
- pt &&
- void 0 !== pt.createHTMLDocument;
- const {
- MUSTACHE_EXPR: vt,
- ERB_EXPR: bt,
- TMPLIT_EXPR: _t,
- DATA_ATTR: Et,
- ARIA_ATTR: wt,
- IS_SCRIPT_OR_DATA: St,
- ATTR_WHITESPACE: xt,
- CUSTOM_ELEMENT: kt
- } = tt;
- let { IS_ALLOWED_URI: Ct } = tt,
- Ot = null;
- const At = addToSet({}, [...pe, ...de, ...fe, ...be, ...we]);
- let jt = null;
- const It = addToSet({}, [...Se, ...xe, ...Pe, ...Te]);
- let Pt = Object.seal(
- C(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
- }
- })
- ),
- Mt = null,
- Tt = null,
- Nt = !0,
- Rt = !0,
- Dt = !1,
- Lt = !0,
- Bt = !1,
- Ft = !0,
- qt = !1,
- $t = !1,
- Vt = !1,
- Ut = !1,
- zt = !1,
- Wt = !1,
- Kt = !0,
- Ht = !1;
- const Jt = 'user-content-';
- let Gt = !0,
- Yt = !1,
- Xt = {},
- Zt = null;
- const Qt = addToSet({}, [
- '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 er = null;
- const tr = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);
- let rr = null;
- const nr = addToSet({}, [
- 'alt',
- 'class',
- 'for',
- 'id',
- 'label',
- 'name',
- 'pattern',
- 'placeholder',
- 'role',
- 'summary',
- 'title',
- 'value',
- 'style',
- 'xmlns'
- ]),
- sr = 'http://www.w3.org/1998/Math/MathML',
- ir = 'http://www.w3.org/2000/svg',
- ar = 'http://www.w3.org/1999/xhtml';
- let lr = ar,
- cr = !1,
- ur = null;
- const pr = addToSet({}, [sr, ir, ar], z);
- let dr = null;
- const fr = ['application/xhtml+xml', 'text/html'],
- mr = 'text/html';
- let gr = null,
- yr = null;
- const vr = i.createElement('form'),
- br = function isRegexOrFunction(s) {
- return s instanceof RegExp || s instanceof Function;
- },
- _r = function _parseConfig() {
- let s = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
- if (!yr || yr !== s) {
- if (
- ((s && 'object' == typeof s) || (s = {}),
- (s = clone(s)),
- (dr = -1 === fr.indexOf(s.PARSER_MEDIA_TYPE) ? mr : s.PARSER_MEDIA_TYPE),
- (gr = 'application/xhtml+xml' === dr ? z : U),
- (Ot = ae(s, 'ALLOWED_TAGS') ? addToSet({}, s.ALLOWED_TAGS, gr) : At),
- (jt = ae(s, 'ALLOWED_ATTR') ? addToSet({}, s.ALLOWED_ATTR, gr) : It),
- (ur = ae(s, 'ALLOWED_NAMESPACES')
- ? addToSet({}, s.ALLOWED_NAMESPACES, z)
- : pr),
- (rr = ae(s, 'ADD_URI_SAFE_ATTR')
- ? addToSet(clone(nr), s.ADD_URI_SAFE_ATTR, gr)
- : nr),
- (er = ae(s, 'ADD_DATA_URI_TAGS')
- ? addToSet(clone(tr), s.ADD_DATA_URI_TAGS, gr)
- : tr),
- (Zt = ae(s, 'FORBID_CONTENTS') ? addToSet({}, s.FORBID_CONTENTS, gr) : Qt),
- (Mt = ae(s, 'FORBID_TAGS') ? addToSet({}, s.FORBID_TAGS, gr) : {}),
- (Tt = ae(s, 'FORBID_ATTR') ? addToSet({}, s.FORBID_ATTR, gr) : {}),
- (Xt = !!ae(s, 'USE_PROFILES') && s.USE_PROFILES),
- (Nt = !1 !== s.ALLOW_ARIA_ATTR),
- (Rt = !1 !== s.ALLOW_DATA_ATTR),
- (Dt = s.ALLOW_UNKNOWN_PROTOCOLS || !1),
- (Lt = !1 !== s.ALLOW_SELF_CLOSE_IN_ATTR),
- (Bt = s.SAFE_FOR_TEMPLATES || !1),
- (Ft = !1 !== s.SAFE_FOR_XML),
- (qt = s.WHOLE_DOCUMENT || !1),
- (Ut = s.RETURN_DOM || !1),
- (zt = s.RETURN_DOM_FRAGMENT || !1),
- (Wt = s.RETURN_TRUSTED_TYPE || !1),
- (Vt = s.FORCE_BODY || !1),
- (Kt = !1 !== s.SANITIZE_DOM),
- (Ht = s.SANITIZE_NAMED_PROPS || !1),
- (Gt = !1 !== s.KEEP_CONTENT),
- (Yt = s.IN_PLACE || !1),
- (Ct = s.ALLOWED_URI_REGEXP || He),
- (lr = s.NAMESPACE || ar),
- (Pt = s.CUSTOM_ELEMENT_HANDLING || {}),
- s.CUSTOM_ELEMENT_HANDLING &&
- br(s.CUSTOM_ELEMENT_HANDLING.tagNameCheck) &&
- (Pt.tagNameCheck = s.CUSTOM_ELEMENT_HANDLING.tagNameCheck),
- s.CUSTOM_ELEMENT_HANDLING &&
- br(s.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) &&
- (Pt.attributeNameCheck = s.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),
- s.CUSTOM_ELEMENT_HANDLING &&
- 'boolean' ==
- typeof s.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&
- (Pt.allowCustomizedBuiltInElements =
- s.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),
- Bt && (Rt = !1),
- zt && (Ut = !0),
- Xt &&
- ((Ot = addToSet({}, we)),
- (jt = []),
- !0 === Xt.html && (addToSet(Ot, pe), addToSet(jt, Se)),
- !0 === Xt.svg && (addToSet(Ot, de), addToSet(jt, xe), addToSet(jt, Te)),
- !0 === Xt.svgFilters &&
- (addToSet(Ot, fe), addToSet(jt, xe), addToSet(jt, Te)),
- !0 === Xt.mathMl && (addToSet(Ot, be), addToSet(jt, Pe), addToSet(jt, Te))),
- s.ADD_TAGS && (Ot === At && (Ot = clone(Ot)), addToSet(Ot, s.ADD_TAGS, gr)),
- s.ADD_ATTR && (jt === It && (jt = clone(jt)), addToSet(jt, s.ADD_ATTR, gr)),
- s.ADD_URI_SAFE_ATTR && addToSet(rr, s.ADD_URI_SAFE_ATTR, gr),
- s.FORBID_CONTENTS &&
- (Zt === Qt && (Zt = clone(Zt)), addToSet(Zt, s.FORBID_CONTENTS, gr)),
- Gt && (Ot['#text'] = !0),
- qt && addToSet(Ot, ['html', 'head', 'body']),
- Ot.table && (addToSet(Ot, ['tbody']), delete Mt.tbody),
- s.TRUSTED_TYPES_POLICY)
- ) {
- if ('function' != typeof s.TRUSTED_TYPES_POLICY.createHTML)
- throw ce(
- 'TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'
- );
- if ('function' != typeof s.TRUSTED_TYPES_POLICY.createScriptURL)
- throw ce(
- 'TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'
- );
- ((ct = s.TRUSTED_TYPES_POLICY), (ut = ct.createHTML('')));
- } else
- (void 0 === ct && (ct = st(Ye, _)),
- null !== ct && 'string' == typeof ut && (ut = ct.createHTML('')));
- (w && w(s), (yr = s));
- }
- },
- Er = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']),
- wr = addToSet({}, ['foreignobject', 'annotation-xml']),
- Sr = addToSet({}, ['title', 'style', 'font', 'a', 'script']),
- xr = addToSet({}, [...de, ...fe, ...ye]),
- kr = addToSet({}, [...be, ..._e]),
- Cr = function _checkValidNamespace(s) {
- let o = lt(s);
- (o && o.tagName) || (o = { namespaceURI: lr, tagName: 'template' });
- const i = U(s.tagName),
- u = U(o.tagName);
- return (
- !!ur[s.namespaceURI] &&
- (s.namespaceURI === ir
- ? o.namespaceURI === ar
- ? 'svg' === i
- : o.namespaceURI === sr
- ? 'svg' === i && ('annotation-xml' === u || Er[u])
- : Boolean(xr[i])
- : s.namespaceURI === sr
- ? o.namespaceURI === ar
- ? 'math' === i
- : o.namespaceURI === ir
- ? 'math' === i && wr[u]
- : Boolean(kr[i])
- : s.namespaceURI === ar
- ? !(o.namespaceURI === ir && !wr[u]) &&
- !(o.namespaceURI === sr && !Er[u]) &&
- !kr[i] &&
- (Sr[i] || !xr[i])
- : !('application/xhtml+xml' !== dr || !ur[s.namespaceURI]))
- );
- },
- Or = function _forceRemove(s) {
- V(DOMPurify.removed, { element: s });
- try {
- lt(s).removeChild(s);
- } catch (o) {
- ot(s);
- }
- },
- Ar = function _removeAttribute(s, o) {
- try {
- V(DOMPurify.removed, { attribute: o.getAttributeNode(s), from: o });
- } catch (s) {
- V(DOMPurify.removed, { attribute: null, from: o });
- }
- if ((o.removeAttribute(s), 'is' === s && !jt[s]))
- if (Ut || zt)
- try {
- Or(o);
- } catch (s) {}
- else
- try {
- o.setAttribute(s, '');
- } catch (s) {}
- },
- jr = function _initDocument(s) {
- let o = null,
- u = null;
- if (Vt) s = '' + s;
- else {
- const o = Y(s, /^[\r\n\t ]+/);
- u = o && o[0];
- }
- 'application/xhtml+xml' === dr &&
- lr === ar &&
- (s =
- '' +
- s +
- '');
- const _ = ct ? ct.createHTML(s) : s;
- if (lr === ar)
- try {
- o = new We().parseFromString(_, dr);
- } catch (s) {}
- if (!o || !o.documentElement) {
- o = pt.createDocument(lr, 'template', null);
- try {
- o.documentElement.innerHTML = cr ? ut : _;
- } catch (s) {}
- }
- const w = o.body || o.documentElement;
- return (
- s && u && w.insertBefore(i.createTextNode(u), w.childNodes[0] || null),
- lr === ar ? mt.call(o, qt ? 'html' : 'body')[0] : qt ? o.documentElement : w
- );
- },
- Ir = function _createNodeIterator(s) {
- return ht.call(
- s.ownerDocument || s,
- s,
- qe.SHOW_ELEMENT |
- qe.SHOW_COMMENT |
- qe.SHOW_TEXT |
- qe.SHOW_PROCESSING_INSTRUCTION |
- qe.SHOW_CDATA_SECTION,
- null
- );
- },
- Pr = function _isClobbered(s) {
- return (
- s instanceof ze &&
- ('string' != typeof s.nodeName ||
- 'string' != typeof s.textContent ||
- 'function' != typeof s.removeChild ||
- !(s.attributes instanceof $e) ||
- 'function' != typeof s.removeAttribute ||
- 'function' != typeof s.setAttribute ||
- 'string' != typeof s.namespaceURI ||
- 'function' != typeof s.insertBefore ||
- 'function' != typeof s.hasChildNodes)
- );
- },
- Mr = function _isNode(s) {
- return 'function' == typeof L && s instanceof L;
- },
- Tr = function _executeHook(s, o, i) {
- yt[s] &&
- B(yt[s], (s) => {
- s.call(DOMPurify, o, i, yr);
- });
- },
- Nr = function _sanitizeElements(s) {
- let o = null;
- if ((Tr('beforeSanitizeElements', s, null), Pr(s))) return (Or(s), !0);
- const i = gr(s.nodeName);
- if (
- (Tr('uponSanitizeElement', s, { tagName: i, allowedTags: Ot }),
- s.hasChildNodes() &&
- !Mr(s.firstElementChild) &&
- le(/<[/\w]/g, s.innerHTML) &&
- le(/<[/\w]/g, s.textContent))
- )
- return (Or(s), !0);
- if (s.nodeType === rt.progressingInstruction) return (Or(s), !0);
- if (Ft && s.nodeType === rt.comment && le(/<[/\w]/g, s.data)) return (Or(s), !0);
- if (!Ot[i] || Mt[i]) {
- if (!Mt[i] && Dr(i)) {
- if (Pt.tagNameCheck instanceof RegExp && le(Pt.tagNameCheck, i)) return !1;
- if (Pt.tagNameCheck instanceof Function && Pt.tagNameCheck(i)) return !1;
- }
- if (Gt && !Zt[i]) {
- const o = lt(s) || s.parentNode,
- i = at(s) || s.childNodes;
- if (i && o)
- for (let u = i.length - 1; u >= 0; --u) {
- const _ = et(i[u], !0);
- ((_.__removalCount = (s.__removalCount || 0) + 1),
- o.insertBefore(_, it(s)));
- }
- }
- return (Or(s), !0);
- }
- return s instanceof Re && !Cr(s)
- ? (Or(s), !0)
- : ('noscript' !== i && 'noembed' !== i && 'noframes' !== i) ||
- !le(/<\/no(script|embed|frames)/i, s.innerHTML)
- ? (Bt &&
- s.nodeType === rt.text &&
- ((o = s.textContent),
- B([vt, bt, _t], (s) => {
- o = Z(o, s, ' ');
- }),
- s.textContent !== o &&
- (V(DOMPurify.removed, { element: s.cloneNode() }),
- (s.textContent = o))),
- Tr('afterSanitizeElements', s, null),
- !1)
- : (Or(s), !0);
- },
- Rr = function _isValidAttribute(s, o, u) {
- if (Kt && ('id' === o || 'name' === o) && (u in i || u in vr)) return !1;
- if (Rt && !Tt[o] && le(Et, o));
- else if (Nt && le(wt, o));
- else if (!jt[o] || Tt[o]) {
- if (
- !(
- (Dr(s) &&
- ((Pt.tagNameCheck instanceof RegExp && le(Pt.tagNameCheck, s)) ||
- (Pt.tagNameCheck instanceof Function && Pt.tagNameCheck(s))) &&
- ((Pt.attributeNameCheck instanceof RegExp &&
- le(Pt.attributeNameCheck, o)) ||
- (Pt.attributeNameCheck instanceof Function &&
- Pt.attributeNameCheck(o)))) ||
- ('is' === o &&
- Pt.allowCustomizedBuiltInElements &&
- ((Pt.tagNameCheck instanceof RegExp && le(Pt.tagNameCheck, u)) ||
- (Pt.tagNameCheck instanceof Function && Pt.tagNameCheck(u))))
- )
- )
- return !1;
- } else if (rr[o]);
- else if (le(Ct, Z(u, xt, '')));
- else if (
- ('src' !== o && 'xlink:href' !== o && 'href' !== o) ||
- 'script' === s ||
- 0 !== ee(u, 'data:') ||
- !er[s]
- )
- if (Dt && !le(St, Z(u, xt, '')));
- else if (u) return !1;
- return !0;
- },
- Dr = function _isBasicCustomElement(s) {
- return 'annotation-xml' !== s && Y(s, kt);
- },
- Lr = function _sanitizeAttributes(s) {
- Tr('beforeSanitizeAttributes', s, null);
- const { attributes: o } = s;
- if (!o) return;
- const i = { attrName: '', attrValue: '', keepAttr: !0, allowedAttributes: jt };
- let u = o.length;
- for (; u--; ) {
- const _ = o[u],
- { name: w, namespaceURI: x, value: C } = _,
- j = gr(w);
- let L = 'value' === w ? C : ie(C);
- if (
- ((i.attrName = j),
- (i.attrValue = L),
- (i.keepAttr = !0),
- (i.forceKeepAttr = void 0),
- Tr('uponSanitizeAttribute', s, i),
- (L = i.attrValue),
- Ft && le(/((--!?|])>)|<\/(style|title)/i, L))
- ) {
- Ar(w, s);
- continue;
- }
- if (i.forceKeepAttr) continue;
- if ((Ar(w, s), !i.keepAttr)) continue;
- if (!Lt && le(/\/>/i, L)) {
- Ar(w, s);
- continue;
- }
- Bt &&
- B([vt, bt, _t], (s) => {
- L = Z(L, s, ' ');
- });
- const V = gr(s.nodeName);
- if (Rr(V, j, L)) {
- if (
- (!Ht || ('id' !== j && 'name' !== j) || (Ar(w, s), (L = Jt + L)),
- ct && 'object' == typeof Ye && 'function' == typeof Ye.getAttributeType)
- )
- if (x);
- else
- switch (Ye.getAttributeType(V, j)) {
- case 'TrustedHTML':
- L = ct.createHTML(L);
- break;
- case 'TrustedScriptURL':
- L = ct.createScriptURL(L);
- }
- try {
- (x ? s.setAttributeNS(x, w, L) : s.setAttribute(w, L),
- Pr(s) ? Or(s) : $(DOMPurify.removed));
- } catch (s) {}
- }
- }
- Tr('afterSanitizeAttributes', s, null);
- },
- Br = function _sanitizeShadowDOM(s) {
- let o = null;
- const i = Ir(s);
- for (Tr('beforeSanitizeShadowDOM', s, null); (o = i.nextNode()); )
- (Tr('uponSanitizeShadowNode', o, null),
- Nr(o) || (o.content instanceof x && _sanitizeShadowDOM(o.content), Lr(o)));
- Tr('afterSanitizeShadowDOM', s, null);
- };
- return (
- (DOMPurify.sanitize = function (s) {
- let o = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
- i = null,
- _ = null,
- w = null,
- C = null;
- if (((cr = !s), cr && (s = '\x3c!--\x3e'), 'string' != typeof s && !Mr(s))) {
- if ('function' != typeof s.toString) throw ce('toString is not a function');
- if ('string' != typeof (s = s.toString()))
- throw ce('dirty is not a string, aborting');
- }
- if (!DOMPurify.isSupported) return s;
- if (
- ($t || _r(o), (DOMPurify.removed = []), 'string' == typeof s && (Yt = !1), Yt)
- ) {
- if (s.nodeName) {
- const o = gr(s.nodeName);
- if (!Ot[o] || Mt[o])
- throw ce('root node is forbidden and cannot be sanitized in-place');
- }
- } else if (s instanceof L)
- ((i = jr('\x3c!----\x3e')),
- (_ = i.ownerDocument.importNode(s, !0)),
- (_.nodeType === rt.element && 'BODY' === _.nodeName) || 'HTML' === _.nodeName
- ? (i = _)
- : i.appendChild(_));
- else {
- if (!Ut && !Bt && !qt && -1 === s.indexOf('<'))
- return ct && Wt ? ct.createHTML(s) : s;
- if (((i = jr(s)), !i)) return Ut ? null : Wt ? ut : '';
- }
- i && Vt && Or(i.firstChild);
- const j = Ir(Yt ? s : i);
- for (; (w = j.nextNode()); )
- Nr(w) || (w.content instanceof x && Br(w.content), Lr(w));
- if (Yt) return s;
- if (Ut) {
- if (zt)
- for (C = dt.call(i.ownerDocument); i.firstChild; )
- C.appendChild(i.firstChild);
- else C = i;
- return ((jt.shadowroot || jt.shadowrootmode) && (C = gt.call(u, C, !0)), C);
- }
- let $ = qt ? i.outerHTML : i.innerHTML;
- return (
- qt &&
- Ot['!doctype'] &&
- i.ownerDocument &&
- i.ownerDocument.doctype &&
- i.ownerDocument.doctype.name &&
- le(Qe, i.ownerDocument.doctype.name) &&
- ($ = '\n' + $),
- Bt &&
- B([vt, bt, _t], (s) => {
- $ = Z($, s, ' ');
- }),
- ct && Wt ? ct.createHTML($) : $
- );
- }),
- (DOMPurify.setConfig = function () {
- (_r(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}),
- ($t = !0));
- }),
- (DOMPurify.clearConfig = function () {
- ((yr = null), ($t = !1));
- }),
- (DOMPurify.isValidAttribute = function (s, o, i) {
- yr || _r({});
- const u = gr(s),
- _ = gr(o);
- return Rr(u, _, i);
- }),
- (DOMPurify.addHook = function (s, o) {
- 'function' == typeof o && ((yt[s] = yt[s] || []), V(yt[s], o));
- }),
- (DOMPurify.removeHook = function (s) {
- if (yt[s]) return $(yt[s]);
- }),
- (DOMPurify.removeHooks = function (s) {
- yt[s] && (yt[s] = []);
- }),
- (DOMPurify.removeAllHooks = function () {
- yt = {};
- }),
- DOMPurify
- );
- }
- return createDOMPurify();
- })();
- },
- 78004: (s) => {
- 'use strict';
- class SubRange {
- constructor(s, o) {
- ((this.low = s), (this.high = o), (this.length = 1 + o - s));
- }
- overlaps(s) {
- return !(this.high < s.low || this.low > s.high);
- }
- touches(s) {
- return !(this.high + 1 < s.low || this.low - 1 > s.high);
- }
- add(s) {
- return new SubRange(Math.min(this.low, s.low), Math.max(this.high, s.high));
- }
- subtract(s) {
- return s.low <= this.low && s.high >= this.high
- ? []
- : s.low > this.low && s.high < this.high
- ? [new SubRange(this.low, s.low - 1), new SubRange(s.high + 1, this.high)]
- : s.low <= this.low
- ? [new SubRange(s.high + 1, this.high)]
- : [new SubRange(this.low, s.low - 1)];
- }
- toString() {
- return this.low == this.high ? this.low.toString() : this.low + '-' + this.high;
- }
- }
- class DRange {
- constructor(s, o) {
- ((this.ranges = []), (this.length = 0), null != s && this.add(s, o));
- }
- _update_length() {
- this.length = this.ranges.reduce((s, o) => s + o.length, 0);
- }
- add(s, o) {
- var _add = (s) => {
- for (var o = 0; o < this.ranges.length && !s.touches(this.ranges[o]); ) o++;
- for (
- var i = this.ranges.slice(0, o);
- o < this.ranges.length && s.touches(this.ranges[o]);
- )
- ((s = s.add(this.ranges[o])), o++);
- (i.push(s), (this.ranges = i.concat(this.ranges.slice(o))), this._update_length());
- };
- return (
- s instanceof DRange
- ? s.ranges.forEach(_add)
- : (null == o && (o = s), _add(new SubRange(s, o))),
- this
- );
- }
- subtract(s, o) {
- var _subtract = (s) => {
- for (var o = 0; o < this.ranges.length && !s.overlaps(this.ranges[o]); ) o++;
- for (
- var i = this.ranges.slice(0, o);
- o < this.ranges.length && s.overlaps(this.ranges[o]);
- )
- ((i = i.concat(this.ranges[o].subtract(s))), o++);
- ((this.ranges = i.concat(this.ranges.slice(o))), this._update_length());
- };
- return (
- s instanceof DRange
- ? s.ranges.forEach(_subtract)
- : (null == o && (o = s), _subtract(new SubRange(s, o))),
- this
- );
- }
- intersect(s, o) {
- var i = [],
- _intersect = (s) => {
- for (var o = 0; o < this.ranges.length && !s.overlaps(this.ranges[o]); ) o++;
- for (; o < this.ranges.length && s.overlaps(this.ranges[o]); ) {
- var u = Math.max(this.ranges[o].low, s.low),
- _ = Math.min(this.ranges[o].high, s.high);
- (i.push(new SubRange(u, _)), o++);
- }
- };
- return (
- s instanceof DRange
- ? s.ranges.forEach(_intersect)
- : (null == o && (o = s), _intersect(new SubRange(s, o))),
- (this.ranges = i),
- this._update_length(),
- this
- );
- }
- index(s) {
- for (var o = 0; o < this.ranges.length && this.ranges[o].length <= s; )
- ((s -= this.ranges[o].length), o++);
- return this.ranges[o].low + s;
- }
- toString() {
- return '[ ' + this.ranges.join(', ') + ' ]';
- }
- clone() {
- return new DRange(this);
- }
- numbers() {
- return this.ranges.reduce((s, o) => {
- for (var i = o.low; i <= o.high; ) (s.push(i), i++);
- return s;
- }, []);
- }
- subranges() {
- return this.ranges.map((s) => ({
- low: s.low,
- high: s.high,
- length: 1 + s.high - s.low
- }));
- }
- }
- s.exports = DRange;
- },
- 37007: (s) => {
- 'use strict';
- var o,
- i = 'object' == typeof Reflect ? Reflect : null,
- u =
- i && 'function' == typeof i.apply
- ? i.apply
- : function ReflectApply(s, o, i) {
- return Function.prototype.apply.call(s, o, i);
- };
- o =
- i && 'function' == typeof i.ownKeys
- ? i.ownKeys
- : Object.getOwnPropertySymbols
- ? function ReflectOwnKeys(s) {
- return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s));
- }
- : function ReflectOwnKeys(s) {
- return Object.getOwnPropertyNames(s);
- };
- var _ =
- Number.isNaN ||
- function NumberIsNaN(s) {
- return s != s;
- };
- function EventEmitter() {
- EventEmitter.init.call(this);
- }
- ((s.exports = EventEmitter),
- (s.exports.once = function once(s, o) {
- return new Promise(function (i, u) {
- function errorListener(i) {
- (s.removeListener(o, resolver), u(i));
- }
- function resolver() {
- ('function' == typeof s.removeListener &&
- s.removeListener('error', errorListener),
- i([].slice.call(arguments)));
- }
- (eventTargetAgnosticAddListener(s, o, resolver, { once: !0 }),
- 'error' !== o &&
- (function addErrorHandlerIfEventEmitter(s, o, i) {
- 'function' == typeof s.on && eventTargetAgnosticAddListener(s, 'error', o, i);
- })(s, errorListener, { once: !0 }));
- });
- }),
- (EventEmitter.EventEmitter = EventEmitter),
- (EventEmitter.prototype._events = void 0),
- (EventEmitter.prototype._eventsCount = 0),
- (EventEmitter.prototype._maxListeners = void 0));
- var w = 10;
- function checkListener(s) {
- if ('function' != typeof s)
- throw new TypeError(
- 'The "listener" argument must be of type Function. Received type ' + typeof s
- );
- }
- function _getMaxListeners(s) {
- return void 0 === s._maxListeners ? EventEmitter.defaultMaxListeners : s._maxListeners;
- }
- function _addListener(s, o, i, u) {
- var _, w, x;
- if (
- (checkListener(i),
- void 0 === (w = s._events)
- ? ((w = s._events = Object.create(null)), (s._eventsCount = 0))
- : (void 0 !== w.newListener &&
- (s.emit('newListener', o, i.listener ? i.listener : i), (w = s._events)),
- (x = w[o])),
- void 0 === x)
- )
- ((x = w[o] = i), ++s._eventsCount);
- else if (
- ('function' == typeof x
- ? (x = w[o] = u ? [i, x] : [x, i])
- : u
- ? x.unshift(i)
- : x.push(i),
- (_ = _getMaxListeners(s)) > 0 && x.length > _ && !x.warned)
- ) {
- x.warned = !0;
- var C = new Error(
- 'Possible EventEmitter memory leak detected. ' +
- x.length +
- ' ' +
- String(o) +
- ' listeners added. Use emitter.setMaxListeners() to increase limit'
- );
- ((C.name = 'MaxListenersExceededWarning'),
- (C.emitter = s),
- (C.type = o),
- (C.count = x.length),
- (function ProcessEmitWarning(s) {
- console && console.warn && console.warn(s);
- })(C));
- }
- return s;
- }
- function onceWrapper() {
- if (!this.fired)
- return (
- this.target.removeListener(this.type, this.wrapFn),
- (this.fired = !0),
- 0 === arguments.length
- ? this.listener.call(this.target)
- : this.listener.apply(this.target, arguments)
- );
- }
- function _onceWrap(s, o, i) {
- var u = { fired: !1, wrapFn: void 0, target: s, type: o, listener: i },
- _ = onceWrapper.bind(u);
- return ((_.listener = i), (u.wrapFn = _), _);
- }
- function _listeners(s, o, i) {
- var u = s._events;
- if (void 0 === u) return [];
- var _ = u[o];
- return void 0 === _
- ? []
- : 'function' == typeof _
- ? i
- ? [_.listener || _]
- : [_]
- : i
- ? (function unwrapListeners(s) {
- for (var o = new Array(s.length), i = 0; i < o.length; ++i)
- o[i] = s[i].listener || s[i];
- return o;
- })(_)
- : arrayClone(_, _.length);
- }
- function listenerCount(s) {
- var o = this._events;
- if (void 0 !== o) {
- var i = o[s];
- if ('function' == typeof i) return 1;
- if (void 0 !== i) return i.length;
- }
- return 0;
- }
- function arrayClone(s, o) {
- for (var i = new Array(o), u = 0; u < o; ++u) i[u] = s[u];
- return i;
- }
- function eventTargetAgnosticAddListener(s, o, i, u) {
- if ('function' == typeof s.on) u.once ? s.once(o, i) : s.on(o, i);
- else {
- if ('function' != typeof s.addEventListener)
- throw new TypeError(
- 'The "emitter" argument must be of type EventEmitter. Received type ' + typeof s
- );
- s.addEventListener(o, function wrapListener(_) {
- (u.once && s.removeEventListener(o, wrapListener), i(_));
- });
- }
- }
- (Object.defineProperty(EventEmitter, 'defaultMaxListeners', {
- enumerable: !0,
- get: function () {
- return w;
- },
- set: function (s) {
- if ('number' != typeof s || s < 0 || _(s))
- throw new RangeError(
- 'The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' +
- s +
- '.'
- );
- w = s;
- }
- }),
- (EventEmitter.init = function () {
- ((void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events) ||
- ((this._events = Object.create(null)), (this._eventsCount = 0)),
- (this._maxListeners = this._maxListeners || void 0));
- }),
- (EventEmitter.prototype.setMaxListeners = function setMaxListeners(s) {
- if ('number' != typeof s || s < 0 || _(s))
- throw new RangeError(
- 'The value of "n" is out of range. It must be a non-negative number. Received ' +
- s +
- '.'
- );
- return ((this._maxListeners = s), this);
- }),
- (EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
- return _getMaxListeners(this);
- }),
- (EventEmitter.prototype.emit = function emit(s) {
- for (var o = [], i = 1; i < arguments.length; i++) o.push(arguments[i]);
- var _ = 'error' === s,
- w = this._events;
- if (void 0 !== w) _ = _ && void 0 === w.error;
- else if (!_) return !1;
- if (_) {
- var x;
- if ((o.length > 0 && (x = o[0]), x instanceof Error)) throw x;
- var C = new Error('Unhandled error.' + (x ? ' (' + x.message + ')' : ''));
- throw ((C.context = x), C);
- }
- var j = w[s];
- if (void 0 === j) return !1;
- if ('function' == typeof j) u(j, this, o);
- else {
- var L = j.length,
- B = arrayClone(j, L);
- for (i = 0; i < L; ++i) u(B[i], this, o);
- }
- return !0;
- }),
- (EventEmitter.prototype.addListener = function addListener(s, o) {
- return _addListener(this, s, o, !1);
- }),
- (EventEmitter.prototype.on = EventEmitter.prototype.addListener),
- (EventEmitter.prototype.prependListener = function prependListener(s, o) {
- return _addListener(this, s, o, !0);
- }),
- (EventEmitter.prototype.once = function once(s, o) {
- return (checkListener(o), this.on(s, _onceWrap(this, s, o)), this);
- }),
- (EventEmitter.prototype.prependOnceListener = function prependOnceListener(s, o) {
- return (checkListener(o), this.prependListener(s, _onceWrap(this, s, o)), this);
- }),
- (EventEmitter.prototype.removeListener = function removeListener(s, o) {
- var i, u, _, w, x;
- if ((checkListener(o), void 0 === (u = this._events))) return this;
- if (void 0 === (i = u[s])) return this;
- if (i === o || i.listener === o)
- 0 == --this._eventsCount
- ? (this._events = Object.create(null))
- : (delete u[s],
- u.removeListener && this.emit('removeListener', s, i.listener || o));
- else if ('function' != typeof i) {
- for (_ = -1, w = i.length - 1; w >= 0; w--)
- if (i[w] === o || i[w].listener === o) {
- ((x = i[w].listener), (_ = w));
- break;
- }
- if (_ < 0) return this;
- (0 === _
- ? i.shift()
- : (function spliceOne(s, o) {
- for (; o + 1 < s.length; o++) s[o] = s[o + 1];
- s.pop();
- })(i, _),
- 1 === i.length && (u[s] = i[0]),
- void 0 !== u.removeListener && this.emit('removeListener', s, x || o));
- }
- return this;
- }),
- (EventEmitter.prototype.off = EventEmitter.prototype.removeListener),
- (EventEmitter.prototype.removeAllListeners = function removeAllListeners(s) {
- var o, i, u;
- if (void 0 === (i = this._events)) return this;
- if (void 0 === i.removeListener)
- return (
- 0 === arguments.length
- ? ((this._events = Object.create(null)), (this._eventsCount = 0))
- : void 0 !== i[s] &&
- (0 == --this._eventsCount
- ? (this._events = Object.create(null))
- : delete i[s]),
- this
- );
- if (0 === arguments.length) {
- var _,
- w = Object.keys(i);
- for (u = 0; u < w.length; ++u)
- 'removeListener' !== (_ = w[u]) && this.removeAllListeners(_);
- return (
- this.removeAllListeners('removeListener'),
- (this._events = Object.create(null)),
- (this._eventsCount = 0),
- this
- );
- }
- if ('function' == typeof (o = i[s])) this.removeListener(s, o);
- else if (void 0 !== o)
- for (u = o.length - 1; u >= 0; u--) this.removeListener(s, o[u]);
- return this;
- }),
- (EventEmitter.prototype.listeners = function listeners(s) {
- return _listeners(this, s, !0);
- }),
- (EventEmitter.prototype.rawListeners = function rawListeners(s) {
- return _listeners(this, s, !1);
- }),
- (EventEmitter.listenerCount = function (s, o) {
- return 'function' == typeof s.listenerCount
- ? s.listenerCount(o)
- : listenerCount.call(s, o);
- }),
- (EventEmitter.prototype.listenerCount = listenerCount),
- (EventEmitter.prototype.eventNames = function eventNames() {
- return this._eventsCount > 0 ? o(this._events) : [];
- }));
- },
- 85587: (s, o, i) => {
- 'use strict';
- var u = i(26311),
- _ = create(Error);
- function create(s) {
- return ((FormattedError.displayName = s.displayName || s.name), FormattedError);
- function FormattedError(o) {
- return (o && (o = u.apply(null, arguments)), new s(o));
- }
- }
- ((s.exports = _),
- (_.eval = create(EvalError)),
- (_.range = create(RangeError)),
- (_.reference = create(ReferenceError)),
- (_.syntax = create(SyntaxError)),
- (_.type = create(TypeError)),
- (_.uri = create(URIError)),
- (_.create = create));
- },
- 26311: (s) => {
- !(function () {
- var o;
- function format(s) {
- for (
- var o,
- i,
- u,
- _,
- w = 1,
- x = [].slice.call(arguments),
- C = 0,
- j = s.length,
- L = '',
- B = !1,
- $ = !1,
- nextArg = function () {
- return x[w++];
- },
- slurpNumber = function () {
- for (var i = ''; /\d/.test(s[C]); ) ((i += s[C++]), (o = s[C]));
- return i.length > 0 ? parseInt(i) : null;
- };
- C < j;
- ++C
- )
- if (((o = s[C]), B))
- switch (
- ((B = !1),
- '.' == o
- ? (($ = !1), (o = s[++C]))
- : '0' == o && '.' == s[C + 1]
- ? (($ = !0), (o = s[(C += 2)]))
- : ($ = !0),
- (_ = slurpNumber()),
- o)
- ) {
- case 'b':
- L += parseInt(nextArg(), 10).toString(2);
- break;
- case 'c':
- L +=
- 'string' == typeof (i = nextArg()) || i instanceof String
- ? i
- : String.fromCharCode(parseInt(i, 10));
- break;
- case 'd':
- L += parseInt(nextArg(), 10);
- break;
- case 'f':
- ((u = String(parseFloat(nextArg()).toFixed(_ || 6))),
- (L += $ ? u : u.replace(/^0/, '')));
- break;
- case 'j':
- L += JSON.stringify(nextArg());
- break;
- case 'o':
- L += '0' + parseInt(nextArg(), 10).toString(8);
- break;
- case 's':
- L += nextArg();
- break;
- case 'x':
- L += '0x' + parseInt(nextArg(), 10).toString(16);
- break;
- case 'X':
- L += '0x' + parseInt(nextArg(), 10).toString(16).toUpperCase();
- break;
- default:
- L += o;
- }
- else '%' === o ? (B = !0) : (L += o);
- return L;
- }
- (((o = s.exports = format).format = format),
- (o.vsprintf = function vsprintf(s, o) {
- return format.apply(null, [s].concat(o));
- }),
- 'undefined' != typeof console &&
- 'function' == typeof console.log &&
- (o.printf = function printf() {
- console.log(format.apply(null, arguments));
- }));
- })();
- },
- 45981: (s) => {
- function deepFreeze(s) {
- return (
- s instanceof Map
- ? (s.clear =
- s.delete =
- s.set =
- function () {
- throw new Error('map is read-only');
- })
- : s instanceof Set &&
- (s.add =
- s.clear =
- s.delete =
- function () {
- throw new Error('set is read-only');
- }),
- Object.freeze(s),
- Object.getOwnPropertyNames(s).forEach(function (o) {
- var i = s[o];
- 'object' != typeof i || Object.isFrozen(i) || deepFreeze(i);
- }),
- s
- );
- }
- var o = deepFreeze,
- i = deepFreeze;
- o.default = i;
- class Response {
- constructor(s) {
- (void 0 === s.data && (s.data = {}),
- (this.data = s.data),
- (this.isMatchIgnored = !1));
- }
- ignoreMatch() {
- this.isMatchIgnored = !0;
- }
- }
- function escapeHTML(s) {
- return s
- .replace(/&/g, '&')
- .replace(//g, '>')
- .replace(/"/g, '"')
- .replace(/'/g, ''');
- }
- function inherit(s, ...o) {
- const i = Object.create(null);
- for (const o in s) i[o] = s[o];
- return (
- o.forEach(function (s) {
- for (const o in s) i[o] = s[o];
- }),
- i
- );
- }
- const emitsWrappingTags = (s) => !!s.kind;
- class HTMLRenderer {
- constructor(s, o) {
- ((this.buffer = ''), (this.classPrefix = o.classPrefix), s.walk(this));
- }
- addText(s) {
- this.buffer += escapeHTML(s);
- }
- openNode(s) {
- if (!emitsWrappingTags(s)) return;
- let o = s.kind;
- (s.sublanguage || (o = `${this.classPrefix}${o}`), this.span(o));
- }
- closeNode(s) {
- emitsWrappingTags(s) && (this.buffer += '');
- }
- value() {
- return this.buffer;
- }
- span(s) {
- this.buffer += ``;
- }
- }
- class TokenTree {
- constructor() {
- ((this.rootNode = { children: [] }), (this.stack = [this.rootNode]));
- }
- get top() {
- return this.stack[this.stack.length - 1];
- }
- get root() {
- return this.rootNode;
- }
- add(s) {
- this.top.children.push(s);
- }
- openNode(s) {
- const o = { kind: s, children: [] };
- (this.add(o), this.stack.push(o));
- }
- closeNode() {
- if (this.stack.length > 1) return this.stack.pop();
- }
- closeAllNodes() {
- for (; this.closeNode(); );
- }
- toJSON() {
- return JSON.stringify(this.rootNode, null, 4);
- }
- walk(s) {
- return this.constructor._walk(s, this.rootNode);
- }
- static _walk(s, o) {
- return (
- 'string' == typeof o
- ? s.addText(o)
- : o.children &&
- (s.openNode(o), o.children.forEach((o) => this._walk(s, o)), s.closeNode(o)),
- s
- );
- }
- static _collapse(s) {
- 'string' != typeof s &&
- s.children &&
- (s.children.every((s) => 'string' == typeof s)
- ? (s.children = [s.children.join('')])
- : s.children.forEach((s) => {
- TokenTree._collapse(s);
- }));
- }
- }
- class TokenTreeEmitter extends TokenTree {
- constructor(s) {
- (super(), (this.options = s));
- }
- addKeyword(s, o) {
- '' !== s && (this.openNode(o), this.addText(s), this.closeNode());
- }
- addText(s) {
- '' !== s && this.add(s);
- }
- addSublanguage(s, o) {
- const i = s.root;
- ((i.kind = o), (i.sublanguage = !0), this.add(i));
- }
- toHTML() {
- return new HTMLRenderer(this, this.options).value();
- }
- finalize() {
- return !0;
- }
- }
- function source(s) {
- return s ? ('string' == typeof s ? s : s.source) : null;
- }
- const u = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
- const _ = '[a-zA-Z]\\w*',
- w = '[a-zA-Z_]\\w*',
- x = '\\b\\d+(\\.\\d+)?',
- C = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)',
- j = '\\b(0b[01]+)',
- L = { begin: '\\\\[\\s\\S]', relevance: 0 },
- B = { className: 'string', begin: "'", end: "'", illegal: '\\n', contains: [L] },
- $ = { className: 'string', begin: '"', end: '"', illegal: '\\n', contains: [L] },
- V = {
- begin:
- /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
- },
- COMMENT = function (s, o, i = {}) {
- const u = inherit({ className: 'comment', begin: s, end: o, contains: [] }, i);
- return (
- u.contains.push(V),
- u.contains.push({
- className: 'doctag',
- begin: '(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
- relevance: 0
- }),
- u
- );
- },
- U = COMMENT('//', '$'),
- z = COMMENT('/\\*', '\\*/'),
- Y = COMMENT('#', '$'),
- Z = { className: 'number', begin: x, relevance: 0 },
- ee = { className: 'number', begin: C, relevance: 0 },
- ie = { className: 'number', begin: j, relevance: 0 },
- ae = {
- className: 'number',
- begin:
- x +
- '(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?',
- relevance: 0
- },
- le = {
- begin: /(?=\/[^/\n]*\/)/,
- contains: [
- {
- className: 'regexp',
- begin: /\//,
- end: /\/[gimuy]*/,
- illegal: /\n/,
- contains: [L, { begin: /\[/, end: /\]/, relevance: 0, contains: [L] }]
- }
- ]
- },
- ce = { className: 'title', begin: _, relevance: 0 },
- pe = { className: 'title', begin: w, relevance: 0 },
- de = { begin: '\\.\\s*' + w, relevance: 0 };
- var fe = Object.freeze({
- __proto__: null,
- MATCH_NOTHING_RE: /\b\B/,
- IDENT_RE: _,
- UNDERSCORE_IDENT_RE: w,
- NUMBER_RE: x,
- C_NUMBER_RE: C,
- BINARY_NUMBER_RE: j,
- RE_STARTERS_RE:
- '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~',
- SHEBANG: (s = {}) => {
- const o = /^#![ ]*\//;
- return (
- s.binary &&
- (s.begin = (function concat(...s) {
- return s.map((s) => source(s)).join('');
- })(o, /.*\b/, s.binary, /\b.*/)),
- inherit(
- {
- className: 'meta',
- begin: o,
- end: /$/,
- relevance: 0,
- 'on:begin': (s, o) => {
- 0 !== s.index && o.ignoreMatch();
- }
- },
- s
- )
- );
- },
- BACKSLASH_ESCAPE: L,
- APOS_STRING_MODE: B,
- QUOTE_STRING_MODE: $,
- PHRASAL_WORDS_MODE: V,
- COMMENT,
- C_LINE_COMMENT_MODE: U,
- C_BLOCK_COMMENT_MODE: z,
- HASH_COMMENT_MODE: Y,
- NUMBER_MODE: Z,
- C_NUMBER_MODE: ee,
- BINARY_NUMBER_MODE: ie,
- CSS_NUMBER_MODE: ae,
- REGEXP_MODE: le,
- TITLE_MODE: ce,
- UNDERSCORE_TITLE_MODE: pe,
- METHOD_GUARD: de,
- END_SAME_AS_BEGIN: function (s) {
- return Object.assign(s, {
- 'on:begin': (s, o) => {
- o.data._beginMatch = s[1];
- },
- 'on:end': (s, o) => {
- o.data._beginMatch !== s[1] && o.ignoreMatch();
- }
- });
- }
- });
- function skipIfhasPrecedingDot(s, o) {
- '.' === s.input[s.index - 1] && o.ignoreMatch();
- }
- function beginKeywords(s, o) {
- o &&
- s.beginKeywords &&
- ((s.begin = '\\b(' + s.beginKeywords.split(' ').join('|') + ')(?!\\.)(?=\\b|\\s)'),
- (s.__beforeBegin = skipIfhasPrecedingDot),
- (s.keywords = s.keywords || s.beginKeywords),
- delete s.beginKeywords,
- void 0 === s.relevance && (s.relevance = 0));
- }
- function compileIllegal(s, o) {
- Array.isArray(s.illegal) &&
- (s.illegal = (function either(...s) {
- return '(' + s.map((s) => source(s)).join('|') + ')';
- })(...s.illegal));
- }
- function compileMatch(s, o) {
- if (s.match) {
- if (s.begin || s.end) throw new Error('begin & end are not supported with match');
- ((s.begin = s.match), delete s.match);
- }
- }
- function compileRelevance(s, o) {
- void 0 === s.relevance && (s.relevance = 1);
- }
- const ye = [
- 'of',
- 'and',
- 'for',
- 'in',
- 'not',
- 'or',
- 'if',
- 'then',
- 'parent',
- 'list',
- 'value'
- ];
- function compileKeywords(s, o, i = 'keyword') {
- const u = {};
- return (
- 'string' == typeof s
- ? compileList(i, s.split(' '))
- : Array.isArray(s)
- ? compileList(i, s)
- : Object.keys(s).forEach(function (i) {
- Object.assign(u, compileKeywords(s[i], o, i));
- }),
- u
- );
- function compileList(s, i) {
- (o && (i = i.map((s) => s.toLowerCase())),
- i.forEach(function (o) {
- const i = o.split('|');
- u[i[0]] = [s, scoreForKeyword(i[0], i[1])];
- }));
- }
- }
- function scoreForKeyword(s, o) {
- return o
- ? Number(o)
- : (function commonKeyword(s) {
- return ye.includes(s.toLowerCase());
- })(s)
- ? 0
- : 1;
- }
- function compileLanguage(s, { plugins: o }) {
- function langRe(o, i) {
- return new RegExp(source(o), 'm' + (s.case_insensitive ? 'i' : '') + (i ? 'g' : ''));
- }
- class MultiRegex {
- constructor() {
- ((this.matchIndexes = {}),
- (this.regexes = []),
- (this.matchAt = 1),
- (this.position = 0));
- }
- addRule(s, o) {
- ((o.position = this.position++),
- (this.matchIndexes[this.matchAt] = o),
- this.regexes.push([o, s]),
- (this.matchAt +=
- (function countMatchGroups(s) {
- return new RegExp(s.toString() + '|').exec('').length - 1;
- })(s) + 1));
- }
- compile() {
- 0 === this.regexes.length && (this.exec = () => null);
- const s = this.regexes.map((s) => s[1]);
- ((this.matcherRe = langRe(
- (function join(s, o = '|') {
- let i = 0;
- return s
- .map((s) => {
- i += 1;
- const o = i;
- let _ = source(s),
- w = '';
- for (; _.length > 0; ) {
- const s = u.exec(_);
- if (!s) {
- w += _;
- break;
- }
- ((w += _.substring(0, s.index)),
- (_ = _.substring(s.index + s[0].length)),
- '\\' === s[0][0] && s[1]
- ? (w += '\\' + String(Number(s[1]) + o))
- : ((w += s[0]), '(' === s[0] && i++));
- }
- return w;
- })
- .map((s) => `(${s})`)
- .join(o);
- })(s),
- !0
- )),
- (this.lastIndex = 0));
- }
- exec(s) {
- this.matcherRe.lastIndex = this.lastIndex;
- const o = this.matcherRe.exec(s);
- if (!o) return null;
- const i = o.findIndex((s, o) => o > 0 && void 0 !== s),
- u = this.matchIndexes[i];
- return (o.splice(0, i), Object.assign(o, u));
- }
- }
- class ResumableMultiRegex {
- constructor() {
- ((this.rules = []),
- (this.multiRegexes = []),
- (this.count = 0),
- (this.lastIndex = 0),
- (this.regexIndex = 0));
- }
- getMatcher(s) {
- if (this.multiRegexes[s]) return this.multiRegexes[s];
- const o = new MultiRegex();
- return (
- this.rules.slice(s).forEach(([s, i]) => o.addRule(s, i)),
- o.compile(),
- (this.multiRegexes[s] = o),
- o
- );
- }
- resumingScanAtSamePosition() {
- return 0 !== this.regexIndex;
- }
- considerAll() {
- this.regexIndex = 0;
- }
- addRule(s, o) {
- (this.rules.push([s, o]), 'begin' === o.type && this.count++);
- }
- exec(s) {
- const o = this.getMatcher(this.regexIndex);
- o.lastIndex = this.lastIndex;
- let i = o.exec(s);
- if (this.resumingScanAtSamePosition())
- if (i && i.index === this.lastIndex);
- else {
- const o = this.getMatcher(0);
- ((o.lastIndex = this.lastIndex + 1), (i = o.exec(s)));
- }
- return (
- i &&
- ((this.regexIndex += i.position + 1),
- this.regexIndex === this.count && this.considerAll()),
- i
- );
- }
- }
- if (
- (s.compilerExtensions || (s.compilerExtensions = []),
- s.contains && s.contains.includes('self'))
- )
- throw new Error(
- 'ERR: contains `self` is not supported at the top-level of a language. See documentation.'
- );
- return (
- (s.classNameAliases = inherit(s.classNameAliases || {})),
- (function compileMode(o, i) {
- const u = o;
- if (o.isCompiled) return u;
- ([compileMatch].forEach((s) => s(o, i)),
- s.compilerExtensions.forEach((s) => s(o, i)),
- (o.__beforeBegin = null),
- [beginKeywords, compileIllegal, compileRelevance].forEach((s) => s(o, i)),
- (o.isCompiled = !0));
- let _ = null;
- if (
- ('object' == typeof o.keywords &&
- ((_ = o.keywords.$pattern), delete o.keywords.$pattern),
- o.keywords && (o.keywords = compileKeywords(o.keywords, s.case_insensitive)),
- o.lexemes && _)
- )
- throw new Error(
- 'ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) '
- );
- return (
- (_ = _ || o.lexemes || /\w+/),
- (u.keywordPatternRe = langRe(_, !0)),
- i &&
- (o.begin || (o.begin = /\B|\b/),
- (u.beginRe = langRe(o.begin)),
- o.endSameAsBegin && (o.end = o.begin),
- o.end || o.endsWithParent || (o.end = /\B|\b/),
- o.end && (u.endRe = langRe(o.end)),
- (u.terminatorEnd = source(o.end) || ''),
- o.endsWithParent &&
- i.terminatorEnd &&
- (u.terminatorEnd += (o.end ? '|' : '') + i.terminatorEnd)),
- o.illegal && (u.illegalRe = langRe(o.illegal)),
- o.contains || (o.contains = []),
- (o.contains = [].concat(
- ...o.contains.map(function (s) {
- return (function expandOrCloneMode(s) {
- s.variants &&
- !s.cachedVariants &&
- (s.cachedVariants = s.variants.map(function (o) {
- return inherit(s, { variants: null }, o);
- }));
- if (s.cachedVariants) return s.cachedVariants;
- if (dependencyOnParent(s))
- return inherit(s, { starts: s.starts ? inherit(s.starts) : null });
- if (Object.isFrozen(s)) return inherit(s);
- return s;
- })('self' === s ? o : s);
- })
- )),
- o.contains.forEach(function (s) {
- compileMode(s, u);
- }),
- o.starts && compileMode(o.starts, i),
- (u.matcher = (function buildModeRegex(s) {
- const o = new ResumableMultiRegex();
- return (
- s.contains.forEach((s) => o.addRule(s.begin, { rule: s, type: 'begin' })),
- s.terminatorEnd && o.addRule(s.terminatorEnd, { type: 'end' }),
- s.illegal && o.addRule(s.illegal, { type: 'illegal' }),
- o
- );
- })(u)),
- u
- );
- })(s)
- );
- }
- function dependencyOnParent(s) {
- return !!s && (s.endsWithParent || dependencyOnParent(s.starts));
- }
- function BuildVuePlugin(s) {
- const o = {
- props: ['language', 'code', 'autodetect'],
- data: function () {
- return { detectedLanguage: '', unknownLanguage: !1 };
- },
- computed: {
- className() {
- return this.unknownLanguage ? '' : 'hljs ' + this.detectedLanguage;
- },
- highlighted() {
- if (!this.autoDetect && !s.getLanguage(this.language))
- return (
- console.warn(
- `The language "${this.language}" you specified could not be found.`
- ),
- (this.unknownLanguage = !0),
- escapeHTML(this.code)
- );
- let o = {};
- return (
- this.autoDetect
- ? ((o = s.highlightAuto(this.code)), (this.detectedLanguage = o.language))
- : ((o = s.highlight(this.language, this.code, this.ignoreIllegals)),
- (this.detectedLanguage = this.language)),
- o.value
- );
- },
- autoDetect() {
- return (
- !this.language ||
- (function hasValueOrEmptyAttribute(s) {
- return Boolean(s || '' === s);
- })(this.autodetect)
- );
- },
- ignoreIllegals: () => !0
- },
- render(s) {
- return s('pre', {}, [
- s('code', { class: this.className, domProps: { innerHTML: this.highlighted } })
- ]);
- }
- };
- return {
- Component: o,
- VuePlugin: {
- install(s) {
- s.component('highlightjs', o);
- }
- }
- };
- }
- const be = {
- 'after:highlightElement': ({ el: s, result: o, text: i }) => {
- const u = nodeStream(s);
- if (!u.length) return;
- const _ = document.createElement('div');
- ((_.innerHTML = o.value),
- (o.value = (function mergeStreams(s, o, i) {
- let u = 0,
- _ = '';
- const w = [];
- function selectStream() {
- return s.length && o.length
- ? s[0].offset !== o[0].offset
- ? s[0].offset < o[0].offset
- ? s
- : o
- : 'start' === o[0].event
- ? s
- : o
- : s.length
- ? s
- : o;
- }
- function open(s) {
- function attributeString(s) {
- return ' ' + s.nodeName + '="' + escapeHTML(s.value) + '"';
- }
- _ += '<' + tag(s) + [].map.call(s.attributes, attributeString).join('') + '>';
- }
- function close(s) {
- _ += '' + tag(s) + '>';
- }
- function render(s) {
- ('start' === s.event ? open : close)(s.node);
- }
- for (; s.length || o.length; ) {
- let o = selectStream();
- if (
- ((_ += escapeHTML(i.substring(u, o[0].offset))), (u = o[0].offset), o === s)
- ) {
- w.reverse().forEach(close);
- do {
- (render(o.splice(0, 1)[0]), (o = selectStream()));
- } while (o === s && o.length && o[0].offset === u);
- w.reverse().forEach(open);
- } else
- ('start' === o[0].event ? w.push(o[0].node) : w.pop(),
- render(o.splice(0, 1)[0]));
- }
- return _ + escapeHTML(i.substr(u));
- })(u, nodeStream(_), i)));
- }
- };
- function tag(s) {
- return s.nodeName.toLowerCase();
- }
- function nodeStream(s) {
- const o = [];
- return (
- (function _nodeStream(s, i) {
- for (let u = s.firstChild; u; u = u.nextSibling)
- 3 === u.nodeType
- ? (i += u.nodeValue.length)
- : 1 === u.nodeType &&
- (o.push({ event: 'start', offset: i, node: u }),
- (i = _nodeStream(u, i)),
- tag(u).match(/br|hr|img|input/) ||
- o.push({ event: 'stop', offset: i, node: u }));
- return i;
- })(s, 0),
- o
- );
- }
- const _e = {},
- error = (s) => {
- console.error(s);
- },
- warn = (s, ...o) => {
- console.log(`WARN: ${s}`, ...o);
- },
- deprecated = (s, o) => {
- _e[`${s}/${o}`] ||
- (console.log(`Deprecated as of ${s}. ${o}`), (_e[`${s}/${o}`] = !0));
- },
- we = escapeHTML,
- Se = inherit,
- xe = Symbol('nomatch');
- var Pe = (function (s) {
- const i = Object.create(null),
- u = Object.create(null),
- _ = [];
- let w = !0;
- const x = /(^(<[^>]+>|\t|)+|\n)/gm,
- C =
- "Could not find the language '{}', did you forget to load/include a language module?",
- j = { disableAutodetect: !0, name: 'Plain text', contains: [] };
- let L = {
- noHighlightRe: /^(no-?highlight)$/i,
- languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
- classPrefix: 'hljs-',
- tabReplace: null,
- useBR: !1,
- languages: null,
- __emitter: TokenTreeEmitter
- };
- function shouldNotHighlight(s) {
- return L.noHighlightRe.test(s);
- }
- function highlight(s, o, i, u) {
- let _ = '',
- w = '';
- 'object' == typeof o
- ? ((_ = s), (i = o.ignoreIllegals), (w = o.language), (u = void 0))
- : (deprecated('10.7.0', 'highlight(lang, code, ...args) has been deprecated.'),
- deprecated(
- '10.7.0',
- 'Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277'
- ),
- (w = s),
- (_ = o));
- const x = { code: _, language: w };
- fire('before:highlight', x);
- const C = x.result ? x.result : _highlight(x.language, x.code, i, u);
- return ((C.code = x.code), fire('after:highlight', C), C);
- }
- function _highlight(s, o, u, x) {
- function keywordData(s, o) {
- const i = B.case_insensitive ? o[0].toLowerCase() : o[0];
- return Object.prototype.hasOwnProperty.call(s.keywords, i) && s.keywords[i];
- }
- function processBuffer() {
- (null != U.subLanguage
- ? (function processSubLanguage() {
- if ('' === Z) return;
- let s = null;
- if ('string' == typeof U.subLanguage) {
- if (!i[U.subLanguage]) return void Y.addText(Z);
- ((s = _highlight(U.subLanguage, Z, !0, z[U.subLanguage])),
- (z[U.subLanguage] = s.top));
- } else s = highlightAuto(Z, U.subLanguage.length ? U.subLanguage : null);
- (U.relevance > 0 && (ee += s.relevance),
- Y.addSublanguage(s.emitter, s.language));
- })()
- : (function processKeywords() {
- if (!U.keywords) return void Y.addText(Z);
- let s = 0;
- U.keywordPatternRe.lastIndex = 0;
- let o = U.keywordPatternRe.exec(Z),
- i = '';
- for (; o; ) {
- i += Z.substring(s, o.index);
- const u = keywordData(U, o);
- if (u) {
- const [s, _] = u;
- if ((Y.addText(i), (i = ''), (ee += _), s.startsWith('_'))) i += o[0];
- else {
- const i = B.classNameAliases[s] || s;
- Y.addKeyword(o[0], i);
- }
- } else i += o[0];
- ((s = U.keywordPatternRe.lastIndex), (o = U.keywordPatternRe.exec(Z)));
- }
- ((i += Z.substr(s)), Y.addText(i));
- })(),
- (Z = ''));
- }
- function startNewMode(s) {
- return (
- s.className && Y.openNode(B.classNameAliases[s.className] || s.className),
- (U = Object.create(s, { parent: { value: U } })),
- U
- );
- }
- function endOfMode(s, o, i) {
- let u = (function startsWith(s, o) {
- const i = s && s.exec(o);
- return i && 0 === i.index;
- })(s.endRe, i);
- if (u) {
- if (s['on:end']) {
- const i = new Response(s);
- (s['on:end'](o, i), i.isMatchIgnored && (u = !1));
- }
- if (u) {
- for (; s.endsParent && s.parent; ) s = s.parent;
- return s;
- }
- }
- if (s.endsWithParent) return endOfMode(s.parent, o, i);
- }
- function doIgnore(s) {
- return 0 === U.matcher.regexIndex ? ((Z += s[0]), 1) : ((le = !0), 0);
- }
- function doBeginMatch(s) {
- const o = s[0],
- i = s.rule,
- u = new Response(i),
- _ = [i.__beforeBegin, i['on:begin']];
- for (const i of _) if (i && (i(s, u), u.isMatchIgnored)) return doIgnore(o);
- return (
- i &&
- i.endSameAsBegin &&
- (i.endRe = (function escape(s) {
- return new RegExp(s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'm');
- })(o)),
- i.skip
- ? (Z += o)
- : (i.excludeBegin && (Z += o),
- processBuffer(),
- i.returnBegin || i.excludeBegin || (Z = o)),
- startNewMode(i),
- i.returnBegin ? 0 : o.length
- );
- }
- function doEndMatch(s) {
- const i = s[0],
- u = o.substr(s.index),
- _ = endOfMode(U, s, u);
- if (!_) return xe;
- const w = U;
- w.skip
- ? (Z += i)
- : (w.returnEnd || w.excludeEnd || (Z += i),
- processBuffer(),
- w.excludeEnd && (Z = i));
- do {
- (U.className && Y.closeNode(),
- U.skip || U.subLanguage || (ee += U.relevance),
- (U = U.parent));
- } while (U !== _.parent);
- return (
- _.starts &&
- (_.endSameAsBegin && (_.starts.endRe = _.endRe), startNewMode(_.starts)),
- w.returnEnd ? 0 : i.length
- );
- }
- let j = {};
- function processLexeme(i, _) {
- const x = _ && _[0];
- if (((Z += i), null == x)) return (processBuffer(), 0);
- if ('begin' === j.type && 'end' === _.type && j.index === _.index && '' === x) {
- if (((Z += o.slice(_.index, _.index + 1)), !w)) {
- const o = new Error('0 width match regex');
- throw ((o.languageName = s), (o.badRule = j.rule), o);
- }
- return 1;
- }
- if (((j = _), 'begin' === _.type)) return doBeginMatch(_);
- if ('illegal' === _.type && !u) {
- const s = new Error(
- 'Illegal lexeme "' + x + '" for mode "' + (U.className || '') + '"'
- );
- throw ((s.mode = U), s);
- }
- if ('end' === _.type) {
- const s = doEndMatch(_);
- if (s !== xe) return s;
- }
- if ('illegal' === _.type && '' === x) return 1;
- if (ae > 1e5 && ae > 3 * _.index) {
- throw new Error('potential infinite loop, way more iterations than matches');
- }
- return ((Z += x), x.length);
- }
- const B = getLanguage(s);
- if (!B) throw (error(C.replace('{}', s)), new Error('Unknown language: "' + s + '"'));
- const $ = compileLanguage(B, { plugins: _ });
- let V = '',
- U = x || $;
- const z = {},
- Y = new L.__emitter(L);
- !(function processContinuations() {
- const s = [];
- for (let o = U; o !== B; o = o.parent) o.className && s.unshift(o.className);
- s.forEach((s) => Y.openNode(s));
- })();
- let Z = '',
- ee = 0,
- ie = 0,
- ae = 0,
- le = !1;
- try {
- for (U.matcher.considerAll(); ; ) {
- (ae++, le ? (le = !1) : U.matcher.considerAll(), (U.matcher.lastIndex = ie));
- const s = U.matcher.exec(o);
- if (!s) break;
- const i = processLexeme(o.substring(ie, s.index), s);
- ie = s.index + i;
- }
- return (
- processLexeme(o.substr(ie)),
- Y.closeAllNodes(),
- Y.finalize(),
- (V = Y.toHTML()),
- {
- relevance: Math.floor(ee),
- value: V,
- language: s,
- illegal: !1,
- emitter: Y,
- top: U
- }
- );
- } catch (i) {
- if (i.message && i.message.includes('Illegal'))
- return {
- illegal: !0,
- illegalBy: {
- msg: i.message,
- context: o.slice(ie - 100, ie + 100),
- mode: i.mode
- },
- sofar: V,
- relevance: 0,
- value: we(o),
- emitter: Y
- };
- if (w)
- return {
- illegal: !1,
- relevance: 0,
- value: we(o),
- emitter: Y,
- language: s,
- top: U,
- errorRaised: i
- };
- throw i;
- }
- }
- function highlightAuto(s, o) {
- o = o || L.languages || Object.keys(i);
- const u = (function justTextHighlightResult(s) {
- const o = {
- relevance: 0,
- emitter: new L.__emitter(L),
- value: we(s),
- illegal: !1,
- top: j
- };
- return (o.emitter.addText(s), o);
- })(s),
- _ = o
- .filter(getLanguage)
- .filter(autoDetection)
- .map((o) => _highlight(o, s, !1));
- _.unshift(u);
- const w = _.sort((s, o) => {
- if (s.relevance !== o.relevance) return o.relevance - s.relevance;
- if (s.language && o.language) {
- if (getLanguage(s.language).supersetOf === o.language) return 1;
- if (getLanguage(o.language).supersetOf === s.language) return -1;
- }
- return 0;
- }),
- [x, C] = w,
- B = x;
- return ((B.second_best = C), B);
- }
- const B = {
- 'before:highlightElement': ({ el: s }) => {
- L.useBR &&
- (s.innerHTML = s.innerHTML.replace(/\n/g, '').replace(/
/g, '\n'));
- },
- 'after:highlightElement': ({ result: s }) => {
- L.useBR && (s.value = s.value.replace(/\n/g, '
'));
- }
- },
- $ = /^(<[^>]+>|\t)+/gm,
- V = {
- 'after:highlightElement': ({ result: s }) => {
- L.tabReplace &&
- (s.value = s.value.replace($, (s) => s.replace(/\t/g, L.tabReplace)));
- }
- };
- function highlightElement(s) {
- let o = null;
- const i = (function blockLanguage(s) {
- let o = s.className + ' ';
- o += s.parentNode ? s.parentNode.className : '';
- const i = L.languageDetectRe.exec(o);
- if (i) {
- const o = getLanguage(i[1]);
- return (
- o ||
- (warn(C.replace('{}', i[1])),
- warn('Falling back to no-highlight mode for this block.', s)),
- o ? i[1] : 'no-highlight'
- );
- }
- return o.split(/\s+/).find((s) => shouldNotHighlight(s) || getLanguage(s));
- })(s);
- if (shouldNotHighlight(i)) return;
- (fire('before:highlightElement', { el: s, language: i }), (o = s));
- const _ = o.textContent,
- w = i ? highlight(_, { language: i, ignoreIllegals: !0 }) : highlightAuto(_);
- (fire('after:highlightElement', { el: s, result: w, text: _ }),
- (s.innerHTML = w.value),
- (function updateClassName(s, o, i) {
- const _ = o ? u[o] : i;
- (s.classList.add('hljs'), _ && s.classList.add(_));
- })(s, i, w.language),
- (s.result = { language: w.language, re: w.relevance, relavance: w.relevance }),
- w.second_best &&
- (s.second_best = {
- language: w.second_best.language,
- re: w.second_best.relevance,
- relavance: w.second_best.relevance
- }));
- }
- const initHighlighting = () => {
- if (initHighlighting.called) return;
- ((initHighlighting.called = !0),
- deprecated(
- '10.6.0',
- 'initHighlighting() is deprecated. Use highlightAll() instead.'
- ));
- document.querySelectorAll('pre code').forEach(highlightElement);
- };
- let U = !1;
- function highlightAll() {
- if ('loading' === document.readyState) return void (U = !0);
- document.querySelectorAll('pre code').forEach(highlightElement);
- }
- function getLanguage(s) {
- return ((s = (s || '').toLowerCase()), i[s] || i[u[s]]);
- }
- function registerAliases(s, { languageName: o }) {
- ('string' == typeof s && (s = [s]),
- s.forEach((s) => {
- u[s.toLowerCase()] = o;
- }));
- }
- function autoDetection(s) {
- const o = getLanguage(s);
- return o && !o.disableAutodetect;
- }
- function fire(s, o) {
- const i = s;
- _.forEach(function (s) {
- s[i] && s[i](o);
- });
- }
- ('undefined' != typeof window &&
- window.addEventListener &&
- window.addEventListener(
- 'DOMContentLoaded',
- function boot() {
- U && highlightAll();
- },
- !1
- ),
- Object.assign(s, {
- highlight,
- highlightAuto,
- highlightAll,
- fixMarkup: function deprecateFixMarkup(s) {
- return (
- deprecated('10.2.0', 'fixMarkup will be removed entirely in v11.0'),
- deprecated(
- '10.2.0',
- 'Please see https://github.com/highlightjs/highlight.js/issues/2534'
- ),
- (function fixMarkup(s) {
- return L.tabReplace || L.useBR
- ? s.replace(x, (s) =>
- '\n' === s
- ? L.useBR
- ? '
'
- : s
- : L.tabReplace
- ? s.replace(/\t/g, L.tabReplace)
- : s
- )
- : s;
- })(s)
- );
- },
- highlightElement,
- highlightBlock: function deprecateHighlightBlock(s) {
- return (
- deprecated('10.7.0', 'highlightBlock will be removed entirely in v12.0'),
- deprecated('10.7.0', 'Please use highlightElement now.'),
- highlightElement(s)
- );
- },
- configure: function configure(s) {
- (s.useBR &&
- (deprecated('10.3.0', "'useBR' will be removed entirely in v11.0"),
- deprecated(
- '10.3.0',
- 'Please see https://github.com/highlightjs/highlight.js/issues/2559'
- )),
- (L = Se(L, s)));
- },
- initHighlighting,
- initHighlightingOnLoad: function initHighlightingOnLoad() {
- (deprecated(
- '10.6.0',
- 'initHighlightingOnLoad() is deprecated. Use highlightAll() instead.'
- ),
- (U = !0));
- },
- registerLanguage: function registerLanguage(o, u) {
- let _ = null;
- try {
- _ = u(s);
- } catch (s) {
- if (
- (error(
- "Language definition for '{}' could not be registered.".replace('{}', o)
- ),
- !w)
- )
- throw s;
- (error(s), (_ = j));
- }
- (_.name || (_.name = o),
- (i[o] = _),
- (_.rawDefinition = u.bind(null, s)),
- _.aliases && registerAliases(_.aliases, { languageName: o }));
- },
- unregisterLanguage: function unregisterLanguage(s) {
- delete i[s];
- for (const o of Object.keys(u)) u[o] === s && delete u[o];
- },
- listLanguages: function listLanguages() {
- return Object.keys(i);
- },
- getLanguage,
- registerAliases,
- requireLanguage: function requireLanguage(s) {
- (deprecated('10.4.0', 'requireLanguage will be removed entirely in v11.'),
- deprecated(
- '10.4.0',
- 'Please see https://github.com/highlightjs/highlight.js/pull/2844'
- ));
- const o = getLanguage(s);
- if (o) return o;
- throw new Error(
- "The '{}' language is required, but not loaded.".replace('{}', s)
- );
- },
- autoDetection,
- inherit: Se,
- addPlugin: function addPlugin(s) {
- (!(function upgradePluginAPI(s) {
- (s['before:highlightBlock'] &&
- !s['before:highlightElement'] &&
- (s['before:highlightElement'] = (o) => {
- s['before:highlightBlock'](Object.assign({ block: o.el }, o));
- }),
- s['after:highlightBlock'] &&
- !s['after:highlightElement'] &&
- (s['after:highlightElement'] = (o) => {
- s['after:highlightBlock'](Object.assign({ block: o.el }, o));
- }));
- })(s),
- _.push(s));
- },
- vuePlugin: BuildVuePlugin(s).VuePlugin
- }),
- (s.debugMode = function () {
- w = !1;
- }),
- (s.safeMode = function () {
- w = !0;
- }),
- (s.versionString = '10.7.3'));
- for (const s in fe) 'object' == typeof fe[s] && o(fe[s]);
- return (Object.assign(s, fe), s.addPlugin(B), s.addPlugin(be), s.addPlugin(V), s);
- })({});
- s.exports = Pe;
- },
- 35344: (s) => {
- function concat(...s) {
- return s
- .map((s) =>
- (function source(s) {
- return s ? ('string' == typeof s ? s : s.source) : null;
- })(s)
- )
- .join('');
- }
- s.exports = function bash(s) {
- const o = {},
- i = { begin: /\$\{/, end: /\}/, contains: ['self', { begin: /:-/, contains: [o] }] };
- Object.assign(o, {
- className: 'variable',
- variants: [{ begin: concat(/\$[\w\d#@][\w\d_]*/, '(?![\\w\\d])(?![$])') }, i]
- });
- const u = {
- className: 'subst',
- begin: /\$\(/,
- end: /\)/,
- contains: [s.BACKSLASH_ESCAPE]
- },
- _ = {
- begin: /<<-?\s*(?=\w+)/,
- starts: {
- contains: [
- s.END_SAME_AS_BEGIN({ begin: /(\w+)/, end: /(\w+)/, className: 'string' })
- ]
- }
- },
- w = {
- className: 'string',
- begin: /"/,
- end: /"/,
- contains: [s.BACKSLASH_ESCAPE, o, u]
- };
- u.contains.push(w);
- const x = {
- begin: /\$\(\(/,
- end: /\)\)/,
- contains: [{ begin: /\d+#[0-9a-f]+/, className: 'number' }, s.NUMBER_MODE, o]
- },
- C = s.SHEBANG({
- binary: `(${['fish', 'bash', 'zsh', 'sh', 'csh', 'ksh', 'tcsh', 'dash', 'scsh'].join('|')})`,
- relevance: 10
- }),
- j = {
- className: 'function',
- begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
- returnBegin: !0,
- contains: [s.inherit(s.TITLE_MODE, { begin: /\w[\w\d_]*/ })],
- relevance: 0
- };
- return {
- name: 'Bash',
- aliases: ['sh', 'zsh'],
- keywords: {
- $pattern: /\b[a-z._-]+\b/,
- keyword: 'if then else elif fi for while in do done case esac function',
- literal: 'true false',
- built_in:
- 'break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp'
- },
- contains: [
- C,
- s.SHEBANG(),
- j,
- x,
- s.HASH_COMMENT_MODE,
- _,
- w,
- { className: '', begin: /\\"/ },
- { className: 'string', begin: /'/, end: /'/ },
- o
- ]
- };
- };
- },
- 73402: (s) => {
- function concat(...s) {
- return s
- .map((s) =>
- (function source(s) {
- return s ? ('string' == typeof s ? s : s.source) : null;
- })(s)
- )
- .join('');
- }
- s.exports = function http(s) {
- const o = 'HTTP/(2|1\\.[01])',
- i = {
- className: 'attribute',
- begin: concat('^', /[A-Za-z][A-Za-z0-9-]*/, '(?=\\:\\s)'),
- starts: {
- contains: [
- {
- className: 'punctuation',
- begin: /: /,
- relevance: 0,
- starts: { end: '$', relevance: 0 }
- }
- ]
- }
- },
- u = [i, { begin: '\\n\\n', starts: { subLanguage: [], endsWithParent: !0 } }];
- return {
- name: 'HTTP',
- aliases: ['https'],
- illegal: /\S/,
- contains: [
- {
- begin: '^(?=' + o + ' \\d{3})',
- end: /$/,
- contains: [
- { className: 'meta', begin: o },
- { className: 'number', begin: '\\b\\d{3}\\b' }
- ],
- starts: { end: /\b\B/, illegal: /\S/, contains: u }
- },
- {
- begin: '(?=^[A-Z]+ (.*?) ' + o + '$)',
- end: /$/,
- contains: [
- { className: 'string', begin: ' ', end: ' ', excludeBegin: !0, excludeEnd: !0 },
- { className: 'meta', begin: o },
- { className: 'keyword', begin: '[A-Z]+' }
- ],
- starts: { end: /\b\B/, illegal: /\S/, contains: u }
- },
- s.inherit(i, { relevance: 0 })
- ]
- };
- };
- },
- 95089: (s) => {
- const o = '[A-Za-z$_][0-9A-Za-z$_]*',
- i = [
- 'as',
- 'in',
- 'of',
- 'if',
- 'for',
- 'while',
- 'finally',
- 'var',
- 'new',
- 'function',
- 'do',
- 'return',
- 'void',
- 'else',
- 'break',
- 'catch',
- 'instanceof',
- 'with',
- 'throw',
- 'case',
- 'default',
- 'try',
- 'switch',
- 'continue',
- 'typeof',
- 'delete',
- 'let',
- 'yield',
- 'const',
- 'class',
- 'debugger',
- 'async',
- 'await',
- 'static',
- 'import',
- 'from',
- 'export',
- 'extends'
- ],
- u = ['true', 'false', 'null', 'undefined', 'NaN', 'Infinity'],
- _ = [].concat(
- [
- 'setInterval',
- 'setTimeout',
- 'clearInterval',
- 'clearTimeout',
- 'require',
- 'exports',
- 'eval',
- 'isFinite',
- 'isNaN',
- 'parseFloat',
- 'parseInt',
- 'decodeURI',
- 'decodeURIComponent',
- 'encodeURI',
- 'encodeURIComponent',
- 'escape',
- 'unescape'
- ],
- [
- 'arguments',
- 'this',
- 'super',
- 'console',
- 'window',
- 'document',
- 'localStorage',
- 'module',
- 'global'
- ],
- [
- 'Intl',
- 'DataView',
- 'Number',
- 'Math',
- 'Date',
- 'String',
- 'RegExp',
- 'Object',
- 'Function',
- 'Boolean',
- 'Error',
- 'Symbol',
- 'Set',
- 'Map',
- 'WeakSet',
- 'WeakMap',
- 'Proxy',
- 'Reflect',
- 'JSON',
- 'Promise',
- 'Float64Array',
- 'Int16Array',
- 'Int32Array',
- 'Int8Array',
- 'Uint16Array',
- 'Uint32Array',
- 'Float32Array',
- 'Array',
- 'Uint8Array',
- 'Uint8ClampedArray',
- 'ArrayBuffer',
- 'BigInt64Array',
- 'BigUint64Array',
- 'BigInt'
- ],
- [
- 'EvalError',
- 'InternalError',
- 'RangeError',
- 'ReferenceError',
- 'SyntaxError',
- 'TypeError',
- 'URIError'
- ]
- );
- function lookahead(s) {
- return concat('(?=', s, ')');
- }
- function concat(...s) {
- return s
- .map((s) =>
- (function source(s) {
- return s ? ('string' == typeof s ? s : s.source) : null;
- })(s)
- )
- .join('');
- }
- s.exports = function javascript(s) {
- const w = o,
- x = '<>',
- C = '>',
- j = {
- begin: /<[A-Za-z0-9\\._:-]+/,
- end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
- isTrulyOpeningTag: (s, o) => {
- const i = s[0].length + s.index,
- u = s.input[i];
- '<' !== u
- ? '>' === u &&
- (((s, { after: o }) => {
- const i = '' + s[0].slice(1);
- return -1 !== s.input.indexOf(i, o);
- })(s, { after: i }) ||
- o.ignoreMatch())
- : o.ignoreMatch();
- }
- },
- L = { $pattern: o, keyword: i, literal: u, built_in: _ },
- B = '[0-9](_?[0-9])*',
- $ = `\\.(${B})`,
- V = '0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*',
- U = {
- className: 'number',
- variants: [
- { begin: `(\\b(${V})((${$})|\\.)?|(${$}))[eE][+-]?(${B})\\b` },
- { begin: `\\b(${V})\\b((${$})\\b|\\.)?|(${$})\\b` },
- { begin: '\\b(0|[1-9](_?[0-9])*)n\\b' },
- { begin: '\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b' },
- { begin: '\\b0[bB][0-1](_?[0-1])*n?\\b' },
- { begin: '\\b0[oO][0-7](_?[0-7])*n?\\b' },
- { begin: '\\b0[0-7]+n?\\b' }
- ],
- relevance: 0
- },
- z = { className: 'subst', begin: '\\$\\{', end: '\\}', keywords: L, contains: [] },
- Y = {
- begin: 'html`',
- end: '',
- starts: {
- end: '`',
- returnEnd: !1,
- contains: [s.BACKSLASH_ESCAPE, z],
- subLanguage: 'xml'
- }
- },
- Z = {
- begin: 'css`',
- end: '',
- starts: {
- end: '`',
- returnEnd: !1,
- contains: [s.BACKSLASH_ESCAPE, z],
- subLanguage: 'css'
- }
- },
- ee = { className: 'string', begin: '`', end: '`', contains: [s.BACKSLASH_ESCAPE, z] },
- ie = {
- className: 'comment',
- variants: [
- s.COMMENT(/\/\*\*(?!\/)/, '\\*/', {
- relevance: 0,
- contains: [
- {
- className: 'doctag',
- begin: '@[A-Za-z]+',
- contains: [
- { className: 'type', begin: '\\{', end: '\\}', relevance: 0 },
- {
- className: 'variable',
- begin: w + '(?=\\s*(-)|$)',
- endsParent: !0,
- relevance: 0
- },
- { begin: /(?=[^\n])\s/, relevance: 0 }
- ]
- }
- ]
- }),
- s.C_BLOCK_COMMENT_MODE,
- s.C_LINE_COMMENT_MODE
- ]
- },
- ae = [s.APOS_STRING_MODE, s.QUOTE_STRING_MODE, Y, Z, ee, U, s.REGEXP_MODE];
- z.contains = ae.concat({
- begin: /\{/,
- end: /\}/,
- keywords: L,
- contains: ['self'].concat(ae)
- });
- const le = [].concat(ie, z.contains),
- ce = le.concat([
- { begin: /\(/, end: /\)/, keywords: L, contains: ['self'].concat(le) }
- ]),
- pe = {
- className: 'params',
- begin: /\(/,
- end: /\)/,
- excludeBegin: !0,
- excludeEnd: !0,
- keywords: L,
- contains: ce
- };
- return {
- name: 'Javascript',
- aliases: ['js', 'jsx', 'mjs', 'cjs'],
- keywords: L,
- exports: { PARAMS_CONTAINS: ce },
- illegal: /#(?![$_A-z])/,
- contains: [
- s.SHEBANG({ label: 'shebang', binary: 'node', relevance: 5 }),
- {
- label: 'use_strict',
- className: 'meta',
- relevance: 10,
- begin: /^\s*['"]use (strict|asm)['"]/
- },
- s.APOS_STRING_MODE,
- s.QUOTE_STRING_MODE,
- Y,
- Z,
- ee,
- ie,
- U,
- {
- begin: concat(
- /[{,\n]\s*/,
- lookahead(concat(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/, w + '\\s*:'))
- ),
- relevance: 0,
- contains: [{ className: 'attr', begin: w + lookahead('\\s*:'), relevance: 0 }]
- },
- {
- begin: '(' + s.RE_STARTERS_RE + '|\\b(case|return|throw)\\b)\\s*',
- keywords: 'return throw case',
- contains: [
- ie,
- s.REGEXP_MODE,
- {
- className: 'function',
- begin:
- '(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|' +
- s.UNDERSCORE_IDENT_RE +
- ')\\s*=>',
- returnBegin: !0,
- end: '\\s*=>',
- contains: [
- {
- className: 'params',
- variants: [
- { begin: s.UNDERSCORE_IDENT_RE, relevance: 0 },
- { className: null, begin: /\(\s*\)/, skip: !0 },
- {
- begin: /\(/,
- end: /\)/,
- excludeBegin: !0,
- excludeEnd: !0,
- keywords: L,
- contains: ce
- }
- ]
- }
- ]
- },
- { begin: /,/, relevance: 0 },
- { className: '', begin: /\s/, end: /\s*/, skip: !0 },
- {
- variants: [
- { begin: x, end: C },
- { begin: j.begin, 'on:begin': j.isTrulyOpeningTag, end: j.end }
- ],
- subLanguage: 'xml',
- contains: [{ begin: j.begin, end: j.end, skip: !0, contains: ['self'] }]
- }
- ],
- relevance: 0
- },
- {
- className: 'function',
- beginKeywords: 'function',
- end: /[{;]/,
- excludeEnd: !0,
- keywords: L,
- contains: ['self', s.inherit(s.TITLE_MODE, { begin: w }), pe],
- illegal: /%/
- },
- { beginKeywords: 'while if switch catch for' },
- {
- className: 'function',
- begin:
- s.UNDERSCORE_IDENT_RE +
- '\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{',
- returnBegin: !0,
- contains: [pe, s.inherit(s.TITLE_MODE, { begin: w })]
- },
- { variants: [{ begin: '\\.' + w }, { begin: '\\$' + w }], relevance: 0 },
- {
- className: 'class',
- beginKeywords: 'class',
- end: /[{;=]/,
- excludeEnd: !0,
- illegal: /[:"[\]]/,
- contains: [{ beginKeywords: 'extends' }, s.UNDERSCORE_TITLE_MODE]
- },
- {
- begin: /\b(?=constructor)/,
- end: /[{;]/,
- excludeEnd: !0,
- contains: [s.inherit(s.TITLE_MODE, { begin: w }), 'self', pe]
- },
- {
- begin: '(get|set)\\s+(?=' + w + '\\()',
- end: /\{/,
- keywords: 'get set',
- contains: [s.inherit(s.TITLE_MODE, { begin: w }), { begin: /\(\)/ }, pe]
- },
- { begin: /\$[(.]/ }
- ]
- };
- };
- },
- 65772: (s) => {
- s.exports = function json(s) {
- const o = { literal: 'true false null' },
- i = [s.C_LINE_COMMENT_MODE, s.C_BLOCK_COMMENT_MODE],
- u = [s.QUOTE_STRING_MODE, s.C_NUMBER_MODE],
- _ = { end: ',', endsWithParent: !0, excludeEnd: !0, contains: u, keywords: o },
- w = {
- begin: /\{/,
- end: /\}/,
- contains: [
- {
- className: 'attr',
- begin: /"/,
- end: /"/,
- contains: [s.BACKSLASH_ESCAPE],
- illegal: '\\n'
- },
- s.inherit(_, { begin: /:/ })
- ].concat(i),
- illegal: '\\S'
- },
- x = { begin: '\\[', end: '\\]', contains: [s.inherit(_)], illegal: '\\S' };
- return (
- u.push(w, x),
- i.forEach(function (s) {
- u.push(s);
- }),
- { name: 'JSON', contains: u, keywords: o, illegal: '\\S' }
- );
- };
- },
- 26571: (s) => {
- s.exports = function powershell(s) {
- const o = {
- $pattern: /-?[A-z\.\-]+\b/,
- keyword:
- 'if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter',
- built_in:
- 'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write'
- },
- i = { begin: '`[\\s\\S]', relevance: 0 },
- u = {
- className: 'variable',
- variants: [
- { begin: /\$\B/ },
- { className: 'keyword', begin: /\$this/ },
- { begin: /\$[\w\d][\w\d_:]*/ }
- ]
- },
- _ = {
- className: 'string',
- variants: [
- { begin: /"/, end: /"/ },
- { begin: /@"/, end: /^"@/ }
- ],
- contains: [i, u, { className: 'variable', begin: /\$[A-z]/, end: /[^A-z]/ }]
- },
- w = {
- className: 'string',
- variants: [
- { begin: /'/, end: /'/ },
- { begin: /@'/, end: /^'@/ }
- ]
- },
- x = s.inherit(s.COMMENT(null, null), {
- variants: [
- { begin: /#/, end: /$/ },
- { begin: /<#/, end: /#>/ }
- ],
- contains: [
- {
- className: 'doctag',
- variants: [
- {
- begin:
- /\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/
- },
- {
- begin:
- /\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/
- }
- ]
- }
- ]
- }),
- C = {
- className: 'built_in',
- variants: [
- {
- begin: '('.concat(
- 'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where',
- ')+(-)[\\w\\d]+'
- )
- }
- ]
- },
- j = {
- className: 'class',
- beginKeywords: 'class enum',
- end: /\s*[{]/,
- excludeEnd: !0,
- relevance: 0,
- contains: [s.TITLE_MODE]
- },
- L = {
- className: 'function',
- begin: /function\s+/,
- end: /\s*\{|$/,
- excludeEnd: !0,
- returnBegin: !0,
- relevance: 0,
- contains: [
- { begin: 'function', relevance: 0, className: 'keyword' },
- { className: 'title', begin: /\w[\w\d]*((-)[\w\d]+)*/, relevance: 0 },
- { begin: /\(/, end: /\)/, className: 'params', relevance: 0, contains: [u] }
- ]
- },
- B = {
- begin: /using\s/,
- end: /$/,
- returnBegin: !0,
- contains: [
- _,
- w,
- { className: 'keyword', begin: /(using|assembly|command|module|namespace|type)/ }
- ]
- },
- $ = {
- variants: [
- {
- className: 'operator',
- begin: '('.concat(
- '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor',
- ')\\b'
- )
- },
- { className: 'literal', begin: /(-)[\w\d]+/, relevance: 0 }
- ]
- },
- V = {
- className: 'function',
- begin: /\[.*\]\s*[\w]+[ ]??\(/,
- end: /$/,
- returnBegin: !0,
- relevance: 0,
- contains: [
- {
- className: 'keyword',
- begin: '('.concat(o.keyword.toString().replace(/\s/g, '|'), ')\\b'),
- endsParent: !0,
- relevance: 0
- },
- s.inherit(s.TITLE_MODE, { endsParent: !0 })
- ]
- },
- U = [
- V,
- x,
- i,
- s.NUMBER_MODE,
- _,
- w,
- C,
- u,
- { className: 'literal', begin: /\$(null|true|false)\b/ },
- { className: 'selector-tag', begin: /@\B/, relevance: 0 }
- ],
- z = {
- begin: /\[/,
- end: /\]/,
- excludeBegin: !0,
- excludeEnd: !0,
- relevance: 0,
- contains: [].concat(
- 'self',
- U,
- {
- begin:
- '(' +
- [
- 'string',
- 'char',
- 'byte',
- 'int',
- 'long',
- 'bool',
- 'decimal',
- 'single',
- 'double',
- 'DateTime',
- 'xml',
- 'array',
- 'hashtable',
- 'void'
- ].join('|') +
- ')',
- className: 'built_in',
- relevance: 0
- },
- { className: 'type', begin: /[\.\w\d]+/, relevance: 0 }
- )
- };
- return (
- V.contains.unshift(z),
- {
- name: 'PowerShell',
- aliases: ['ps', 'ps1'],
- case_insensitive: !0,
- keywords: o,
- contains: U.concat(j, L, B, $, z)
- }
- );
- };
- },
- 17285: (s) => {
- function source(s) {
- return s ? ('string' == typeof s ? s : s.source) : null;
- }
- function lookahead(s) {
- return concat('(?=', s, ')');
- }
- function concat(...s) {
- return s.map((s) => source(s)).join('');
- }
- function either(...s) {
- return '(' + s.map((s) => source(s)).join('|') + ')';
- }
- s.exports = function xml(s) {
- const o = concat(
- /[A-Z_]/,
- (function optional(s) {
- return concat('(', s, ')?');
- })(/[A-Z0-9_.-]*:/),
- /[A-Z0-9_.-]*/
- ),
- i = { className: 'symbol', begin: /&[a-z]+;|[0-9]+;|[a-f0-9]+;/ },
- u = {
- begin: /\s/,
- contains: [
- { className: 'meta-keyword', begin: /#?[a-z_][a-z1-9_-]+/, illegal: /\n/ }
- ]
- },
- _ = s.inherit(u, { begin: /\(/, end: /\)/ }),
- w = s.inherit(s.APOS_STRING_MODE, { className: 'meta-string' }),
- x = s.inherit(s.QUOTE_STRING_MODE, { className: 'meta-string' }),
- C = {
- endsWithParent: !0,
- illegal: /,
- relevance: 0,
- contains: [
- { className: 'attr', begin: /[A-Za-z0-9._:-]+/, relevance: 0 },
- {
- begin: /=\s*/,
- relevance: 0,
- contains: [
- {
- className: 'string',
- endsParent: !0,
- variants: [
- { begin: /"/, end: /"/, contains: [i] },
- { begin: /'/, end: /'/, contains: [i] },
- { begin: /[^\s"'=<>`]+/ }
- ]
- }
- ]
- }
- ]
- };
- return {
- name: 'HTML, XML',
- aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist', 'wsf', 'svg'],
- case_insensitive: !0,
- contains: [
- {
- className: 'meta',
- begin: //,
- relevance: 10,
- contains: [
- u,
- x,
- w,
- _,
- {
- begin: /\[/,
- end: /\]/,
- contains: [
- { className: 'meta', begin: //, contains: [u, _, x, w] }
- ]
- }
- ]
- },
- s.COMMENT(//, { relevance: 10 }),
- { begin: //, relevance: 10 },
- i,
- { className: 'meta', begin: /<\?xml/, end: /\?>/, relevance: 10 },
- {
- className: 'tag',
- begin: /