diff --git a/404.html b/404.html index 5b0ecf304..5d27208e6 100644 --- a/404.html +++ b/404.html @@ -7,13 +7,13 @@ Page Not Found | GPT Researcher - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/assets/js/19d568e8.efd3f8d5.js b/assets/js/19d568e8.efd3f8d5.js new file mode 100644 index 000000000..2c8bf6d80 --- /dev/null +++ b/assets/js/19d568e8.efd3f8d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2645],{5680:(e,t,n)=>{n.d(t,{xA:()=>p,yg:()=>c});var a=n(6540);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),g=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=g(e.components);return a.createElement(s.Provider,{value:t},e.children)},u="mdxType",y={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),u=g(n),m=i,c=u["".concat(s,".").concat(m)]||u[m]||y[m]||r;return n?a.createElement(c,l(l({ref:t},p),{},{components:n})):a.createElement(c,l({ref:t},p))}));function c(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,l=new Array(r);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o[u]="string"==typeof e?e:i,l[1]=o;for(var g=2;g{n.r(t),n.d(t,{contentTitle:()=>l,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>s});var a=n(8168),i=(n(6540),n(5680));const r={},l="Log Files",o={unversionedId:"gpt-researcher/frontend/logs",id:"gpt-researcher/frontend/logs",isDocsHomePage:!1,title:"Log Files",description:"This document explains how to interpret the log files generated for each report. These logs provide a detailed record of the research process, from initial task planning to the gathering of information, and finally, the report writing process. Reports may change over time as new features are developed.",source:"@site/docs/gpt-researcher/frontend/logs.md",sourceDirName:"gpt-researcher/frontend",slug:"/gpt-researcher/frontend/logs",permalink:"/docs/gpt-researcher/frontend/logs",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/frontend/logs.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Playing with Webhooks",permalink:"/docs/gpt-researcher/frontend/playing-with-webhooks"},next:{title:"Tailored Research",permalink:"/docs/gpt-researcher/context/tailored-research"}},s=[{value:"Log File Overview",id:"log-file-overview",children:[],level:2},{value:"Key Components:",id:"key-components",children:[],level:2},{value:"Types of Events & Their Significance",id:"types-of-events--their-significance",children:[],level:2},{value:"How to Use the Logs",id:"how-to-use-the-logs",children:[],level:2},{value:"Example Usage",id:"example-usage",children:[],level:2},{value:"Logs for Developers",id:"logs-for-developers",children:[{value:"Basic Log File (.log)",id:"basic-log-file-log",children:[],level:3},{value:"JSON Log File (.json)",id:"json-log-file-json",children:[],level:3}],level:2}],g={toc:s},p="wrapper";function u(e){let{components:t,...n}=e;return(0,i.yg)(p,(0,a.A)({},g,n,{components:t,mdxType:"MDXLayout"}),(0,i.yg)("h1",{id:"log-files"},"Log Files"),(0,i.yg)("p",null,"This document explains how to interpret the log files generated for each report. These logs provide a detailed record of the research process, from initial task planning to the gathering of information, and finally, the report writing process. Reports may change over time as new features are developed. "),(0,i.yg)("h2",{id:"log-file-overview"},"Log File Overview"),(0,i.yg)("p",null,"The log file is a JSON file that contains a list of events that happened during the research process. Each event is an object with a timestamp, type, and data. The data contains the specific information about the event."),(0,i.yg)("p",null,"You can find the log file in the ",(0,i.yg)("inlineCode",{parentName:"p"},"outputs")," folder. "),(0,i.yg)("p",null,'Or you can access the log file from the report page itself by clicking the "Download Logs" button.'),(0,i.yg)("p",null,"For developers, there is an additional ",(0,i.yg)("inlineCode",{parentName:"p"},"logs")," folder that may be useful. See description below for more details. "),(0,i.yg)("h2",{id:"key-components"},"Key Components:"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"timestamp"),": The timestamp is in the format ",(0,i.yg)("inlineCode",{parentName:"li"},"YYYY-MM-DDTHH:MM:SS.ffffff")," which is an ISO format. The main timestamp is for the generation of the file itself. The timestamps for the events are when each specific event happened during the research process. "),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"events"),": This is an array containing all the logged events during the research task. Each event object has the following structure."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"timestamp"),": The specific time when the event occurred, allowing you to follow the sequence of actions."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"type"),': This will always be "event" for now.'),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"data"),": Contains specific information about the event. Includes:"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"type"),': This indicates the general kind of event (e.g., "logs").'),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"content"),': A descriptor of what the tool is doing (e.g., "starting',"_",'research", "running',"_","subquery","_",'research", "scraping',"_",'content").'),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A more detailed message, which often includes visual indicators (emojis), that is sent to the user when the tool performs the task"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"metadata"),": Additional data related to the event. This can be ",(0,i.yg)("inlineCode",{parentName:"li"},"null")," or contain an array of relevant information like URLs.")),(0,i.yg)("h2",{id:"types-of-events--their-significance"},"Types of Events & Their Significance"),(0,i.yg)("p",null,"Here's a complete breakdown of all the unique ",(0,i.yg)("inlineCode",{parentName:"p"},"content")," types and what they mean. This is a comprehensive list of all the different actions the research tool will perform."),(0,i.yg)("ol",null,(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"starting_research")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that the research process has begun for a given task."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Includes the text of the research query.")),(0,i.yg)("ol",{start:2},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"agent_generated")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"This is an indicator of what the agent is used for this task"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Will show the name of the agent")),(0,i.yg)("ol",{start:3},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"planning_research")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Shows the tool is initially browsing to understand the scope of the request and start planning."),(0,i.yg)("li",{parentName:"ul"},"The ",(0,i.yg)("inlineCode",{parentName:"li"},"output")," indicates the tool is either browsing or doing initial planning.")),(0,i.yg)("ol",{start:4},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"subqueries")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that the tool has created subqueries that it will use for research"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Lists out all of the subqueries that the tool will be running to perform the research"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"metadata"),": An array of strings that contain the subqueries to be run")),(0,i.yg)("ol",{start:5},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"running_subquery_research")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that a specific subquery research is being performed."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Shows the specific subquery being run.")),(0,i.yg)("ol",{start:6},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"added_source_url")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Signifies a URL that was identified as a relevant source of information."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Provides the URL with a checkmark emoji to indicate success."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"metadata"),": Contains the actual URL added.")),(0,i.yg)("ol",{start:7},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"researching")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the tool is actively searching across multiple sources for information."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A general message indicating research across multiple sources is happening.")),(0,i.yg)("ol",{start:8},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"scraping_urls")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Shows the tool is beginning to scrape content from a group of URLs."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Indicates how many URLs the tool will be scraping from.")),(0,i.yg)("ol",{start:9},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"scraping_content")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the tool successfully scraped the content from the URLs."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Shows the number of pages that have been successfully scraped.")),(0,i.yg)("ol",{start:10},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"scraping_images")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Signifies that images were identified and selected during the scraping process."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": Shows the number of new images selected and the total images found"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"metadata"),": An array containing URLs of the selected images.")),(0,i.yg)("ol",{start:11},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"scraping_complete")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that the scraping process is complete for the URLs."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message stating that the scraping process is complete")),(0,i.yg)("ol",{start:12},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"fetching_query_content")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that the tool is fetching content based on a specific query."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": The specific query for which content is being fetched")),(0,i.yg)("ol",{start:13},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"subquery_context_window")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the tool is creating a context window for a given subquery to help with more detailed research."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message stating the context window for the subquery is created.")),(0,i.yg)("ol",{start:14},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"research_step_finalized")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that the research portion of a step is finalized."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message stating that the research is complete.")),(0,i.yg)("ol",{start:15},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"generating_subtopics")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Signifies that the tool is generating subtopics to guide the report."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message indicating that the tool is generating subtopics.")),(0,i.yg)("ol",{start:16},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"subtopics_generated")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that subtopics have been generated."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message that subtopics have been generated.")),(0,i.yg)("ol",{start:17},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"writing_introduction")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the tool is beginning to write the introduction to the report."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message to the user that the introduction writing has started.")),(0,i.yg)("ol",{start:18},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"introduction_written")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the introduction to the report is finished"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message to the user that the introduction writing is complete")),(0,i.yg)("ol",{start:19},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"generating_draft_sections")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Shows that the tool is generating draft sections for the report."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message that the report is generating draft sections.")),(0,i.yg)("ol",{start:20},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"draft_sections_generated")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the draft sections of the report are generated."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message to the user that the draft sections have been generated.")),(0,i.yg)("ol",{start:21},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"fetching_relevant_written_content")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the tool is fetching relevant written content for the report."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message to the user that relevant content is being fetched")),(0,i.yg)("ol",{start:22},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"writing_report")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that the tool is starting to compile the research into a report."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message to the user that the report generation has started.")),(0,i.yg)("ol",{start:23},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"report_written")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Signifies that the report generation is complete."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message that the report generation is finished.")),(0,i.yg)("ol",{start:24},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"relevant_contents_context")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates that a context window for relevant content has been created."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message indicating a context window for relevant content has been created.")),(0,i.yg)("ol",{start:25},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"writing_conclusion")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the tool has started writing the conclusion for the report"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message to the user that the conclusion is being written")),(0,i.yg)("ol",{start:26},(0,i.yg)("li",{parentName:"ol"},(0,i.yg)("strong",{parentName:"li"},(0,i.yg)("inlineCode",{parentName:"strong"},"conclusion_written")),":")),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},"Indicates the conclusion of the report has been written"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"output"),": A message to the user that the conclusion has been written")),(0,i.yg)("h2",{id:"how-to-use-the-logs"},"How to Use the Logs"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Troubleshooting:")," If the research results are unexpected, the log files can help you understand the exact steps the tool took, including the queries used, the sources it visited, and how the report was generated."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Transparency:")," The logs provide transparency into the research process. You can see exactly which URLs were visited, which images were selected, and how the report was built."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Understanding the Process"),": The logs will provide an overview of what the tool does and what each of the steps look like."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Reproducibility:")," The log files allow users to trace the exact process.")),(0,i.yg)("h2",{id:"example-usage"},"Example Usage"),(0,i.yg)("p",null,"By looking at the timestamps, you can see the flow of the research task. The logs will show you the subqueries used by the tool to approach the main query, all the URLs used, if images were selected for the research, and all the steps the tool took to generate the report."),(0,i.yg)("h2",{id:"logs-for-developers"},"Logs for Developers"),(0,i.yg)("p",null,"In addition to the user-facing log files (detailed and summary reports), the application also generates two types of log files specifically for developers:"),(0,i.yg)("ol",null,(0,i.yg)("li",{parentName:"ol"},"A ",(0,i.yg)("inlineCode",{parentName:"li"},".log")," file which is a basic log file format for logging events as they occur"),(0,i.yg)("li",{parentName:"ol"},"A ",(0,i.yg)("inlineCode",{parentName:"li"},".json")," file which is more structured\nFind the logs in the ",(0,i.yg)("inlineCode",{parentName:"li"},"logs")," folder.")),(0,i.yg)("h3",{id:"basic-log-file-log"},"Basic Log File (.log)"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Format:")," Plain text format. Each line represents a log entry."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Content:"),(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},"Timestamps with millisecond precision."),(0,i.yg)("li",{parentName:"ul"},"Log level: Usually ",(0,i.yg)("inlineCode",{parentName:"li"},"INFO"),", but could include ",(0,i.yg)("inlineCode",{parentName:"li"},"DEBUG"),", ",(0,i.yg)("inlineCode",{parentName:"li"},"WARNING"),", or ",(0,i.yg)("inlineCode",{parentName:"li"},"ERROR")," in a more complex setup."),(0,i.yg)("li",{parentName:"ul"},'Module name (e.g., "research").'),(0,i.yg)("li",{parentName:"ul"},"Descriptive messages about various processes."),(0,i.yg)("li",{parentName:"ul"},"Includes data about:",(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},"Start and end of research tasks"),(0,i.yg)("li",{parentName:"ul"},"Web searches being performed"),(0,i.yg)("li",{parentName:"ul"},"Planning of the research"),(0,i.yg)("li",{parentName:"ul"},"Subqueries generated and their results"),(0,i.yg)("li",{parentName:"ul"},"The sizes of scraped data"),(0,i.yg)("li",{parentName:"ul"},"The size of content found from subqueries"),(0,i.yg)("li",{parentName:"ul"},"The final combined size of all context found"))))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Use Cases for Developers:"),(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Real-time Monitoring:")," Can be used to monitor the tool's activity in real time."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Debugging:")," Helpful for pinpointing issues by seeing the chronological flow of operations, the size of content collected, etc."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Performance Analysis:")," Timestamps can help in identifying bottlenecks by measuring how long certain operations take."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"High-level overview"),": Allows developers to easily see which steps of the tool were performed, and some basic information like sizes of collected content."))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Key Differences from User Logs:"),(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},"Less structured, more for developers to review in real-time."),(0,i.yg)("li",{parentName:"ul"},"Contains technical information not usually relevant to a non-developer user."),(0,i.yg)("li",{parentName:"ul"},"Does not have emojis or simplified language."),(0,i.yg)("li",{parentName:"ul"},"No information on the images collected")))),(0,i.yg)("h3",{id:"json-log-file-json"},"JSON Log File (.json)"),(0,i.yg)("ul",null,(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Format"),": Structured JSON format"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Content"),":",(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},"Timestamps, as in all log files",(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"type")," field that can be:"),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"sub_query"),": which contains the subquery string along with ",(0,i.yg)("inlineCode",{parentName:"li"},"scraped_data_size")),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("inlineCode",{parentName:"li"},"content_found"),": which includes the ",(0,i.yg)("inlineCode",{parentName:"li"},"sub_query")," and the ",(0,i.yg)("inlineCode",{parentName:"li"},"content_size")),(0,i.yg)("li",{parentName:"ul"},"A ",(0,i.yg)("inlineCode",{parentName:"li"},"content")," field which gives a snapshot of the overall research and can contain the final context and sources found from the research for that task"))))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Use Cases for Developers"),":",(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Detailed Analysis"),": Allows developers to view specific details of how the tool is running, particularly related to the subqueries and the results of the research."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Process Understanding"),": Developers can see the different subqueries run and how much content each generated which can lead to better debugging and understanding of the tool."),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Data Inspection"),": Can be useful for reviewing the generated queries and content sizes."))),(0,i.yg)("li",{parentName:"ul"},(0,i.yg)("strong",{parentName:"li"},"Key Differences from User Logs"),":",(0,i.yg)("ul",{parentName:"li"},(0,i.yg)("li",{parentName:"ul"},"Highly structured and focused on subquery execution, and the results of this process, specifically the sizes of collected information."),(0,i.yg)("li",{parentName:"ul"},"Does not contain simplified language, emojis, or high-level explanations."),(0,i.yg)("li",{parentName:"ul"},"Does not contain information on the overall context or the images collected, it mainly focuses on the subquery process.")))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5497f083.76f32392.js b/assets/js/5497f083.631bebce.js similarity index 83% rename from assets/js/5497f083.76f32392.js rename to assets/js/5497f083.631bebce.js index 721f3d83d..32ca188d5 100644 --- a/assets/js/5497f083.76f32392.js +++ b/assets/js/5497f083.631bebce.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6057],{5680:(e,t,r)=>{r.d(t,{xA:()=>p,yg:()=>h});var a=r(6540);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},g="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),g=c(r),d=n,h=g["".concat(l,".").concat(d)]||g[d]||u[d]||s;return r?a.createElement(h,o(o({ref:t},p),{},{components:r})):a.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,o=new Array(s);o[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[g]="string"==typeof e?e:n,o[1]=i;for(var c=2;c{r.r(t),r.d(t,{contentTitle:()=>o,default:()=>g,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var a=r(8168),n=(r(6540),r(5680));const s={},o="Introduction",i={unversionedId:"gpt-researcher/getting-started/introduction",id:"gpt-researcher/getting-started/introduction",isDocsHomePage:!1,title:"Introduction",description:"Official Website",source:"@site/docs/gpt-researcher/getting-started/introduction.md",sourceDirName:"gpt-researcher/getting-started",slug:"/gpt-researcher/getting-started/introduction",permalink:"/docs/gpt-researcher/getting-started/introduction",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/getting-started/introduction.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Welcome",permalink:"/docs/welcome"},next:{title:"How to Choose",permalink:"/docs/gpt-researcher/getting-started/how-to-choose"}},l=[{value:"Why GPT Researcher?",id:"why-gpt-researcher",children:[],level:2},{value:"Architecture",id:"architecture",children:[],level:2},{value:"Demo",id:"demo",children:[],level:2},{value:"Tutorials",id:"tutorials",children:[],level:2},{value:"Features",id:"features",children:[],level:2}],c={toc:l},p="wrapper";function g(e){let{components:t,...r}=e;return(0,n.yg)(p,(0,a.A)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h1",{id:"introduction"},"Introduction"),(0,n.yg)("p",null,(0,n.yg)("a",{parentName:"p",href:"https://gptr.dev"},(0,n.yg)("img",{parentName:"a",src:"https://img.shields.io/badge/Official%20Website-gptr.dev-teal?style=for-the-badge&logo=world&logoColor=white",alt:"Official Website"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://discord.gg/QgZXvJAccX"},(0,n.yg)("img",{parentName:"a",src:"https://dcbadge.vercel.app/api/server/QgZXvJAccX?style=for-the-badge&theme=clean-inverted",alt:"Discord Follow"}))),(0,n.yg)("p",null,(0,n.yg)("a",{parentName:"p",href:"https://github.com/assafelovic/gpt-researcher"},(0,n.yg)("img",{parentName:"a",src:"https://img.shields.io/github/stars/assafelovic/gpt-researcher?style=social",alt:"GitHub Repo stars"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://twitter.com/assaf_elovic"},(0,n.yg)("img",{parentName:"a",src:"https://img.shields.io/twitter/follow/assaf_elovic?style=social",alt:"Twitter Follow"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://badge.fury.io/py/gpt-researcher"},(0,n.yg)("img",{parentName:"a",src:"https://badge.fury.io/py/gpt-researcher.svg",alt:"PyPI version"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://colab.research.google.com/github/assafelovic/gpt-researcher/blob/master/docs/docs/examples/pip-run.ipynb"},(0,n.yg)("img",{parentName:"a",src:"https://colab.research.google.com/assets/colab-badge.svg",alt:"Open In Colab"}))),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},(0,n.yg)("a",{parentName:"strong",href:"https://gptr.dev"},"GPT Researcher")," is an autonomous agent designed for comprehensive online research on a variety of tasks.")," "),(0,n.yg)("p",null,"The agent can produce detailed, factual and unbiased research reports, with customization options for focusing on relevant resources, outlines, and lessons. Inspired by the recent ",(0,n.yg)("a",{parentName:"p",href:"https://arxiv.org/abs/2305.04091"},"Plan-and-Solve")," and ",(0,n.yg)("a",{parentName:"p",href:"https://arxiv.org/abs/2005.11401"},"RAG")," papers, GPT Researcher addresses issues of speed, determinism and reliability, offering a more stable performance and increased speed through parallelized agent work, as opposed to synchronous operations."),(0,n.yg)("h2",{id:"why-gpt-researcher"},"Why GPT Researcher?"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"To form objective conclusions for manual research tasks can take time, sometimes weeks to find the right resources and information."),(0,n.yg)("li",{parentName:"ul"},"Current LLMs are trained on past and outdated information, with heavy risks of hallucinations, making them almost irrelevant for research tasks."),(0,n.yg)("li",{parentName:"ul"},"Current LLMs are limited to short token outputs which are not sufficient for long detailed research reports (2k+ words)."),(0,n.yg)("li",{parentName:"ul"},"Solutions that enable web search (such as ChatGPT + Web Plugin), only consider limited resources and content that in some cases result in superficial conclusions or biased answers."),(0,n.yg)("li",{parentName:"ul"},"Using only a selection of resources can create bias in determining the right conclusions for research questions or tasks. ")),(0,n.yg)("h2",{id:"architecture"},"Architecture"),(0,n.yg)("p",null,'The main idea is to run "planner" and "execution" agents, whereas the planner generates questions to research, and the execution agents seek the most related information based on each generated research question. Finally, the planner filters and aggregates all related information and creates a research report. ',(0,n.yg)("br",null)," ",(0,n.yg)("br",null),"\nThe agents leverage both gpt-4o-mini and gpt-4o (128K context) to complete a research task. We optimize for costs using each only when necessary. ",(0,n.yg)("strong",{parentName:"p"},"The average research task takes around 3 minutes to complete, and costs ~$0.1.")),(0,n.yg)("div",{align:"center"},(0,n.yg)("img",{align:"center",height:"600",src:"https://github.com/assafelovic/gpt-researcher/assets/13554167/4ac896fd-63ab-4b77-9688-ff62aafcc527"})),(0,n.yg)("p",null,"More specifically:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"Create a domain specific agent based on research query or task."),(0,n.yg)("li",{parentName:"ul"},"Generate a set of research questions that together form an objective opinion on any given task. "),(0,n.yg)("li",{parentName:"ul"},"For each research question, trigger a crawler agent that scrapes online resources for information relevant to the given task."),(0,n.yg)("li",{parentName:"ul"},"For each scraped resources, summarize based on relevant information and keep track of its sources."),(0,n.yg)("li",{parentName:"ul"},"Finally, filter and aggregate all summarized sources and generate a final research report.")),(0,n.yg)("h2",{id:"demo"},"Demo"),(0,n.yg)("iframe",{height:"400",width:"700",src:"https://github.com/assafelovic/gpt-researcher/assets/13554167/a00c89a6-a295-4dd0-b58d-098a31c40fda",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:!0}),(0,n.yg)("h2",{id:"tutorials"},"Tutorials"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://medium.com/better-programming/how-i-built-an-autonomous-ai-agent-for-online-research-93435a97c6c"},"How it Works")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://www.loom.com/share/04ebffb6ed2a4520a27c3e3addcdde20?sid=da1848e8-b1f1-42d1-93c3-5b0b9c3b24ea"},"How to Install")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://www.loom.com/share/6a3385db4e8747a1913dd85a7834846f?sid=a740fd5b-2aa3-457e-8fb7-86976f59f9b8"},"Live Demo")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://gptr.dev"},"Homepage"))),(0,n.yg)("h2",{id:"features"},"Features"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcdd Generate research, outlines, resources and lessons reports"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcdc Can generate long and detailed research reports (over 2K words)"),(0,n.yg)("li",{parentName:"ul"},"\ud83c\udf10 Aggregates over 20 web sources per research to form objective and factual conclusions"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udda5\ufe0f Includes an easy-to-use web interface (HTML/CSS/JS)"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udd0d Scrapes web sources with javascript support"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcc2 Keeps track and context of visited and used web sources"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcc4 Export research reports to PDF, Word and more...")),(0,n.yg)("p",null,"Let's get started ",(0,n.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/getting-started/getting-started"},"here"),"!"))}g.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6057],{5680:(e,t,r)=>{r.d(t,{xA:()=>p,yg:()=>h});var a=r(6540);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var l=a.createContext({}),c=function(e){var t=a.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},g="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,s=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),g=c(r),d=n,h=g["".concat(l,".").concat(d)]||g[d]||u[d]||s;return r?a.createElement(h,o(o({ref:t},p),{},{components:r})):a.createElement(h,o({ref:t},p))}));function h(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var s=r.length,o=new Array(s);o[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[g]="string"==typeof e?e:n,o[1]=i;for(var c=2;c{r.r(t),r.d(t,{contentTitle:()=>o,default:()=>g,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var a=r(8168),n=(r(6540),r(5680));const s={},o="Introduction",i={unversionedId:"gpt-researcher/getting-started/introduction",id:"gpt-researcher/getting-started/introduction",isDocsHomePage:!1,title:"Introduction",description:"Official Website",source:"@site/docs/gpt-researcher/getting-started/introduction.md",sourceDirName:"gpt-researcher/getting-started",slug:"/gpt-researcher/getting-started/introduction",permalink:"/docs/gpt-researcher/getting-started/introduction",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/getting-started/introduction.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Welcome",permalink:"/docs/welcome"},next:{title:"How to Choose",permalink:"/docs/gpt-researcher/getting-started/how-to-choose"}},l=[{value:"Why GPT Researcher?",id:"why-gpt-researcher",children:[],level:2},{value:"Architecture",id:"architecture",children:[],level:2},{value:"Demo",id:"demo",children:[],level:2},{value:"Tutorials",id:"tutorials",children:[],level:2},{value:"Features",id:"features",children:[],level:2}],c={toc:l},p="wrapper";function g(e){let{components:t,...r}=e;return(0,n.yg)(p,(0,a.A)({},c,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("h1",{id:"introduction"},"Introduction"),(0,n.yg)("p",null,(0,n.yg)("a",{parentName:"p",href:"https://gptr.dev"},(0,n.yg)("img",{parentName:"a",src:"https://img.shields.io/badge/Official%20Website-gptr.dev-teal?style=for-the-badge&logo=world&logoColor=white",alt:"Official Website"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://discord.gg/QgZXvJAccX"},(0,n.yg)("img",{parentName:"a",src:"https://dcbadge.vercel.app/api/server/QgZXvJAccX?style=for-the-badge&theme=clean-inverted",alt:"Discord Follow"}))),(0,n.yg)("p",null,(0,n.yg)("a",{parentName:"p",href:"https://github.com/assafelovic/gpt-researcher"},(0,n.yg)("img",{parentName:"a",src:"https://img.shields.io/github/stars/assafelovic/gpt-researcher?style=social",alt:"GitHub Repo stars"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://twitter.com/assaf_elovic"},(0,n.yg)("img",{parentName:"a",src:"https://img.shields.io/twitter/follow/assaf_elovic?style=social",alt:"Twitter Follow"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://badge.fury.io/py/gpt-researcher"},(0,n.yg)("img",{parentName:"a",src:"https://badge.fury.io/py/gpt-researcher.svg",alt:"PyPI version"})),"\n",(0,n.yg)("a",{parentName:"p",href:"https://colab.research.google.com/github/assafelovic/gpt-researcher/blob/master/docs/docs/examples/pip-run.ipynb"},(0,n.yg)("img",{parentName:"a",src:"https://colab.research.google.com/assets/colab-badge.svg",alt:"Open In Colab"}))),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},(0,n.yg)("a",{parentName:"strong",href:"https://gptr.dev"},"GPT Researcher")," is an autonomous agent designed for comprehensive online research on a variety of tasks.")," "),(0,n.yg)("p",null,"The agent can produce detailed, factual and unbiased research reports, with customization options for focusing on relevant resources, outlines, and lessons. Inspired by the recent ",(0,n.yg)("a",{parentName:"p",href:"https://arxiv.org/abs/2305.04091"},"Plan-and-Solve")," and ",(0,n.yg)("a",{parentName:"p",href:"https://arxiv.org/abs/2005.11401"},"RAG")," papers, GPT Researcher addresses issues of speed, determinism and reliability, offering a more stable performance and increased speed through parallelized agent work, as opposed to synchronous operations."),(0,n.yg)("h2",{id:"why-gpt-researcher"},"Why GPT Researcher?"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"To form objective conclusions for manual research tasks can take time, sometimes weeks to find the right resources and information."),(0,n.yg)("li",{parentName:"ul"},"Current LLMs are trained on past and outdated information, with heavy risks of hallucinations, making them almost irrelevant for research tasks."),(0,n.yg)("li",{parentName:"ul"},"Current LLMs are limited to short token outputs which are not sufficient for long detailed research reports (2k+ words)."),(0,n.yg)("li",{parentName:"ul"},"Solutions that enable web search (such as ChatGPT + Web Plugin), only consider limited resources and content that in some cases result in superficial conclusions or biased answers."),(0,n.yg)("li",{parentName:"ul"},"Using only a selection of resources can create bias in determining the right conclusions for research questions or tasks. ")),(0,n.yg)("h2",{id:"architecture"},"Architecture"),(0,n.yg)("p",null,'The main idea is to run "planner" and "execution" agents, whereas the planner generates questions to research, and the execution agents seek the most related information based on each generated research question. Finally, the planner filters and aggregates all related information and creates a research report. ',(0,n.yg)("br",null)," ",(0,n.yg)("br",null),"\nThe agents leverage both gpt-4o-mini and gpt-4o (128K context) to complete a research task. We optimize for costs using each only when necessary. ",(0,n.yg)("strong",{parentName:"p"},"The average research task takes around 3 minutes to complete, and costs ~$0.1.")),(0,n.yg)("div",{align:"center"},(0,n.yg)("img",{align:"center",height:"600",src:"https://github.com/assafelovic/gpt-researcher/assets/13554167/4ac896fd-63ab-4b77-9688-ff62aafcc527"})),(0,n.yg)("p",null,"More specifically:"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"Create a domain specific agent based on research query or task."),(0,n.yg)("li",{parentName:"ul"},"Generate a set of research questions that together form an objective opinion on any given task. "),(0,n.yg)("li",{parentName:"ul"},"For each research question, trigger a crawler agent that scrapes online resources for information relevant to the given task."),(0,n.yg)("li",{parentName:"ul"},"For each scraped resources, summarize based on relevant information and keep track of its sources."),(0,n.yg)("li",{parentName:"ul"},"Finally, filter and aggregate all summarized sources and generate a final research report.")),(0,n.yg)("h2",{id:"demo"},"Demo"),(0,n.yg)("iframe",{height:"400",width:"700",src:"https://github.com/assafelovic/gpt-researcher/assets/13554167/a00c89a6-a295-4dd0-b58d-098a31c40fda",frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:!0}),(0,n.yg)("h2",{id:"tutorials"},"Tutorials"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://www.youtube.com/playlist?list=PLUGOUZPIB0F-qv6MvKq3HGr0M_b3U2ATv"},"Full Introduction Playlist")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://medium.com/better-programming/how-i-built-an-autonomous-ai-agent-for-online-research-93435a97c6c"},"How it Works")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://www.loom.com/share/04ebffb6ed2a4520a27c3e3addcdde20?sid=da1848e8-b1f1-42d1-93c3-5b0b9c3b24ea"},"How to Install")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://www.loom.com/share/6a3385db4e8747a1913dd85a7834846f?sid=a740fd5b-2aa3-457e-8fb7-86976f59f9b8"},"Live Demo")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"https://gptr.dev"},"Homepage"))),(0,n.yg)("h2",{id:"features"},"Features"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcdd Generate research, outlines, resources and lessons reports"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcdc Can generate long and detailed research reports (over 2K words)"),(0,n.yg)("li",{parentName:"ul"},"\ud83c\udf10 Aggregates over 20 web sources per research to form objective and factual conclusions"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udda5\ufe0f Includes an easy-to-use web interface (HTML/CSS/JS)"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udd0d Scrapes web sources with javascript support"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcc2 Keeps track and context of visited and used web sources"),(0,n.yg)("li",{parentName:"ul"},"\ud83d\udcc4 Export research reports to PDF, Word and more...")),(0,n.yg)("p",null,"Let's get started ",(0,n.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/getting-started/getting-started"},"here"),"!"))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/55be4921.9bd1caf2.js b/assets/js/55be4921.cf4ea8fc.js similarity index 64% rename from assets/js/55be4921.9bd1caf2.js rename to assets/js/55be4921.cf4ea8fc.js index 8422131e1..659a0f493 100644 --- a/assets/js/55be4921.9bd1caf2.js +++ b/assets/js/55be4921.cf4ea8fc.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[444],{5680:(e,t,r)=>{r.d(t,{xA:()=>p,yg:()=>d});var n=r(6540);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},h="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),h=l(r),u=o,d=h["".concat(c,".").concat(u)]||h[u]||g[u]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[h]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(8168),o=(r(6540),r(5680));const a={},i="Playing with Webhooks",s={unversionedId:"gpt-researcher/frontend/playing-with-webhooks",id:"gpt-researcher/frontend/playing-with-webhooks",isDocsHomePage:!1,title:"Playing with Webhooks",description:"The GPTR Frontend is powered by Webhooks streaming back from the Backend. This allows for real-time updates on the status of your research tasks, as well as the ability to interact with the Backend directly from the Frontend.",source:"@site/docs/gpt-researcher/frontend/playing-with-webhooks.md",sourceDirName:"gpt-researcher/frontend",slug:"/gpt-researcher/frontend/playing-with-webhooks",permalink:"/docs/gpt-researcher/frontend/playing-with-webhooks",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/frontend/playing-with-webhooks.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Frontend Application",permalink:"/docs/gpt-researcher/frontend/frontend"},next:{title:"Tailored Research",permalink:"/docs/gpt-researcher/context/tailored-research"}},c=[{value:"Inspecting Webhooks",id:"inspecting-webhooks",children:[{value:"Am I polling the right URL?",id:"am-i-polling-the-right-url",children:[],level:3}],level:2}],l={toc:c},p="wrapper";function h(e){let{components:t,...r}=e;return(0,o.yg)(p,(0,n.A)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("h1",{id:"playing-with-webhooks"},"Playing with Webhooks"),(0,o.yg)("p",null,"The GPTR Frontend is powered by Webhooks streaming back from the Backend. This allows for real-time updates on the status of your research tasks, as well as the ability to interact with the Backend directly from the Frontend."),(0,o.yg)("h2",{id:"inspecting-webhooks"},"Inspecting Webhooks"),(0,o.yg)("p",null,"When running reports via the frontend, you can inspect the websocket messages in the Network Tab."),(0,o.yg)("p",null,"Here's how: "),(0,o.yg)("p",null,(0,o.yg)("img",{parentName:"p",src:"https://github.com/user-attachments/assets/15fcb5a4-77ea-4b3b-87d7-55d4b6f80095",alt:"image"})),(0,o.yg)("h3",{id:"am-i-polling-the-right-url"},"Am I polling the right URL?"),(0,o.yg)("p",null,"If you're concerned that your frontend isn't hitting the right API Endpoint, you can check the URL in the Network Tab."),(0,o.yg)("p",null,'Click into the WS request & go to the "Headers" tab'),(0,o.yg)("p",null,(0,o.yg)("img",{parentName:"p",src:"https://github.com/user-attachments/assets/dbd58c1d-3506-411a-852b-e1b133b6f5c8",alt:"image"})),(0,o.yg)("p",null,"For debugging, have a look at the ",(0,o.yg)("a",{href:"https://github.com/assafelovic/gpt-researcher/blob/master/frontend/nextjs/helpers/getHost.ts"},"getHost function.")))}h.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[444],{5680:(e,t,r)=>{r.d(t,{xA:()=>p,yg:()=>d});var n=r(6540);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},h="mdxType",g={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),h=l(r),u=o,d=h["".concat(c,".").concat(u)]||h[u]||g[u]||a;return r?n.createElement(d,i(i({ref:t},p),{},{components:r})):n.createElement(d,i({ref:t},p))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=u;var s={};for(var c in t)hasOwnProperty.call(t,c)&&(s[c]=t[c]);s.originalType=e,s[h]="string"==typeof e?e:o,i[1]=s;for(var l=2;l{r.r(t),r.d(t,{contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var n=r(8168),o=(r(6540),r(5680));const a={},i="Playing with Webhooks",s={unversionedId:"gpt-researcher/frontend/playing-with-webhooks",id:"gpt-researcher/frontend/playing-with-webhooks",isDocsHomePage:!1,title:"Playing with Webhooks",description:"The GPTR Frontend is powered by Webhooks streaming back from the Backend. This allows for real-time updates on the status of your research tasks, as well as the ability to interact with the Backend directly from the Frontend.",source:"@site/docs/gpt-researcher/frontend/playing-with-webhooks.md",sourceDirName:"gpt-researcher/frontend",slug:"/gpt-researcher/frontend/playing-with-webhooks",permalink:"/docs/gpt-researcher/frontend/playing-with-webhooks",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/frontend/playing-with-webhooks.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Frontend Application",permalink:"/docs/gpt-researcher/frontend/frontend"},next:{title:"Log Files",permalink:"/docs/gpt-researcher/frontend/logs"}},c=[{value:"Inspecting Webhooks",id:"inspecting-webhooks",children:[{value:"Am I polling the right URL?",id:"am-i-polling-the-right-url",children:[],level:3}],level:2}],l={toc:c},p="wrapper";function h(e){let{components:t,...r}=e;return(0,o.yg)(p,(0,n.A)({},l,r,{components:t,mdxType:"MDXLayout"}),(0,o.yg)("h1",{id:"playing-with-webhooks"},"Playing with Webhooks"),(0,o.yg)("p",null,"The GPTR Frontend is powered by Webhooks streaming back from the Backend. This allows for real-time updates on the status of your research tasks, as well as the ability to interact with the Backend directly from the Frontend."),(0,o.yg)("h2",{id:"inspecting-webhooks"},"Inspecting Webhooks"),(0,o.yg)("p",null,"When running reports via the frontend, you can inspect the websocket messages in the Network Tab."),(0,o.yg)("p",null,"Here's how: "),(0,o.yg)("p",null,(0,o.yg)("img",{parentName:"p",src:"https://github.com/user-attachments/assets/15fcb5a4-77ea-4b3b-87d7-55d4b6f80095",alt:"image"})),(0,o.yg)("h3",{id:"am-i-polling-the-right-url"},"Am I polling the right URL?"),(0,o.yg)("p",null,"If you're concerned that your frontend isn't hitting the right API Endpoint, you can check the URL in the Network Tab."),(0,o.yg)("p",null,'Click into the WS request & go to the "Headers" tab'),(0,o.yg)("p",null,(0,o.yg)("img",{parentName:"p",src:"https://github.com/user-attachments/assets/dbd58c1d-3506-411a-852b-e1b133b6f5c8",alt:"image"})),(0,o.yg)("p",null,"For debugging, have a look at the ",(0,o.yg)("a",{href:"https://github.com/assafelovic/gpt-researcher/blob/master/frontend/nextjs/helpers/getHost.ts"},"getHost function.")))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/82b8edaf.2518fc52.js b/assets/js/82b8edaf.4a57ee09.js similarity index 57% rename from assets/js/82b8edaf.2518fc52.js rename to assets/js/82b8edaf.4a57ee09.js index 32b4dfb85..d2efdb9dc 100644 --- a/assets/js/82b8edaf.2518fc52.js +++ b/assets/js/82b8edaf.4a57ee09.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2337],{5680:(e,n,r)=>{r.d(n,{xA:()=>g,yg:()=>y});var t=r(6540);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function i(e){for(var n=1;n=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=t.createContext({}),p=function(e){var n=t.useContext(s),r=n;return e&&(r="function"==typeof e?e(n):i(i({},n),e)),r},g=function(e){var n=p(e.components);return t.createElement(s.Provider,{value:n},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},c=t.forwardRef((function(e,n){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,g=l(e,["components","mdxType","originalType","parentName"]),m=p(r),c=a,y=m["".concat(s,".").concat(c)]||m[c]||u[c]||o;return r?t.createElement(y,i(i({ref:n},g),{},{components:r})):t.createElement(y,i({ref:n},g))}));function y(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=c;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{r.r(n),r.d(n,{contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var t=r(8168),a=(r(6540),r(5680));const o={},i="Configuration",l={unversionedId:"gpt-researcher/gptr/config",id:"gpt-researcher/gptr/config",isDocsHomePage:!1,title:"Configuration",description:"The config.py enables you to customize GPT Researcher to your specific needs and preferences.",source:"@site/docs/gpt-researcher/gptr/config.md",sourceDirName:"gpt-researcher/gptr",slug:"/gpt-researcher/gptr/config",permalink:"/docs/gpt-researcher/gptr/config",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/gptr/config.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Agent Example",permalink:"/docs/gpt-researcher/gptr/example"},next:{title:"Scraping Options",permalink:"/docs/gpt-researcher/gptr/scraping"}},s=[{value:"Example: Azure OpenAI Configuration",id:"example-azure-openai-configuration",children:[],level:2}],p={toc:s},g="wrapper";function m(e){let{components:n,...r}=e;return(0,a.yg)(g,(0,t.A)({},p,r,{components:n,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"configuration"},"Configuration"),(0,a.yg)("p",null,"The config.py enables you to customize GPT Researcher to your specific needs and preferences."),(0,a.yg)("p",null,"Thanks to our amazing community and contributions, GPT Researcher supports multiple LLMs and Retrievers.\nIn addition, GPT Researcher can be tailored to various report formats (such as APA), word count, research iterations depth, etc."),(0,a.yg)("p",null,"GPT Researcher defaults to our recommended suite of integrations: ",(0,a.yg)("a",{parentName:"p",href:"https://platform.openai.com/docs/overview"},"OpenAI")," for LLM calls and ",(0,a.yg)("a",{parentName:"p",href:"https://app.tavily.com"},"Tavily API")," for retrieving real-time web information."),(0,a.yg)("p",null,"As seen below, OpenAI still stands as the superior LLM. We assume it will stay this way for some time, and that prices will only continue to decrease, while performance and speed increase over time."),(0,a.yg)("div",{style:{marginBottom:"10px"}},(0,a.yg)("img",{align:"center",height:"350",src:"/img/leaderboard.png"})),(0,a.yg)("p",null,"The default config.py file can be found in ",(0,a.yg)("inlineCode",{parentName:"p"},"/gpt_researcher/config/"),". It supports various options for customizing GPT Researcher to your needs.\nYou can also include your own external JSON file ",(0,a.yg)("inlineCode",{parentName:"p"},"config.json")," by adding the path in the ",(0,a.yg)("inlineCode",{parentName:"p"},"config_file")," param. ",(0,a.yg)("strong",{parentName:"p"},"Please follow the config.py file for additional future support"),"."),(0,a.yg)("p",null,"Below is a list of current supported options:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"RETRIEVER")),": Web search engine used for retrieving sources. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"tavily"),". Options: ",(0,a.yg)("inlineCode",{parentName:"li"},"duckduckgo"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"bing"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"google"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"searchapi"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"serper"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"searx"),". ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/assafelovic/gpt-researcher/tree/master/gpt_researcher/retrievers"},"Check here")," for supported retrievers"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"EMBEDDING")),": Embedding model. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:text-embedding-3-small"),". Options: ",(0,a.yg)("inlineCode",{parentName:"li"},"ollama"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"huggingface"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"azure_openai"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"custom"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"FAST_LLM")),": Model name for fast LLM operations such summaries. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:gpt-4o-mini"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SMART_LLM")),": Model name for smart operations like generating research reports and reasoning. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:gpt-4o"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"STRATEGIC_LLM")),": Model name for strategic operations like generating research plans and strategies. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:o1-preview"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"LANGUAGE")),": Language to be used for the final research report. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"english"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"CURATE_SOURCES")),": Whether to curate sources for research. This step adds an LLM run which may increase costs and total run time but improves quality of source selection. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"True"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"FAST_TOKEN_LIMIT")),": Maximum token limit for fast LLM responses. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"2000"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SMART_TOKEN_LIMIT")),": Maximum token limit for smart LLM responses. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"4000"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"BROWSE_CHUNK_MAX_LENGTH")),": Maximum length of text chunks to browse in web sources. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"8192"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SUMMARY_TOKEN_LIMIT")),": Maximum token limit for generating summaries. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"700"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"TEMPERATURE")),": Sampling temperature for LLM responses, typically between 0 and 1. A higher value results in more randomness and creativity, while a lower value results in more focused and deterministic responses. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"0.55"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"TOTAL_WORDS")),": Total word count limit for document generation or processing tasks. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"800"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"REPORT_FORMAT")),": Preferred format for report generation. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"APA"),". Consider formats like ",(0,a.yg)("inlineCode",{parentName:"li"},"MLA"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"CMS"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"Harvard style"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"IEEE"),", etc."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"MAX_ITERATIONS")),": Maximum number of iterations for processes like query expansion or search refinement. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"3"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"AGENT_ROLE")),": Role of the agent. This might be used to customize the behavior of the agent based on its assigned roles. No default value."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"MAX_SUBTOPICS")),": Maximum number of subtopics to generate or consider. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"3"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SCRAPER")),": Web scraper to use for gathering information. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"bs")," (BeautifulSoup). You can also use ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/codelucas/newspaper"},"newspaper"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"DOC_PATH")),": Path to read and research local documents. Defaults to an empty string indicating no path specified."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"USER_AGENT")),": Custom User-Agent string for web crawling and web requests."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"MEMORY_BACKEND")),": Backend used for memory operations, such as local storage of temporary data. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"local"),".")),(0,a.yg)("p",null,"To change the default configurations, you can simply add env variables to your ",(0,a.yg)("inlineCode",{parentName:"p"},".env")," file as named above or export manually in your local project directory."),(0,a.yg)("p",null,"For example, to manually change the search engine and report format:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"export RETRIEVER=bing\nexport REPORT_FORMAT=IEEE\n")),(0,a.yg)("p",null,"Please note that you might need to export additional env vars and obtain API keys for other supported search retrievers and LLM providers. Please follow your console logs for further assistance.\nTo learn more about additional LLM support you can check out the docs ",(0,a.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/llms/llms"},"here"),"."),(0,a.yg)("p",null,"You can also include your own external JSON file ",(0,a.yg)("inlineCode",{parentName:"p"},"config.json")," by adding the path in the ",(0,a.yg)("inlineCode",{parentName:"p"},"config_file")," param."),(0,a.yg)("h2",{id:"example-azure-openai-configuration"},"Example: Azure OpenAI Configuration"),(0,a.yg)("p",null,"If you are not using OpenAI's models, but other model providers, besides the general configuration above, also additional environment variables are required.\nCheck the ",(0,a.yg)("a",{parentName:"p",href:"https://python.langchain.com/v0.2/docs/integrations/platforms/"},"langchain documentation")," about your model for the exact configuration of the API keys and endpoints."),(0,a.yg)("p",null,"Here is an example for ",(0,a.yg)("a",{parentName:"p",href:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models"},"Azure OpenAI")," configuration:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},'\nOPENAI_API_VERSION="2024-05-01-preview" # or whatever you are using\nAZURE_OPENAI_ENDPOINT="https://CHANGEMEN.openai.azure.com/" # change to the name of your deployment\nAZURE_OPENAI_API_KEY="[Your Key]" # change to your API key\n\nEMBEDDING="azure_openai:text-embedding-ada-002" # change to the deployment of your embedding model\n\nFAST_LLM="azure_openai:gpt-4o-mini" # change to the name of your deployment (not model-name)\nFAST_TOKEN_LIMIT=4000\n\nSMART_LLM="azure_openai:gpt-4o" # change to the name of your deployment (not model-name)\nSMART_TOKEN_LIMIT=4000\n\nRETRIEVER="bing" # if you are using Bing as your search engine (which is likely if you use Azure)\nBING_API_KEY="[Your Key]"\n\n')))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2337],{5680:(e,n,r)=>{r.d(n,{xA:()=>g,yg:()=>y});var t=r(6540);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function i(e){for(var n=1;n=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var s=t.createContext({}),p=function(e){var n=t.useContext(s),r=n;return e&&(r="function"==typeof e?e(n):i(i({},n),e)),r},g=function(e){var n=p(e.components);return t.createElement(s.Provider,{value:n},e.children)},m="mdxType",u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},c=t.forwardRef((function(e,n){var r=e.components,a=e.mdxType,o=e.originalType,s=e.parentName,g=l(e,["components","mdxType","originalType","parentName"]),m=p(r),c=a,y=m["".concat(s,".").concat(c)]||m[c]||u[c]||o;return r?t.createElement(y,i(i({ref:n},g),{},{components:r})):t.createElement(y,i({ref:n},g))}));function y(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=c;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[m]="string"==typeof e?e:a,i[1]=l;for(var p=2;p{r.r(n),r.d(n,{contentTitle:()=>i,default:()=>m,frontMatter:()=>o,metadata:()=>l,toc:()=>s});var t=r(8168),a=(r(6540),r(5680));const o={},i="Configuration",l={unversionedId:"gpt-researcher/gptr/config",id:"gpt-researcher/gptr/config",isDocsHomePage:!1,title:"Configuration",description:"The config.py enables you to customize GPT Researcher to your specific needs and preferences.",source:"@site/docs/gpt-researcher/gptr/config.md",sourceDirName:"gpt-researcher/gptr",slug:"/gpt-researcher/gptr/config",permalink:"/docs/gpt-researcher/gptr/config",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/gptr/config.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Agent Example",permalink:"/docs/gpt-researcher/gptr/example"},next:{title:"Scraping Options",permalink:"/docs/gpt-researcher/gptr/scraping"}},s=[{value:"Example: Azure OpenAI Configuration",id:"example-azure-openai-configuration",children:[],level:2}],p={toc:s},g="wrapper";function m(e){let{components:n,...r}=e;return(0,a.yg)(g,(0,t.A)({},p,r,{components:n,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"configuration"},"Configuration"),(0,a.yg)("p",null,"The config.py enables you to customize GPT Researcher to your specific needs and preferences."),(0,a.yg)("p",null,"Thanks to our amazing community and contributions, GPT Researcher supports multiple LLMs and Retrievers.\nIn addition, GPT Researcher can be tailored to various report formats (such as APA), word count, research iterations depth, etc."),(0,a.yg)("p",null,"GPT Researcher defaults to our recommended suite of integrations: ",(0,a.yg)("a",{parentName:"p",href:"https://platform.openai.com/docs/overview"},"OpenAI")," for LLM calls and ",(0,a.yg)("a",{parentName:"p",href:"https://app.tavily.com"},"Tavily API")," for retrieving real-time web information."),(0,a.yg)("p",null,"As seen below, OpenAI still stands as the superior LLM. We assume it will stay this way for some time, and that prices will only continue to decrease, while performance and speed increase over time."),(0,a.yg)("div",{style:{marginBottom:"10px"}},(0,a.yg)("img",{align:"center",height:"350",src:"/img/leaderboard.png"})),(0,a.yg)("p",null,"The default config.py file can be found in ",(0,a.yg)("inlineCode",{parentName:"p"},"/gpt_researcher/config/"),". It supports various options for customizing GPT Researcher to your needs.\nYou can also include your own external JSON file ",(0,a.yg)("inlineCode",{parentName:"p"},"config.json")," by adding the path in the ",(0,a.yg)("inlineCode",{parentName:"p"},"config_file")," param. ",(0,a.yg)("strong",{parentName:"p"},"Please follow the config.py file for additional future support"),"."),(0,a.yg)("p",null,"Below is a list of current supported options:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"RETRIEVER")),": Web search engine used for retrieving sources. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"tavily"),". Options: ",(0,a.yg)("inlineCode",{parentName:"li"},"duckduckgo"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"bing"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"google"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"searchapi"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"serper"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"searx"),". ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/assafelovic/gpt-researcher/tree/master/gpt_researcher/retrievers"},"Check here")," for supported retrievers"),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"EMBEDDING")),": Embedding model. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:text-embedding-3-small"),". Options: ",(0,a.yg)("inlineCode",{parentName:"li"},"ollama"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"huggingface"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"azure_openai"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"custom"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"FAST_LLM")),": Model name for fast LLM operations such summaries. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:gpt-4o-mini"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SMART_LLM")),": Model name for smart operations like generating research reports and reasoning. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:gpt-4o"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"STRATEGIC_LLM")),": Model name for strategic operations like generating research plans and strategies. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"openai:o1-preview"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"LANGUAGE")),": Language to be used for the final research report. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"english"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"CURATE_SOURCES")),": Whether to curate sources for research. This step adds an LLM run which may increase costs and total run time but improves quality of source selection. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"True"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"FAST_TOKEN_LIMIT")),": Maximum token limit for fast LLM responses. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"2000"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SMART_TOKEN_LIMIT")),": Maximum token limit for smart LLM responses. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"4000"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"STRATEGIC_TOKEN_LIMIT")),": Maximum token limit for strategic LLM responses. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"4000"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"BROWSE_CHUNK_MAX_LENGTH")),": Maximum length of text chunks to browse in web sources. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"8192"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SUMMARY_TOKEN_LIMIT")),": Maximum token limit for generating summaries. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"700"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"TEMPERATURE")),": Sampling temperature for LLM responses, typically between 0 and 1. A higher value results in more randomness and creativity, while a lower value results in more focused and deterministic responses. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"0.55"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"TOTAL_WORDS")),": Total word count limit for document generation or processing tasks. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"800"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"REPORT_FORMAT")),": Preferred format for report generation. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"APA"),". Consider formats like ",(0,a.yg)("inlineCode",{parentName:"li"},"MLA"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"CMS"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"Harvard style"),", ",(0,a.yg)("inlineCode",{parentName:"li"},"IEEE"),", etc."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"MAX_ITERATIONS")),": Maximum number of iterations for processes like query expansion or search refinement. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"3"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"AGENT_ROLE")),": Role of the agent. This might be used to customize the behavior of the agent based on its assigned roles. No default value."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"MAX_SUBTOPICS")),": Maximum number of subtopics to generate or consider. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"3"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"SCRAPER")),": Web scraper to use for gathering information. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"bs")," (BeautifulSoup). You can also use ",(0,a.yg)("a",{parentName:"li",href:"https://github.com/codelucas/newspaper"},"newspaper"),"."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"DOC_PATH")),": Path to read and research local documents. Defaults to an empty string indicating no path specified."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"USER_AGENT")),": Custom User-Agent string for web crawling and web requests."),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("strong",{parentName:"li"},(0,a.yg)("inlineCode",{parentName:"strong"},"MEMORY_BACKEND")),": Backend used for memory operations, such as local storage of temporary data. Defaults to ",(0,a.yg)("inlineCode",{parentName:"li"},"local"),".")),(0,a.yg)("p",null,"To change the default configurations, you can simply add env variables to your ",(0,a.yg)("inlineCode",{parentName:"p"},".env")," file as named above or export manually in your local project directory."),(0,a.yg)("p",null,"For example, to manually change the search engine and report format:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"export RETRIEVER=bing\nexport REPORT_FORMAT=IEEE\n")),(0,a.yg)("p",null,"Please note that you might need to export additional env vars and obtain API keys for other supported search retrievers and LLM providers. Please follow your console logs for further assistance.\nTo learn more about additional LLM support you can check out the docs ",(0,a.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/llms/llms"},"here"),"."),(0,a.yg)("p",null,"You can also include your own external JSON file ",(0,a.yg)("inlineCode",{parentName:"p"},"config.json")," by adding the path in the ",(0,a.yg)("inlineCode",{parentName:"p"},"config_file")," param."),(0,a.yg)("h2",{id:"example-azure-openai-configuration"},"Example: Azure OpenAI Configuration"),(0,a.yg)("p",null,"If you are not using OpenAI's models, but other model providers, besides the general configuration above, also additional environment variables are required.\nCheck the ",(0,a.yg)("a",{parentName:"p",href:"https://python.langchain.com/v0.2/docs/integrations/platforms/"},"langchain documentation")," about your model for the exact configuration of the API keys and endpoints."),(0,a.yg)("p",null,"Here is an example for ",(0,a.yg)("a",{parentName:"p",href:"https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models"},"Azure OpenAI")," configuration:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},'\nOPENAI_API_VERSION="2024-05-01-preview" # or whatever you are using\nAZURE_OPENAI_ENDPOINT="https://CHANGEMEN.openai.azure.com/" # change to the name of your deployment\nAZURE_OPENAI_API_KEY="[Your Key]" # change to your API key\n\nEMBEDDING="azure_openai:text-embedding-ada-002" # change to the deployment of your embedding model\n\nFAST_LLM="azure_openai:gpt-4o-mini" # change to the name of your deployment (not model-name)\nFAST_TOKEN_LIMIT=4000\n\nSMART_LLM="azure_openai:gpt-4o" # change to the name of your deployment (not model-name)\nSMART_TOKEN_LIMIT=4000\n\nRETRIEVER="bing" # if you are using Bing as your search engine (which is likely if you use Azure)\nBING_API_KEY="[Your Key]"\n\n')))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.84f27113.js b/assets/js/935f2afb.664788d0.js similarity index 50% rename from assets/js/935f2afb.84f27113.js rename to assets/js/935f2afb.664788d0.js index 85f122da2..ec10f6226 100644 --- a/assets/js/935f2afb.84f27113.js +++ b/assets/js/935f2afb.664788d0.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Welcome","href":"/docs/welcome"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Introduction","href":"/docs/gpt-researcher/getting-started/introduction"},{"type":"link","label":"How to Choose","href":"/docs/gpt-researcher/getting-started/how-to-choose"},{"type":"link","label":"Getting Started","href":"/docs/gpt-researcher/getting-started/getting-started"},{"type":"link","label":"Run with CLI","href":"/docs/gpt-researcher/getting-started/cli"},{"type":"link","label":"Docker: Quickstart","href":"/docs/gpt-researcher/getting-started/getting-started-with-docker"},{"type":"link","label":"Running on Linux","href":"/docs/gpt-researcher/getting-started/linux-deployment"}]},{"type":"category","label":"GPT Researcher","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"PIP Package","href":"/docs/gpt-researcher/gptr/pip-package"},{"type":"link","label":"Agent Example","href":"/docs/gpt-researcher/gptr/example"},{"type":"link","label":"Configuration","href":"/docs/gpt-researcher/gptr/config"},{"type":"link","label":"Scraping Options","href":"/docs/gpt-researcher/gptr/scraping"},{"type":"link","label":"Handling Logs","href":"/docs/gpt-researcher/gptr/handling-logs-as-they-stream"},{"type":"link","label":"Querying the Backend","href":"/docs/gpt-researcher/gptr/querying-the-backend"},{"type":"link","label":"Automated Tests","href":"/docs/gpt-researcher/gptr/automated-tests"},{"type":"link","label":"Troubleshooting","href":"/docs/gpt-researcher/gptr/troubleshooting"}]},{"type":"category","label":"Frontend","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Frontend Application","href":"/docs/gpt-researcher/frontend/frontend"},{"type":"link","label":"Playing with Webhooks","href":"/docs/gpt-researcher/frontend/playing-with-webhooks"}]},{"type":"category","label":"Custom Context","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Tailored Research","href":"/docs/gpt-researcher/context/tailored-research"},{"type":"link","label":"Research on Local Documents","href":"/docs/gpt-researcher/context/local-docs"},{"type":"link","label":"Filtering by Domain","href":"/docs/gpt-researcher/context/filtering-by-domain"},{"type":"link","label":"Vector Stores","href":"/docs/gpt-researcher/context/vector-stores"}]},{"type":"category","label":"LLM Providers","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configure LLM","href":"/docs/gpt-researcher/llms/llms"},{"type":"link","label":"Running with Ollama","href":"/docs/gpt-researcher/llms/running-with-ollama"},{"type":"link","label":"Testing your LLM","href":"/docs/gpt-researcher/llms/testing-your-llm"}]},{"type":"category","label":"Search Engines","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Retrievers","href":"/docs/gpt-researcher/search-engines/retrievers"},{"type":"link","label":"Testing your Retriever","href":"/docs/gpt-researcher/search-engines/test-your-retriever"}]},{"type":"category","label":"Multi-Agent Frameworks","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LangGraph","href":"/docs/gpt-researcher/multi_agents/langgraph"}]},{"type":"category","collapsed":true,"collapsible":true,"label":"Examples","items":[{"type":"link","label":"Detailed Report","href":"/docs/examples/detailed_report"},{"type":"link","label":"Simple Run","href":"/docs/examples/examples"},{"type":"link","label":"Hybrid Research","href":"/docs/examples/hybrid_research"}]},{"type":"link","label":"Contribute","href":"/docs/contribute"},{"type":"link","label":"Roadmap","href":"/docs/roadmap"},{"type":"link","label":"FAQ","href":"/docs/faq"}],"referenceSideBar":[{"items":[],"label":"Reference","type":"category","collapsible":true,"collapsed":true}]}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8581],{5610:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docsSidebar":[{"type":"link","label":"Welcome","href":"/docs/welcome"},{"type":"category","label":"Getting Started","collapsible":true,"collapsed":false,"items":[{"type":"link","label":"Introduction","href":"/docs/gpt-researcher/getting-started/introduction"},{"type":"link","label":"How to Choose","href":"/docs/gpt-researcher/getting-started/how-to-choose"},{"type":"link","label":"Getting Started","href":"/docs/gpt-researcher/getting-started/getting-started"},{"type":"link","label":"Run with CLI","href":"/docs/gpt-researcher/getting-started/cli"},{"type":"link","label":"Docker: Quickstart","href":"/docs/gpt-researcher/getting-started/getting-started-with-docker"},{"type":"link","label":"Running on Linux","href":"/docs/gpt-researcher/getting-started/linux-deployment"}]},{"type":"category","label":"GPT Researcher","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"PIP Package","href":"/docs/gpt-researcher/gptr/pip-package"},{"type":"link","label":"Agent Example","href":"/docs/gpt-researcher/gptr/example"},{"type":"link","label":"Configuration","href":"/docs/gpt-researcher/gptr/config"},{"type":"link","label":"Scraping Options","href":"/docs/gpt-researcher/gptr/scraping"},{"type":"link","label":"Handling Logs","href":"/docs/gpt-researcher/gptr/handling-logs-as-they-stream"},{"type":"link","label":"Querying the Backend","href":"/docs/gpt-researcher/gptr/querying-the-backend"},{"type":"link","label":"Automated Tests","href":"/docs/gpt-researcher/gptr/automated-tests"},{"type":"link","label":"Troubleshooting","href":"/docs/gpt-researcher/gptr/troubleshooting"}]},{"type":"category","label":"Frontend","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Frontend Application","href":"/docs/gpt-researcher/frontend/frontend"},{"type":"link","label":"Playing with Webhooks","href":"/docs/gpt-researcher/frontend/playing-with-webhooks"},{"type":"link","label":"Log Files","href":"/docs/gpt-researcher/frontend/logs"}]},{"type":"category","label":"Custom Context","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Tailored Research","href":"/docs/gpt-researcher/context/tailored-research"},{"type":"link","label":"Research on Local Documents","href":"/docs/gpt-researcher/context/local-docs"},{"type":"link","label":"Filtering by Domain","href":"/docs/gpt-researcher/context/filtering-by-domain"},{"type":"link","label":"Vector Stores","href":"/docs/gpt-researcher/context/vector-stores"}]},{"type":"category","label":"LLM Providers","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Configure LLM","href":"/docs/gpt-researcher/llms/llms"},{"type":"link","label":"Running with Ollama","href":"/docs/gpt-researcher/llms/running-with-ollama"},{"type":"link","label":"Testing your LLM","href":"/docs/gpt-researcher/llms/testing-your-llm"}]},{"type":"category","label":"Search Engines","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Retrievers","href":"/docs/gpt-researcher/search-engines/retrievers"},{"type":"link","label":"Testing your Retriever","href":"/docs/gpt-researcher/search-engines/test-your-retriever"}]},{"type":"category","label":"Multi-Agent Frameworks","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"LangGraph","href":"/docs/gpt-researcher/multi_agents/langgraph"}]},{"type":"category","collapsed":true,"collapsible":true,"label":"Examples","items":[{"type":"link","label":"Detailed Report","href":"/docs/examples/detailed_report"},{"type":"link","label":"Simple Run","href":"/docs/examples/examples"},{"type":"link","label":"Hybrid Research","href":"/docs/examples/hybrid_research"}]},{"type":"link","label":"Contribute","href":"/docs/contribute"},{"type":"link","label":"Roadmap","href":"/docs/roadmap"},{"type":"link","label":"FAQ","href":"/docs/faq"}],"referenceSideBar":[{"items":[],"label":"Reference","type":"category","collapsible":true,"collapsed":true}]}}')}}]); \ No newline at end of file diff --git a/assets/js/ad8d4462.4774c754.js b/assets/js/ad8d4462.4774c754.js deleted file mode 100644 index d91202d65..000000000 --- a/assets/js/ad8d4462.4774c754.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6644],{5680:(e,r,n)=>{n.d(r,{xA:()=>p,yg:()=>h});var t=n(6540);function a(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function s(e){for(var r=1;r=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=t.createContext({}),c=function(e){var r=t.useContext(l),n=r;return e&&(n="function"==typeof e?e(r):s(s({},r),e)),n},p=function(e){var r=c(e.components);return t.createElement(l.Provider,{value:r},e.children)},u="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=c(n),d=a,h=u["".concat(l,".").concat(d)]||u[d]||y[d]||o;return n?t.createElement(h,s(s({ref:r},p),{},{components:n})):t.createElement(h,s({ref:r},p))}));function h(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=n.length,s=new Array(o);s[0]=d;var i={};for(var l in r)hasOwnProperty.call(r,l)&&(i[l]=r[l]);i.originalType=e,i[u]="string"==typeof e?e:a,s[1]=i;for(var c=2;c{n.r(r),n.d(r,{contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>l});var t=n(8168),a=(n(6540),n(5680));const o={},s="Hybrid Research",i={unversionedId:"examples/hybrid_research",id:"examples/hybrid_research",isDocsHomePage:!1,title:"Hybrid Research",description:"Introduction",source:"@site/docs/examples/hybrid_research.md",sourceDirName:"examples",slug:"/examples/hybrid_research",permalink:"/docs/examples/hybrid_research",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/examples/hybrid_research.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Simple Run",permalink:"/docs/examples/examples"},next:{title:"Contribute",permalink:"/docs/contribute"}},l=[{value:"Introduction",id:"introduction",children:[],level:2},{value:"Prerequisites",id:"prerequisites",children:[],level:2},{value:"Installation",id:"installation",children:[],level:2},{value:"Setting Up the Environment",id:"setting-up-the-environment",children:[],level:2},{value:"Preparing Local Documents",id:"preparing-local-documents",children:[],level:2},{value:"Running Hybrid Research",id:"running-hybrid-research",children:[],level:2},{value:"Understanding the Results",id:"understanding-the-results",children:[],level:2},{value:"Troubleshooting",id:"troubleshooting",children:[],level:2},{value:"FAQ",id:"faq",children:[],level:2}],c={toc:l},p="wrapper";function u(e){let{components:r,...n}=e;return(0,a.yg)(p,(0,t.A)({},c,n,{components:r,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"hybrid-research"},"Hybrid Research"),(0,a.yg)("h2",{id:"introduction"},"Introduction"),(0,a.yg)("p",null,"GPT Researcher can combine web search capabilities with local document analysis to provide comprehensive, context-aware research results. "),(0,a.yg)("p",null,"This guide will walk you through the process of setting up and running hybrid research using GPT Researcher."),(0,a.yg)("h2",{id:"prerequisites"},"Prerequisites"),(0,a.yg)("p",null,"Before you begin, ensure you have the following:"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},"Python 3.10 or higher installed on your system"),(0,a.yg)("li",{parentName:"ul"},"pip (Python package installer)"),(0,a.yg)("li",{parentName:"ul"},"An OpenAI API key (you can also choose other supported ",(0,a.yg)("a",{parentName:"li",href:"/docs/gpt-researcher/llms/llms"},"LLMs"),")"),(0,a.yg)("li",{parentName:"ul"},"A Tavily API key (you can also choose other supported ",(0,a.yg)("a",{parentName:"li",href:"/docs/gpt-researcher/search-engines/retrievers"},"Retrievers"),")")),(0,a.yg)("h2",{id:"installation"},"Installation"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"pip install gpt-researcher\n")),(0,a.yg)("h2",{id:"setting-up-the-environment"},"Setting Up the Environment"),(0,a.yg)("p",null,"Export your API keys as environment variables:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-bash"},"export OPENAI_API_KEY=your_openai_api_key_here\nexport TAVILY_API_KEY=your_tavily_api_key_here\n")),(0,a.yg)("p",null,"Alternatively, you can set these in your Python script:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-python"},"import os\nos.environ['OPENAI_API_KEY'] = 'your_openai_api_key_here'\nos.environ['TAVILY_API_KEY'] = 'your_tavily_api_key_here'\n")),(0,a.yg)("h2",{id:"preparing-local-documents"},"Preparing Local Documents"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},"Create a directory named ",(0,a.yg)("inlineCode",{parentName:"li"},"my-docs")," in your project folder."),(0,a.yg)("li",{parentName:"ol"},"Place all relevant local documents (PDFs, TXTs, DOCXs, etc.) in this directory.")),(0,a.yg)("h2",{id:"running-hybrid-research"},"Running Hybrid Research"),(0,a.yg)("p",null,"Here's a basic script to run hybrid research:"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_research_report(query: str, report_type: str, report_source: str) -> str:\n researcher = GPTResearcher(query=query, report_type=report_type, report_source=report_source)\n research = await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n\nif __name__ == "__main__":\n query = "How does our product roadmap compare to emerging market trends in our industry?"\n report_source = "hybrid"\n\n report = asyncio.run(get_research_report(query=query, report_type="research_report", report_source=report_source))\n print(report)\n')),(0,a.yg)("p",null,"To run the script:"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},"Save it as ",(0,a.yg)("inlineCode",{parentName:"li"},"run_research.py")),(0,a.yg)("li",{parentName:"ol"},"Execute it with: ",(0,a.yg)("inlineCode",{parentName:"li"},"python run_research.py"))),(0,a.yg)("h2",{id:"understanding-the-results"},"Understanding the Results"),(0,a.yg)("p",null,"The output will be a comprehensive research report that combines insights from both web sources and your local documents. The report typically includes an executive summary, key findings, detailed analysis, comparisons between your internal data and external trends, and recommendations based on the combined insights."),(0,a.yg)("h2",{id:"troubleshooting"},"Troubleshooting"),(0,a.yg)("ol",null,(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"API Key Issues"),": Ensure your API keys are correctly set and have the necessary permissions."),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"Document Loading Errors"),": Check that your local documents are in supported formats and are not corrupted."),(0,a.yg)("li",{parentName:"ol"},(0,a.yg)("strong",{parentName:"li"},"Memory Issues"),": For large documents or extensive research, you may need to increase your system's available memory or adjust the ",(0,a.yg)("inlineCode",{parentName:"li"},"chunk_size")," in the document processing step.")),(0,a.yg)("h2",{id:"faq"},"FAQ"),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Q: How long does a typical research session take?"),"\nA: The duration varies based on the complexity of the query and the amount of data to process. It can range from 1-5 minutes for very comprehensive research."),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Q: Can I use GPT Researcher with other language models?"),"\nA: Currently, GPT Researcher is optimized for OpenAI's models. Support for other models can be found ",(0,a.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/llms/llms"},"here"),"."),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Q: How does GPT Researcher handle conflicting information between local and web sources?"),"\nA: The system attempts to reconcile differences by providing context and noting discrepancies in the final report. It prioritizes more recent or authoritative sources when conflicts arise."),(0,a.yg)("p",null,(0,a.yg)("strong",{parentName:"p"},"Q: Is my local data sent to external servers during the research process?"),"\nA: No, your local documents are processed on your machine. Only the generated queries and synthesized information (not raw data) are sent to external services for web research."),(0,a.yg)("p",null,"For more information and updates, please visit the ",(0,a.yg)("a",{parentName:"p",href:"https://github.com/assafelovic/gpt-researcher"},"GPT Researcher GitHub repository"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ad8d4462.93a4b38a.js b/assets/js/ad8d4462.93a4b38a.js new file mode 100644 index 000000000..aa6b7b612 --- /dev/null +++ b/assets/js/ad8d4462.93a4b38a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6644],{5680:(e,r,n)=>{n.d(r,{xA:()=>p,yg:()=>h});var t=n(6540);function o(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function a(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function s(e){for(var r=1;r=0||(o[n]=e[n]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=t.createContext({}),c=function(e){var r=t.useContext(l),n=r;return e&&(n="function"==typeof e?e(r):s(s({},r),e)),n},p=function(e){var r=c(e.components);return t.createElement(l.Provider,{value:r},e.children)},u="mdxType",y={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=c(n),d=o,h=u["".concat(l,".").concat(d)]||u[d]||y[d]||a;return n?t.createElement(h,s(s({ref:r},p),{},{components:n})):t.createElement(h,s({ref:r},p))}));function h(e,r){var n=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=n.length,s=new Array(a);s[0]=d;var i={};for(var l in r)hasOwnProperty.call(r,l)&&(i[l]=r[l]);i.originalType=e,i[u]="string"==typeof e?e:o,s[1]=i;for(var c=2;c{n.r(r),n.d(r,{contentTitle:()=>s,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>l});var t=n(8168),o=(n(6540),n(5680));const a={},s="Hybrid Research",i={unversionedId:"examples/hybrid_research",id:"examples/hybrid_research",isDocsHomePage:!1,title:"Hybrid Research",description:"Introduction",source:"@site/docs/examples/hybrid_research.md",sourceDirName:"examples",slug:"/examples/hybrid_research",permalink:"/docs/examples/hybrid_research",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/examples/hybrid_research.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Simple Run",permalink:"/docs/examples/examples"},next:{title:"Contribute",permalink:"/docs/contribute"}},l=[{value:"Introduction",id:"introduction",children:[],level:2},{value:"Prerequisites",id:"prerequisites",children:[],level:2},{value:"Installation",id:"installation",children:[],level:2},{value:"Setting Up the Environment",id:"setting-up-the-environment",children:[],level:2},{value:"Preparing Documents",id:"preparing-documents",children:[{value:"1. Local Documents",id:"1-local-documents",children:[],level:3},{value:"2. Online Documents",id:"2-online-documents",children:[],level:3}],level:2},{value:"Running Hybrid Research By "Local Documents"",id:"running-hybrid-research-by-local-documents",children:[],level:2},{value:"Running Hybrid Research By "Online Documents"",id:"running-hybrid-research-by-online-documents",children:[],level:2},{value:"Understanding the Results",id:"understanding-the-results",children:[],level:2},{value:"Troubleshooting",id:"troubleshooting",children:[],level:2},{value:"FAQ",id:"faq",children:[],level:2}],c={toc:l},p="wrapper";function u(e){let{components:r,...n}=e;return(0,o.yg)(p,(0,t.A)({},c,n,{components:r,mdxType:"MDXLayout"}),(0,o.yg)("h1",{id:"hybrid-research"},"Hybrid Research"),(0,o.yg)("h2",{id:"introduction"},"Introduction"),(0,o.yg)("p",null,"GPT Researcher can combine web search capabilities with local document analysis to provide comprehensive, context-aware research results. "),(0,o.yg)("p",null,"This guide will walk you through the process of setting up and running hybrid research using GPT Researcher."),(0,o.yg)("h2",{id:"prerequisites"},"Prerequisites"),(0,o.yg)("p",null,"Before you begin, ensure you have the following:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Python 3.10 or higher installed on your system"),(0,o.yg)("li",{parentName:"ul"},"pip (Python package installer)"),(0,o.yg)("li",{parentName:"ul"},"An OpenAI API key (you can also choose other supported ",(0,o.yg)("a",{parentName:"li",href:"/docs/gpt-researcher/llms/llms"},"LLMs"),")"),(0,o.yg)("li",{parentName:"ul"},"A Tavily API key (you can also choose other supported ",(0,o.yg)("a",{parentName:"li",href:"/docs/gpt-researcher/search-engines/retrievers"},"Retrievers"),")")),(0,o.yg)("h2",{id:"installation"},"Installation"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},"pip install gpt-researcher\n")),(0,o.yg)("h2",{id:"setting-up-the-environment"},"Setting Up the Environment"),(0,o.yg)("p",null,"Export your API keys as environment variables:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},"export OPENAI_API_KEY=your_openai_api_key_here\nexport TAVILY_API_KEY=your_tavily_api_key_here\n")),(0,o.yg)("p",null,"Alternatively, you can set these in your Python script:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},"import os\nos.environ['OPENAI_API_KEY'] = 'your_openai_api_key_here'\nos.environ['TAVILY_API_KEY'] = 'your_tavily_api_key_here'\n")),(0,o.yg)("p",null,'Set the environment variable REPORT_SOURCE to an empty string "" in default.py'),(0,o.yg)("h2",{id:"preparing-documents"},"Preparing Documents"),(0,o.yg)("h3",{id:"1-local-documents"},"1. Local Documents"),(0,o.yg)("ol",null,(0,o.yg)("li",{parentName:"ol"},"Create a directory named ",(0,o.yg)("inlineCode",{parentName:"li"},"my-docs")," in your project folder."),(0,o.yg)("li",{parentName:"ol"},"Place all relevant local documents (PDFs, TXTs, DOCXs, etc.) in this directory.")),(0,o.yg)("h3",{id:"2-online-documents"},"2. Online Documents"),(0,o.yg)("ol",null,(0,o.yg)("li",{parentName:"ol"},"Here is an example of your online document URL example: ",(0,o.yg)("a",{parentName:"li",href:"https://xxxx.xxx.pdf"},"https://xxxx.xxx.pdf")," (supports file formats like PDFs, TXTs, DOCXs, etc.) ")),(0,o.yg)("h2",{id:"running-hybrid-research-by-local-documents"},'Running Hybrid Research By "Local Documents"'),(0,o.yg)("p",null,"Here's a basic script to run hybrid research:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_research_report(query: str, report_type: str, report_source: str) -> str:\n researcher = GPTResearcher(query=query, report_type=report_type, report_source=report_source)\n research = await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n\nif __name__ == "__main__":\n query = "How does our product roadmap compare to emerging market trends in our industry?"\n report_source = "hybrid"\n\n report = asyncio.run(get_research_report(query=query, report_type="research_report", report_source=report_source))\n print(report)\n')),(0,o.yg)("h2",{id:"running-hybrid-research-by-online-documents"},'Running Hybrid Research By "Online Documents"'),(0,o.yg)("p",null,"Here's a basic script to run hybrid research:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_research_report(query: str, report_type: str, report_source: str) -> str:\n researcher = GPTResearcher(query=query, report_type=report_type, document_urls=document_urls, report_source=report_source)\n research = await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n\nif __name__ == "__main__":\n query = "How does our product roadmap compare to emerging market trends in our industry?"\n report_source = "hybrid"\n document_urls = ["https://xxxx.xxx.pdf", "https://xxxx.xxx.doc"]\n\n report = asyncio.run(get_research_report(query=query, report_type="research_report", document_urls=document_urls, report_source=report_source))\n print(report)\n')),(0,o.yg)("p",null,"To run the script:"),(0,o.yg)("ol",null,(0,o.yg)("li",{parentName:"ol"},"Save it as ",(0,o.yg)("inlineCode",{parentName:"li"},"run_research.py")),(0,o.yg)("li",{parentName:"ol"},"Execute it with: ",(0,o.yg)("inlineCode",{parentName:"li"},"python run_research.py"))),(0,o.yg)("h2",{id:"understanding-the-results"},"Understanding the Results"),(0,o.yg)("p",null,"The output will be a comprehensive research report that combines insights from both web sources and your local documents. The report typically includes an executive summary, key findings, detailed analysis, comparisons between your internal data and external trends, and recommendations based on the combined insights."),(0,o.yg)("h2",{id:"troubleshooting"},"Troubleshooting"),(0,o.yg)("ol",null,(0,o.yg)("li",{parentName:"ol"},(0,o.yg)("strong",{parentName:"li"},"API Key Issues"),": Ensure your API keys are correctly set and have the necessary permissions."),(0,o.yg)("li",{parentName:"ol"},(0,o.yg)("strong",{parentName:"li"},"Document Loading Errors"),": Check that your local documents are in supported formats and are not corrupted."),(0,o.yg)("li",{parentName:"ol"},(0,o.yg)("strong",{parentName:"li"},"Memory Issues"),": For large documents or extensive research, you may need to increase your system's available memory or adjust the ",(0,o.yg)("inlineCode",{parentName:"li"},"chunk_size")," in the document processing step.")),(0,o.yg)("h2",{id:"faq"},"FAQ"),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Q: How long does a typical research session take?"),"\nA: The duration varies based on the complexity of the query and the amount of data to process. It can range from 1-5 minutes for very comprehensive research."),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Q: Can I use GPT Researcher with other language models?"),"\nA: Currently, GPT Researcher is optimized for OpenAI's models. Support for other models can be found ",(0,o.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/llms/llms"},"here"),"."),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Q: How does GPT Researcher handle conflicting information between local and web sources?"),"\nA: The system attempts to reconcile differences by providing context and noting discrepancies in the final report. It prioritizes more recent or authoritative sources when conflicts arise."),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Q: Is my local data sent to external servers during the research process?"),"\nA: No, your local documents are processed on your machine. Only the generated queries and synthesized information (not raw data) are sent to external services for web research."),(0,o.yg)("p",null,"For more information and updates, please visit the ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/assafelovic/gpt-researcher"},"GPT Researcher GitHub repository"),"."))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d136d620.a12c86d3.js b/assets/js/d136d620.a12c86d3.js deleted file mode 100644 index c0e0ea3ef..000000000 --- a/assets/js/d136d620.a12c86d3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3089],{5680:(e,n,a)=>{a.d(n,{xA:()=>s,yg:()=>u});var r=a(6540);function o(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function t(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var n=1;n=0||(o[a]=e[a]);return o}(e,n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var p=r.createContext({}),g=function(e){var n=r.useContext(p),a=n;return e&&(a="function"==typeof e?e(n):l(l({},n),e)),a},s=function(e){var n=g(e.components);return r.createElement(p.Provider,{value:n},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var a=e.components,o=e.mdxType,t=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=g(a),d=o,u=m["".concat(p,".").concat(d)]||m[d]||c[d]||t;return a?r.createElement(u,l(l({ref:n},s),{},{components:a})):r.createElement(u,l({ref:n},s))}));function u(e,n){var a=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var t=a.length,l=new Array(t);l[0]=d;var i={};for(var p in n)hasOwnProperty.call(n,p)&&(i[p]=n[p]);i.originalType=e,i[m]="string"==typeof e?e:o,l[1]=i;for(var g=2;g{a.r(n),a.d(n,{contentTitle:()=>l,default:()=>m,frontMatter:()=>t,metadata:()=>i,toc:()=>p});var r=a(8168),o=(a(6540),a(5680));const t={},l="Configure LLM",i={unversionedId:"gpt-researcher/llms/llms",id:"gpt-researcher/llms/llms",isDocsHomePage:!1,title:"Configure LLM",description:"As described in the introduction, the default LLM and embedding is OpenAI due to its superior performance and speed.",source:"@site/docs/gpt-researcher/llms/llms.md",sourceDirName:"gpt-researcher/llms",slug:"/gpt-researcher/llms/llms",permalink:"/docs/gpt-researcher/llms/llms",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/llms/llms.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Vector Stores",permalink:"/docs/gpt-researcher/context/vector-stores"},next:{title:"Running with Ollama",permalink:"/docs/gpt-researcher/llms/running-with-ollama"}},p=[{value:"OpenAI",id:"openai",children:[],level:2},{value:"Custom LLM",id:"custom-llm",children:[],level:2},{value:"Azure OpenAI",id:"azure-openai",children:[],level:2},{value:"Ollama",id:"ollama",children:[],level:2},{value:"Groq",id:"groq",children:[{value:"Sign up",id:"sign-up",children:[],level:3},{value:"Update env vars",id:"update-env-vars",children:[],level:3}],level:2},{value:"Anthropic",id:"anthropic",children:[],level:2},{value:"Mistral AI",id:"mistral-ai",children:[],level:2},{value:"Together AI",id:"together-ai",children:[],level:2},{value:"HuggingFace",id:"huggingface",children:[],level:2},{value:"Google Gemini",id:"google-gemini",children:[],level:2},{value:"Google VertexAI",id:"google-vertexai",children:[],level:2},{value:"Cohere",id:"cohere",children:[],level:2},{value:"Fireworks",id:"fireworks",children:[],level:2},{value:"Bedrock",id:"bedrock",children:[],level:2},{value:"xAI",id:"xai",children:[],level:2},{value:"Other Embedding Models",id:"other-embedding-models",children:[{value:"Nomic",id:"nomic",children:[],level:3},{value:"VoyageAI",id:"voyageai",children:[],level:3}],level:2}],g={toc:p},s="wrapper";function m(e){let{components:n,...a}=e;return(0,o.yg)(s,(0,r.A)({},g,a,{components:n,mdxType:"MDXLayout"}),(0,o.yg)("h1",{id:"configure-llm"},"Configure LLM"),(0,o.yg)("p",null,"As described in the ",(0,o.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/gptr/config"},"introduction"),", the default LLM and embedding is OpenAI due to its superior performance and speed.\nWith that said, GPT Researcher supports various open/closed source LLMs and embeddings, and you can easily switch between them by updating the ",(0,o.yg)("inlineCode",{parentName:"p"},"SMART_LLM"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"FAST_LLM")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"EMBEDDING")," env variables. You might also need to include the provider API key and corresponding configuration params."),(0,o.yg)("p",null,"Current supported LLMs are ",(0,o.yg)("inlineCode",{parentName:"p"},"openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"anthropic"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"azure_openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"cohere"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_vertexai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_genai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"fireworks"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"ollama"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"together"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"mistralai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"huggingface"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"groq")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"bedrock"),"."),(0,o.yg)("p",null,"Current supported embeddings are ",(0,o.yg)("inlineCode",{parentName:"p"},"openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"azure_openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"cohere"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_vertexai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_genai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"fireworks"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"ollama"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"together"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"mistralai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"huggingface"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"nomic")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"voyageai"),"."),(0,o.yg)("p",null,"To learn more about support customization options see ",(0,o.yg)("a",{parentName:"p",href:"/gpt-researcher/config"},"here"),"."),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Please note"),": GPT Researcher is optimized and heavily tested on GPT models. Some other models might run into context limit errors, and unexpected responses.\nPlease provide any feedback in our ",(0,o.yg)("a",{parentName:"p",href:"https://discord.gg/DUmbTebB"},"Discord community")," channel, so we can better improve the experience and performance."),(0,o.yg)("p",null,"Below you can find examples for how to configure the various supported LLMs."),(0,o.yg)("h2",{id:"openai"},"OpenAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'# set the custom OpenAI API key\nOPENAI_API_KEY=[Your Key]\n\n# specify llms\nFAST_LLM="openai:gpt-4o-mini"\nSMART_LLM="openai:gpt-4o"\nSTRATEGIC_LLM="openai:o1-preview"\n\n# specify embedding\nEMBEDDING="openai:text-embedding-3-small"\n')),(0,o.yg)("h2",{id:"custom-llm"},"Custom LLM"),(0,o.yg)("p",null,"Create a local OpenAI API using ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md#quick-start"},"llama.cpp Server"),"."),(0,o.yg)("p",null,'For custom LLM, specify "openai:{your-llm}"'),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'# set the custom OpenAI API url\nOPENAI_BASE_URL="http://localhost:1234/v1"\n# set the custom OpenAI API key\nOPENAI_API_KEY="dummy_key"\n\n# specify custom llms \nFAST_LLM="openai:your_fast_llm"\nSMART_LLM="openai:your_smart_llm"\nSTRATEGIC_LLM="openai:your_strategic_llm"\n')),(0,o.yg)("p",null,'For custom embedding, set "custom:{your-embedding}"'),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'# set the custom OpenAI API url\nOPENAI_BASE_URL="http://localhost:1234/v1"\n# set the custom OpenAI API key\nOPENAI_API_KEY="dummy_key"\n\n# specify the custom embedding model \nEMBEDDING="custom:your_embedding"\n')),(0,o.yg)("h2",{id:"azure-openai"},"Azure OpenAI"),(0,o.yg)("p",null,"See also the documentation in the Langchain ",(0,o.yg)("a",{parentName:"p",href:"https://api.python.langchain.com/en/latest/chat_models/langchain_openai.chat_models.azure.AzureChatOpenAI.html"},"Azure OpenAI")," page."),(0,o.yg)("p",null,"On Azure OpenAI you will need to create deployments for each model you want to use. Please also specify the model names/deployment names in your ",(0,o.yg)("inlineCode",{parentName:"p"},".env")," file:"),(0,o.yg)("p",null,"Required Embedding Model:\nTo ensure optimal performance, GPT Researcher requires the text-embedding-3-large model. Please deploy this specific model to your Azure Endpoint."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},"AZURE_OPENAI_API_KEY=[Your Key]\nAZURE_OPENAI_ENDPOINT=https://{your-endpoint}.openai.azure.com/\nOPENAI_API_VERSION=2024-05-01-preview\n\n# note that the deployment name must be the same as the model name\nFAST_LLM=azure_openai:gpt-4o-mini \nSMART_LLM=azure_openai:gpt-4o\nSTRATEGIC_LLM=azure_openai:o1-preview\n\n\n")),(0,o.yg)("h2",{id:"ollama"},"Ollama"),(0,o.yg)("p",null,"GPT Researcher supports both Ollama LLMs and embeddings. You can choose each or both.\nTo use ",(0,o.yg)("a",{parentName:"p",href:"http://www.ollama.com"},"Ollama")," you can set the following environment variables"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'OLLAMA_BASE_URL=http://localhost:11434\nFAST_LLM="ollama:llama3"\nSMART_LLM="ollama:llama3"\nSTRATEGIC_LLM="ollama:llama3"\n\nEMBEDDING="ollama:nomic-embed-text"\n')),(0,o.yg)("h2",{id:"groq"},"Groq"),(0,o.yg)("p",null,"GroqCloud provides advanced AI hardware and software solutions designed to deliver amazingly fast AI inference performance.\nTo leverage Groq in GPT-Researcher, you will need a GroqCloud account and an API Key. (",(0,o.yg)("strong",{parentName:"p"},"NOTE:")," Groq has a very ",(0,o.yg)("em",{parentName:"p"},"generous free tier"),".)"),(0,o.yg)("h3",{id:"sign-up"},"Sign up"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("p",{parentName:"li"},"You can signup here: ",(0,o.yg)("a",{parentName:"p",href:"https://console.groq.com/login"},"https://console.groq.com/login"))),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("p",{parentName:"li"},"Once you are logged in, you can get an API Key here: ",(0,o.yg)("a",{parentName:"p",href:"https://console.groq.com/keys"},"https://console.groq.com/keys"))),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("p",{parentName:"li"},"Once you have an API key, you will need to add it to your ",(0,o.yg)("inlineCode",{parentName:"p"},"systems environment")," using the variable name:\n",(0,o.yg)("inlineCode",{parentName:"p"},'GROQ_API_KEY="*********************"')))),(0,o.yg)("h3",{id:"update-env-vars"},"Update env vars"),(0,o.yg)("p",null,"And finally, you will need to configure the GPT-Researcher Provider and Model variables:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'GROQ_API_KEY=[Your Key]\n\n# Set one of the LLM models supported by Groq\nFAST_LLM="groq:Mixtral-8x7b-32768"\nSMART_LLM="groq:Mixtral-8x7b-32768"\nSTRATEGIC_LLM="groq:Mixtral-8x7b-32768"\n')),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"NOTE:")," As of the writing of this Doc (May 2024), the available Language Models from Groq are:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Llama3-70b-8192"),(0,o.yg)("li",{parentName:"ul"},"Llama3-8b-8192"),(0,o.yg)("li",{parentName:"ul"},"Mixtral-8x7b-32768"),(0,o.yg)("li",{parentName:"ul"},"Gemma-7b-it")),(0,o.yg)("h2",{id:"anthropic"},"Anthropic"),(0,o.yg)("p",null,"Refer to Anthropic ",(0,o.yg)("a",{parentName:"p",href:"https://docs.anthropic.com/en/api/getting-started"},"Getting started page")," to obtain Anthropic API key. Update the corresponding env vars, for example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'ANTHROPIC_API_KEY=[Your key]\nFAST_LLM="anthropic:claude-2.1"\nSMART_LLM="anthropic:claude-3-opus-20240229"\nSTRATEGIC_LLM="anthropic:claude-3-opus-20240229"\n')),(0,o.yg)("p",null,"Anthropic does not offer its own embedding model. "),(0,o.yg)("h2",{id:"mistral-ai"},"Mistral AI"),(0,o.yg)("p",null,"Sign up for a ",(0,o.yg)("a",{parentName:"p",href:"https://console.mistral.ai/users/api-keys/"},"Mistral API key"),".\nThen update the corresponding env vars, for example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'MISTRAL_API_KEY=[Your key]\nFAST_LLM="mistralai:open-mistral-7b"\nSMART_LLM="mistralai:mistral-large-latest"\nSTRATEGIC_LLM="mistralai:mistral-large-latest"\n\nEMBEDDING="mistralai:mistral-embed"\n')),(0,o.yg)("h2",{id:"together-ai"},"Together AI"),(0,o.yg)("p",null,(0,o.yg)("a",{parentName:"p",href:"https://www.together.ai/"},"Together AI")," offers an API to query ",(0,o.yg)("a",{parentName:"p",href:"https://docs.together.ai/docs/inference-models"},"50+ leading open-source models")," in a couple lines of code.\nThen update corresponding env vars, for example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'TOGETHER_API_KEY=[Your key]\nFAST_LLM="together:meta-llama/Llama-3-8b-chat-hf"\nSMART_LLM="together:meta-llama/Llama-3-70b-chat-hf"\nSTRATEGIC_LLM="together:meta-llama/Llama-3-70b-chat-hf"\n\nEMBEDDING="mistralai:nomic-ai/nomic-embed-text-v1.5"\n')),(0,o.yg)("h2",{id:"huggingface"},"HuggingFace"),(0,o.yg)("p",null,"This integration requires a bit of extra work. Follow ",(0,o.yg)("a",{parentName:"p",href:"https://python.langchain.com/v0.1/docs/integrations/chat/huggingface/"},"this guide")," to learn more.\nAfter you've followed the tutorial above, update the env vars:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'HUGGINGFACE_API_KEY=[Your key]\nFAST_LLM="huggingface:HuggingFaceH4/zephyr-7b-beta"\nSMART_LLM="huggingface:HuggingFaceH4/zephyr-7b-beta"\nSTRATEGIC_LLM="huggingface:HuggingFaceH4/zephyr-7b-beta"\n\nEMBEDDING="sentence-transformers/all-MiniLM-L6-v2"\n')),(0,o.yg)("h2",{id:"google-gemini"},"Google Gemini"),(0,o.yg)("p",null,"Sign up ",(0,o.yg)("a",{parentName:"p",href:"https://ai.google.dev/gemini-api/docs/api-key"},"here")," for obtaining a Google Gemini API Key and update the following env vars:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'GOOGLE_API_KEY=[Your key]\nFAST_LLM="google_genai:gemini-1.5-flash"\nSMART_LLM="google_genai:gemini-1.5-pro"\nSTRATEGIC_LLM="google_genai:gemini-1.5-pro"\n\nEMBEDDING="google_genai:models/text-embedding-004"\n')),(0,o.yg)("h2",{id:"google-vertexai"},"Google VertexAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FAST_LLM="google_vertexai:gemini-1.5-flash-001"\nSMART_LLM="google_vertexai:gemini-1.5-pro-001"\nSTRATEGIC_LLM="google_vertexai:gemini-1.5-pro-001"\n\nEMBEDDING="google_vertexai:text-embedding-004"\n')),(0,o.yg)("h2",{id:"cohere"},"Cohere"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'COHERE_API_KEY=[Your key]\nFAST_LLM="cohere:command"\nSMART_LLM="cohere:command-nightly"\nSTRATEGIC_LLM="cohere:command-nightly"\n\nEMBEDDING="cohere:embed-english-v3.0"\n')),(0,o.yg)("h2",{id:"fireworks"},"Fireworks"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FIREWORKS_API_KEY=[Your key]\nbase_url="https://api.fireworks.ai/inference/v1/completions"\nFAST_LLM="fireworks:accounts/fireworks/models/mixtral-8x7b-instruct"\nSMART_LLM="fireworks:accounts/fireworks/models/mixtral-8x7b-instruct"\nSTRATEGIC_LLM="fireworks:accounts/fireworks/models/mixtral-8x7b-instruct"\n\nEMBEDDING="fireworks:nomic-ai/nomic-embed-text-v1.5"\n')),(0,o.yg)("h2",{id:"bedrock"},"Bedrock"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FAST_LLM="bedrock:anthropic.claude-3-sonnet-20240229-v1:0"\nSMART_LLM="bedrock:anthropic.claude-3-sonnet-20240229-v1:0"\nSTRATEGIC_LLM="bedrock:anthropic.claude-3-sonnet-20240229-v1:0"\n')),(0,o.yg)("h2",{id:"xai"},"xAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FAST_LLM="xai:grok-beta"\nSMART_LLM="xai:grok-beta"\nSTRATEGIC_LLM="xai:grok-beta"\n')),(0,o.yg)("h2",{id:"other-embedding-models"},"Other Embedding Models"),(0,o.yg)("h3",{id:"nomic"},"Nomic"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'EMBEDDING="nomic:nomic-embed-text-v1.5"\n')),(0,o.yg)("h3",{id:"voyageai"},"VoyageAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'VOYAGE_API_KEY=[Your Key]\nEMBEDDING="voyageai:voyage-law-2"\n')))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d136d620.af31bb8e.js b/assets/js/d136d620.af31bb8e.js new file mode 100644 index 000000000..add8db792 --- /dev/null +++ b/assets/js/d136d620.af31bb8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3089],{5680:(e,n,a)=>{a.d(n,{xA:()=>s,yg:()=>u});var r=a(6540);function o(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function t(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,r)}return a}function l(e){for(var n=1;n=0||(o[a]=e[a]);return o}(e,n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var p=r.createContext({}),g=function(e){var n=r.useContext(p),a=n;return e&&(a="function"==typeof e?e(n):l(l({},n),e)),a},s=function(e){var n=g(e.components);return r.createElement(p.Provider,{value:n},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var a=e.components,o=e.mdxType,t=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),m=g(a),d=o,u=m["".concat(p,".").concat(d)]||m[d]||c[d]||t;return a?r.createElement(u,l(l({ref:n},s),{},{components:a})):r.createElement(u,l({ref:n},s))}));function u(e,n){var a=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var t=a.length,l=new Array(t);l[0]=d;var i={};for(var p in n)hasOwnProperty.call(n,p)&&(i[p]=n[p]);i.originalType=e,i[m]="string"==typeof e?e:o,l[1]=i;for(var g=2;g{a.r(n),a.d(n,{contentTitle:()=>l,default:()=>m,frontMatter:()=>t,metadata:()=>i,toc:()=>p});var r=a(8168),o=(a(6540),a(5680));const t={},l="Configure LLM",i={unversionedId:"gpt-researcher/llms/llms",id:"gpt-researcher/llms/llms",isDocsHomePage:!1,title:"Configure LLM",description:"As described in the introduction, the default LLM and embedding is OpenAI due to its superior performance and speed.",source:"@site/docs/gpt-researcher/llms/llms.md",sourceDirName:"gpt-researcher/llms",slug:"/gpt-researcher/llms/llms",permalink:"/docs/gpt-researcher/llms/llms",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/llms/llms.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Vector Stores",permalink:"/docs/gpt-researcher/context/vector-stores"},next:{title:"Running with Ollama",permalink:"/docs/gpt-researcher/llms/running-with-ollama"}},p=[{value:"OpenAI",id:"openai",children:[],level:2},{value:"Custom LLM",id:"custom-llm",children:[],level:2},{value:"Azure OpenAI",id:"azure-openai",children:[],level:2},{value:"Ollama",id:"ollama",children:[],level:2},{value:"Groq",id:"groq",children:[{value:"Sign up",id:"sign-up",children:[],level:3},{value:"Update env vars",id:"update-env-vars",children:[],level:3}],level:2},{value:"Anthropic",id:"anthropic",children:[],level:2},{value:"Mistral AI",id:"mistral-ai",children:[],level:2},{value:"Together AI",id:"together-ai",children:[],level:2},{value:"HuggingFace",id:"huggingface",children:[],level:2},{value:"Google Gemini",id:"google-gemini",children:[],level:2},{value:"Google VertexAI",id:"google-vertexai",children:[],level:2},{value:"Cohere",id:"cohere",children:[],level:2},{value:"Fireworks",id:"fireworks",children:[],level:2},{value:"Bedrock",id:"bedrock",children:[],level:2},{value:"xAI",id:"xai",children:[],level:2},{value:"Other Embedding Models",id:"other-embedding-models",children:[{value:"Nomic",id:"nomic",children:[],level:3},{value:"VoyageAI",id:"voyageai",children:[],level:3}],level:2}],g={toc:p},s="wrapper";function m(e){let{components:n,...a}=e;return(0,o.yg)(s,(0,r.A)({},g,a,{components:n,mdxType:"MDXLayout"}),(0,o.yg)("h1",{id:"configure-llm"},"Configure LLM"),(0,o.yg)("p",null,"As described in the ",(0,o.yg)("a",{parentName:"p",href:"/docs/gpt-researcher/gptr/config"},"introduction"),", the default LLM and embedding is OpenAI due to its superior performance and speed.\nWith that said, GPT Researcher supports various open/closed source LLMs and embeddings, and you can easily switch between them by updating the ",(0,o.yg)("inlineCode",{parentName:"p"},"SMART_LLM"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"FAST_LLM")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"EMBEDDING")," env variables. You might also need to include the provider API key and corresponding configuration params."),(0,o.yg)("p",null,"Current supported LLMs are ",(0,o.yg)("inlineCode",{parentName:"p"},"openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"anthropic"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"azure_openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"cohere"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_vertexai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_genai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"fireworks"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"ollama"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"together"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"mistralai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"huggingface"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"groq")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"bedrock"),"."),(0,o.yg)("p",null,"Current supported embeddings are ",(0,o.yg)("inlineCode",{parentName:"p"},"openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"azure_openai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"cohere"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_vertexai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"google_genai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"fireworks"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"ollama"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"together"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"mistralai"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"huggingface"),", ",(0,o.yg)("inlineCode",{parentName:"p"},"nomic")," ,",(0,o.yg)("inlineCode",{parentName:"p"},"voyageai")," and ",(0,o.yg)("inlineCode",{parentName:"p"},"bedrock"),"."),(0,o.yg)("p",null,"To learn more about support customization options see ",(0,o.yg)("a",{parentName:"p",href:"/gpt-researcher/config"},"here"),"."),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"Please note"),": GPT Researcher is optimized and heavily tested on GPT models. Some other models might run into context limit errors, and unexpected responses.\nPlease provide any feedback in our ",(0,o.yg)("a",{parentName:"p",href:"https://discord.gg/DUmbTebB"},"Discord community")," channel, so we can better improve the experience and performance."),(0,o.yg)("p",null,"Below you can find examples for how to configure the various supported LLMs."),(0,o.yg)("h2",{id:"openai"},"OpenAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'# set the custom OpenAI API key\nOPENAI_API_KEY=[Your Key]\n\n# specify llms\nFAST_LLM="openai:gpt-4o-mini"\nSMART_LLM="openai:gpt-4o"\nSTRATEGIC_LLM="openai:o1-preview"\n\n# specify embedding\nEMBEDDING="openai:text-embedding-3-small"\n')),(0,o.yg)("h2",{id:"custom-llm"},"Custom LLM"),(0,o.yg)("p",null,"Create a local OpenAI API using ",(0,o.yg)("a",{parentName:"p",href:"https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md#quick-start"},"llama.cpp Server"),"."),(0,o.yg)("p",null,'For custom LLM, specify "openai:{your-llm}"'),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'# set the custom OpenAI API url\nOPENAI_BASE_URL="http://localhost:1234/v1"\n# set the custom OpenAI API key\nOPENAI_API_KEY="dummy_key"\n\n# specify custom llms \nFAST_LLM="openai:your_fast_llm"\nSMART_LLM="openai:your_smart_llm"\nSTRATEGIC_LLM="openai:your_strategic_llm"\n')),(0,o.yg)("p",null,'For custom embedding, set "custom:{your-embedding}"'),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'# set the custom OpenAI API url\nOPENAI_BASE_URL="http://localhost:1234/v1"\n# set the custom OpenAI API key\nOPENAI_API_KEY="dummy_key"\n\n# specify the custom embedding model \nEMBEDDING="custom:your_embedding"\n')),(0,o.yg)("h2",{id:"azure-openai"},"Azure OpenAI"),(0,o.yg)("p",null,"See also the documentation in the Langchain ",(0,o.yg)("a",{parentName:"p",href:"https://api.python.langchain.com/en/latest/chat_models/langchain_openai.chat_models.azure.AzureChatOpenAI.html"},"Azure OpenAI")," page."),(0,o.yg)("p",null,"On Azure OpenAI you will need to create deployments for each model you want to use. Please also specify the model names/deployment names in your ",(0,o.yg)("inlineCode",{parentName:"p"},".env")," file:"),(0,o.yg)("p",null,"Required Embedding Model:\nTo ensure optimal performance, GPT Researcher requires the text-embedding-3-large model. Please deploy this specific model to your Azure Endpoint."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},"AZURE_OPENAI_API_KEY=[Your Key]\nAZURE_OPENAI_ENDPOINT=https://{your-endpoint}.openai.azure.com/\nOPENAI_API_VERSION=2024-05-01-preview\n\n# note that the deployment name must be the same as the model name\nFAST_LLM=azure_openai:gpt-4o-mini \nSMART_LLM=azure_openai:gpt-4o\nSTRATEGIC_LLM=azure_openai:o1-preview\n\n\n")),(0,o.yg)("h2",{id:"ollama"},"Ollama"),(0,o.yg)("p",null,"GPT Researcher supports both Ollama LLMs and embeddings. You can choose each or both.\nTo use ",(0,o.yg)("a",{parentName:"p",href:"http://www.ollama.com"},"Ollama")," you can set the following environment variables"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'OLLAMA_BASE_URL=http://localhost:11434\nFAST_LLM="ollama:llama3"\nSMART_LLM="ollama:llama3"\nSTRATEGIC_LLM="ollama:llama3"\n\nEMBEDDING="ollama:nomic-embed-text"\n')),(0,o.yg)("h2",{id:"groq"},"Groq"),(0,o.yg)("p",null,"GroqCloud provides advanced AI hardware and software solutions designed to deliver amazingly fast AI inference performance.\nTo leverage Groq in GPT-Researcher, you will need a GroqCloud account and an API Key. (",(0,o.yg)("strong",{parentName:"p"},"NOTE:")," Groq has a very ",(0,o.yg)("em",{parentName:"p"},"generous free tier"),".)"),(0,o.yg)("h3",{id:"sign-up"},"Sign up"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("p",{parentName:"li"},"You can signup here: ",(0,o.yg)("a",{parentName:"p",href:"https://console.groq.com/login"},"https://console.groq.com/login"))),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("p",{parentName:"li"},"Once you are logged in, you can get an API Key here: ",(0,o.yg)("a",{parentName:"p",href:"https://console.groq.com/keys"},"https://console.groq.com/keys"))),(0,o.yg)("li",{parentName:"ul"},(0,o.yg)("p",{parentName:"li"},"Once you have an API key, you will need to add it to your ",(0,o.yg)("inlineCode",{parentName:"p"},"systems environment")," using the variable name:\n",(0,o.yg)("inlineCode",{parentName:"p"},'GROQ_API_KEY="*********************"')))),(0,o.yg)("h3",{id:"update-env-vars"},"Update env vars"),(0,o.yg)("p",null,"And finally, you will need to configure the GPT-Researcher Provider and Model variables:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'GROQ_API_KEY=[Your Key]\n\n# Set one of the LLM models supported by Groq\nFAST_LLM="groq:Mixtral-8x7b-32768"\nSMART_LLM="groq:Mixtral-8x7b-32768"\nSTRATEGIC_LLM="groq:Mixtral-8x7b-32768"\n')),(0,o.yg)("p",null,(0,o.yg)("strong",{parentName:"p"},"NOTE:")," As of the writing of this Doc (May 2024), the available Language Models from Groq are:"),(0,o.yg)("ul",null,(0,o.yg)("li",{parentName:"ul"},"Llama3-70b-8192"),(0,o.yg)("li",{parentName:"ul"},"Llama3-8b-8192"),(0,o.yg)("li",{parentName:"ul"},"Mixtral-8x7b-32768"),(0,o.yg)("li",{parentName:"ul"},"Gemma-7b-it")),(0,o.yg)("h2",{id:"anthropic"},"Anthropic"),(0,o.yg)("p",null,"Refer to Anthropic ",(0,o.yg)("a",{parentName:"p",href:"https://docs.anthropic.com/en/api/getting-started"},"Getting started page")," to obtain Anthropic API key. Update the corresponding env vars, for example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'ANTHROPIC_API_KEY=[Your key]\nFAST_LLM="anthropic:claude-2.1"\nSMART_LLM="anthropic:claude-3-opus-20240229"\nSTRATEGIC_LLM="anthropic:claude-3-opus-20240229"\n')),(0,o.yg)("p",null,"Anthropic does not offer its own embedding model. "),(0,o.yg)("h2",{id:"mistral-ai"},"Mistral AI"),(0,o.yg)("p",null,"Sign up for a ",(0,o.yg)("a",{parentName:"p",href:"https://console.mistral.ai/users/api-keys/"},"Mistral API key"),".\nThen update the corresponding env vars, for example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'MISTRAL_API_KEY=[Your key]\nFAST_LLM="mistralai:open-mistral-7b"\nSMART_LLM="mistralai:mistral-large-latest"\nSTRATEGIC_LLM="mistralai:mistral-large-latest"\n\nEMBEDDING="mistralai:mistral-embed"\n')),(0,o.yg)("h2",{id:"together-ai"},"Together AI"),(0,o.yg)("p",null,(0,o.yg)("a",{parentName:"p",href:"https://www.together.ai/"},"Together AI")," offers an API to query ",(0,o.yg)("a",{parentName:"p",href:"https://docs.together.ai/docs/inference-models"},"50+ leading open-source models")," in a couple lines of code.\nThen update corresponding env vars, for example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'TOGETHER_API_KEY=[Your key]\nFAST_LLM="together:meta-llama/Llama-3-8b-chat-hf"\nSMART_LLM="together:meta-llama/Llama-3-70b-chat-hf"\nSTRATEGIC_LLM="together:meta-llama/Llama-3-70b-chat-hf"\n\nEMBEDDING="mistralai:nomic-ai/nomic-embed-text-v1.5"\n')),(0,o.yg)("h2",{id:"huggingface"},"HuggingFace"),(0,o.yg)("p",null,"This integration requires a bit of extra work. Follow ",(0,o.yg)("a",{parentName:"p",href:"https://python.langchain.com/v0.1/docs/integrations/chat/huggingface/"},"this guide")," to learn more.\nAfter you've followed the tutorial above, update the env vars:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'HUGGINGFACE_API_KEY=[Your key]\nFAST_LLM="huggingface:HuggingFaceH4/zephyr-7b-beta"\nSMART_LLM="huggingface:HuggingFaceH4/zephyr-7b-beta"\nSTRATEGIC_LLM="huggingface:HuggingFaceH4/zephyr-7b-beta"\n\nEMBEDDING="sentence-transformers/all-MiniLM-L6-v2"\n')),(0,o.yg)("h2",{id:"google-gemini"},"Google Gemini"),(0,o.yg)("p",null,"Sign up ",(0,o.yg)("a",{parentName:"p",href:"https://ai.google.dev/gemini-api/docs/api-key"},"here")," for obtaining a Google Gemini API Key and update the following env vars:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'GOOGLE_API_KEY=[Your key]\nFAST_LLM="google_genai:gemini-1.5-flash"\nSMART_LLM="google_genai:gemini-1.5-pro"\nSTRATEGIC_LLM="google_genai:gemini-1.5-pro"\n\nEMBEDDING="google_genai:models/text-embedding-004"\n')),(0,o.yg)("h2",{id:"google-vertexai"},"Google VertexAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FAST_LLM="google_vertexai:gemini-1.5-flash-001"\nSMART_LLM="google_vertexai:gemini-1.5-pro-001"\nSTRATEGIC_LLM="google_vertexai:gemini-1.5-pro-001"\n\nEMBEDDING="google_vertexai:text-embedding-004"\n')),(0,o.yg)("h2",{id:"cohere"},"Cohere"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'COHERE_API_KEY=[Your key]\nFAST_LLM="cohere:command"\nSMART_LLM="cohere:command-nightly"\nSTRATEGIC_LLM="cohere:command-nightly"\n\nEMBEDDING="cohere:embed-english-v3.0"\n')),(0,o.yg)("h2",{id:"fireworks"},"Fireworks"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FIREWORKS_API_KEY=[Your key]\nbase_url="https://api.fireworks.ai/inference/v1/completions"\nFAST_LLM="fireworks:accounts/fireworks/models/mixtral-8x7b-instruct"\nSMART_LLM="fireworks:accounts/fireworks/models/mixtral-8x7b-instruct"\nSTRATEGIC_LLM="fireworks:accounts/fireworks/models/mixtral-8x7b-instruct"\n\nEMBEDDING="fireworks:nomic-ai/nomic-embed-text-v1.5"\n')),(0,o.yg)("h2",{id:"bedrock"},"Bedrock"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FAST_LLM="bedrock:anthropic.claude-3-sonnet-20240229-v1:0"\nSMART_LLM="bedrock:anthropic.claude-3-sonnet-20240229-v1:0"\nSTRATEGIC_LLM="bedrock:anthropic.claude-3-sonnet-20240229-v1:0"\n\nEMBEDDING="bedrock:amazon.titan-embed-text-v2:0"\n')),(0,o.yg)("h2",{id:"xai"},"xAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'FAST_LLM="xai:grok-beta"\nSMART_LLM="xai:grok-beta"\nSTRATEGIC_LLM="xai:grok-beta"\n')),(0,o.yg)("h2",{id:"other-embedding-models"},"Other Embedding Models"),(0,o.yg)("h3",{id:"nomic"},"Nomic"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'EMBEDDING="nomic:nomic-embed-text-v1.5"\n')),(0,o.yg)("h3",{id:"voyageai"},"VoyageAI"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'VOYAGE_API_KEY=[Your Key]\nEMBEDDING="voyageai:voyage-law-2"\n')))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d52b8f97.4f9ad648.js b/assets/js/d52b8f97.4f9ad648.js new file mode 100644 index 000000000..61ff3a3cb --- /dev/null +++ b/assets/js/d52b8f97.4f9ad648.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2976],{5680:(e,r,t)=>{t.d(r,{xA:()=>l,yg:()=>m});var n=t(6540);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var i=n.createContext({}),p=function(e){var r=n.useContext(i),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},l=function(e){var r=p(e.components);return n.createElement(i.Provider,{value:r},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},d=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=p(t),d=o,m=u["".concat(i,".").concat(d)]||u[d]||h[d]||a;return t?n.createElement(m,c(c({ref:r},l),{},{components:t})):n.createElement(m,c({ref:r},l))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=t.length,c=new Array(a);c[0]=d;var s={};for(var i in r)hasOwnProperty.call(r,i)&&(s[i]=r[i]);s.originalType=e,s[u]="string"==typeof e?e:o,c[1]=s;for(var p=2;p{t.r(r),t.d(r,{contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>i});var n=t(8168),o=(t(6540),t(5680));const a={},c="Tailored Research",s={unversionedId:"gpt-researcher/context/tailored-research",id:"gpt-researcher/context/tailored-research",isDocsHomePage:!1,title:"Tailored Research",description:"The GPT Researcher package allows you to tailor the research to your needs such as researching on specific sources (URLs) or local documents, and even specify the agent prompt instruction upon which the research is conducted.",source:"@site/docs/gpt-researcher/context/tailored-research.md",sourceDirName:"gpt-researcher/context",slug:"/gpt-researcher/context/tailored-research",permalink:"/docs/gpt-researcher/context/tailored-research",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/context/tailored-research.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Log Files",permalink:"/docs/gpt-researcher/frontend/logs"},next:{title:"Research on Local Documents",permalink:"/docs/gpt-researcher/context/local-docs"}},i=[{value:"Research on Specific Sources \ud83d\udcda",id:"research-on-specific-sources-",children:[],level:3},{value:"Specify Agent Prompt \ud83d\udcdd",id:"specify-agent-prompt-",children:[],level:3},{value:"Research on Local Documents \ud83d\udcc4",id:"research-on-local-documents-",children:[],level:3},{value:"Hybrid Research \ud83d\udd04",id:"hybrid-research-",children:[],level:3},{value:"Research on LangChain Documents \ud83e\udd9c\ufe0f\ud83d\udd17",id:"research-on-langchain-documents-\ufe0f",children:[],level:3}],p={toc:i},l="wrapper";function u(e){let{components:r,...t}=e;return(0,o.yg)(l,(0,n.A)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,o.yg)("h1",{id:"tailored-research"},"Tailored Research"),(0,o.yg)("p",null,"The GPT Researcher package allows you to tailor the research to your needs such as researching on specific sources (URLs) or local documents, and even specify the agent prompt instruction upon which the research is conducted."),(0,o.yg)("h3",{id:"research-on-specific-sources-"},"Research on Specific Sources \ud83d\udcda"),(0,o.yg)("p",null,"You can specify the sources you want the GPT Researcher to research on by providing a list of URLs. The GPT Researcher will then conduct research on the provided sources via ",(0,o.yg)("inlineCode",{parentName:"p"},"source_urls"),". "),(0,o.yg)("p",null,"If you want GPT Researcher to perform additional research outside of the URLs you provided, i.e., conduct research on various other websites that it finds suitable for the query/sub-query, you can set the parameter ",(0,o.yg)("inlineCode",{parentName:"p"},"complement_source_urls")," as ",(0,o.yg)("inlineCode",{parentName:"p"},"True"),". Default value of ",(0,o.yg)("inlineCode",{parentName:"p"},"False")," will only scour the websites you provide via ",(0,o.yg)("inlineCode",{parentName:"p"},"source_urls"),"."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_report(query: str, report_type: str, sources: list) -> str:\n researcher = GPTResearcher(query=query, report_type=report_type, source_urls=sources, complement_source_urls=False)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n\nif __name__ == "__main__":\n query = "What are the biggest trends in AI lately?"\n report_source = "static"\n sources = [\n "https://en.wikipedia.org/wiki/Artificial_intelligence",\n "https://www.ibm.com/think/insights/artificial-intelligence-trends",\n "https://www.forbes.com/advisor/business/ai-statistics"\n ]\n report = asyncio.run(get_report(query=query, report_source=report_source, sources=sources))\n print(report)\n')),(0,o.yg)("h3",{id:"specify-agent-prompt-"},"Specify Agent Prompt \ud83d\udcdd"),(0,o.yg)("p",null,"You can specify the agent prompt instruction upon which the research is conducted. This allows you to guide the research in a specific direction and tailor the report layout.\nSimply pass the prompt as the ",(0,o.yg)("inlineCode",{parentName:"p"},"query")," argument to the ",(0,o.yg)("inlineCode",{parentName:"p"},"GPTResearcher"),' class and the "custom_report" ',(0,o.yg)("inlineCode",{parentName:"p"},"report_type"),"."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_report(prompt: str, report_type: str) -> str:\n researcher = GPTResearcher(query=prompt, report_type=report_type)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n \nif __name__ == "__main__":\n report_type = "custom_report"\n prompt = "Research the latest advancements in AI and provide a detailed report in APA format including sources."\n\n report = asyncio.run(get_report(prompt=prompt, report_type=report_type))\n print(report)\n')),(0,o.yg)("h3",{id:"research-on-local-documents-"},"Research on Local Documents \ud83d\udcc4"),(0,o.yg)("p",null,"You can instruct the GPT Researcher to research on local documents by providing the path to those documents. Currently supported file formats are: PDF, plain text, CSV, Excel, Markdown, PowerPoint, and Word documents."),(0,o.yg)("p",null,(0,o.yg)("em",{parentName:"p"},"Step 1"),": Add the env variable ",(0,o.yg)("inlineCode",{parentName:"p"},"DOC_PATH")," pointing to the folder where your documents are located."),(0,o.yg)("p",null,"For example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'export DOC_PATH="./my-docs"\n')),(0,o.yg)("p",null,(0,o.yg)("em",{parentName:"p"},"Step 2"),": When you create an instance of the ",(0,o.yg)("inlineCode",{parentName:"p"},"GPTResearcher")," class, pass the ",(0,o.yg)("inlineCode",{parentName:"p"},"report_source")," argument as ",(0,o.yg)("inlineCode",{parentName:"p"},'"local"'),"."),(0,o.yg)("p",null,"GPT Researcher will then conduct research on the provided documents."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_report(query: str, report_source: str) -> str:\n researcher = GPTResearcher(query=query, report_source=report_source)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n \nif __name__ == "__main__":\n query = "What can you tell me about myself based on my documents?"\n report_source = "local" # "local" or "web"\n\n report = asyncio.run(get_report(query=query, report_source=report_source))\n print(report)\n')),(0,o.yg)("h3",{id:"hybrid-research-"},"Hybrid Research \ud83d\udd04"),(0,o.yg)("p",null,"You can combine the above methods to conduct hybrid research. For example, you can instruct the GPT Researcher to research on both web sources and local documents.\nSimply provide the sources and set the ",(0,o.yg)("inlineCode",{parentName:"p"},"report_source")," argument as ",(0,o.yg)("inlineCode",{parentName:"p"},'"hybrid"')," and watch the magic happen."),(0,o.yg)("p",null,"Please note! You should set the proper retrievers for the web sources and doc path for local documents for this to work.\nTo learn more about retrievers check out the ",(0,o.yg)("a",{parentName:"p",href:"https://docs.gptr.dev/docs/gpt-researcher/search-engines/retrievers"},"Retrievers")," documentation."),(0,o.yg)("h3",{id:"research-on-langchain-documents-\ufe0f"},"Research on LangChain Documents \ud83e\udd9c\ufe0f\ud83d\udd17"),(0,o.yg)("p",null,"You can instruct the GPT Researcher to research on a list of langchain document instances."),(0,o.yg)("p",null,"For example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from langchain_core.documents import Document\nfrom typing import List, Dict\nfrom gpt_researcher import GPTResearcher\nfrom langchain_postgres.vectorstores import PGVector\nfrom langchain_openai import OpenAIEmbeddings\nfrom sqlalchemy import create_engine\nimport asyncio\n\n\n\nCONNECTION_STRING = \'postgresql://someuser:somepass@localhost:5432/somedatabase\'\n\ndef get_retriever(collection_name: str, search_kwargs: Dict[str, str]):\n engine = create_engine(CONNECTION_STRING)\n embeddings = OpenAIEmbeddings()\n\n index = PGVector.from_existing_index(\n use_jsonb=True,\n embedding=embeddings,\n collection_name=collection_name,\n connection=engine,\n )\n\n return index.as_retriever(search_kwargs=search_kwargs)\n\n\nasync def get_report(query: str, report_type: str, report_source: str, documents: List[Document]) -> str:\n researcher = GPTResearcher(query=query, report_type=report_type, report_source=report_source, documents=documents)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n\nif __name__ == "__main__":\n query = "What can you tell me about blue cheese based on my documents?"\n report_type = "research_report"\n report_source = "langchain_documents"\n\n # using a LangChain retriever to get all the documents regarding cheese\n # https://api.python.langchain.com/en/latest/retrievers/langchain_core.retrievers.BaseRetriever.html#langchain_core.retrievers.BaseRetriever.invoke\n langchain_retriever = get_retriever("cheese_collection", { "k": 3 })\n documents = langchain_retriever.invoke("All the documents about cheese")\n report = asyncio.run(get_report(query=query, report_type=report_type, report_source=report_source, documents=documents))\n print(report)\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d52b8f97.690abada.js b/assets/js/d52b8f97.690abada.js deleted file mode 100644 index c30154aa2..000000000 --- a/assets/js/d52b8f97.690abada.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2976],{5680:(e,r,t)=>{t.d(r,{xA:()=>l,yg:()=>m});var n=t(6540);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r=0||(o[t]=e[t]);return o}(e,r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var i=n.createContext({}),p=function(e){var r=n.useContext(i),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},l=function(e){var r=p(e.components);return n.createElement(i.Provider,{value:r},e.children)},u="mdxType",h={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},d=n.forwardRef((function(e,r){var t=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=p(t),d=o,m=u["".concat(i,".").concat(d)]||u[d]||h[d]||a;return t?n.createElement(m,c(c({ref:r},l),{},{components:t})):n.createElement(m,c({ref:r},l))}));function m(e,r){var t=arguments,o=r&&r.mdxType;if("string"==typeof e||o){var a=t.length,c=new Array(a);c[0]=d;var s={};for(var i in r)hasOwnProperty.call(r,i)&&(s[i]=r[i]);s.originalType=e,s[u]="string"==typeof e?e:o,c[1]=s;for(var p=2;p{t.r(r),t.d(r,{contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>i});var n=t(8168),o=(t(6540),t(5680));const a={},c="Tailored Research",s={unversionedId:"gpt-researcher/context/tailored-research",id:"gpt-researcher/context/tailored-research",isDocsHomePage:!1,title:"Tailored Research",description:"The GPT Researcher package allows you to tailor the research to your needs such as researching on specific sources (URLs) or local documents, and even specify the agent prompt instruction upon which the research is conducted.",source:"@site/docs/gpt-researcher/context/tailored-research.md",sourceDirName:"gpt-researcher/context",slug:"/gpt-researcher/context/tailored-research",permalink:"/docs/gpt-researcher/context/tailored-research",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs/docs/gpt-researcher/context/tailored-research.md",tags:[],version:"current",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Playing with Webhooks",permalink:"/docs/gpt-researcher/frontend/playing-with-webhooks"},next:{title:"Research on Local Documents",permalink:"/docs/gpt-researcher/context/local-docs"}},i=[{value:"Research on Specific Sources \ud83d\udcda",id:"research-on-specific-sources-",children:[],level:3},{value:"Specify Agent Prompt \ud83d\udcdd",id:"specify-agent-prompt-",children:[],level:3},{value:"Research on Local Documents \ud83d\udcc4",id:"research-on-local-documents-",children:[],level:3},{value:"Hybrid Research \ud83d\udd04",id:"hybrid-research-",children:[],level:3},{value:"Research on LangChain Documents \ud83e\udd9c\ufe0f\ud83d\udd17",id:"research-on-langchain-documents-\ufe0f",children:[],level:3}],p={toc:i},l="wrapper";function u(e){let{components:r,...t}=e;return(0,o.yg)(l,(0,n.A)({},p,t,{components:r,mdxType:"MDXLayout"}),(0,o.yg)("h1",{id:"tailored-research"},"Tailored Research"),(0,o.yg)("p",null,"The GPT Researcher package allows you to tailor the research to your needs such as researching on specific sources (URLs) or local documents, and even specify the agent prompt instruction upon which the research is conducted."),(0,o.yg)("h3",{id:"research-on-specific-sources-"},"Research on Specific Sources \ud83d\udcda"),(0,o.yg)("p",null,"You can specify the sources you want the GPT Researcher to research on by providing a list of URLs. The GPT Researcher will then conduct research on the provided sources via ",(0,o.yg)("inlineCode",{parentName:"p"},"source_urls"),". "),(0,o.yg)("p",null,"If you want GPT Researcher to perform additional research outside of the URLs you provided, i.e., conduct research on various other websites that it finds suitable for the query/sub-query, you can set the parameter ",(0,o.yg)("inlineCode",{parentName:"p"},"complement_source_urls")," as ",(0,o.yg)("inlineCode",{parentName:"p"},"True"),". Default value of ",(0,o.yg)("inlineCode",{parentName:"p"},"False")," will only scour the websites you provide via ",(0,o.yg)("inlineCode",{parentName:"p"},"source_urls"),"."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_report(query: str, report_type: str, sources: list) -> str:\n researcher = GPTResearcher(query=query, report_type=report_type, source_urls=sources, complement_source_urls=False)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n\nif __name__ == "__main__":\n query = "What are the biggest trends in AI lately?"\n report_source = "static"\n sources = [\n "https://en.wikipedia.org/wiki/Artificial_intelligence",\n "https://www.ibm.com/think/insights/artificial-intelligence-trends",\n "https://www.forbes.com/advisor/business/ai-statistics"\n ]\n report = asyncio.run(get_report(query=query, report_source=report_source, sources=sources))\n print(report)\n')),(0,o.yg)("h3",{id:"specify-agent-prompt-"},"Specify Agent Prompt \ud83d\udcdd"),(0,o.yg)("p",null,"You can specify the agent prompt instruction upon which the research is conducted. This allows you to guide the research in a specific direction and tailor the report layout.\nSimply pass the prompt as the ",(0,o.yg)("inlineCode",{parentName:"p"},"query")," argument to the ",(0,o.yg)("inlineCode",{parentName:"p"},"GPTResearcher"),' class and the "custom_report" ',(0,o.yg)("inlineCode",{parentName:"p"},"report_type"),"."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_report(prompt: str, report_type: str) -> str:\n researcher = GPTResearcher(query=prompt, report_type=report_type)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n \nif __name__ == "__main__":\n report_type = "custom_report"\n prompt = "Research the latest advancements in AI and provide a detailed report in APA format including sources."\n\n report = asyncio.run(get_report(prompt=prompt, report_type=report_type))\n print(report)\n')),(0,o.yg)("h3",{id:"research-on-local-documents-"},"Research on Local Documents \ud83d\udcc4"),(0,o.yg)("p",null,"You can instruct the GPT Researcher to research on local documents by providing the path to those documents. Currently supported file formats are: PDF, plain text, CSV, Excel, Markdown, PowerPoint, and Word documents."),(0,o.yg)("p",null,(0,o.yg)("em",{parentName:"p"},"Step 1"),": Add the env variable ",(0,o.yg)("inlineCode",{parentName:"p"},"DOC_PATH")," pointing to the folder where your documents are located."),(0,o.yg)("p",null,"For example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-bash"},'export DOC_PATH="./my-docs"\n')),(0,o.yg)("p",null,(0,o.yg)("em",{parentName:"p"},"Step 2"),": When you create an instance of the ",(0,o.yg)("inlineCode",{parentName:"p"},"GPTResearcher")," class, pass the ",(0,o.yg)("inlineCode",{parentName:"p"},"report_source")," argument as ",(0,o.yg)("inlineCode",{parentName:"p"},'"local"'),"."),(0,o.yg)("p",null,"GPT Researcher will then conduct research on the provided documents."),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from gpt_researcher import GPTResearcher\nimport asyncio\n\nasync def get_report(query: str, report_source: str) -> str:\n researcher = GPTResearcher(query=query, report_source=report_source)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n \nif __name__ == "__main__":\n query = "What can you tell me about myself based on my documents?"\n report_source = "local" # "local" or "web"\n\n report = asyncio.run(get_report(query=query, report_source=report_source))\n print(report)\n')),(0,o.yg)("h3",{id:"hybrid-research-"},"Hybrid Research \ud83d\udd04"),(0,o.yg)("p",null,"You can combine the above methods to conduct hybrid research. For example, you can instruct the GPT Researcher to research on both web sources and local documents.\nSimply provide the sources and set the ",(0,o.yg)("inlineCode",{parentName:"p"},"report_source")," argument as ",(0,o.yg)("inlineCode",{parentName:"p"},'"hybrid"')," and watch the magic happen."),(0,o.yg)("p",null,"Please note! You should set the proper retrievers for the web sources and doc path for local documents for this to work.\nTo learn more about retrievers check out the ",(0,o.yg)("a",{parentName:"p",href:"https://docs.gptr.dev/docs/gpt-researcher/search-engines/retrievers"},"Retrievers")," documentation."),(0,o.yg)("h3",{id:"research-on-langchain-documents-\ufe0f"},"Research on LangChain Documents \ud83e\udd9c\ufe0f\ud83d\udd17"),(0,o.yg)("p",null,"You can instruct the GPT Researcher to research on a list of langchain document instances."),(0,o.yg)("p",null,"For example:"),(0,o.yg)("pre",null,(0,o.yg)("code",{parentName:"pre",className:"language-python"},'from langchain_core.documents import Document\nfrom typing import List, Dict\nfrom gpt_researcher import GPTResearcher\nfrom langchain_postgres.vectorstores import PGVector\nfrom langchain_openai import OpenAIEmbeddings\nfrom sqlalchemy import create_engine\nimport asyncio\n\n\n\nCONNECTION_STRING = \'postgresql://someuser:somepass@localhost:5432/somedatabase\'\n\ndef get_retriever(collection_name: str, search_kwargs: Dict[str, str]):\n engine = create_engine(CONNECTION_STRING)\n embeddings = OpenAIEmbeddings()\n\n index = PGVector.from_existing_index(\n use_jsonb=True,\n embedding=embeddings,\n collection_name=collection_name,\n connection=engine,\n )\n\n return index.as_retriever(search_kwargs=search_kwargs)\n\n\nasync def get_report(query: str, report_type: str, report_source: str, documents: List[Document]) -> str:\n researcher = GPTResearcher(query=query, report_type=report_type, report_source=report_source, documents=documents)\n await researcher.conduct_research()\n report = await researcher.write_report()\n return report\n\nif __name__ == "__main__":\n query = "What can you tell me about blue cheese based on my documents?"\n report_type = "research_report"\n report_source = "langchain_documents"\n\n # using a LangChain retriever to get all the documents regarding cheese\n # https://api.python.langchain.com/en/latest/retrievers/langchain_core.retrievers.BaseRetriever.html#langchain_core.retrievers.BaseRetriever.invoke\n langchain_retriever = get_retriever("cheese_collection", { "k": 3 })\n documents = langchain_retriever.invoke("All the documents about cheese")\n report = asyncio.run(get_report(query=query, report_type=report_type, report_source=report_source, documents=documents))\n print(report)\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.6953f0b6.js b/assets/js/main.6953f0b6.js deleted file mode 100644 index 66d7f68b4..000000000 --- a/assets/js/main.6953f0b6.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.6953f0b6.js.LICENSE.txt */ -(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8792],{5091:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"GPT Researcher",tagline:"The leading autonomous AI research agent",url:"https://docs.gptr.dev",baseUrl:"/",onBrokenLinks:"ignore",onBrokenMarkdownLinks:"warn",favicon:"img/gptr-logo.png",organizationName:"assafelovic",trailingSlash:!1,projectName:"gpt-researcher",themeConfig:{navbar:{title:"GPT Researcher",logo:{alt:"GPT Researcher",src:"img/gptr-logo.png"},items:[{type:"doc",docId:"welcome",position:"left",label:"Docs"},{to:"blog",label:"Blog",position:"left"},{type:"doc",docId:"faq",position:"left",label:"FAQ"},{href:"mailto:assaf.elovic@gmail.com",position:"left",label:"Contact"},{href:"https://github.com/assafelovic/gpt-researcher",label:"GitHub",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Community",items:[{label:"Discord",href:"https://discord.gg/8YkBcCED5y"},{label:"Twitter",href:"https://twitter.com/assaf_elovic"},{label:"LinkedIn",href:"https://www.linkedin.com/in/assafe/"}]},{title:"Company",items:[{label:"Homepage",href:"https://gptr.dev"},{label:"Contact",href:"mailto:assafelovic@gmail.com"}]}],copyright:"Copyright \xa9 2024 GPT Researcher."},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1,switchConfig:{darkIcon:"\ud83c\udf1c",darkIconStyle:{},lightIcon:"\ud83c\udf1e",lightIconStyle:{}}},docs:{versionPersistence:"localStorage"},metadata:[],prism:{additionalLanguages:[]},hideableSidebar:!1,tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},presets:[["@docusaurus/preset-classic",{docs:{sidebarPath:"/Users/assafelovic/Sites/gpt-researcher/docs/sidebars.js",editUrl:"https://github.com/assafelovic/gpt-researcher/tree/master/docs",remarkPlugins:[null],rehypePlugins:[null]},theme:{customCss:"/Users/assafelovic/Sites/gpt-researcher/docs/src/css/custom.css"}}]],stylesheets:[{href:"https://cdn.jsdelivr.net/npm/katex@0.13.11/dist/katex.min.css",integrity:"sha384-Um5gpz1odJg5Z4HAmzPtgZKdTBHZdw8S29IecapCSB31ligYPhHQZMIlWLYQGVoc",crossorigin:"anonymous"}],plugins:[["/Users/assafelovic/Sites/gpt-researcher/docs/node_modules/@easyops-cn/docusaurus-search-local/dist/server/server/index.js",{hashed:!0,blogDir:"./blog/"}]],baseUrlIssueBanner:!0,i18n:{defaultLocale:"en",locales:["en"],localeConfigs:{}},onDuplicateRoutes:"warn",customFields:{},themes:[],titleDelimiter:"|",noIndex:!1}},9516:(e,t,n)=>{"use strict";var r=n(6540),a=n(961),o=n(4625),i=n(3259),l=n.n(i);const s=e=>{let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{align:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null},c=JSON.parse('{"/blog-f4c":{"component":"a6aa9e1f","sidebar":"814f3328","items":[{"content":"708a06f3"},{"content":"03136cca"},{"content":"1527b239"},{"content":"c7d22e29"}],"metadata":"b2b675dd"},"/blog/archive-f4c":{"component":"9e4087bc","archive":"b2f554cd"},"/blog/building-gpt-researcher-dcf":{"component":"ccc49370","sidebar":"814f3328","content":"6222f147"},"/blog/building-openai-assistant-7ba":{"component":"ccc49370","sidebar":"814f3328","content":"d3f86d34"},"/blog/gptr-hybrid-c62":{"component":"ccc49370","sidebar":"814f3328","content":"777ab133"},"/blog/gptr-langgraph-437":{"component":"ccc49370","sidebar":"814f3328","content":"5986bbbc"},"/blog/tags-e13":{"component":"01a85c17","sidebar":"814f3328","tags":"a7023ddc"},"/blog/tags/assistant-api-3c8":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"1527b239"}],"metadata":"9bc9a8f7"},"/blog/tags/autonomous-agent-093":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"c7d22e29"}],"metadata":"33e7285c"},"/blog/tags/github-e38":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"c7d22e29"}],"metadata":"78060cbc"},"/blog/tags/gpt-researcher-941":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"708a06f3"},{"content":"03136cca"},{"content":"c7d22e29"}],"metadata":"667a64de"},"/blog/tags/hybrid-research-8a3":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"708a06f3"}],"metadata":"57fdb5e0"},"/blog/tags/langchain-97e":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"708a06f3"},{"content":"03136cca"}],"metadata":"bcd3bfb0"},"/blog/tags/langgraph-932":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"708a06f3"},{"content":"03136cca"}],"metadata":"5f72c304"},"/blog/tags/multi-skills-16a":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"03136cca"}],"metadata":"86f86571"},"/blog/tags/openai-4e6":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"1527b239"}],"metadata":"415f4636"},"/blog/tags/opensource-43b":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"c7d22e29"}],"metadata":"f3eeb784"},"/blog/tags/search-api-cd3":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"1527b239"}],"metadata":"6081ee74"},"/blog/tags/tavily-d67":{"component":"6875c492","sidebar":"814f3328","items":[{"content":"708a06f3"},{"content":"1527b239"}],"metadata":"d1355481"},"/search-79a":{"component":"1a4e3797"},"/docs-d6b":{"component":"1be78505","versionMetadata":"935f2afb"},"/docs/contribute-e6a":{"component":"17896441","content":"4ba7e5a3"},"/docs/examples/detailed_report-c1a":{"component":"17896441","content":"2700a261"},"/docs/examples/examples-8df":{"component":"17896441","content":"c6694585"},"/docs/examples/hybrid_research-16b":{"component":"17896441","content":"ad8d4462"},"/docs/faq-76c":{"component":"17896441","content":"0480b142"},"/docs/gpt-researcher/context/filtering-by-domain-2ab":{"component":"17896441","content":"167e38bb"},"/docs/gpt-researcher/context/local-docs-59a":{"component":"17896441","content":"4d63772d"},"/docs/gpt-researcher/context/tailored-research-1db":{"component":"17896441","content":"d52b8f97"},"/docs/gpt-researcher/context/vector-stores-b43":{"component":"17896441","content":"4f74abd9"},"/docs/gpt-researcher/frontend/frontend-15e":{"component":"17896441","content":"87b2d671"},"/docs/gpt-researcher/frontend/playing-with-webhooks-07d":{"component":"17896441","content":"55be4921"},"/docs/gpt-researcher/getting-started/cli-917":{"component":"17896441","content":"bce7c409"},"/docs/gpt-researcher/getting-started/getting-started-82c":{"component":"17896441","content":"a9cdb420"},"/docs/gpt-researcher/getting-started/getting-started-with-docker-000":{"component":"17896441","content":"5b527261"},"/docs/gpt-researcher/getting-started/how-to-choose-6ed":{"component":"17896441","content":"845acc88"},"/docs/gpt-researcher/getting-started/introduction-079":{"component":"17896441","content":"5497f083"},"/docs/gpt-researcher/getting-started/linux-deployment-970":{"component":"17896441","content":"5dbe55ec"},"/docs/gpt-researcher/gptr/automated-tests-68e":{"component":"17896441","content":"dc7438fe"},"/docs/gpt-researcher/gptr/config-059":{"component":"17896441","content":"82b8edaf"},"/docs/gpt-researcher/gptr/example-b9b":{"component":"17896441","content":"b94bec88"},"/docs/gpt-researcher/gptr/handling-logs-as-they-stream-ac0":{"component":"17896441","content":"6410037f"},"/docs/gpt-researcher/gptr/pip-package-332":{"component":"17896441","content":"80f133ef"},"/docs/gpt-researcher/gptr/querying-the-backend-a32":{"component":"17896441","content":"f17f44a5"},"/docs/gpt-researcher/gptr/scraping-ab5":{"component":"17896441","content":"22f692c8"},"/docs/gpt-researcher/gptr/troubleshooting-b8f":{"component":"17896441","content":"5f72931d"},"/docs/gpt-researcher/llms/llms-0a2":{"component":"17896441","content":"d136d620"},"/docs/gpt-researcher/llms/running-with-ollama-4eb":{"component":"17896441","content":"25e02a64"},"/docs/gpt-researcher/llms/testing-your-llm-493":{"component":"17896441","content":"5de085db"},"/docs/gpt-researcher/multi_agents/langgraph-d54":{"component":"17896441","content":"9f68de09"},"/docs/gpt-researcher/search-engines/retrievers-47a":{"component":"17896441","content":"6a8455ba"},"/docs/gpt-researcher/search-engines/test-your-retriever-e89":{"component":"17896441","content":"7af93ffd"},"/docs/reference/config/config-212":{"component":"17896441","content":"44b7ef8d"},"/docs/reference/config/singleton-beb":{"component":"17896441","content":"b205135c"},"/docs/reference/processing/html-919":{"component":"17896441","content":"ae92dbda"},"/docs/reference/processing/text-d18":{"component":"17896441","content":"de289047"},"/docs/roadmap-e16":{"component":"17896441","content":"0dffb83e"},"/docs/welcome-177":{"component":"17896441","content":"ebfee794"},"/-deb":{"component":"c4f5d8e4","config":"5e9f5e1a"}}'),u={"01a85c17":[()=>Promise.all([n.e(1869),n.e(8209)]).then(n.bind(n,7867)),"@theme/BlogTagsListPage",7867],"03136cca":[()=>n.e(4093).then(n.bind(n,8724)),"@site/blog/2024-05-19-gptr-langgraph/index.md?truncated=true",8724],"0480b142":[()=>n.e(8070).then(n.bind(n,842)),"@site/docs/faq.md",842],"0dffb83e":[()=>n.e(821).then(n.bind(n,5146)),"@site/docs/roadmap.md",5146],"1527b239":[()=>n.e(8256).then(n.bind(n,4890)),"@site/blog/2023-11-12-openai-assistant/index.md?truncated=true",4890],"167e38bb":[()=>n.e(9195).then(n.bind(n,714)),"@site/docs/gpt-researcher/context/filtering-by-domain.md",714],17896441:[()=>Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,4578)),"@theme/DocItem",4578],"1a4e3797":[()=>Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,8988)),"@theme/SearchPage",8988],"1be78505":[()=>Promise.all([n.e(1869),n.e(3802),n.e(8714)]).then(n.bind(n,7641)),"@theme/DocPage",7641],"22f692c8":[()=>n.e(2363).then(n.bind(n,2080)),"@site/docs/gpt-researcher/gptr/scraping.md",2080],"25e02a64":[()=>n.e(2082).then(n.bind(n,5221)),"@site/docs/gpt-researcher/llms/running-with-ollama.md",5221],"2700a261":[()=>n.e(264).then(n.bind(n,1091)),"@site/docs/examples/detailed_report.md",1091],"33e7285c":[()=>n.e(3107).then(n.t.bind(n,8989,19)),"~blog/default/blog-tags-autonomous-agent-12c.json",8989],"415f4636":[()=>n.e(634).then(n.t.bind(n,3922,19)),"~blog/default/blog-tags-openai-2f3.json",3922],"44b7ef8d":[()=>n.e(3587).then(n.bind(n,9425)),"@site/docs/reference/config/config.md",9425],"4ba7e5a3":[()=>n.e(9591).then(n.bind(n,4247)),"@site/docs/contribute.md",4247],"4d63772d":[()=>n.e(3622).then(n.bind(n,680)),"@site/docs/gpt-researcher/context/local-docs.md",680],"4f74abd9":[()=>n.e(8048).then(n.bind(n,1645)),"@site/docs/gpt-researcher/context/vector-stores.md",1645],"5497f083":[()=>n.e(6057).then(n.bind(n,6084)),"@site/docs/gpt-researcher/getting-started/introduction.md",6084],"55be4921":[()=>n.e(444).then(n.bind(n,956)),"@site/docs/gpt-researcher/frontend/playing-with-webhooks.md",956],"57fdb5e0":[()=>n.e(5193).then(n.t.bind(n,3309,19)),"~blog/default/blog-tags-hybrid-research-83e.json",3309],"5986bbbc":[()=>n.e(30).then(n.bind(n,7912)),"@site/blog/2024-05-19-gptr-langgraph/index.md",7912],"5b527261":[()=>n.e(1675).then(n.bind(n,4664)),"@site/docs/gpt-researcher/getting-started/getting-started-with-docker.md",4664],"5dbe55ec":[()=>n.e(989).then(n.bind(n,3294)),"@site/docs/gpt-researcher/getting-started/linux-deployment.md",3294],"5de085db":[()=>n.e(1736).then(n.bind(n,3630)),"@site/docs/gpt-researcher/llms/testing-your-llm.md",3630],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,5091)),"@generated/docusaurus.config",5091],"5f72931d":[()=>n.e(9066).then(n.bind(n,1121)),"@site/docs/gpt-researcher/gptr/troubleshooting.md",1121],"5f72c304":[()=>n.e(6107).then(n.t.bind(n,1362,19)),"~blog/default/blog-tags-langgraph-078.json",1362],"6081ee74":[()=>n.e(463).then(n.t.bind(n,7993,19)),"~blog/default/blog-tags-search-api-f27.json",7993],"6222f147":[()=>n.e(3287).then(n.bind(n,8727)),"@site/blog/2023-09-22-gpt-researcher/index.md",8727],"6410037f":[()=>n.e(4266).then(n.bind(n,1849)),"@site/docs/gpt-researcher/gptr/handling-logs-as-they-stream.md",1849],"667a64de":[()=>n.e(2212).then(n.t.bind(n,8548,19)),"~blog/default/blog-tags-gpt-researcher-3fd.json",8548],"6875c492":[()=>Promise.all([n.e(1869),n.e(3802),n.e(4813)]).then(n.bind(n,6033)),"@theme/BlogTagsPostsPage",6033],"6a8455ba":[()=>n.e(4753).then(n.bind(n,9385)),"@site/docs/gpt-researcher/search-engines/retrievers.md",9385],"708a06f3":[()=>n.e(9292).then(n.bind(n,9183)),"@site/blog/2024-09-7-hybrid-research/index.md?truncated=true",9183],"777ab133":[()=>n.e(4264).then(n.bind(n,7933)),"@site/blog/2024-09-7-hybrid-research/index.md",7933],"78060cbc":[()=>n.e(1178).then(n.t.bind(n,7102,19)),"~blog/default/blog-tags-github-f68.json",7102],"7af93ffd":[()=>n.e(8717).then(n.bind(n,939)),"@site/docs/gpt-researcher/search-engines/test-your-retriever.md",939],"80f133ef":[()=>n.e(4151).then(n.bind(n,3471)),"@site/docs/gpt-researcher/gptr/pip-package.md",3471],"814f3328":[()=>n.e(7472).then(n.t.bind(n,5513,19)),"~blog/default/blog-post-list-prop-default.json",5513],"82b8edaf":[()=>n.e(2337).then(n.bind(n,7937)),"@site/docs/gpt-researcher/gptr/config.md",7937],"845acc88":[()=>n.e(6631).then(n.bind(n,2288)),"@site/docs/gpt-researcher/getting-started/how-to-choose.md",2288],"86f86571":[()=>n.e(1624).then(n.t.bind(n,8778,19)),"~blog/default/blog-tags-multi-skills-0fe.json",8778],"87b2d671":[()=>n.e(6918).then(n.bind(n,920)),"@site/docs/gpt-researcher/frontend/frontend.md",920],"935f2afb":[()=>n.e(8581).then(n.t.bind(n,5610,19)),"~docs/default/version-current-metadata-prop-751.json",5610],"9bc9a8f7":[()=>n.e(4492).then(n.t.bind(n,7005,19)),"~blog/default/blog-tags-assistant-api-f81.json",7005],"9e4087bc":[()=>n.e(2711).then(n.bind(n,631)),"@theme/BlogArchivePage",631],"9f68de09":[()=>n.e(3824).then(n.bind(n,4298)),"@site/docs/gpt-researcher/multi_agents/langgraph.md",4298],a6aa9e1f:[()=>Promise.all([n.e(1869),n.e(3802),n.e(7643)]).then(n.bind(n,2876)),"@theme/BlogListPage",2876],a7023ddc:[()=>n.e(9267).then(n.t.bind(n,8289,19)),"~blog/default/blog-tags-tags-4c2.json",8289],a9cdb420:[()=>n.e(2076).then(n.bind(n,8278)),"@site/docs/gpt-researcher/getting-started/getting-started.md",8278],ad8d4462:[()=>n.e(6644).then(n.bind(n,1934)),"@site/docs/examples/hybrid_research.md",1934],ae92dbda:[()=>n.e(2663).then(n.bind(n,9109)),"@site/docs/reference/processing/html.md",9109],b205135c:[()=>n.e(318).then(n.bind(n,1006)),"@site/docs/reference/config/singleton.md",1006],b2b675dd:[()=>n.e(1991).then(n.t.bind(n,9775,19)),"~blog/default/blog-c06.json",9775],b2f554cd:[()=>n.e(5894).then(n.t.bind(n,6042,19)),"~blog/default/blog-archive-80c.json",6042],b94bec88:[()=>n.e(8074).then(n.bind(n,3561)),"@site/docs/gpt-researcher/gptr/example.md",3561],bcd3bfb0:[()=>n.e(303).then(n.t.bind(n,1037,19)),"~blog/default/blog-tags-langchain-595.json",1037],bce7c409:[()=>n.e(2746).then(n.bind(n,7252)),"@site/docs/gpt-researcher/getting-started/cli.md",7252],c4f5d8e4:[()=>Promise.all([n.e(1869),n.e(2634)]).then(n.bind(n,1852)),"@site/src/pages/index.js",1852],c6694585:[()=>n.e(8995).then(n.bind(n,9593)),"@site/docs/examples/examples.md",9593],c7d22e29:[()=>n.e(6139).then(n.bind(n,4329)),"@site/blog/2023-09-22-gpt-researcher/index.md?truncated=true",4329],ccc49370:[()=>Promise.all([n.e(1869),n.e(3802),n.e(3249)]).then(n.bind(n,2359)),"@theme/BlogPostPage",2359],d1355481:[()=>n.e(708).then(n.t.bind(n,5506,19)),"~blog/default/blog-tags-tavily-7f7.json",5506],d136d620:[()=>n.e(3089).then(n.bind(n,5204)),"@site/docs/gpt-researcher/llms/llms.md",5204],d3f86d34:[()=>n.e(6553).then(n.bind(n,6694)),"@site/blog/2023-11-12-openai-assistant/index.md",6694],d52b8f97:[()=>n.e(2976).then(n.bind(n,7225)),"@site/docs/gpt-researcher/context/tailored-research.md",7225],dc7438fe:[()=>n.e(487).then(n.bind(n,9457)),"@site/docs/gpt-researcher/gptr/automated-tests.md",9457],de289047:[()=>n.e(5232).then(n.bind(n,4295)),"@site/docs/reference/processing/text.md",4295],ebfee794:[()=>n.e(4386).then(n.bind(n,674)),"@site/docs/welcome.md",674],f17f44a5:[()=>n.e(5981).then(n.bind(n,3368)),"@site/docs/gpt-researcher/gptr/querying-the-backend.md",3368],f3eeb784:[()=>n.e(7041).then(n.t.bind(n,8261,19)),"~blog/default/blog-tags-opensource-64e.json",8261]};const d=function(e){const t={};return function e(n,r){Object.keys(n).forEach((a=>{const o=n[a],i=r?r+"."+a:a;"object"===typeof o&&!!o&&Object.keys(o).length?e(o,i):t[i]=o}))}(e),t};const p=function(e,t){if("*"===e)return l()({loading:s,loader:()=>n.e(9090).then(n.bind(n,9090))});const a=c[`${e}-${t}`],o=[],i=[],p={},f=d(a);return Object.keys(f).forEach((e=>{const t=u[f[e]];t&&(p[e]=t[0],o.push(t[1]),i.push(t[2]))})),l().Map({loading:s,loader:p,modules:o,webpack:()=>i,render:(e,t)=>{const n=JSON.parse(JSON.stringify(a));Object.keys(e).forEach((t=>{let r=n;const a=t.split(".");for(let e=0;e"default"!==e));o&&o.length&&o.forEach((n=>{r[a[a.length-1]][n]=e[t][n]}))}));const o=n.component;return delete n.component,r.createElement(o,{...n,...t})}})},f=[{path:"/blog",component:p("/blog","f4c"),exact:!0},{path:"/blog/archive",component:p("/blog/archive","f4c"),exact:!0},{path:"/blog/building-gpt-researcher",component:p("/blog/building-gpt-researcher","dcf"),exact:!0},{path:"/blog/building-openai-assistant",component:p("/blog/building-openai-assistant","7ba"),exact:!0},{path:"/blog/gptr-hybrid",component:p("/blog/gptr-hybrid","c62"),exact:!0},{path:"/blog/gptr-langgraph",component:p("/blog/gptr-langgraph","437"),exact:!0},{path:"/blog/tags",component:p("/blog/tags","e13"),exact:!0},{path:"/blog/tags/assistant-api",component:p("/blog/tags/assistant-api","3c8"),exact:!0},{path:"/blog/tags/autonomous-agent",component:p("/blog/tags/autonomous-agent","093"),exact:!0},{path:"/blog/tags/github",component:p("/blog/tags/github","e38"),exact:!0},{path:"/blog/tags/gpt-researcher",component:p("/blog/tags/gpt-researcher","941"),exact:!0},{path:"/blog/tags/hybrid-research",component:p("/blog/tags/hybrid-research","8a3"),exact:!0},{path:"/blog/tags/langchain",component:p("/blog/tags/langchain","97e"),exact:!0},{path:"/blog/tags/langgraph",component:p("/blog/tags/langgraph","932"),exact:!0},{path:"/blog/tags/multi-skills",component:p("/blog/tags/multi-skills","16a"),exact:!0},{path:"/blog/tags/openai",component:p("/blog/tags/openai","4e6"),exact:!0},{path:"/blog/tags/opensource",component:p("/blog/tags/opensource","43b"),exact:!0},{path:"/blog/tags/search-api",component:p("/blog/tags/search-api","cd3"),exact:!0},{path:"/blog/tags/tavily",component:p("/blog/tags/tavily","d67"),exact:!0},{path:"/search",component:p("/search","79a"),exact:!0},{path:"/docs",component:p("/docs","d6b"),routes:[{path:"/docs/contribute",component:p("/docs/contribute","e6a"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/examples/detailed_report",component:p("/docs/examples/detailed_report","c1a"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/examples/examples",component:p("/docs/examples/examples","8df"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/examples/hybrid_research",component:p("/docs/examples/hybrid_research","16b"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/faq",component:p("/docs/faq","76c"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/context/filtering-by-domain",component:p("/docs/gpt-researcher/context/filtering-by-domain","2ab"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/context/local-docs",component:p("/docs/gpt-researcher/context/local-docs","59a"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/context/tailored-research",component:p("/docs/gpt-researcher/context/tailored-research","1db"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/context/vector-stores",component:p("/docs/gpt-researcher/context/vector-stores","b43"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/frontend/frontend",component:p("/docs/gpt-researcher/frontend/frontend","15e"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/frontend/playing-with-webhooks",component:p("/docs/gpt-researcher/frontend/playing-with-webhooks","07d"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/getting-started/cli",component:p("/docs/gpt-researcher/getting-started/cli","917"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/getting-started/getting-started",component:p("/docs/gpt-researcher/getting-started/getting-started","82c"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/getting-started/getting-started-with-docker",component:p("/docs/gpt-researcher/getting-started/getting-started-with-docker","000"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/getting-started/how-to-choose",component:p("/docs/gpt-researcher/getting-started/how-to-choose","6ed"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/getting-started/introduction",component:p("/docs/gpt-researcher/getting-started/introduction","079"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/getting-started/linux-deployment",component:p("/docs/gpt-researcher/getting-started/linux-deployment","970"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/automated-tests",component:p("/docs/gpt-researcher/gptr/automated-tests","68e"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/config",component:p("/docs/gpt-researcher/gptr/config","059"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/example",component:p("/docs/gpt-researcher/gptr/example","b9b"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/handling-logs-as-they-stream",component:p("/docs/gpt-researcher/gptr/handling-logs-as-they-stream","ac0"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/pip-package",component:p("/docs/gpt-researcher/gptr/pip-package","332"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/querying-the-backend",component:p("/docs/gpt-researcher/gptr/querying-the-backend","a32"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/scraping",component:p("/docs/gpt-researcher/gptr/scraping","ab5"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/gptr/troubleshooting",component:p("/docs/gpt-researcher/gptr/troubleshooting","b8f"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/llms/llms",component:p("/docs/gpt-researcher/llms/llms","0a2"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/llms/running-with-ollama",component:p("/docs/gpt-researcher/llms/running-with-ollama","4eb"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/llms/testing-your-llm",component:p("/docs/gpt-researcher/llms/testing-your-llm","493"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/multi_agents/langgraph",component:p("/docs/gpt-researcher/multi_agents/langgraph","d54"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/search-engines/retrievers",component:p("/docs/gpt-researcher/search-engines/retrievers","47a"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/gpt-researcher/search-engines/test-your-retriever",component:p("/docs/gpt-researcher/search-engines/test-your-retriever","e89"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/reference/config/config",component:p("/docs/reference/config/config","212"),exact:!0},{path:"/docs/reference/config/singleton",component:p("/docs/reference/config/singleton","beb"),exact:!0},{path:"/docs/reference/processing/html",component:p("/docs/reference/processing/html","919"),exact:!0},{path:"/docs/reference/processing/text",component:p("/docs/reference/processing/text","d18"),exact:!0},{path:"/docs/roadmap",component:p("/docs/roadmap","e16"),exact:!0,sidebar:"docsSidebar"},{path:"/docs/welcome",component:p("/docs/welcome","177"),exact:!0,sidebar:"docsSidebar"}]},{path:"/",component:p("/","deb"),exact:!0},{path:"*",component:p("*")}];var h=n(8193),m=n(5920),g=n(3509),b=n(1169),v=n(7788),y=n(6347),w=n(5947),k=n.n(w);const E=[n(119),n(6725),n(435),n(1043)];function S(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{var r,a;const o=null!==(a=null===(r=null==t?void 0:t.default)||void 0===r?void 0:r[e])&&void 0!==a?a:t[e];o&&o(...n)}))}const x={onRouteUpdate(){for(var e=arguments.length,t=new Array(e),n=0;n{const{component:t}=e.route;if(t&&t.preload)return t.preload()})))}const A={};const C=function(e){if(A[e.pathname])return{...e,pathname:A[e.pathname]};let t=e.pathname||"/";return t=t.trim().replace(/\/index\.html$/,""),""===t&&(t="/"),A[e.pathname]=t,{...e,pathname:t}};k().configure({showSpinner:!1});class P extends r.Component{constructor(e){super(e),this.previousLocation=null,this.progressBarTimeout=null,this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){const n=e.location!==this.props.location,{routes:r,delay:a}=this.props;if(n){const t=C(e.location);return this.startProgressBar(a),this.previousLocation=C(this.props.location),this.setState({nextRouteHasLoaded:!1}),T(r,t.pathname).then((()=>{x.onRouteUpdate({previousLocation:this.previousLocation,location:t}),this.previousLocation=null,this.setState({nextRouteHasLoaded:!0},this.stopProgressBar);const{hash:e}=t;if(e){const t=decodeURIComponent(e.substring(1)),n=document.getElementById(t);n&&n.scrollIntoView()}else window.scrollTo(0,0)})).catch((e=>console.warn(e))),!1}return!!t.nextRouteHasLoaded}clearProgressBarTimeout(){this.progressBarTimeout&&(clearTimeout(this.progressBarTimeout),this.progressBarTimeout=null)}startProgressBar(e){this.clearProgressBarTimeout(),this.progressBarTimeout=setTimeout((()=>{x.onRouteUpdateDelayed({location:C(this.props.location)}),k().start()}),e)}stopProgressBar(){this.clearProgressBarTimeout(),k().done()}render(){const{children:e,location:t}=this.props;return r.createElement(y.qh,{location:C(t),render:()=>e})}}const L=(0,y.y)(P);var R=n(8895),O=n(4586);const N="docusaurus-base-url-issue-banner-container",I="docusaurus-base-url-issue-banner",D="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function j(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${N}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[F]=!1}),[]),r.createElement(r.Fragment,null,!h.A.canUseDOM&&r.createElement(R.A,null,r.createElement("script",null,j(e))),r.createElement("div",{id:N}))}function B(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,O.A)(),{pathname:n}=(0,y.zy)();return t&&n===e?r.createElement(M,null):null}const z=function(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)};var $=n(6474);const U=function(){return r.createElement(v.A,{fallback:$.A},r.createElement(b.l,null,r.createElement(g.x,null,r.createElement(z,null,r.createElement(B,null),r.createElement(L,{routes:f,delay:1e3},(0,m.A)(f))))))};const q=function(e){if("undefined"==typeof document)return!1;const t=document.createElement("link");try{if(t.relList&&"function"==typeof t.relList.supports)return t.relList.supports(e)}catch(n){return!1}return!1}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=t,r.onerror=n;(document.getElementsByTagName("head")[0]||document.getElementsByName("script")[0].parentNode).appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))},G={};const H=function(e){return new Promise((t=>{G[e]?t():q(e).then((()=>{t(),G[e]=!0})).catch((()=>{}))}))},Q={},V={},W=()=>!(!("connection"in navigator)||-1===(navigator.connection.effectiveType||"").indexOf("2g")||!navigator.connection.saveData),K=e=>Array.prototype.concat.apply([],e),Y={prefetch:e=>{if(!(e=>!W()&&!V[e]&&!Q[e])(e))return!1;Q[e]=!0;const t=(0,_.u)(f,e);return K(t.map((e=>{return t=e.route.path,K(Object.entries(c).filter((e=>{let[n]=e;return n.replace(/(-[^-]+)$/,"")===t})).map((e=>{let[,t]=e;return Object.values(d(t))})));var t}))).forEach((e=>{const t=n.gca(e);t&&!/undefined/.test(t)&&H(t)})),!0},preload:e=>!!(e=>!W()&&!V[e])(e)&&(V[e]=!0,T(f,e),!0)};if(h.A.canUseDOM){window.docusaurus=Y;const e=a.hydrate;T(f,window.location.pathname).then((()=>{e(r.createElement(o.Kd,null,r.createElement(U,null)),document.getElementById("__docusaurus"))}))}},7788:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(6540),a=n(8193),o=n(6474);class i extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.A.canUseDOM&&this.setState({error:e})}render(){var e;const{children:t}=this.props,{error:n}=this.state;if(n){return(null!==(e=this.props.fallback)&&void 0!==e?e:o.A)({error:n,tryAgain:()=>this.setState({error:null})})}return t}}const l=i},8193:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});const r=!("undefined"==typeof window||!window.document||!window.document.createElement),a={canUseDOM:r,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&!!window.screen}},8895:(e,t,n)=>{"use strict";n.d(t,{A:()=>he});var r,a,o,i,l=n(6540),s=n(5556),c=n.n(s),u=n(2098),d=n.n(u),p=n(115),f=n.n(p),h=n(5228),m=n.n(h),g="bodyAttributes",b="htmlAttributes",v="titleAttributes",y={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title"},w=(Object.keys(y).map((function(e){return y[e]})),"charset"),k="cssText",E="href",S="http-equiv",x="innerHTML",_="itemprop",T="name",A="property",C="rel",P="src",L="target",R={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},O="defaultTitle",N="defer",I="encodeSpecialCharacters",D="onChangeClientState",F="titleTemplate",j=Object.keys(R).reduce((function(e,t){return e[R[t]]=t,e}),{}),M=[y.NOSCRIPT,y.SCRIPT,y.STYLE],B="data-react-helmet",z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},G=function(e){return!1===(!(arguments.length>1&&void 0!==arguments[1])||arguments[1])?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},H=function(e){var t=Y(e,y.TITLE),n=Y(e,F);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=Y(e,O);return t||r||void 0},Q=function(e){return Y(e,D)||function(){}},V=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return U({},e,t)}),{})},W=function(e,t){return t.filter((function(e){return void 0!==e[y.BASE]})).map((function(e){return e[y.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},X=(r=Date.now(),function(e){var t=Date.now();t-r>16?(r=t,e(t)):setTimeout((function(){X(e)}),0)}),Z=function(e){return clearTimeout(e)},J="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||X:n.g.requestAnimationFrame||X,ee="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Z:n.g.cancelAnimationFrame||Z,te=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},ne=null,re=function(e,t){var n=e.baseTag,r=e.bodyAttributes,a=e.htmlAttributes,o=e.linkTags,i=e.metaTags,l=e.noscriptTags,s=e.onChangeClientState,c=e.scriptTags,u=e.styleTags,d=e.title,p=e.titleAttributes;ie(y.BODY,r),ie(y.HTML,a),oe(d,p);var f={baseTag:le(y.BASE,n),linkTags:le(y.LINK,o),metaTags:le(y.META,i),noscriptTags:le(y.NOSCRIPT,l),scriptTags:le(y.SCRIPT,c),styleTags:le(y.STYLE,u)},h={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(h[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),s(e,h,m)},ae=function(e){return Array.isArray(e)?e.join(""):e},oe=function(e,t){void 0!==e&&document.title!==e&&(document.title=ae(e)),ie(y.TITLE,t)},ie=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(B),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l=0;d--)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute(B):n.getAttribute(B)!==i.join(",")&&n.setAttribute(B,i.join(","))}},le=function(e,t){var n=document.head||document.querySelector(y.HEAD),r=n.querySelectorAll(e+"["+B+"]"),a=Array.prototype.slice.call(r),o=[],i=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===x)n.innerHTML=t.innerHTML;else if(r===k)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var l=void 0===t[r]?"":t[r];n.setAttribute(r,l)}n.setAttribute(B,"true"),a.some((function(e,t){return i=t,n.isEqualNode(e)}))?a.splice(i,1):o.push(n)})),a.forEach((function(e){return e.parentNode.removeChild(e)})),o.forEach((function(e){return n.appendChild(e)})),{oldTags:a,newTags:o}},se=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},ce=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[R[n]||n]=e[n],t}),t)},ue=function(e,t,n){switch(e){case y.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[B]=!0,a=ce(n,r),[l.createElement(y.TITLE,a,e)];var e,n,r,a},toString:function(){return function(e,t,n,r){var a=se(n),o=ae(t);return a?"<"+e+" "+B+'="true" '+a+">"+G(o,r)+"":"<"+e+" "+B+'="true">'+G(o,r)+""}(e,t.title,t.titleAttributes,n)}};case g:case b:return{toComponent:function(){return ce(t)},toString:function(){return se(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,a=((r={key:n})[B]=!0,r);return Object.keys(t).forEach((function(e){var n=R[e]||e;if(n===x||n===k){var r=t.innerHTML||t.cssText;a.dangerouslySetInnerHTML={__html:r}}else a[n]=t[e]})),l.createElement(e,a)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!(e===x||e===k)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+G(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===M.indexOf(e);return t+"<"+e+" "+B+'="true" '+a+(i?"/>":">"+o+"")}),"")}(e,t,n)}}}},de=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.linkTags,i=e.metaTags,l=e.noscriptTags,s=e.scriptTags,c=e.styleTags,u=e.title,d=void 0===u?"":u,p=e.titleAttributes;return{base:ue(y.BASE,t,r),bodyAttributes:ue(g,n,r),htmlAttributes:ue(b,a,r),link:ue(y.LINK,o,r),meta:ue(y.META,i,r),noscript:ue(y.NOSCRIPT,l,r),script:ue(y.SCRIPT,s,r),style:ue(y.STYLE,c,r),title:ue(y.TITLE,{title:d,titleAttributes:p},r)}},pe=d()((function(e){return{baseTag:W([E,L],e),bodyAttributes:V(g,e),defer:Y(e,N),encode:Y(e,I),htmlAttributes:V(b,e),linkTags:K(y.LINK,[C,E],e),metaTags:K(y.META,[T,w,S,A,_],e),noscriptTags:K(y.NOSCRIPT,[x],e),onChangeClientState:Q(e),scriptTags:K(y.SCRIPT,[P,x],e),styleTags:K(y.STYLE,[k],e),title:H(e),titleAttributes:V(v,e)}}),(function(e){ne&&ee(ne),e.defer?ne=J((function(){re(e,(function(){ne=null}))})):(re(e),ne=null)}),de)((function(){return null})),fe=(a=pe,i=o=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!f()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case y.SCRIPT:case y.NOSCRIPT:return{innerHTML:t};case y.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,a=e.newChildProps,o=e.nestedChildren;return U({},r,((t={})[n.type]=[].concat(r[n.type]||[],[U({},a,this.mapNestedChildrenToProps(n,o))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case y.TITLE:return U({},a,((t={})[r.type]=i,t.titleAttributes=U({},o),t));case y.BODY:return U({},a,{bodyAttributes:U({},o)});case y.HTML:return U({},a,{htmlAttributes:U({},o)})}return U({},a,((n={})[r.type]=U({},o),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=U({},t);return Object.keys(e).forEach((function(t){var r;n=U({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return l.Children.forEach(e,(function(e){if(e&&e.props){var a=e.props,o=a.children,i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[j[n]||n]=e[n],t}),t)}(q(a,["children"]));switch(n.warnOnInvalidChildren(e,o),e.type){case y.LINK:case y.META:case y.NOSCRIPT:case y.SCRIPT:case y.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:i,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:i,nestedChildren:o})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=q(e,["children"]),r=U({},n);return t&&(r=this.mapChildrenToProps(t,r)),l.createElement(a,r)},$(t,null,[{key:"canUseDOM",set:function(e){a.canUseDOM=e}}]),t}(l.Component),o.propTypes={base:c().object,bodyAttributes:c().object,children:c().oneOfType([c().arrayOf(c().node),c().node]),defaultTitle:c().string,defer:c().bool,encodeSpecialCharacters:c().bool,htmlAttributes:c().object,link:c().arrayOf(c().object),meta:c().arrayOf(c().object),noscript:c().arrayOf(c().object),onChangeClientState:c().func,script:c().arrayOf(c().object),style:c().arrayOf(c().object),title:c().string,titleAttributes:c().object,titleTemplate:c().string},o.defaultProps={defer:!0,encodeSpecialCharacters:!0},o.peek=a.peek,o.rewind=function(){var e=a.rewind();return e||(e=de({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},i);fe.renderStatic=fe.rewind;const he=function(e){return l.createElement(fe,{...e})}},5489:(e,t,n)=>{"use strict";n.d(t,{A:()=>d});var r=n(6540),a=n(4625),o=n(4586),i=n(6654),l=n(8193);const s=(0,r.createContext)({collectLink:()=>{}});var c=n(6025),u=n(440);const d=function(e){let{isNavLink:t,to:n,href:d,activeClassName:p,isActive:f,"data-noBrokenLinkCheck":h,autoAddBaseUrl:m=!0,...g}=e;var b;const{siteConfig:{trailingSlash:v,baseUrl:y}}=(0,o.A)(),{withBaseUrl:w}=(0,c.h)(),k=(0,r.useContext)(s),E=n||d,S=(0,i.A)(E),x=null==E?void 0:E.replace("pathname://","");let _=void 0!==x?(T=x,m&&(e=>e.startsWith("/"))(T)?w(T):T):void 0;var T;_&&S&&(_=(0,u.applyTrailingSlash)(_,{trailingSlash:v,baseUrl:y}));const A=(0,r.useRef)(!1),C=t?a.k2:a.N_,P=l.A.canUseIntersectionObserver,L=(0,r.useRef)();(0,r.useEffect)((()=>(!P&&S&&null!=_&&window.docusaurus.prefetch(_),()=>{P&&L.current&&L.current.disconnect()})),[L,_,P,S]);const R=null!==(b=null==_?void 0:_.startsWith("#"))&&void 0!==b&&b,O=!_||!S||R;return _&&S&&!R&&!h&&k.collectLink(_),O?r.createElement("a",{href:_,...E&&!S&&{target:"_blank",rel:"noopener noreferrer"},...g}):r.createElement(C,{...g,onMouseEnter:()=>{A.current||null==_||(window.docusaurus.preload(_),A.current=!0)},innerRef:e=>{var t,n;P&&e&&S&&(t=e,n=()=>{null!=_&&window.docusaurus.prefetch(_)},L.current=new window.IntersectionObserver((e=>{e.forEach((e=>{t===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(L.current.unobserve(t),L.current.disconnect(),n())}))})),L.current.observe(t))},to:_||"",...t&&{isActive:f,activeClassName:p}})}},1312:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,T:()=>c});var r=n(6540);const a=/{\w+}/g,o="{}";function i(e,t){const n=[],i=e.replace(a,(e=>{const a=e.substr(1,e.length-2),i=null==t?void 0:t[a];if(void 0!==i){const e=r.isValidElement(i)?i:String(i);return n.push(e),o}return e}));return 0===n.length?e:n.every((e=>"string"==typeof e))?i.split(o).reduce(((e,t,r)=>{var a;return e.concat(t).concat(null!==(a=n[r])&&void 0!==a?a:"")}),""):i.split(o).reduce(((e,t,a)=>[...e,r.createElement(r.Fragment,{key:a},t,n[a])]),[])}var l=n(2654);function s(e){let{id:t,message:n}=e;var r,a;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!==(a=null!==(r=l[null!=t?t:n])&&void 0!==r?r:n)&&void 0!==a?a:t}function c(e,t){let{message:n,id:r}=e;return i(s({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");return i(s({message:t,id:n}),r)}},3509:(e,t,n)=>{"use strict";n.d(t,{o:()=>a,x:()=>o});var r=n(6540);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});const r="default"},1169:(e,t,n)=>{"use strict";n.d(t,{o:()=>u,l:()=>d});var r=n(6540),a=n(5091);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"welcome","docs":[{"id":"contribute","path":"/docs/contribute","sidebar":"docsSidebar"},{"id":"examples/detailed_report","path":"/docs/examples/detailed_report","sidebar":"docsSidebar"},{"id":"examples/examples","path":"/docs/examples/examples","sidebar":"docsSidebar"},{"id":"examples/hybrid_research","path":"/docs/examples/hybrid_research","sidebar":"docsSidebar"},{"id":"faq","path":"/docs/faq","sidebar":"docsSidebar"},{"id":"gpt-researcher/context/filtering-by-domain","path":"/docs/gpt-researcher/context/filtering-by-domain","sidebar":"docsSidebar"},{"id":"gpt-researcher/context/local-docs","path":"/docs/gpt-researcher/context/local-docs","sidebar":"docsSidebar"},{"id":"gpt-researcher/context/tailored-research","path":"/docs/gpt-researcher/context/tailored-research","sidebar":"docsSidebar"},{"id":"gpt-researcher/context/vector-stores","path":"/docs/gpt-researcher/context/vector-stores","sidebar":"docsSidebar"},{"id":"gpt-researcher/frontend/frontend","path":"/docs/gpt-researcher/frontend/frontend","sidebar":"docsSidebar"},{"id":"gpt-researcher/frontend/playing-with-webhooks","path":"/docs/gpt-researcher/frontend/playing-with-webhooks","sidebar":"docsSidebar"},{"id":"gpt-researcher/getting-started/cli","path":"/docs/gpt-researcher/getting-started/cli","sidebar":"docsSidebar"},{"id":"gpt-researcher/getting-started/getting-started","path":"/docs/gpt-researcher/getting-started/getting-started","sidebar":"docsSidebar"},{"id":"gpt-researcher/getting-started/getting-started-with-docker","path":"/docs/gpt-researcher/getting-started/getting-started-with-docker","sidebar":"docsSidebar"},{"id":"gpt-researcher/getting-started/how-to-choose","path":"/docs/gpt-researcher/getting-started/how-to-choose","sidebar":"docsSidebar"},{"id":"gpt-researcher/getting-started/introduction","path":"/docs/gpt-researcher/getting-started/introduction","sidebar":"docsSidebar"},{"id":"gpt-researcher/getting-started/linux-deployment","path":"/docs/gpt-researcher/getting-started/linux-deployment","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/automated-tests","path":"/docs/gpt-researcher/gptr/automated-tests","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/config","path":"/docs/gpt-researcher/gptr/config","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/example","path":"/docs/gpt-researcher/gptr/example","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/handling-logs-as-they-stream","path":"/docs/gpt-researcher/gptr/handling-logs-as-they-stream","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/pip-package","path":"/docs/gpt-researcher/gptr/pip-package","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/querying-the-backend","path":"/docs/gpt-researcher/gptr/querying-the-backend","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/scraping","path":"/docs/gpt-researcher/gptr/scraping","sidebar":"docsSidebar"},{"id":"gpt-researcher/gptr/troubleshooting","path":"/docs/gpt-researcher/gptr/troubleshooting","sidebar":"docsSidebar"},{"id":"gpt-researcher/llms/llms","path":"/docs/gpt-researcher/llms/llms","sidebar":"docsSidebar"},{"id":"gpt-researcher/llms/running-with-ollama","path":"/docs/gpt-researcher/llms/running-with-ollama","sidebar":"docsSidebar"},{"id":"gpt-researcher/llms/testing-your-llm","path":"/docs/gpt-researcher/llms/testing-your-llm","sidebar":"docsSidebar"},{"id":"gpt-researcher/multi_agents/langgraph","path":"/docs/gpt-researcher/multi_agents/langgraph","sidebar":"docsSidebar"},{"id":"gpt-researcher/search-engines/retrievers","path":"/docs/gpt-researcher/search-engines/retrievers","sidebar":"docsSidebar"},{"id":"gpt-researcher/search-engines/test-your-retriever","path":"/docs/gpt-researcher/search-engines/test-your-retriever","sidebar":"docsSidebar"},{"id":"reference/config/config","path":"/docs/reference/config/config"},{"id":"reference/config/singleton","path":"/docs/reference/config/singleton"},{"id":"reference/processing/html","path":"/docs/reference/processing/html"},{"id":"reference/processing/text","path":"/docs/reference/processing/text"},{"id":"roadmap","path":"/docs/roadmap","sidebar":"docsSidebar"},{"id":"welcome","path":"/docs/welcome","sidebar":"docsSidebar"}]}]}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr"}}}');var l=n(2654);const s=JSON.parse('{"docusaurusVersion":"0.0.0-4193","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"0.0.0-4193"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"0.0.0-4193"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"0.0.0-4193"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"0.0.0-4193"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"0.0.0-4193"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.21.4"}}}'),c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},6654:(e,t,n)=>{"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},5920:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(2831).v},5567:(e,t,n)=>{"use strict";n.r(t),n.d(t,{BrowserRouter:()=>r.Kd,HashRouter:()=>r.I9,Link:()=>r.N_,MemoryRouter:()=>r.fS,NavLink:()=>r.k2,Prompt:()=>r.XG,Redirect:()=>r.rd,Route:()=>r.qh,Router:()=>r.Ix,StaticRouter:()=>r.kO,Switch:()=>r.dO,generatePath:()=>r.tW,matchPath:()=>r.B6,useHistory:()=>r.W6,useLocation:()=>r.zy,useParams:()=>r.g,useRouteMatch:()=>r.W5,withRouter:()=>r.y});var r=n(4625)},6025:(e,t,n)=>{"use strict";n.d(t,{A:()=>i,h:()=>o});var r=n(4586),a=n(6654);function o(){const{siteConfig:{baseUrl:e="/",url:t}={}}=(0,r.A)();return{withBaseUrl:(n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n)return n;if(n.startsWith("#"))return n;if((0,a.z)(n))return n;if(o)return t+n;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)}}function i(e,t){void 0===t&&(t={});const{withBaseUrl:n}=o();return n(e,t)}},4586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(1169);const o=function(){return(0,r.useContext)(a.o)}},6588:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o,useAllPluginInstancesData:()=>i,usePluginData:()=>l});var r=n(4586),a=n(7065);function o(){const{globalData:e}=(0,r.A)();if(!e)throw new Error("Docusaurus global data not found.");return e}function i(e){const t=o()[e];if(!t)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return t}function l(e,t){void 0===t&&(t=a.W);const n=i(e)[t];if(!n)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return n}},2303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(3509);function o(){return(0,r.useContext)(a.o)}},6474:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(6540),a=n(9360),o=n(7788);function i(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}const l=function(e){let{error:t,tryAgain:n}=e;return r.createElement(o.A,{fallback:()=>r.createElement(i,{error:t,tryAgain:n})},r.createElement(a.A,{title:"Page Error"},r.createElement(i,{error:t,tryAgain:n})))}},4733:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDocVersionSuggestions=t.getActiveDocContext=t.getActiveVersion=t.getLatestVersion=t.getActivePlugin=void 0;const r=n(5567);t.getActivePlugin=function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).find((e=>{let[n,a]=e;return!!(0,r.matchPath)(t,{path:a.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o};t.getLatestVersion=e=>e.versions.find((e=>e.isLast));t.getActiveVersion=(e,n)=>{const a=(0,t.getLatestVersion)(e);return[...e.versions.filter((e=>e!==a)),a].find((e=>!!(0,r.matchPath)(n,{path:e.path,exact:!1,strict:!1})))};t.getActiveDocContext=(e,n)=>{const a=(0,t.getActiveVersion)(e,n),o=null==a?void 0:a.docs.find((e=>!!(0,r.matchPath)(n,{path:e.path,exact:!0,strict:!1})));return{activeVersion:a,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}};t.getDocVersionSuggestions=(e,n)=>{const r=(0,t.getLatestVersion)(e),a=(0,t.getActiveDocContext)(e,n);return{latestDocSuggestion:null==a?void 0:a.alternateDocVersions[r.name],latestVersionSuggestion:r}}},727:(e,t,n)=>{"use strict";t.HW=t.zK=t.ir=t.r7=t.jh=t.vT=t.ht=t.Gy=void 0;const r=n(5215),a=n(5567),o=(0,r.__importStar)(n(6588)),i=n(4733),l={};t.Gy=()=>{var e;return null!==(e=(0,o.default)()["docusaurus-plugin-content-docs"])&&void 0!==e?e:l};t.ht=e=>(0,o.usePluginData)("docusaurus-plugin-content-docs",e);t.vT=function(e){void 0===e&&(e={});const n=(0,t.Gy)(),{pathname:r}=(0,a.useLocation)();return(0,i.getActivePlugin)(n,r,e)};t.jh=e=>(0,t.ht)(e).versions;t.r7=e=>{const n=(0,t.ht)(e);return(0,i.getLatestVersion)(n)};t.ir=e=>{const n=(0,t.ht)(e),{pathname:r}=(0,a.useLocation)();return(0,i.getActiveVersion)(n,r)};t.zK=e=>{const n=(0,t.ht)(e),{pathname:r}=(0,a.useLocation)();return(0,i.getActiveDocContext)(n,r)};t.HW=e=>{const n=(0,t.ht)(e),{pathname:r}=(0,a.useLocation)();return(0,i.getDocVersionSuggestions)(n,r)}},3679:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540);const a="iconExternalLink_wgqa",o=e=>{let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},9360:(e,t,n)=>{"use strict";n.d(t,{A:()=>ve});var r=n(6540),a=n(53),o=n(7788),i=n(6347),l=n(1312),s=n(5965);const c="skipToContent_OuoZ";function u(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}const d=function(){const e=(0,r.useRef)(null),{action:t}=(0,i.W6)();return(0,s.$G)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&u(e.current)})),r.createElement("div",{ref:e},r.createElement("a",{href:"#",className:c,onClick:e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&u(t)}},r.createElement(l.A,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))};var p=n(8168);function f(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...l}=e;return r.createElement("svg",(0,p.A)({viewBox:"0 0 15 15",width:t,height:n},l),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const h="announcementBar_axC9",m="announcementBarPlaceholder_xYHE",g="announcementBarClose_A3A1",b="announcementBarContent_6uhP";const v=function(){const{isActive:e,close:t}=(0,s.Mj)(),{announcementBar:n}=(0,s.pN)();if(!e)return null;const{content:o,backgroundColor:i,textColor:c,isCloseable:u}=n;return r.createElement("div",{className:h,style:{backgroundColor:i,color:c},role:"banner"},u&&r.createElement("div",{className:m}),r.createElement("div",{className:b,dangerouslySetInnerHTML:{__html:o}}),u?r.createElement("button",{type:"button",className:(0,a.A)("clean-btn close",g),onClick:t,"aria-label":(0,l.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},r.createElement(f,{width:14,height:14,strokeWidth:3.1})):null)};var y=n(3338),w=n(2303);const k={toggle:"toggle_iYfV",toggleScreenReader:"toggleScreenReader_h9qa",toggleDisabled:"toggleDisabled_xj38",toggleTrack:"toggleTrack_t-f2",toggleTrackCheck:"toggleTrackCheck_mk7D",toggleChecked:"toggleChecked_a04y",toggleTrackX:"toggleTrackX_dm8H",toggleTrackThumb:"toggleTrackThumb_W6To",toggleFocused:"toggleFocused_pRSw",toggleIcon:"toggleIcon_pHJ9"},E=e=>{let{icon:t,style:n}=e;return r.createElement("span",{className:(0,a.A)(k.toggleIcon,k.dark),style:n},t)},S=e=>{let{icon:t,style:n}=e;return r.createElement("span",{className:(0,a.A)(k.toggleIcon,k.light),style:n},t)},x=(0,r.memo)((e=>{let{className:t,icons:n,checked:o,disabled:i,onChange:l}=e;const[s,c]=(0,r.useState)(o),[u,d]=(0,r.useState)(!1),p=(0,r.useRef)(null);return r.createElement("div",{className:(0,a.A)(k.toggle,t,{[k.toggleChecked]:s,[k.toggleFocused]:u,[k.toggleDisabled]:i})},r.createElement("div",{className:k.toggleTrack,role:"button",tabIndex:-1,onClick:()=>{var e;return null==(e=p.current)?void 0:e.click()}},r.createElement("div",{className:k.toggleTrackCheck},n.checked),r.createElement("div",{className:k.toggleTrackX},n.unchecked),r.createElement("div",{className:k.toggleTrackThumb})),r.createElement("input",{ref:p,checked:s,type:"checkbox",className:k.toggleScreenReader,"aria-label":"Switch between dark and light mode",onChange:l,onClick:()=>c(!s),onFocus:()=>d(!0),onBlur:()=>d(!1),onKeyDown:e=>{var t;"Enter"===e.key&&(null==(t=p.current)||t.click())}}))}));function _(e){const{colorMode:{switchConfig:{darkIcon:t,darkIconStyle:n,lightIcon:a,lightIconStyle:o}}}=(0,s.pN)(),i=(0,w.A)();return r.createElement(x,(0,p.A)({disabled:!i,icons:{checked:r.createElement(E,{icon:t,style:n}),unchecked:r.createElement(S,{icon:a,style:o})}},e))}var T=n(4785);const A=e=>{const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,s.Mq)(((t,r)=>{if(!e)return;const i=t.scrollY;if(i=l?n(!1):i+c{if(e)return t.location.hash?(a.current=!0,void n(!1)):void n(!0)})),{navbarRef:i,isNavbarVisible:t}};const C=function(e){void 0===e&&(e=!0),(0,r.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])};var P=n(9312),L=n(4098),R=n(1612),O=n(1773);const N=e=>{let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,p.A)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))},I={toggle:"toggle_2i4l",navbarHideable:"navbarHideable_RReh",navbarHidden:"navbarHidden_FBwS",navbarSidebarToggle:"navbarSidebarToggle_AVbO"},D="right";function F(){return(0,s.pN)().navbar.items}function j(){const{colorMode:{disableSwitch:e}}=(0,s.pN)(),{isDarkTheme:t,setLightTheme:n,setDarkTheme:a}=(0,T.A)();return{isDarkTheme:t,toggle:(0,r.useCallback)((e=>e.target.checked?a():n()),[n,a]),disabled:e}}function M(e){let{sidebarShown:t,toggleSidebar:n}=e;C(t);const o=F(),i=j(),c=function(e){var t;let{sidebarShown:n,toggleSidebar:a}=e;const o=null==(t=(0,s.Ko)())?void 0:t({toggleSidebar:a}),i=(0,s.ZC)(o),[l,c]=(0,r.useState)((()=>!1));(0,r.useEffect)((()=>{o&&!i&&c(!0)}),[o,i]);const u=!!o;return(0,r.useEffect)((()=>{u?n||c(!0):c(!1)}),[n,u]),{shown:l,hide:(0,r.useCallback)((()=>{c(!1)}),[]),content:o}}({sidebarShown:t,toggleSidebar:n});return r.createElement("div",{className:"navbar-sidebar"},r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(O.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),!i.disabled&&r.createElement(_,{className:I.navbarSidebarToggle,checked:i.isDarkTheme,onChange:i.toggle}),r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__close",onClick:n},r.createElement(f,{color:"var(--ifm-color-emphasis-600)",className:I.navbarSidebarCloseSvg}))),r.createElement("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":c.shown})},r.createElement("div",{className:"navbar-sidebar__item menu"},r.createElement("ul",{className:"menu__list"},o.map(((e,t)=>r.createElement(R.A,(0,p.A)({mobile:!0},e,{onClick:n,key:t})))))),r.createElement("div",{className:"navbar-sidebar__item menu"},o.length>0&&r.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__back",onClick:c.hide},r.createElement(l.A,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu")),c.content)))}const B=function(){const{navbar:{hideOnScroll:e,style:t}}=(0,s.pN)(),n=function(){const e=(0,P.A)(),t="mobile"===e,[n,a]=(0,r.useState)(!1);(0,s.$Z)((()=>{if(n)return a(!1),!1}));const o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===e&&a(!1)}),[e]),{shouldRender:t,toggle:o,shown:n}}(),o=j(),i=(0,L.vT)(),{navbarRef:l,isNavbarVisible:c}=A(e),u=F(),d=u.some((e=>"search"===e.type)),{leftItems:f,rightItems:h}=function(e){return{leftItems:e.filter((e=>"left"===(e.position??D))),rightItems:e.filter((e=>"right"===(e.position??D)))}}(u);return r.createElement("nav",{ref:l,className:(0,a.A)("navbar","navbar--fixed-top",{"navbar--dark":"dark"===t,"navbar--primary":"primary"===t,"navbar-sidebar--show":n.shown,[I.navbarHideable]:e,[I.navbarHidden]:e&&!c})},r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},((null==u?void 0:u.length)>0||i)&&r.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:n.toggle,onKeyDown:n.toggle},r.createElement(N,null)),r.createElement(O.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),f.map(((e,t)=>r.createElement(R.A,(0,p.A)({},e,{key:t}))))),r.createElement("div",{className:"navbar__items navbar__items--right"},h.map(((e,t)=>r.createElement(R.A,(0,p.A)({},e,{key:t})))),!o.disabled&&r.createElement(_,{className:I.toggle,checked:o.isDarkTheme,onChange:o.toggle}),!d&&r.createElement(y.A,null))),r.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:n.toggle}),n.shouldRender&&r.createElement(M,{sidebarShown:n.shown,toggleSidebar:n.toggle}))};var z=n(5489),$=n(6025),U=n(6654);const q="footerLogoLink_SRtH";var G=n(6265),H=n(3679);function Q(e){let{to:t,href:n,label:a,prependBaseUrlToHref:o,...i}=e;const l=(0,$.A)(t),s=(0,$.A)(n,{forcePrependBaseUrl:!0});return r.createElement(z.A,(0,p.A)({className:"footer__link-item"},n?{href:o?s:n}:{to:l},i),n&&!(0,U.A)(n)?r.createElement("span",null,a,r.createElement(H.A,null)):a)}const V=e=>{let{sources:t,alt:n,width:a,height:o}=e;return r.createElement(G.A,{className:"footer__logo",alt:n,sources:t,width:a,height:o})};const W=function(){const{footer:e}=(0,s.pN)(),{copyright:t,links:n=[],logo:o={}}=e||{},i={light:(0,$.A)(o.src),dark:(0,$.A)(o.srcDark||o.src)};return e?r.createElement("footer",{className:(0,a.A)("footer",{"footer--dark":"dark"===e.style})},r.createElement("div",{className:"container"},n&&n.length>0&&r.createElement("div",{className:"row footer__links"},n.map(((e,t)=>r.createElement("div",{key:t,className:"col footer__col"},null!=e.title?r.createElement("div",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?r.createElement("ul",{className:"footer__items"},e.items.map(((e,t)=>e.html?r.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):r.createElement("li",{key:e.href||e.to,className:"footer__item"},r.createElement(Q,e))))):null)))),(o||t)&&r.createElement("div",{className:"footer__bottom text--center"},o&&(o.src||o.srcDark)&&r.createElement("div",{className:"margin-bottom--sm"},o.href?r.createElement(z.A,{href:o.href,className:q},r.createElement(V,{alt:o.alt,sources:i,width:o.width,height:o.height})):r.createElement(V,{alt:o.alt,sources:i})),t?r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}}):null))):null};var K=n(8193);const Y=(0,s.Wf)("theme"),X="light",Z="dark",J=e=>e===Z?Z:X,ee=e=>{(0,s.Wf)("theme").set(J(e))},te=()=>{const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.pN)(),[a,o]=(0,r.useState)((e=>K.A.canUseDOM?J(document.documentElement.getAttribute("data-theme")):J(e))(e)),i=(0,r.useCallback)((()=>{o(X),ee(X)}),[]),l=(0,r.useCallback)((()=>{o(Z),ee(Z)}),[]);return(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",J(a))}),[a]),(0,r.useEffect)((()=>{if(!t)try{const e=Y.get();null!==e&&o(J(e))}catch(e){console.error(e)}}),[t,o]),(0,r.useEffect)((()=>{t&&!n||window.matchMedia("(prefers-color-scheme: dark)").addListener((e=>{let{matches:t}=e;o(t?Z:X)}))}),[t,n]),{isDarkTheme:a===Z,setLightTheme:i,setDarkTheme:l}};var ne=n(493);const re=function(e){const{isDarkTheme:t,setLightTheme:n,setDarkTheme:a}=te();return r.createElement(ne.A.Provider,{value:{isDarkTheme:t,setLightTheme:n,setDarkTheme:a}},e.children)},ae="docusaurus.tab.",oe=()=>{const[e,t]=(0,r.useState)({}),n=(0,r.useCallback)(((e,t)=>{(0,s.Wf)(`${ae}${e}`).set(t)}),[]);return(0,r.useEffect)((()=>{try{const e={};(0,s.Eo)().forEach((t=>{if(t.startsWith(ae)){const n=t.substring(15);e[n]=(0,s.Wf)(t).get()}})),t(e)}catch(e){console.error(e)}}),[]),{tabGroupChoices:e,setTabGroupChoices:(e,r)=>{t((t=>({...t,[e]:r}))),n(e,r)}}},ie=(0,r.createContext)(void 0);const le=function(e){const{tabGroupChoices:t,setTabGroupChoices:n}=oe();return r.createElement(ie.Provider,{value:{tabGroupChoices:t,setTabGroupChoices:n}},e.children)};function se(e){let{children:t}=e;return r.createElement(re,null,r.createElement(s.oq,null,r.createElement(le,null,r.createElement(s.Tv,null,r.createElement(s.VQ,null,r.createElement(s.pM,null,t))))))}var ce=n(8895),ue=n(4586);function de(e){let{locale:t,version:n,tag:a}=e;return r.createElement(ce.A,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),a&&r.createElement("meta",{name:"docusaurus_tag",content:a}))}var pe=n(8139);function fe(){const{i18n:{defaultLocale:e,locales:t}}=(0,ue.A)(),n=(0,s.oK)();return r.createElement(ce.A,null,t.map((e=>r.createElement("link",{key:e,rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:e}))),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function he(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,ue.A)(),a=function(){const{siteConfig:{url:e}}=(0,ue.A)(),{pathname:t}=(0,i.zy)();return e+(0,$.A)(t)}(),o=t?`${n}${t}`:a;return r.createElement(ce.A,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function me(e){const{siteConfig:{favicon:t},i18n:{currentLocale:n,localeConfigs:a}}=(0,ue.A)(),{metadata:o,image:i}=(0,s.pN)(),{title:l,description:c,image:u,keywords:d,searchMetadata:f}=e,h=(0,$.A)(t),m=(0,s.s$)(l),g=n,b=a[n].direction;return r.createElement(r.Fragment,null,r.createElement(ce.A,null,r.createElement("html",{lang:g,dir:b}),t&&r.createElement("link",{rel:"shortcut icon",href:h}),r.createElement("title",null,m),r.createElement("meta",{property:"og:title",content:m}),r.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),i&&r.createElement(pe.A,{image:i}),u&&r.createElement(pe.A,{image:u}),r.createElement(pe.A,{description:c,keywords:d}),r.createElement(he,null),r.createElement(fe,null),r.createElement(de,(0,p.A)({tag:s.Cy,locale:n},f)),r.createElement(ce.A,null,o.map(((e,t)=>r.createElement("meta",(0,p.A)({key:`metadata_${t}`},e))))))}const ge=function(){(0,r.useEffect)((()=>{const e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),()=>{document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};function be(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(l.A,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(l.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}const ve=function(e){const{children:t,noFooter:n,wrapperClassName:i,pageClassName:l}=e;return ge(),r.createElement(se,null,r.createElement(me,e),r.createElement(d,null),r.createElement(v,null),r.createElement(B,null),r.createElement("div",{className:(0,a.A)(s.GN.wrapper.main,i,l)},r.createElement(o.A,{fallback:be},t)),!n&&r.createElement(W,null))}},1773:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(8168),a=n(6540),o=n(5489),i=n(6265),l=n(6025),s=n(4586),c=n(5965);const u=e=>{const{siteConfig:{title:t}}=(0,s.A)(),{navbar:{title:n,logo:u={src:""}}}=(0,c.pN)(),{imageClassName:d,titleClassName:p,...f}=e,h=(0,l.A)(u.href||"/"),m={light:(0,l.A)(u.src),dark:(0,l.A)(u.srcDark||u.src)},g=a.createElement(i.A,{sources:m,height:u.height,width:u.width,alt:u.alt||n||t});return a.createElement(o.A,(0,r.A)({to:h},f,u.target&&{target:u.target}),u.src&&(d?a.createElement("div",{className:d},g):a.createElement(a.Fragment,null,g)),null!=n&&a.createElement("b",{className:p},n))}},3031:(e,t,n)=>{"use strict";n.d(t,{A:()=>g,k:()=>f});var r=n(8168),a=n(6540),o=n(53),i=n(5489),l=n(6025),s=n(3679),c=n(6654),u=n(5965),d=n(1612);const p="dropdown__link--active";function f(e){var t;let{activeBasePath:n,activeBaseRegex:o,to:d,href:f,label:h,activeClassName:m="",prependBaseUrlToHref:g,...b}=e;const v=(0,l.A)(d),y=(0,l.A)(n),w=(0,l.A)(f,{forcePrependBaseUrl:!0}),k=h&&f&&!(0,c.A)(f),E=m===p;return a.createElement(i.A,(0,r.A)({},f?{href:g?w:f}:{isNavLink:!0,activeClassName:null!=(t=b.className)&&t.includes(m)?"":m,to:v,...n||o?{isActive:(e,t)=>o?(0,u.Gv)(o,t.pathname):t.pathname.startsWith(y)}:null},b),k?a.createElement("span",null,h,a.createElement(s.A,E&&{width:12,height:12})):h)}function h(e){let{className:t,isDropdownItem:n=!1,...i}=e;const l=a.createElement(f,(0,r.A)({className:(0,o.A)(n?"dropdown__link":"navbar__item navbar__link",t)},i));return n?a.createElement("li",null,l):l}function m(e){let{className:t,isDropdownItem:n,...i}=e;return a.createElement("li",{className:"menu__list-item"},a.createElement(f,(0,r.A)({className:(0,o.A)("menu__link",t)},i)))}const g=function(e){let{mobile:t=!1,position:n,...o}=e;const i=t?m:h;return a.createElement(i,(0,r.A)({},o,{activeClassName:o.activeClassName??(0,d.S)(t)}))}},8240:(e,t,n)=>{"use strict";n.d(t,{A:()=>u});var r=n(8168),a=n(6540),o=n(3031),i=n(4098),l=n(53),s=n(1612),c=n(5965);function u(e){let{docId:t,label:n,docsPluginId:u,...d}=e;const{activeVersion:p,activeDoc:f}=(0,i.zK)(u),{preferredVersion:h}=(0,c.g1)(u),m=(0,i.r7)(u),g=function(e,t){const n=e.flatMap((e=>e.docs)),r=n.find((e=>e.id===t));if(!r){const r=n.map((e=>e.id)).join("\n- ");throw new Error(`DocNavbarItem: couldn't find any doc with id "${t}" in version${e.length?"s":""} ${e.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${r}`)}return r}((0,c.sb)([p,h,m].filter(Boolean)),t),b=(0,s.S)(d.mobile);return a.createElement(o.A,(0,r.A)({exact:!0},d,{className:(0,l.A)(d.className,{[b]:(null==f?void 0:f.sidebar)&&f.sidebar===g.sidebar}),activeClassName:b,label:n??g.id,to:g.path}))}},7754:(e,t,n)=>{"use strict";n.d(t,{A:()=>d});var r=n(8168),a=n(6540),o=n(3031),i=n(1175),l=n(4098),s=n(5965),c=n(1312);const u=e=>e.docs.find((t=>t.id===e.mainDocId));function d(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:d,dropdownItemsBefore:p,dropdownItemsAfter:f,...h}=e;const m=(0,l.zK)(n),g=(0,l.jh)(n),b=(0,l.r7)(n),{preferredVersion:v,savePreferredVersionName:y}=(0,s.g1)(n);const w=function(){const e=g.map((e=>{const t=(null==m?void 0:m.alternateDocVersions[e.name])||u(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:()=>e===(null==m?void 0:m.activeVersion),onClick:()=>{y(e.name)}}}));return[...p,...e,...f]}(),k=m.activeVersion??v??b,E=t&&w?(0,c.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):k.label,S=t&&w?void 0:u(k).path;return w.length<=1?a.createElement(o.A,(0,r.A)({},h,{mobile:t,label:E,to:S,isActive:d?()=>!1:void 0})):a.createElement(i.A,(0,r.A)({},h,{mobile:t,label:E,to:S,items:w,isActive:d?()=>!1:void 0}))}},6467:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(8168),a=n(6540),o=n(3031),i=n(4098),l=n(5965);const s=e=>e.docs.find((t=>t.id===e.mainDocId));function c(e){let{label:t,to:n,docsPluginId:c,...u}=e;const d=(0,i.ir)(c),{preferredVersion:p}=(0,l.g1)(c),f=(0,i.r7)(c),h=d??p??f,m=t??h.label,g=n??s(h).path;return a.createElement(o.A,(0,r.A)({},u,{label:m,to:g}))}},1175:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});var r=n(8168),a=n(6540),o=n(53),i=n(5965),l=n(3031),s=n(1612);const c="dropdown__link--active";function u(e,t){return e.some((e=>function(e,t){return!!(0,i.ys)(e.to,t)||!!(0,i.Gv)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function d(e){let{items:t,position:n,className:i,...u}=e;const d=(0,a.useRef)(null),p=(0,a.useRef)(null),[f,h]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{const e=e=>{d.current&&!d.current.contains(e.target)&&h(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[d]),a.createElement("div",{ref:d,className:(0,o.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":f})},a.createElement(l.k,(0,r.A)({className:(0,o.A)("navbar__link",i)},u,{onClick:u.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),h(!f))}}),u.children??u.label),a.createElement("ul",{ref:p,className:"dropdown__menu"},t.map(((e,n)=>a.createElement(s.A,(0,r.A)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),h(!1);const t=d.current.nextElementSibling;t&&t.focus()}},activeClassName:c},e,{key:n}))))))}function p(e){let{items:t,className:n,position:c,...d}=e;const p=(0,i.BH)(),f=u(t,p),{collapsed:h,toggleCollapsed:m,setCollapsed:g}=(0,i.uW)({initialState:()=>!f});return(0,a.useEffect)((()=>{f&&g(!f)}),[p,f,g]),a.createElement("li",{className:(0,o.A)("menu__list-item",{"menu__list-item--collapsed":h})},a.createElement(l.k,(0,r.A)({role:"button",className:(0,o.A)("menu__link menu__link--sublist",n)},d,{onClick:e=>{e.preventDefault(),m()}}),d.children??d.label),a.createElement(i.Nt,{lazy:!0,as:"ul",className:"menu__list",collapsed:h},t.map(((e,t)=>a.createElement(s.A,(0,r.A)({mobile:!0,isDropdownItem:!0,onClick:d.onClick,activeClassName:"menu__link--active"},e,{key:t}))))))}const f=function(e){let{mobile:t=!1,...n}=e;const r=t?p:d;return a.createElement(r,n)}},1612:(e,t,n)=>{"use strict";n.d(t,{A:()=>b,S:()=>g});var r=n(6540),a=n(3031),o=n(1175),i=n(8168);const l=e=>{let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,i.A)({viewBox:"0 0 20 20",width:t,height:n,"aria-hidden":"true"},a),r.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))};var s=n(4586),c=n(5965);const u="iconLanguage_EbrZ";function d(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...d}=e;const{i18n:{currentLocale:p,locales:f,localeConfigs:h}}=(0,s.A)(),m=(0,c.oK)();function g(e){return h[e].label}const b=[...n,...f.map((e=>{const t=`pathname://${m.createUrl({locale:e,fullyQualified:!1})}`;return{isNavLink:!0,label:g(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===p?"dropdown__link--active":"",style:{textTransform:"capitalize"}}})),...a],v=t?"Languages":g(p);return r.createElement(o.A,(0,i.A)({},d,{href:"#",mobile:t,label:r.createElement("span",null,r.createElement(l,{className:u}),r.createElement("span",null,v)),items:b}))}var p=n(3338);function f(e){let{mobile:t}=e;return t?null:r.createElement(p.A,null)}const h={default:()=>a.A,localeDropdown:()=>d,search:()=>f,dropdown:()=>o.A,docsVersion:()=>n(6467).A,docsVersionDropdown:()=>n(7754).A,doc:()=>n(8240).A},m=e=>{const t=h[e];if(!t)throw new Error(`No NavbarItem component found for type "${e}".`);return t()};const g=e=>e?"menu__link--active":"navbar__link--active";function b(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:t?"dropdown":"default"}(t,void 0!==n.items),o=m(a);return r.createElement(o,n)}},8139:(e,t,n)=>{"use strict";n.d(t,{A:()=>l});var r=n(6540),a=n(8895),o=n(5965),i=n(6025);function l(e){let{title:t,description:n,keywords:l,image:s,children:c}=e;const u=(0,o.s$)(t),{withBaseUrl:d}=(0,i.h)(),p=s?d(s,{absolute:!0}):void 0;return r.createElement(a.A,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),l&&r.createElement("meta",{name:"keywords",content:Array.isArray(l)?l.join(","):l}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),c)}},493:(e,t,n)=>{"use strict";n.d(t,{A:()=>r});const r=n(6540).createContext(void 0)},6265:(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var r=n(8168),a=n(6540),o=n(53),i=n(2303),l=n(4785);const s={themedImage:"themedImage_TMUO","themedImage--light":"themedImage--light_4Vu1","themedImage--dark":"themedImage--dark_uzRr"},c=e=>{const t=(0,i.A)(),{isDarkTheme:n}=(0,l.A)(),{sources:c,className:u,alt:d="",...p}=e,f=t?n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.A)({key:e,src:c[e],alt:d,className:(0,o.A)(s.themedImage,s[`themedImage--${e}`],u)},p)))))}},4098:(e,t,n)=>{"use strict";n.d(t,{Gy:()=>r.Gy,HW:()=>r.HW,ht:()=>r.ht,ir:()=>r.ir,jh:()=>r.jh,r7:()=>r.r7,vT:()=>r.vT,zK:()=>r.zK});var r=n(727)},4785:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(6540),a=n(493);const o=function(){const e=(0,r.useContext)(a.A);if(null==e)throw new Error('"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.');return e}},9312:(e,t,n)=>{"use strict";n.d(t,{A:()=>s});var r=n(6540),a=n(8193);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.A.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=function(){const[e,t]=(0,r.useState)((()=>l()));return(0,r.useEffect)((()=>{function e(){t(l())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},9567:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(8193),a=n(5091);const o=e=>{if(r.A.canUseDOM){const{themeConfig:{prism:t={}}}=a.default,{additionalLanguages:r=[]}=t;window.Prism=e,r.forEach((e=>{n(8692)(`./prism-${e}`)})),delete window.Prism}}},6725:(e,t,n)=>{"use strict";var r=a(n(1258));function a(e){return e&&e.__esModule?e:{default:e}}(0,a(n(9567)).default)(r.default)},5965:(e,t,n)=>{"use strict";n.d(t,{oq:()=>Ae,Nt:()=>X,Cy:()=>_,B_:()=>oe,VQ:()=>ge,Gh:()=>ue,pM:()=>le,Tv:()=>Ue,GN:()=>ke,Wf:()=>c,tU:()=>T,Gv:()=>Qe,ys:()=>P,Eo:()=>u,QW:()=>Oe,wt:()=>E,Op:()=>S,Li:()=>x,bi:()=>Re,sb:()=>we,oK:()=>p,Mj:()=>Ce,uW:()=>q,g1:()=>ye,$Z:()=>Ne,BH:()=>Pe,$G:()=>z,Ko:()=>ce,Ww:()=>F,ZC:()=>B,Mq:()=>He,WQ:()=>Be,i3:()=>je,pN:()=>a,s$:()=>L});var r=n(4586);function a(){return(0,r.A)().siteConfig.themeConfig}const o="localStorage";function i(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{}};const c=(e,t)=>{if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t}}(e);const n=i(null==t?void 0:t.persistence);return null===n?s:{get:()=>n.getItem(e),set:t=>n.setItem(e,t),del:()=>n.removeItem(e)}};function u(e){void 0===e&&(e=o);const t=i(e);if(!t)return[];const n=[];for(let r=0;r{const{start:t,end:n}=v[e];return`(?:${t}\\s*(${y.join("|")})\\s*${n})`})).join("|");return new RegExp(`^\\s*(?:${t})\\s*$`)},k=e=>{switch(e){case"js":case"javascript":case"ts":case"typescript":return w(["js","jsBlock"]);case"jsx":case"tsx":return w(["js","jsBlock","jsx"]);case"html":return w(["js","jsBlock","html"]);case"python":case"py":return w(["python"]);default:return w()}};function E(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.match(m))||void 0===t?void 0:t[2])&&void 0!==n?n:""}function S(e){const t=null==e?void 0:e.split(" ").find((e=>e.startsWith("language-")));return null==t?void 0:t.replace(/language-/,"")}function x(e,t,n){let r=e.replace(/\n$/,"");if(t&&g.test(t)){const e=t.match(g)[1];return{highlightLines:h()(e).filter((e=>e>0)).map((e=>e-1)),code:r}}if(void 0===n)return{highlightLines:[],code:r};const a=k(n),o=r.split("\n");let i,l="";for(let c=0;cvoid 0!==e))){case"highlight-next-line":l+=`${c},`;break;case"highlight-start":i=c;break;case"highlight-end":l+=`${i}-${c-1},`}o.splice(c,1)}else c+=1}const s=h()(l);return r=o.join("\n"),{highlightLines:s,code:r}}const _="default";function T(e,t){return`docs-${e}-${t}`}var A=n(4098);const C=!!A.Gy,P=(e,t)=>{const n=e=>!e||(null==e?void 0:e.endsWith("/"))?e:`${e}/`;return n(e)===n(t)},L=e=>{const{siteConfig:t}=(0,r.A)(),{title:n,titleDelimiter:a}=t;return e&&e.trim().length?`${e.trim()} ${a} ${n}`:n};var R=n(6540);const O=["zero","one","two","few","many","other"];function N(e){return O.filter((t=>e.includes(t)))}const I={locale:"en",pluralForms:N(["one","other"]),select:e=>1===e?"one":"other"};function D(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,R.useMemo)((()=>{if(!Intl.PluralRules)return console.error("Intl.PluralRules not available!\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n "),I;try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:N(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to a default/fallback (English) Intl.PluralRules implementation.\n`),I}}),[e])}function F(){const e=D();return{selectMessage:(t,n)=>function(e,t,n){const r=e.split("|");if(1===r.length)return r[0];{r.length>n.pluralForms.length&&console.error(`For locale=${n.locale}, a maximum of ${n.pluralForms.length} plural forms are expected (${n.pluralForms}), but the message contains ${r.length} plural forms: ${e} `);const a=n.select(t),o=n.pluralForms.indexOf(a);return r[Math.min(o,r.length-1)]}}(n,t,e)}}const j="undefined"!=typeof window?R.useLayoutEffect:R.useEffect;function M(e){const t=(0,R.useRef)(e);return j((()=>{t.current=e}),[e]),(0,R.useCallback)((function(){return t.current(...arguments)}),[])}function B(e){const t=(0,R.useRef)();return j((()=>{t.current=e})),t.current}function z(e){const t=(0,d.zy)(),n=B(t),r=M(e);(0,R.useEffect)((()=>{r({location:t,previousLocation:n})}),[r,t,n])}var $=n(8193);const U="ease-in-out";function q(e){let{initialState:t}=e;const[n,r]=(0,R.useState)(null!=t&&t),a=(0,R.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:a}}const G={display:"none",overflow:"hidden",height:"0px"},H={display:"block",overflow:"visible",height:"auto"};function Q(e,t){const n=t?G:H;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function V(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const a=(0,R.useRef)(!1);(0,R.useEffect)((()=>{const e=t.current;function o(){var t,n;const a=e.scrollHeight,o=null!==(t=null==r?void 0:r.duration)&&void 0!==t?t:function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(a);return{transition:`height ${o}ms ${null!==(n=null==r?void 0:r.easing)&&void 0!==n?n:U}`,height:`${a}px`}}function i(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return Q(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=G.height,e.style.overflow=G.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function W(e){if(!$.A.canUseDOM)return e?G:H}function K(e){let{as:t="div",collapsed:n,children:r,animation:a,onCollapseTransitionEnd:o,className:i,disableSSRStyle:l}=e;const s=(0,R.useRef)(null);return V({collapsibleRef:s,collapsed:n,animation:a}),R.createElement(t,{ref:s,style:l?void 0:W(n),onTransitionEnd:e=>{"height"===e.propertyName&&(Q(s.current,n),null==o||o(n))},className:i},r)}function Y(e){let{collapsed:t,...n}=e;const[r,a]=(0,R.useState)(!t);(0,R.useLayoutEffect)((()=>{t||a(!0)}),[t]);const[o,i]=(0,R.useState)(t);return(0,R.useLayoutEffect)((()=>{r&&i(t)}),[r,t]),r?R.createElement(K,{...n,collapsed:o}):null}function X(e){let{lazy:t,...n}=e;const r=t?Y:K;return R.createElement(r,{...n})}var Z=n(2303),J=n(53);const ee="details_Q743",te="isBrowser_rWTL",ne="collapsibleContent_K5uX";function re(e){return!!e&&("SUMMARY"===e.tagName||re(e.parentElement))}function ae(e,t){return!!e&&(e===t||ae(e.parentElement,t))}const oe=e=>{let{summary:t,children:n,...r}=e;const a=(0,Z.A)(),o=(0,R.useRef)(null),{collapsed:i,setCollapsed:l}=q({initialState:!r.open}),[s,c]=(0,R.useState)(r.open);return R.createElement("details",{...r,ref:o,open:s,"data-collapsed":i,className:(0,J.A)(ee,{[te]:a},r.className),onMouseDown:e=>{re(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;re(t)&&ae(t,o.current)&&(e.preventDefault(),i?(l(!1),c(!0)):l(!0))}},t,R.createElement(X,{lazy:!1,collapsed:i,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{l(e),c(!e)}},R.createElement("div",{className:ne},n)))};const ie=(0,R.createContext)(null);function le(e){let{children:t}=e;return R.createElement(ie.Provider,{value:(0,R.useState)(null)},t)}function se(){const e=(0,R.useContext)(ie);if(null===e)throw new Error("MobileSecondaryMenuProvider was not used correctly, context value is null");return e}function ce(){const[e]=se();if(e){const t=e.component;return function(n){return R.createElement(t,{...e.props,...n})}}return()=>{}}function ue(e){let{component:t,props:n}=e;const[,r]=se(),a=(o=n,(0,R.useMemo)((()=>o),[...Object.keys(o),...Object.values(o)]));var o;return(0,R.useEffect)((()=>{r({component:t,props:a})}),[r,t,a]),(0,R.useEffect)((()=>()=>r(null)),[r]),null}const de=e=>`docs-preferred-version-${e}`,pe={save:(e,t,n)=>{c(de(e),{persistence:t}).set(n)},read:(e,t)=>c(de(e),{persistence:t}).get(),clear:(e,t)=>{c(de(e),{persistence:t}).del()}};function fe(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;const a={};return t.forEach((e=>{a[e]=function(e){const t=pe.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(pe.clear(e,n),{preferredVersionName:null})}(e)})),a}function he(){const e=(0,A.Gy)(),t=a().docs.versionPersistence,n=(0,R.useMemo)((()=>Object.keys(e)),[e]),[r,o]=(0,R.useState)((()=>function(e){const t={};return e.forEach((e=>{t[e]={preferredVersionName:null}})),t}(n)));(0,R.useEffect)((()=>{o(fe({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[r,(0,R.useMemo)((()=>({savePreferredVersion:function(e,n){pe.save(e,t,n),o((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}const me=(0,R.createContext)(null);function ge(e){let{children:t}=e;return C?R.createElement(be,null,t):R.createElement(R.Fragment,null,t)}function be(e){let{children:t}=e;const n=he();return R.createElement(me.Provider,{value:n},t)}var ve=n(7065);function ye(e){void 0===e&&(e=ve.W);const t=(0,A.ht)(e),[n,r]=function(){const e=(0,R.useContext)(me);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}(),{preferredVersionName:a}=n[e];return{preferredVersion:a?t.versions.find((e=>e.name===a)):null,savePreferredVersionName:(0,R.useCallback)((t=>{r.savePreferredVersion(e,t)}),[r,e])}}function we(e){return Array.from(new Set(e))}const ke={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button"},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}},Ee=c("docusaurus.announcement.dismiss"),Se=c("docusaurus.announcement.id"),xe=()=>"true"===Ee.get(),_e=e=>Ee.set(String(e)),Te=(0,R.createContext)(null),Ae=e=>{let{children:t}=e;const n=(()=>{const{announcementBar:e}=a(),t=(0,Z.A)(),[n,r]=(0,R.useState)((()=>!!t&&xe()));(0,R.useEffect)((()=>{r(xe())}),[]);const o=(0,R.useCallback)((()=>{_e(!0),r(!0)}),[]);return(0,R.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=Se.get();"annoucement-bar"===n&&(n="announcement-bar");const a=t!==n;Se.set(t),a&&_e(!1),!a&&xe()||r(!1)}),[e]),(0,R.useMemo)((()=>({isActive:!!e&&!n,close:o})),[e,n,o])})();return R.createElement(Te.Provider,{value:n},t)},Ce=()=>{const e=(0,R.useContext)(Te);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e};function Pe(){const{siteConfig:{baseUrl:e}}=(0,r.A)(),{pathname:t}=(0,d.zy)();return t.replace(e,"/")}var Le=n(1312);const Re=()=>(0,Le.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});function Oe(e){const t={};return Object.values(e).forEach((e=>{var n;const r=function(e){return e[0].toUpperCase()}(e.name);t[r]=null!==(n=t[r])&&void 0!==n?n:[],t[r].push(e)})),Object.entries(t).sort(((e,t)=>{let[n]=e,[r]=t;return n.localeCompare(r)})).map((e=>{let[t,n]=e;return{letter:t,tags:n.sort(((e,t)=>e.name.localeCompare(t.name)))}}))}function Ne(e){!function(e){const{block:t}=(0,d.W6)(),n=(0,R.useRef)(e);(0,R.useEffect)((()=>{n.current=e}),[e]),(0,R.useEffect)((()=>t(((e,t)=>n.current(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function Ie(e){const t=e.getBoundingClientRect();return t.top===t.bottom?Ie(e.parentNode):t}function De(e,t){let{anchorTopOffset:n}=t;var r;const a=e.find((e=>Ie(e).top>=n));if(a){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}const je=function(e){const t=(0,R.useRef)(void 0),n=Fe();(0,R.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:r,linkActiveClassName:a,minHeadingLevel:o,maxHeadingLevel:i}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(r),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const r=[];for(let a=t;a<=n;a+=1)r.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(r.join()))}({minHeadingLevel:o,maxHeadingLevel:i}),s=De(l,{anchorTopOffset:n.current}),c=e.find((e=>s&&s.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){var r;n?(t.current&&t.current!==e&&(null===(r=t.current)||void 0===r||r.classList.remove(a)),e.classList.add(a),t.current=e):e.classList.remove(a)}(e,e===c)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])};function Me(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return t.flatMap((e=>{const t=Me({toc:e.children,minHeadingLevel:n,maxHeadingLevel:r});return function(e){return e.level>=n&&e.level<=r}(e)?[{...e,children:t}]:t}))}function Be(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:r}=e;return(0,R.useMemo)((()=>Me({toc:t,minHeadingLevel:n,maxHeadingLevel:r})),[t,n,r])}function ze(){const e=(0,R.useRef)(!0);return(0,R.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}const $e=(0,R.createContext)(void 0);function Ue(e){let{children:t}=e;return R.createElement($e.Provider,{value:ze()},t)}function qe(){const e=(0,R.useContext)($e);if(null==e)throw new Error('"useScrollController" is used but no context provider was found in the React tree.');return e}const Ge=()=>$.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function He(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=qe(),r=(0,R.useRef)(Ge()),a=M(e);(0,R.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=Ge();a&&a(e,r.current),r.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function Qe(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}},2983:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},440:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=void 0;var a=n(2983);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}})},2849:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(6540),a=n(53);const o={loadingRing:"loadingRing_Zg7X","loading-ring":"loading-ring_rO2c"};function i(e){let{className:t}=e;return r.createElement("div",{className:(0,a.A)(o.loadingRing,t)},r.createElement("div",null),r.createElement("div",null),r.createElement("div",null),r.createElement("div",null))}},5891:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(8291),a=n.n(r),o=n(1088);async function i(e){{const t=await(await fetch(`${e}search-index.json?_=${o.Xi}`)).json(),n=t.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:a().Index.load(r)}})),r=t.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:n,zhDictionary:Array.from(r)}}}},3338:(e,t,n)=>{"use strict";n.d(t,{A:()=>A});var r=n(1088),a=n(6540),o=n(53),i=n(4586),l=n(8193),s=n(6347),c=n(5891),u=n(2384),d=n(6841),p=n(3810),f=n(7674);const h='',m='',g='',b='',v='',y='',w='',k={searchBar:"searchBar_DBlZ",dropdownMenu:"dropdownMenu_0bDV",suggestion:"suggestion_uMTE",cursor:"cursor_PFw8",hitTree:"hitTree_v+XL",hitIcon:"hitIcon_rLCp",hitPath:"hitPath_gCTv",noResultsIcon:"noResultsIcon_jKPf",hitFooter:"hitFooter_9rOv",hitWrapper:"hitWrapper_RTFf",hitTitle:"hitTitle_4Fan",hitAction:"hitAction_ETy-",hideAction:"hideAction_KhBz",noResults:"noResults_iBoj",searchBarContainer:"searchBarContainer_I7kZ",searchBarLoadingRing:"searchBarLoadingRing_J5Ez",searchIndexLoading:"searchIndexLoading_oVRS",searchHintContainer:"searchHintContainer_CDc6",searchHint:"searchHint_2RRg",input:"input_e95Y",hint:"hint_S1nb",suggestions:"suggestions_Gb5D",dataset:"dataset_N4X9",empty:"empty_i1dZ"};function E(e){let{document:t,type:n,page:r,metadata:a,tokens:o,isInterOfTree:i,isLastOfTree:l}=e;const s=0===n,c=1===n,u=[];i?u.push(y):l&&u.push(w);const v=u.map((e=>`${e}`)),E=`${s?h:c?m:g}`,S=[`${(0,p.C)(t.t,(0,f.g)(a,"t"),o)}`];s||S.push(`${(0,d.Z)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),o)}`);const x=`${b}`;return[...v,E,``,...S,"",x].join("")}function S(){return`${v}${r.P9.no_results}`}var x=n(2849);async function _(){const e=await Promise.all([n.e(489),n.e(5741)]).then(n.t.bind(n,489,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const T="_highlight";const A=function(e){var t;let{handleSearchBarToggle:n}=e;const{siteConfig:{baseUrl:d}}=(0,i.A)(),p=(0,s.W6)(),f=(0,s.zy)(),h=(0,a.useRef)(null),m=(0,a.useRef)("empty"),g=(0,a.useRef)(!1),[b,v]=(0,a.useState)(!1),[y,w]=(0,a.useState)(!1),A=(0,a.useCallback)((async()=>{if("empty"!==m.current)return;m.current="loading",v(!0);const[{wrappedIndexes:e,zhDictionary:t},n]=await Promise.all([(0,c.Z)(d),_()]),a=n(h.current,{hint:!1,autoselect:!0,cssClasses:{root:k.searchBar,noPrefix:!0,dropdownMenu:k.dropdownMenu,input:k.input,hint:k.hint,suggestions:k.suggestions,suggestion:k.suggestion,cursor:k.cursor,dataset:k.dataset,empty:k.empty}},[{source:(0,u.m)(e,t,r.AT),templates:{suggestion:E,empty:S,footer:e=>{let{query:t,isEmpty:n}=e;if(n)return;const o=document.createElement("a"),i=`${d}search?q=${encodeURIComponent(t)}`;o.href=i,o.textContent=r.P9.see_all_results,o.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),a.autocomplete.close(),p.push(i))}));const l=document.createElement("div");return l.className=k.hitFooter,l.appendChild(o),l}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:a},tokens:o}=t,i=n;if(r.CU&&o.length>0){const e=new URLSearchParams;for(const t of o)e.append(T,t);i+=`?${e.toString()}`}a&&(i+=a),p.push(i)}));if(m.current="done",v(!1),g.current){const e=h.current;e.value&&a.autocomplete.open(),e.focus()}}),[d,p]);(0,a.useEffect)((()=>{if(!r.CU)return;const e=l.A.canUseDOM?new URLSearchParams(f.search).getAll(T):[];0!==e.length&&setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new r.CU(t);n.unmark(),n.mark(e)}))}),[f.search]);const C=(0,a.useCallback)((()=>{g.current=!0,A(),null==n||n(!0)}),[n,A]),P=(0,a.useCallback)((()=>{null==n||n(!1)}),[n]),L=(0,a.useCallback)((()=>{A()}),[A]),R=(0,a.useCallback)((e=>{e.target.value&&w(!0)}),[]),O=!!l.A.canUseDOM&&/mac/i.test((null==(t=navigator.userAgentData)?void 0:t.platform)??navigator.platform);return(0,a.useEffect)((()=>{function e(e){var t;(O?e.metaKey:e.ctrlKey)&&"KeyK"===e.code&&(e.preventDefault(),null==(t=h.current)||t.focus())}return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[O]),a.createElement("div",{className:(0,o.A)("navbar__search",k.searchBarContainer,{[k.searchIndexLoading]:b&&y})},a.createElement("input",{placeholder:r.P9.search_placeholder,"aria-label":"Search",className:"navbar__search-input",onMouseEnter:L,onFocus:C,onBlur:P,onChange:R,ref:h}),a.createElement(x.A,{className:k.searchBarLoadingRing}),a.createElement("div",{className:k.searchHintContainer},a.createElement("kbd",{className:k.searchHint},O?"\u2318":"ctrl"),a.createElement("kbd",{className:k.searchHint},"K")))}},2384:(e,t,n)=>{"use strict";n.d(t,{m:()=>s});var r=n(8291),a=n.n(r);var o=n(1088);function i(e){return l(e).concat(l(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function l(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:a().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?a().Query.wildcard.TRAILING:a().Query.wildcard.NONE})))})))}function s(e,t,n){return function(r,l){const s=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return a()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,o.BH);if(0===s.length)return void l([]);const c=function(e,t){const n=function(e,t){const n=[];return function e(r,a){if(0===r.length)return void n.push(a);const o=r[0];if(/\p{Unified_Ideograph}/u.test(o)){const n=function(e,t){const n=[];return function e(r,a){let o=0,i=!1;for(const l of t)if(r.substr(0,l.length)===l){const t={missed:a.missed,term:a.term.concat({value:l})};r.length>l.length?e(r.substr(l.length),t):n.push(t),i=!0}else for(let t=l.length-1;t>o;t-=1){const s=l.substr(0,t);if(r.substr(0,t)===s){o=t;const l={missed:a.missed,term:a.term.concat({value:s,trailing:!0})};r.length>t?e(r.substr(t),l):n.push(l),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:a.missed+1,term:a.term}):a.term.length>0&&n.push(a))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(o,t);for(const t of n){const n=a.concat(...t);e(r.slice(1),n)}}else{const t=a.concat({value:o});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:a().Query.presence.REQUIRED,wildcard:a().Query.wildcard.LEADING|a().Query.wildcard.TRAILING})))}];for(const a of n)a[a.length-1].maybeTyping=!0;const r=[];for(const i of o.BH)if("en"===i)o.sx||r.unshift(a().stopWordFilter);else{const e=a()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let l;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);l=[];const t=[];for(const r of n){const n=e(r);l.push(n),n.length0&&t.push(n)}n.push(...t)}else l=n.slice();const s=[];for(const a of l)if(a.length>2)for(let e=a.length-1;e>=0;e-=1)s.push(a.slice(0,e).concat(a.slice(e+1)));return i(n).concat(i(s))}(s,t),u=[];e:for(const{term:t,tokens:a}of c)for(const{documents:r,index:o,type:i}of e)if(u.push(...o.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!u.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-u.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:0!==i&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:a,score:t.score}}))),u.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type>0&&t.page?e.findIndex((e=>e.document===t.page)):t.index,a=n.type>0&&n.page?e.findIndex((e=>e.document===n.page)):n.index;return-1===r&&(r=t.index),-1===a&&(a=n.index),r===a?0===t.type?-1:0===n.type?1:t.index-n.index:r-a}))}(u),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.some((e=>e.document===t.page))&&(n{"use strict";function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{Z:()=>r})},7674:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{g:()=>r})},6841:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(3103);function a(e,t,n){const o=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&o.push(a(e.substr(0,n),t)),o.push(`${(0,r.Z)(e.substr(n,i.length))}`);const l=n+i.length;l${(0,r.Z)(e)}`:(0,r.Z)(e):o.join("")}},3810:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(3103),a=n(6841);const o=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const a=r.match(o);if(!a){t.push(r);break}a.index>0&&t.push(r.substr(0,a.index)),t.push(a[0]),n+=a.index+a[0].length,r=e.substr(n)}return t}var l=n(1088);function s(e,t,n,r){void 0===r&&(r=l.rG);const a={chunkIndex:-1},o=c(e,t,n,0,0,a),i=o.slice(0,a.chunkIndex),s=o[a.chunkIndex],u=[s.html],d=o.slice(a.chunkIndex+1);let p=s.textLength,f=0,h=0,m=!1,g=!1;for(;p0){const e=i.pop();p+e.textLength<=r?(u.unshift(e.html),f+=e.textLength,p+=e.textLength):(m=!0,i.length=0)}else{if(!(d.length>0))break;{const e=d.shift();p+e.textLength<=r?(u.push(e.html),h+=e.textLength,p+=e.textLength):(g=!0,d.length=0)}}return(m||i.length>0)&&u.unshift("\u2026"),(g||d.length>0)&&u.push("\u2026"),u.join("")}function c(e,t,n,o,l,s){const u=[],[d,p]=t[o];if(dl&&u.push(...i(e.substring(l,d)).map((e=>({html:(0,r.Z)(e),textLength:e.length})))),s&&(s.chunkIndex=u.length),u.push({html:(0,a.Z)(e.substr(d,p),n,!0),textLength:p});const f=d+p;(o+=1)({html:(0,r.Z)(e),textLength:e.length}))))}return u}},1088:(e,t,n)=>{"use strict";n.d(t,{CU:()=>o,Xi:()=>i,BH:()=>r,sx:()=>a,rG:()=>s,AT:()=>l,P9:()=>c});n(8291);const r=["en"],a=!1,o=null,i="1e283c2b",l=8,s=50,c={search_placeholder:"Search",see_all_results:"See all results",no_results:"No results.",search_results_for:'Search results for "{{ keyword }}"',search_the_documentation:"Search the documentation",count_documents_found_plural:"{{ count }} documents found",count_documents_found:"{{ count }} document found",no_documents_were_found:"No documents were found"}},53:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{zR:()=>S,TM:()=>P,yJ:()=>m,sC:()=>R,AO:()=>h,Fu:()=>g});var r=n(8168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function l(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}const s=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=l(t),a=l(n);return r!==t||a!==n?e(r,a):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var c=n(1561);function u(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function p(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function f(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function m(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&s(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=m(e,t,p(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(4363),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var a=f(n);a&&a!==h&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),g=0;g{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},8291:(e,t,n)=>{var r,a;!function(){var o,i,l,s,c,u,d,p,f,h,m,g,b,v,y,w,k,E,S,x,_,T,A,C,P,L,R,O,N,I,D=function(e){var t=new D.Builder;return t.pipeline.add(D.trimmer,D.stopWordFilter,D.stemmer),t.searchPipeline.add(D.stemmer),e.call(t,t),t.build()};D.version="2.3.9",D.utils={},D.utils.warn=(o=this,function(e){o.console&&console.warn&&console.warn(e)}),D.utils.asString=function(e){return null==e?"":e.toString()},D.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var s=D.utils.clone(t)||{};s.position=[i,l],s.index=a.length,a.push(new D.Token(n.slice(i,o),s))}i=o+1}}return a},D.tokenizer.separator=/[\s\-]+/,D.Pipeline=function(){this._stack=[]},D.Pipeline.registeredFunctions=Object.create(null),D.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&D.utils.warn("Overwriting existing registered function: "+t),e.label=t,D.Pipeline.registeredFunctions[e.label]=e},D.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||D.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},D.Pipeline.load=function(e){var t=new D.Pipeline;return e.forEach((function(e){var n=D.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},D.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){D.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},D.Pipeline.prototype.after=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},D.Pipeline.prototype.before=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},D.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},D.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(oe&&(n=a),o!=e);)r=n-t,a=t+Math.floor(r/2),o=this.elements[2*a];return o==e||o>e?2*a:ol?c+=2:i==l&&(t+=n[s+1]*r[c+1],s+=2,c+=2);return t},D.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},D.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var o,i=a.str.charAt(0);i in a.node.edges?o=a.node.edges[i]:(o=new D.TokenSet,a.node.edges[i]=o),1==a.str.length&&(o.final=!0),r.push({node:o,editsRemaining:a.editsRemaining,str:a.str.slice(1)})}if(0!=a.editsRemaining){if("*"in a.node.edges)var l=a.node.edges["*"];else{l=new D.TokenSet;a.node.edges["*"]=l}if(0==a.str.length&&(l.final=!0),r.push({node:l,editsRemaining:a.editsRemaining-1,str:a.str}),a.str.length>1&&r.push({node:a.node,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)}),1==a.str.length&&(a.node.final=!0),a.str.length>=1){if("*"in a.node.edges)var s=a.node.edges["*"];else{s=new D.TokenSet;a.node.edges["*"]=s}1==a.str.length&&(s.final=!0),r.push({node:s,editsRemaining:a.editsRemaining-1,str:a.str.slice(1)})}if(a.str.length>1){var c,u=a.str.charAt(0),d=a.str.charAt(1);d in a.node.edges?c=a.node.edges[d]:(c=new D.TokenSet,a.node.edges[d]=c),1==a.str.length&&(c.final=!0),r.push({node:c,editsRemaining:a.editsRemaining-1,str:u+a.str.slice(2)})}}}return n},D.TokenSet.fromString=function(e){for(var t=new D.TokenSet,n=t,r=0,a=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},D.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},D.Index.prototype.search=function(e){return this.query((function(t){new D.QueryParser(e,t).parse()}))},D.Index.prototype.query=function(e){for(var t=new D.Query(this.fields),n=Object.create(null),r=Object.create(null),a=Object.create(null),o=Object.create(null),i=Object.create(null),l=0;l1?1:e},D.Builder.prototype.k1=function(e){this._k1=e},D.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var a=0;a=this.length)return D.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},D.QueryLexer.prototype.width=function(){return this.pos-this.start},D.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},D.QueryLexer.prototype.backup=function(){this.pos-=1},D.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=D.QueryLexer.EOS&&this.backup()},D.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(D.QueryLexer.TERM)),e.ignore(),e.more())return D.QueryLexer.lexText},D.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.EDIT_DISTANCE),D.QueryLexer.lexText},D.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.BOOST),D.QueryLexer.lexText},D.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(D.QueryLexer.TERM)},D.QueryLexer.termSeparator=D.tokenizer.separator,D.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==D.QueryLexer.EOS)return D.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return D.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if(t.match(D.QueryLexer.termSeparator))return D.QueryLexer.lexTerm}else e.escapeCharacter()}},D.QueryParser=function(e,t){this.lexer=new D.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},D.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=D.QueryParser.parseClause;e;)e=e(this);return this.query},D.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},D.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},D.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},D.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case D.QueryLexer.PRESENCE:return D.QueryParser.parsePresence;case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new D.QueryParseError(n,t.start,t.end)}},D.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=D.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=D.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new D.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new D.QueryParseError(n,t.start,t.end)}switch(r.type){case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new D.QueryParseError(n,r.start,r.end)}}},D.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var a=e.peekLexeme();if(null==a){r="expecting term, found nothing";throw new D.QueryParseError(r,t.start,t.end)}if(a.type===D.QueryLexer.TERM)return D.QueryParser.parseTerm;r="expecting term, found '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}},D.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new D.QueryParseError(r,n.start,n.end)}else e.nextClause()}},D.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}else e.nextClause()}},D.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var a=e.peekLexeme();if(null!=a)switch(a.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+a.type+"'";throw new D.QueryParseError(r,a.start,a.end)}else e.nextClause()}},void 0===(a="function"==typeof(r=function(){return D})?r.call(t,n,t,e):r)||(e.exports=a)}()},435:(e,t,n)=>{"use strict";n.r(t)},119:(e,t,n)=>{"use strict";n.r(t)},1043:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},5228:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s{function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,a,o]=t;if(r&&o){r=parseInt(r),o=parseInt(o);const e=r{var r=n(4634);e.exports=f,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=p;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",u=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],p=n[1],f=n.index;if(l+=e.slice(i,f),i=f+d.length,p)l+=p[1];else{var h=e[i],m=n[2],g=n[3],b=n[4],v=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=m&&null!=h&&h!==m,E="+"===y||"*"===y,S="?"===y||"*"===y,x=n[2]||u,_=b||v;r.push({name:g||o++,prefix:m||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:_?c(_):w?".*":"[^"+s(x)+"]+?"})}}return i{"use strict";n.r(t),n.d(t,{default:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var _,T=1;if(v){if(!(_=o(k,S,e,b))||_.index>=e.length)break;var A=_.index,C=_.index+_[0].length,P=S;for(P+=E.value.length;A>=P;)P+=(E=E.next).value.length;if(S=P-=E.value.length,E.value instanceof a)continue;for(var L=E;L!==t.tail&&(Pd.reach&&(d.reach=I);var D=E.prev;if(O&&(D=s(t,D,O),S+=O.length),c(t,D,T),E=s(t,D,new a(p,g?r.tokenize(R,g):R,y,R)),N&&s(t,E,N),T>1){var F={cause:p+","+h,reach:I};i(e,t,n,E.prev,S,F),d&&F.reach>d.reach&&(d.reach=F.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&f(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),p=Object.keys(u);return i=0,function e(t){for(var n=0;n=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),f=o.substring(l+a.length),h=[];if(s&&h.push(s),h.push(d),f){var m=[f];e(m),h.push.apply(h,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(h)),n+=h.length-1):r.content=h}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),h=p.indexOf(f);if(h>-1){++a;var m=p.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(h+f.length),v=[];m&&v.push.apply(v,i([m])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},6969:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},8722:(e,t,n)=>{const r=n(6969),a=n(8380),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(3157).resolve(t)],delete Prism.languages[e],n(3157)(t),o.add(e)}))}i.silent=!1,e.exports=i},8692:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=8692},3157:(e,t,n)=>{var r={"./":8722};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=3157},8380:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var l={},s=e[r];if(s){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,c),t(s.optional,c),t(s.modify,c)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(c),l=(l||[]).map(c);var u=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(s),h=u;a(h);){for(var m in p={},h){var g=s[m];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var v in f(b))if(v in u){p[b]=!0;break}for(var y in h=p)u[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function c(e){if(e in l)return l[e];s[e]=!0;var a,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)a=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var u in n)c(u);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},2551:(e,t,n)=>{"use strict";var r=n(6540),a=n(5228),o=n(9982);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n