= ({
+ data,
+ label = "Debug Data",
+ collapsed = true,
+}) => {
+ const [isCollapsed, setIsCollapsed] = useState(collapsed);
+
+ // Only render in development
+ if (process.env.NODE_ENV !== "development") {
+ return null;
+ }
+
+ return (
+
+
setIsCollapsed(!isCollapsed)}
+ >
+ {label}
+ {isCollapsed ? "▶" : "▼"}
+
+
+ {!isCollapsed && (
+
+
+ {JSON.stringify(data, null, 2)}
+
+
+ )}
+
+ );
+};
+
+// Hook for easy debugging
+export const useDebugLog = (value: any, label?: string) => {
+ React.useEffect(() => {
+ if (process.env.NODE_ENV === "development") {
+ console.group(`🐛 Debug: ${label || "Value"}`);
+ console.log(value);
+ console.groupEnd();
+ }
+ }, [value, label]);
+};
+
+// Component wrapper for debugging props
+export const withDebug = (
+ Component: React.ComponentType
,
+ debugLabel?: string,
+) => {
+ const WrappedComponent = React.forwardRef((props, ref) => {
+ useDebugLog(props, debugLabel || Component.displayName || Component.name);
+ return (
+
+ );
+ });
+
+ WrappedComponent.displayName = `withDebug(${Component.displayName || Component.name})`;
+ return WrappedComponent;
+};
diff --git a/src/components/icons/langgraph.tsx b/src/components/icons/langgraph.tsx
index 4bac592f..8c959111 100644
--- a/src/components/icons/langgraph.tsx
+++ b/src/components/icons/langgraph.tsx
@@ -1,4 +1,4 @@
-export function LangGraphLogoSVG({
+export function FlyoLogoSVG({
className,
width,
height,
@@ -11,16 +11,18 @@ export function LangGraphLogoSVG({
+
);
diff --git a/src/components/thread/MultimodalPreview.tsx b/src/components/thread/MultimodalPreview.tsx
index 0f55573a..329cf191 100644
--- a/src/components/thread/MultimodalPreview.tsx
+++ b/src/components/thread/MultimodalPreview.tsx
@@ -26,17 +26,17 @@ export const MultimodalPreview: React.FC = ({
block.mime_type.startsWith("image/")
) {
const url = `data:${block.mime_type};base64,${block.data}`;
- let imgClass: string = "rounded-md object-cover h-16 w-16 text-lg";
- if (size === "sm") imgClass = "rounded-md object-cover h-10 w-10 text-base";
- if (size === "lg") imgClass = "rounded-md object-cover h-24 w-24 text-xl";
+ let imgClass: string = "rounded-full object-cover w-12 h-12 max-w-12 max-h-12 text-lg";
+ if (size === "sm") imgClass = "rounded-full object-cover w-8 h-8 max-w-8 max-h-8 text-base";
+ if (size === "lg") imgClass = "rounded-full object-cover w-16 h-16 max-w-16 max-h-16 text-xl";
return (
-
+
{removable && (
{
try {
+ // Get user ID from JWT token
+ const jwtToken = getJwtToken();
+ const userId = jwtToken ? GetUserId(jwtToken) : null;
+
+ // Include userId in the submission data
+ const submissionData: any = {};
+ if (userId) {
+ submissionData.userId = userId;
+ }
+
thread.submit(
- {},
+ submissionData,
{
command: {
resume: response,
diff --git a/src/components/thread/history/index.tsx b/src/components/thread/history/index.tsx
index c2e00838..f7143244 100644
--- a/src/components/thread/history/index.tsx
+++ b/src/components/thread/history/index.tsx
@@ -92,12 +92,12 @@ export default function ThreadHistory() {
.then(setThreads)
.catch(console.error)
.finally(() => setThreadsLoading(false));
- }, []);
+ }, [getThreads, setThreads, setThreadsLoading]);
return (
<>
-
+
)}
-
- Thread History
-
+ Chat History
{threadsLoading ? (
@@ -132,7 +130,7 @@ export default function ThreadHistory() {
className="flex lg:hidden"
>
- Thread History
+ Chat History
0) ||
+ m.type === "tool"
+ ) {
+ return false;
+ }
+
+ return true;
+}
+
export function Thread() {
const [artifactContext, setArtifactContext] = useArtifactContext();
const [artifactOpen, closeArtifact] = useArtifactOpen();
const [threadId, _setThreadId] = useQueryState("threadId");
+ const [assistantId] = useQueryState("assistantId");
const [chatHistoryOpen, setChatHistoryOpen] = useQueryState(
"chatHistoryOpen",
parseAsBoolean.withDefault(false),
@@ -143,6 +167,21 @@ export function Thread() {
const messages = stream.messages;
const isLoading = stream.isLoading;
+ // Track the last threadId to reset displayMessages on thread switch
+ const lastThreadId = useRef(threadId);
+ useEffect(() => {
+ lastThreadId.current = threadId;
+ }, [threadId, messages]);
+
+ // Optionally clear input and contentBlocks when threadId changes
+ useEffect(() => {
+ setInput("");
+ setContentBlocks([]);
+ if (threadId === null) {
+ // setDisplayMessages([]); // Remove this line
+ }
+ }, [threadId, setContentBlocks]);
+
const lastError = useRef(undefined);
const setThreadId = (id: string | null) => {
@@ -201,6 +240,10 @@ export function Thread() {
return;
setFirstTokenReceived(false);
+ // Get user ID from JWT token
+ const jwtToken = getJwtToken();
+ const userId = jwtToken ? GetUserId(jwtToken) : null;
+
const newHumanMessage: Message = {
id: uuidv4(),
type: "human",
@@ -215,21 +258,61 @@ export function Thread() {
const context =
Object.keys(artifactContext).length > 0 ? artifactContext : undefined;
- stream.submit(
- { messages: [...toolMessages, newHumanMessage], context },
- {
- streamMode: ["values"],
- optimisticValues: (prev) => ({
- ...prev,
- context,
- messages: [
- ...(prev.messages ?? []),
- ...toolMessages,
- newHumanMessage,
- ],
- }),
- },
- );
+ // Include userId in the submission
+ const submissionData: any = {
+ messages: [...toolMessages, newHumanMessage],
+ context
+ };
+
+ if (userId) {
+ submissionData.userId = userId;
+ }
+
+ // Add metadata to ensure thread is properly saved and searchable
+ const submitOptions: any = {
+ streamMode: ["updates"],
+ optimisticValues: (prev) => ({
+ ...prev,
+ context,
+ messages: [
+ ...(prev.messages ?? []),
+ ...toolMessages,
+ newHumanMessage,
+ ],
+ }),
+ };
+
+ // Add metadata for thread creation/updating
+ if (!threadId) {
+ // For new threads, add metadata to ensure they're searchable
+ submitOptions.metadata = {
+ assistant_id: assistantId,
+ graph_id: assistantId,
+ created_at: new Date().toISOString(),
+ user_id: userId || 'anonymous',
+ };
+ }
+
+ console.log("Submitting with options:", submitOptions);
+
+ // Store thread information locally for fallback
+ const messageText = typeof newHumanMessage.content === 'string'
+ ? newHumanMessage.content
+ : Array.isArray(newHumanMessage.content)
+ ? newHumanMessage.content.find(c => c.type === 'text')?.text || ''
+ : '';
+
+ if (messageText && assistantId) {
+ // Update local storage with thread info
+ if (threadId) {
+ updateThreadWithMessage(threadId, messageText, assistantId, userId || undefined);
+ } else {
+ // For new threads, we'll update after getting the thread ID from onThreadId callback
+ console.log("Will update local storage after thread ID is assigned");
+ }
+ }
+
+ stream.submit(submissionData, submitOptions);
setInput("");
setContentBlocks([]);
@@ -243,7 +326,7 @@ export function Thread() {
setFirstTokenReceived(false);
stream.submit(undefined, {
checkpoint: parentCheckpoint,
- streamMode: ["values"],
+ streamMode: ["updates"],
});
};
@@ -322,8 +405,12 @@ export function Thread() {
)}
-
)}
@@ -357,20 +444,14 @@ export function Thread() {
damping: 30,
}}
>
-
-
- Agent Chat
-
@@ -397,25 +483,32 @@ export function Thread() {
content={
<>
{messages
- .filter((m) => !m.id?.startsWith(DO_NOT_RENDER_ID_PREFIX))
+ .filter(isDisplayableMessage)
.map((message, index) =>
- message.type === "human" ? (
-
- ) : (
-
- ),
+ message.type === "human"
+ ? (console.log(
+ `$$$$$$$$$ 0 Assist : ${JSON.stringify(messages)}`,
+ ),
+ (
+
+ ))
+ : (console.log(
+ `$$$$$$$$$ 1 Assist : ${JSON.stringify(messages)}`,
+ ),
+ (
+
+ )),
)}
- {/* Special rendering case where there are no AI/tool messages, but there is an interrupt.
- We need to render it outside of the messages list, since there are no messages to render */}
+ {/* Special rendering case where there are no AI/tool messages, but there is an interrupt. */}
{hasNoAIOrToolMessages && !!stream.interrupt && (
)}
- {isLoading && !firstTokenReceived && (
-
+ {isLoading && }
+ {/* Always render the interrupt widget at the end if present */}
+ {stream.interrupt && (
+
)}
>
}
@@ -433,10 +530,10 @@ export function Thread() {
{!chatStarted && (
-
-
- Agent Chat
-
+
)}
@@ -481,7 +578,7 @@ export function Thread() {
/>
-
*/}
- Upload PDF or Image
+ Upload PDF, Image, or Video
),
+ img: ({ className, ...props }: { className?: string }) => (
+
+ ),
code: ({
className,
children,
diff --git a/src/components/thread/messages/ai.tsx b/src/components/thread/messages/ai.tsx
index af5eac2c..ac053fbe 100644
--- a/src/components/thread/messages/ai.tsx
+++ b/src/components/thread/messages/ai.tsx
@@ -8,7 +8,7 @@ import { LoadExternalComponent } from "@langchain/langgraph-sdk/react-ui";
import { cn } from "@/lib/utils";
import { ToolCalls, ToolResult } from "./tool-calls";
import { MessageContentComplex } from "@langchain/core/messages";
-import { Fragment } from "react/jsx-runtime";
+import { Fragment } from "react";
import { isAgentInboxInterruptSchema } from "@/lib/agent-inbox-interrupt";
import { ThreadView } from "../agent-inbox";
import { useQueryState, parseAsBoolean } from "nuqs";
@@ -24,10 +24,17 @@ function CustomComponent({
}) {
const artifact = useArtifact();
const { values } = useStreamContext();
+ console.log(
+ `12345CustomValues: ${JSON.stringify(values.ui)}}`,
+ );
const customComponents = values.ui?.filter(
(ui) => ui.metadata?.message_id === message.id,
);
+ console.log(
+ `12345CustomComponent: ${JSON.stringify(customComponents)} \n message: ${JSON.stringify(message)}`,
+ );
+
if (!customComponents?.length) return null;
return (
@@ -78,17 +85,21 @@ function Interrupt({
isLastMessage,
hasNoAIOrToolMessages,
}: InterruptProps) {
+ console.log(
+ `12345Interrupt: ${JSON.stringify(interruptValue)} \n isLastMessage: ${isLastMessage} \n hasNoAIOrToolMessages: ${hasNoAIOrToolMessages}`,
+ );
return (
<>
{isAgentInboxInterruptSchema(interruptValue) &&
(isLastMessage || hasNoAIOrToolMessages) && (
)}
- {interruptValue &&
+ {/* Todo: @Shubham removed this to avoid duplicate rendering of Interrupt */}
+ {/* {interruptValue &&
!isAgentInboxInterruptSchema(interruptValue) &&
isLastMessage ? (
- ) : null}
+ ) : null} */}
>
);
}
@@ -110,8 +121,12 @@ export function AssistantMessage({
);
const thread = useStreamContext();
+
+ console.log(`$$$$$$$$$ Message : ${JSON.stringify(message)}`);
+
const isLastMessage =
- thread.messages[thread.messages.length - 1].id === message?.id;
+ thread.messages.length > 0 &&
+ thread.messages[thread.messages.length - 1]?.id === message?.id;
const hasNoAIOrToolMessages = !thread.messages.find(
(m) => m.type === "ai" || m.type === "tool",
);
@@ -180,11 +195,6 @@ export function AssistantMessage({
thread={thread}
/>
)}
-
-
-
-
-
+
+ {/* Loader Bubble */}
+
+
+ {/*
Agent is thinking... */}
+
+
+
+
+
+
+ {/*
+ Agent is thinking...
+ */}
);
diff --git a/src/components/thread/messages/generic-interrupt.tsx b/src/components/thread/messages/generic-interrupt.tsx
index 7eb83ebd..ab48c2ae 100644
--- a/src/components/thread/messages/generic-interrupt.tsx
+++ b/src/components/thread/messages/generic-interrupt.tsx
@@ -1,6 +1,117 @@
import { useState } from "react";
import { motion, AnimatePresence } from "framer-motion";
import { ChevronDown, ChevronUp } from "lucide-react";
+import { componentMap, ComponentType } from "@/components/widgets";
+import { DebugPanel } from "@/components/debug/DebugPanel";
+import {
+ Sheet,
+ SheetContent,
+ SheetHeader,
+ SheetTitle,
+} from "@/components/ui/sheet";
+
+// Debug utility function
+const debugLog = (message: string, data?: any) => {
+ if (process.env.NODE_ENV === 'development') {
+ console.group(`🐛 GenericInterrupt Debug: ${message}`);
+ if (data !== undefined) {
+ console.log(data);
+ }
+ console.trace();
+ console.groupEnd();
+ }
+};
+
+interface DynamicRendererProps {
+ interruptType: string;
+ interrupt: Record
;
+}
+
+// Wrapper component for TravelerDetailsWidget with bottom sheet
+const TravelerDetailsBottomSheet: React.FC<{ apiData: any; args: any }> = ({ apiData, args }) => {
+ const [isOpen, setIsOpen] = useState(true);
+
+ // Get the actual ReviewWidget component
+ const ReviewWidget = componentMap.TravelerDetailsWidget;
+
+ // Function to close the bottom sheet
+ const handleClose = () => {
+ setIsOpen(false);
+ };
+
+ return (
+
+
+
+
+ Review Your Booking
+
+
+
+
+
+
+
+
+ );
+};
+
+console.log("DynamicRendererProps interface defined - checking props:", { interruptType: "will be logged in component", interrupt: "will be logged in component" });
+
+const DynamicRenderer: React.FC = ({
+ interruptType,
+ interrupt,
+}) => {
+ console.log("🔄 STREAMING DATA - DynamicRenderer received:", {
+ interruptType,
+ interrupt,
+ timestamp: new Date().toISOString()
+ });
+ debugLog("DynamicRenderer called", { interruptType, interrupt });
+
+ // Additional debugging for widget type checking
+ console.log("🔍 Widget type check:", {
+ interruptType,
+ widgetType: interrupt.value?.widget?.type,
+ availableWidgets: Object.keys(componentMap),
+ isWidgetTypeInMap: interrupt.value?.widget?.type in componentMap
+ });
+
+ // Check if the type exists in componentMap
+ if (
+ interruptType === "widget" &&
+ interrupt.value.widget.type in componentMap
+ ) {
+ const Component =
+ componentMap[interrupt.value.widget.type as ComponentType];
+ debugLog("Widget component found", {
+ componentType: interrupt.value.widget.type,
+ args: interrupt.value.widget.args
+ });
+
+ // For TravelerDetailsWidget, render in bottom sheet
+ if (interrupt.value.widget.type === "TravelerDetailsWidget") {
+ return ;
+ }
+
+ // For other widgets, pass the args object directly to the component
+ return ;
+ }
+
+ debugLog("No widget found", { interruptType, interrupt });
+ console.log(
+ `No widget found for interruptType: ${interruptType} and interrupt: ${JSON.stringify(interrupt)}`,
+ );
+ return null;
+};
function isComplexValue(value: any): boolean {
return Array.isArray(value) || (typeof value === "object" && value !== null);
@@ -11,12 +122,43 @@ export function GenericInterruptView({
}: {
interrupt: Record | Record[];
}) {
+ console.log("🔄 STREAMING DATA - GenericInterruptView received:", {
+ interrupt,
+ isArray: Array.isArray(interrupt),
+ timestamp: new Date().toISOString()
+ });
+ debugLog("GenericInterruptView rendered", { interrupt });
+
const [isExpanded, setIsExpanded] = useState(false);
const contentStr = JSON.stringify(interrupt, null, 2);
const contentLines = contentStr.split("\n");
const shouldTruncate = contentLines.length > 4 || contentStr.length > 500;
+ // Extract interrupt object and type
+ const interruptObj = Array.isArray(interrupt) ? interrupt[0] : interrupt;
+ const interruptType = interruptObj.type || interruptObj.value?.type;
+
+ debugLog("Interrupt processing", {
+ interruptObj,
+ interruptType,
+ shouldTruncate,
+ contentLines: contentLines.length
+ });
+
+ // Try to render dynamic widget first
+ const dynamicWidget = interruptType ? (
+
+ ) : null;
+
+ // If dynamic widget exists, render it instead of generic view
+ if (dynamicWidget) {
+ return dynamicWidget;
+ }
+
// Function to truncate long string values
const truncateValue = (value: any): any => {
if (typeof value === "string" && value.length > 100) {
@@ -55,12 +197,17 @@ export function GenericInterruptView({
const displayEntries = processEntries();
return (
-
-
-
-
Human Interrupt
+ <>
+
+
+ >
);
}
diff --git a/src/components/thread/messages/human.tsx b/src/components/thread/messages/human.tsx
index f5168468..f795bcc8 100644
--- a/src/components/thread/messages/human.tsx
+++ b/src/components/thread/messages/human.tsx
@@ -7,6 +7,7 @@ import { Textarea } from "@/components/ui/textarea";
import { BranchSwitcher, CommandBar } from "./shared";
import { MultimodalPreview } from "@/components/thread/MultimodalPreview";
import { isBase64ContentBlock } from "@/lib/multimodal-utils";
+import { getJwtToken, GetUserId } from "@/services/authService";
function EditableContent({
value,
@@ -52,12 +53,23 @@ export function HumanMessage({
const handleSubmitEdit = () => {
setIsEditing(false);
+ // Get user ID from JWT token
+ const jwtToken = getJwtToken();
+ const userId = jwtToken ? GetUserId(jwtToken) : null;
+
const newMessage: Message = { type: "human", content: value };
+
+ // Include userId in the submission
+ const submissionData: any = { messages: [newMessage] };
+ if (userId) {
+ submissionData.userId = userId;
+ }
+
thread.submit(
- { messages: [newMessage] },
+ submissionData,
{
checkpoint: parentCheckpoint,
- streamMode: ["values"],
+ streamMode: ["updates"],
optimisticValues: (prev) => {
const values = meta?.firstSeenState?.values;
if (!values) return prev;
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx
index 333e432b..8cfedbe5 100644
--- a/src/components/ui/button.tsx
+++ b/src/components/ui/button.tsx
@@ -1,25 +1,26 @@
-import * as React from "react";
-import { Slot } from "@radix-ui/react-slot";
-import { cva, type VariantProps } from "class-variance-authority";
+import * as React from "react"
+import { Slot } from "@radix-ui/react-slot"
+import { cva, type VariantProps } from "class-variance-authority"
-import { cn } from "@/lib/utils";
+import { cn } from "@/lib/utils"
const buttonVariants = cva(
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
{
variants: {
variant: {
default:
"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
destructive:
- "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
+ "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
outline:
- "border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
secondary:
"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
- ghost: "hover:bg-accent hover:text-accent-foreground",
+ ghost:
+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
link: "text-primary underline-offset-4 hover:underline",
- brand: "bg-[#2F6868] hover:bg-[#2F6868]/90 border-[#2F6868] text-white",
+ brand: "bg-blue-600 text-white shadow-xs hover:bg-blue-700 focus-visible:ring-blue-600/20 dark:focus-visible:ring-blue-600/40",
},
size: {
default: "h-9 px-4 py-2 has-[>svg]:px-3",
@@ -32,13 +33,14 @@ const buttonVariants = cva(
variant: "default",
size: "default",
},
- },
-);
+ }
+)
-type ButtonProps = React.ComponentProps<"button"> &
- VariantProps
& {
- asChild?: boolean;
- };
+export interface ButtonProps
+ extends React.ComponentProps<"button">,
+ VariantProps {
+ asChild?: boolean
+}
function Button({
className,
@@ -47,7 +49,7 @@ function Button({
asChild = false,
...props
}: ButtonProps) {
- const Comp = asChild ? Slot : "button";
+ const Comp = asChild ? Slot : "button"
return (
- );
+ )
}
-export { Button, buttonVariants, type ButtonProps };
+export { Button, buttonVariants }
diff --git a/src/components/ui/calendar.tsx b/src/components/ui/calendar.tsx
new file mode 100644
index 00000000..5f62ae94
--- /dev/null
+++ b/src/components/ui/calendar.tsx
@@ -0,0 +1,211 @@
+import * as React from "react"
+import {
+ ChevronDownIcon,
+ ChevronLeftIcon,
+ ChevronRightIcon,
+} from "lucide-react"
+import { DayButton, DayPicker, getDefaultClassNames } from "react-day-picker"
+
+import { cn } from "@/lib/utils"
+import { Button, buttonVariants } from "@/components/ui/button"
+
+function Calendar({
+ className,
+ classNames,
+ showOutsideDays = true,
+ captionLayout = "label",
+ buttonVariant = "ghost",
+ formatters,
+ components,
+ ...props
+}: React.ComponentProps & {
+ buttonVariant?: React.ComponentProps["variant"]
+}) {
+ const defaultClassNames = getDefaultClassNames()
+
+ return (
+ svg]:rotate-180`,
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
+ className
+ )}
+ captionLayout={captionLayout}
+ formatters={{
+ formatMonthDropdown: (date) =>
+ date.toLocaleString("default", { month: "short" }),
+ ...formatters,
+ }}
+ classNames={{
+ root: cn("w-fit", defaultClassNames.root),
+ months: cn(
+ "flex gap-4 flex-col md:flex-row relative",
+ defaultClassNames.months
+ ),
+ month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
+ nav: cn(
+ "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",
+ defaultClassNames.nav
+ ),
+ button_previous: cn(
+ buttonVariants({ variant: buttonVariant }),
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
+ defaultClassNames.button_previous
+ ),
+ button_next: cn(
+ buttonVariants({ variant: buttonVariant }),
+ "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
+ defaultClassNames.button_next
+ ),
+ month_caption: cn(
+ "flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",
+ defaultClassNames.month_caption
+ ),
+ dropdowns: cn(
+ "w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",
+ defaultClassNames.dropdowns
+ ),
+ dropdown_root: cn(
+ "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",
+ defaultClassNames.dropdown_root
+ ),
+ dropdown: cn(
+ "absolute bg-popover inset-0 opacity-0",
+ defaultClassNames.dropdown
+ ),
+ caption_label: cn(
+ "select-none font-medium",
+ captionLayout === "label"
+ ? "text-sm"
+ : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5",
+ defaultClassNames.caption_label
+ ),
+ table: "w-full border-collapse",
+ weekdays: cn("flex", defaultClassNames.weekdays),
+ weekday: cn(
+ "text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none",
+ defaultClassNames.weekday
+ ),
+ week: cn("flex w-full mt-2", defaultClassNames.week),
+ week_number_header: cn(
+ "select-none w-(--cell-size)",
+ defaultClassNames.week_number_header
+ ),
+ week_number: cn(
+ "text-[0.8rem] select-none text-muted-foreground",
+ defaultClassNames.week_number
+ ),
+ day: cn(
+ "relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",
+ defaultClassNames.day
+ ),
+ range_start: cn(
+ "rounded-l-md bg-accent",
+ defaultClassNames.range_start
+ ),
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
+ range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
+ today: cn(
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
+ defaultClassNames.today
+ ),
+ outside: cn(
+ "text-muted-foreground aria-selected:text-muted-foreground",
+ defaultClassNames.outside
+ ),
+ disabled: cn(
+ "text-muted-foreground opacity-50",
+ defaultClassNames.disabled
+ ),
+ hidden: cn("invisible", defaultClassNames.hidden),
+ ...classNames,
+ }}
+ components={{
+ Root: ({ className, rootRef, ...props }) => {
+ return (
+
+ )
+ },
+ Chevron: ({ className, orientation, ...props }) => {
+ if (orientation === "left") {
+ return (
+
+ )
+ }
+
+ if (orientation === "right") {
+ return (
+
+ )
+ }
+
+ return (
+
+ )
+ },
+ DayButton: CalendarDayButton,
+ WeekNumber: ({ children, ...props }) => {
+ return (
+
+
+ {children}
+
+
+ )
+ },
+ ...components,
+ }}
+ {...props}
+ />
+ )
+}
+
+function CalendarDayButton({
+ className,
+ day,
+ modifiers,
+ ...props
+}: React.ComponentProps) {
+ const defaultClassNames = getDefaultClassNames()
+
+ const ref = React.useRef(null)
+ React.useEffect(() => {
+ if (modifiers.focused) ref.current?.focus()
+ }, [modifiers.focused])
+
+ return (
+ span]:text-xs [&>span]:opacity-70",
+ defaultClassNames.day,
+ className
+ )}
+ {...props}
+ />
+ )
+}
+
+export { Calendar, CalendarDayButton }
diff --git a/src/components/ui/command.tsx b/src/components/ui/command.tsx
new file mode 100644
index 00000000..e5bd56bb
--- /dev/null
+++ b/src/components/ui/command.tsx
@@ -0,0 +1,182 @@
+import * as React from "react"
+import { Command as CommandPrimitive } from "cmdk"
+import { SearchIcon } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+import {
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogHeader,
+ DialogTitle,
+} from "@/components/ui/dialog"
+
+function Command({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function CommandDialog({
+ title = "Command Palette",
+ description = "Search for a command to run...",
+ children,
+ className,
+ showCloseButton = true,
+ ...props
+}: React.ComponentProps & {
+ title?: string
+ description?: string
+ className?: string
+ showCloseButton?: boolean
+}) {
+ return (
+
+
+ {title}
+ {description}
+
+
+
+ {children}
+
+
+
+ )
+}
+
+function CommandInput({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+
+
+
+ )
+}
+
+function CommandList({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function CommandEmpty({
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function CommandGroup({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function CommandSeparator({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function CommandItem({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function CommandShortcut({
+ className,
+ ...props
+}: React.ComponentProps<"span">) {
+ return (
+
+ )
+}
+
+export {
+ Command,
+ CommandDialog,
+ CommandInput,
+ CommandList,
+ CommandEmpty,
+ CommandGroup,
+ CommandItem,
+ CommandShortcut,
+ CommandSeparator,
+}
diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx
new file mode 100644
index 00000000..d9ccec91
--- /dev/null
+++ b/src/components/ui/dialog.tsx
@@ -0,0 +1,143 @@
+"use client"
+
+import * as React from "react"
+import * as DialogPrimitive from "@radix-ui/react-dialog"
+import { XIcon } from "lucide-react"
+
+import { cn } from "@/lib/utils"
+
+function Dialog({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function DialogTrigger({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function DialogPortal({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function DialogClose({
+ ...props
+}: React.ComponentProps) {
+ return
+}
+
+function DialogOverlay({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function DialogContent({
+ className,
+ children,
+ showCloseButton = true,
+ ...props
+}: React.ComponentProps & {
+ showCloseButton?: boolean
+}) {
+ return (
+
+
+
+ {children}
+ {showCloseButton && (
+
+
+ Close
+
+ )}
+
+
+ )
+}
+
+function DialogHeader({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function DialogFooter({ className, ...props }: React.ComponentProps<"div">) {
+ return (
+
+ )
+}
+
+function DialogTitle({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+function DialogDescription({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ )
+}
+
+export {
+ Dialog,
+ DialogClose,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogOverlay,
+ DialogPortal,
+ DialogTitle,
+ DialogTrigger,
+}
diff --git a/src/components/ui/popover.tsx b/src/components/ui/popover.tsx
new file mode 100644
index 00000000..a0ec48be
--- /dev/null
+++ b/src/components/ui/popover.tsx
@@ -0,0 +1,31 @@
+"use client"
+
+import * as React from "react"
+import * as PopoverPrimitive from "@radix-ui/react-popover"
+
+import { cn } from "@/lib/utils"
+
+const Popover = PopoverPrimitive.Root
+
+const PopoverTrigger = PopoverPrimitive.Trigger
+
+const PopoverContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
+
+
+
+))
+PopoverContent.displayName = PopoverPrimitive.Content.displayName
+
+export { Popover, PopoverTrigger, PopoverContent }
diff --git a/src/components/widgets/README.md b/src/components/widgets/README.md
new file mode 100644
index 00000000..67827d80
--- /dev/null
+++ b/src/components/widgets/README.md
@@ -0,0 +1,214 @@
+# Review Widget
+
+The ReviewWidget component has been updated to handle streamed API response data and conditionally display components based on available data.
+
+## Features
+
+### 1. API Data Integration
+- Accepts streamed response data via the `apiData` prop
+- Automatically transforms API data to component format
+- Pre-fills form fields when data is available
+- Falls back to mock data when no API data is provided
+
+### 2. Bottom Sheet Mode
+- Automatically renders as a bottom sheet when triggered via interrupt system
+- Includes close button (X) in the top-right corner
+- Optimized layout for mobile and desktop
+- Sticky action buttons at the bottom of the sheet
+
+### 3. Conditional Component Display
+- **Seat Allocation**: Only shown when `seatAllocation` prop is provided
+- **Travel Documents**: Only shown when `travelerRequirements` is not null in API data
+- If components are not needed, they are hidden entirely
+- Payment calculation adjusts automatically based on available components
+
+### 3. Data Transformation
+The component includes utility functions to transform API data:
+- `transformApiDataToFlightDetails()` - Converts flight offer data to display format
+- `transformApiDataToPassengerDetails()` - Extracts user details for form pre-filling
+- `transformApiDataToContactInfo()` - Formats contact information
+- `transformApiDataToTravelDocument()` - Processes document information
+- `transformApiDataToPaymentSummary()` - Calculates payment breakdown
+- `transformApiDataToSavedPassengers()` - Formats saved traveller list
+
+## Usage
+
+### Via Interrupt System (Automatic Bottom Sheet)
+When triggered through the interrupt system, the widget automatically renders as a bottom sheet:
+
+```typescript
+// Server-side interrupt
+const result = interrupt({
+ value: {
+ type: "widget",
+ widget: {
+ type: "TravelerDetailsWidget",
+ args: {
+ flightItinerary: { /* ... */ },
+ bookingRequirements: { /* ... */ }
+ }
+ }
+ }
+});
+```
+
+The widget will automatically:
+- Render as a bottom sheet overlay
+- Include a close button (X)
+- Pre-fill data from the API response
+- Show sticky action buttons
+
+### Manual Usage (Regular Mode)
+```tsx
+import ReviewWidget from './review.widget';
+
+const apiResponse = {
+ value: {
+ type: "widget",
+ widget: {
+ type: "TravelerDetailsWidget",
+ args: {
+ flightItinerary: { /* ... */ },
+ bookingRequirements: { /* ... */ }
+ }
+ }
+ }
+};
+
+ console.log('Booking data:', data)}
+/>
+```
+
+### Without API Data (Mock Data)
+```tsx
+ console.log('Booking data:', data)}
+/>
+```
+
+### With Custom Props (Legacy Support)
+```tsx
+ console.log('Booking data:', data)}
+/>
+```
+
+## API Data Structure
+
+The component expects the following API response structure:
+
+```typescript
+interface ApiResponse {
+ value: {
+ type: string;
+ widget: {
+ type: string;
+ args: {
+ flightItinerary: {
+ userContext: {
+ userDetails: {
+ travellerId: number;
+ firstName: string;
+ lastName: string;
+ dateOfBirth: string;
+ gender: string;
+ nationality: string;
+ email: string;
+ phone: Array<{
+ countryCode: string;
+ number: string;
+ }>;
+ documents: Array<{
+ documentType: string;
+ documentNumber: string;
+ nationality: string;
+ expiryDate: string;
+ issuingCountry: string;
+ }>;
+ };
+ savedTravellers: Array* same structure as userDetails */>;
+ };
+ selectionContext: {
+ selectedFlightOffers: Array<{
+ flightOfferId: string;
+ currency: string;
+ totalAmount: number;
+ duration: string;
+ departure: {
+ date: string;
+ airportIata: string;
+ cityCode: string;
+ };
+ arrival: {
+ date: string;
+ airportIata: string;
+ cityCode: string;
+ };
+ segments: Array<{
+ airlineIata: string;
+ flightNumber: string;
+ airlineName: string;
+ }>;
+ }>;
+ };
+ };
+ bookingRequirements: {
+ emailAddressRequired: boolean;
+ mobilePhoneNumberRequired: boolean;
+ // ... other requirements
+ };
+ };
+ };
+ };
+}
+```
+
+## Conditional Component Display
+
+### Travel Documents Section
+The travel documents section is conditionally displayed based on the API data:
+
+```typescript
+// Hide travel documents when travelerRequirements is null
+{
+ "bookingRequirements": {
+ "travelerRequirements": null // This will hide the travel documents section
+ }
+}
+
+// Show travel documents when travelerRequirements has a value
+{
+ "bookingRequirements": {
+ "travelerRequirements": {
+ "documentRequired": true,
+ "passportRequired": true
+ } // This will show the travel documents section
+ }
+}
+```
+
+### Seat Allocation Section
+The seat allocation section is only shown when `seatAllocation` prop is provided.
+
+## Key Changes
+
+1. **Bottom Sheet Integration**: Automatically renders as a bottom sheet when triggered via interrupt system
+2. **Conditional Component Display**: Travel documents and seat sections are conditionally rendered
+3. **Currency Support**: Proper handling of INR (₹) and USD ($) currencies
+4. **Data Pre-filling**: Form fields are automatically populated from API data
+5. **Saved Passengers**: Dynamic list from API data with fallback to mock data
+6. **Payment Calculation**: Adjusts based on available components
+7. **Responsive Design**: Optimized layouts for both bottom sheet and regular modes
+8. **Backward Compatibility**: Still supports legacy prop-based usage
+
+## Demo
+
+See `review-widget-demo.tsx` for examples of how to use the component with and without API data.
diff --git a/src/components/widgets/flightOptions.widget.tsx b/src/components/widgets/flightOptions.widget.tsx
new file mode 100644
index 00000000..c793614d
--- /dev/null
+++ b/src/components/widgets/flightOptions.widget.tsx
@@ -0,0 +1,1549 @@
+"use client";
+
+import React, { useState, useRef, useEffect } from "react";
+import { Button } from "@/components/common/ui/button";
+import {
+ Clock,
+ Star,
+ DollarSign,
+ Zap,
+ ChevronLeft,
+ ChevronRight,
+ Loader2,
+ Luggage,
+ Briefcase,
+ X,
+} from "lucide-react";
+import { cn } from "@/lib/utils";
+import { useStreamContext } from "@/providers/Stream";
+import { submitInterruptResponse } from "./util";
+import {
+ Sheet,
+ SheetContent,
+ SheetHeader,
+ SheetTitle,
+} from "@/components/ui/sheet";
+import { Skeleton } from "@/components/ui/skeleton";
+import Image from "next/image";
+
+interface FlightOption {
+ flightOfferId: string;
+ totalEmission: number;
+ totalEmissionUnit: string;
+ currency: string;
+ totalAmount: number;
+ duration: string;
+ departure: FlightEndpoint;
+ arrival: FlightEndpoint;
+ segments: FlightSegment[];
+ offerRules: FlightOfferRules;
+ rankingScore: number;
+ pros: string[];
+ cons: string[];
+ tags: string[];
+}
+
+interface FlightEndpoint {
+ date: string;
+ airportIata: string;
+ airportName: string;
+ cityCode: string;
+ countryCode: string;
+}
+
+interface FlightSegment {
+ id: string;
+ airlineIata: string;
+ flightNumber: string;
+ aircraftType: string;
+ airlineName: string;
+ duration: string;
+ departure: FlightEndpoint;
+ arrival: FlightEndpoint;
+}
+
+interface FlightOfferRules {
+ isRefundable: boolean
+}
+
+interface BaggageInfo {
+ checkedBaggage?: {
+ included: boolean;
+ weight?: string;
+ pieces?: number;
+ };
+ carryOnBaggage?: {
+ included: boolean;
+ weight?: string;
+ dimensions?: string;
+ };
+}
+
+const getCurrencySymbol = (currencyCode: string): string => {
+ const currencyMap: Record = {
+ 'USD': '$',
+ 'EUR': '€',
+ 'GBP': '£',
+ 'INR': '₹',
+ 'JPY': '¥',
+ 'CAD': 'C$',
+ 'AUD': 'A$',
+ 'CHF': 'CHF',
+ 'CNY': '¥',
+ 'SEK': 'kr',
+ 'NOK': 'kr',
+ 'MXN': '$',
+ 'NZD': 'NZ$',
+ 'SGD': 'S$',
+ 'HKD': 'HK$',
+ 'ZAR': 'R',
+ 'THB': '฿',
+ 'AED': 'د.إ',
+ 'SAR': '﷼',
+ 'KRW': '₩',
+ 'BRL': 'R$',
+ 'RUB': '₽',
+ 'TRY': '₺',
+ 'PLN': 'zł',
+ 'CZK': 'Kč',
+ 'HUF': 'Ft',
+ 'ILS': '₪',
+ 'CLP': '$',
+ 'COP': '$',
+ 'PEN': 'S/',
+ 'ARS': '$',
+ 'UYU': '$U',
+ 'BOB': 'Bs',
+ 'PYG': '₲',
+ 'VES': 'Bs.S',
+ 'DKK': 'kr',
+ 'ISK': 'kr',
+ 'RON': 'lei',
+ 'BGN': 'лв',
+ 'HRK': 'kn',
+ 'RSD': 'дин',
+ 'UAH': '₴',
+ 'BYN': 'Br',
+ 'MDL': 'L',
+ 'GEL': '₾',
+ 'AMD': '֏',
+ 'AZN': '₼',
+ 'KZT': '₸',
+ 'UZS': 'soʻm',
+ 'KGS': 'с',
+ 'TJS': 'ЅМ',
+ 'TMT': 'T',
+ 'MNT': '₮',
+ 'LAK': '₭',
+ 'KHR': '៛',
+ 'MMK': 'K',
+ 'VND': '₫',
+ 'IDR': 'Rp',
+ 'MYR': 'RM',
+ 'PHP': '₱',
+ 'TWD': 'NT$',
+ 'PKR': '₨',
+ 'LKR': '₨',
+ 'BDT': '৳',
+ 'NPR': '₨',
+ 'BTN': 'Nu.',
+ 'MVR': '.ރ',
+ 'AFN': '؋',
+ 'IRR': '﷼',
+ 'IQD': 'ع.د',
+ 'JOD': 'د.ا',
+ 'KWD': 'د.ك',
+ 'LBP': 'ل.ل',
+ 'OMR': 'ر.ع.',
+ 'QAR': 'ر.ق',
+ 'SYP': '£',
+ 'YER': '﷼',
+ 'BHD': '.د.ب',
+ 'EGP': '£',
+ 'LYD': 'ل.د',
+ 'MAD': 'د.م.',
+ 'TND': 'د.ت',
+ 'DZD': 'د.ج',
+ 'AOA': 'Kz',
+ 'BWP': 'P',
+ 'BIF': 'Fr',
+ 'XOF': 'Fr',
+ 'XAF': 'Fr',
+ 'KMF': 'Fr',
+ 'DJF': 'Fr',
+ 'ERN': 'Nfk',
+ 'ETB': 'Br',
+ 'GMD': 'D',
+ 'GHS': '₵',
+ 'GNF': 'Fr',
+ 'KES': 'Sh',
+ 'LSL': 'L',
+ 'LRD': '$',
+ 'MGA': 'Ar',
+ 'MWK': 'MK',
+ 'MUR': '₨',
+ 'MZN': 'MT',
+ 'NAD': '$',
+ 'NGN': '₦',
+ 'RWF': 'Fr',
+ 'SCR': '₨',
+ 'SLL': 'Le',
+ 'SOS': 'Sh',
+ 'STN': 'Db',
+ 'SZL': 'L',
+ 'TZS': 'Sh',
+ 'UGX': 'Sh',
+ 'XPF': 'Fr',
+ 'ZMW': 'ZK',
+ 'ZWL': '$',
+ };
+
+ return currencyMap[currencyCode.toUpperCase()] || currencyCode;
+};
+
+// Helper function to get airline logo path
+const getAirlineLogoPath = (airlineIata: string): string => {
+ if (!airlineIata) return '';
+ // The airlines folder is in the root directory, so we need to go up from src
+ return `/airlines/${airlineIata.toUpperCase()}.png`;
+};
+
+// Airline Logo Component
+const AirlineLogo = ({
+ airlineIata,
+ airlineName,
+ size = 'md'
+}: {
+ airlineIata: string;
+ airlineName: string;
+ size?: 'sm' | 'md' | 'lg'
+}) => {
+ const logoPath = getAirlineLogoPath(airlineIata);
+
+ // Size configurations
+ const sizeConfig = {
+ sm: { container: 'w-5 h-5', fallback: 'w-3 h-3' },
+ md: { container: 'w-6 h-6', fallback: 'w-4 h-4' },
+ lg: { container: 'w-8 h-8', fallback: 'w-6 h-6' }
+ };
+
+ const { container, fallback } = sizeConfig[size];
+
+ return (
+
+ {logoPath ? (
+
{
+ // Fallback to gray circle if image fails to load
+ const target = e.target as HTMLImageElement;
+ target.style.display = 'none';
+ const parent = target.parentElement;
+ if (parent) {
+ parent.innerHTML = `
`;
+ }
+ }}
+ />
+ ) : (
+
+ )}
+
+ );
+};
+
+const getBadgeConfigs = (tags: string[]) => {
+ // Priority order: recommended > cheapest > fastest
+ // Only show one badge per flight
+ if (tags.includes("recommended")) {
+ return [{
+ emoji: "⭐",
+ text: "Best",
+ color: "bg-white text-gray-800 border-gray-200",
+ }];
+ }
+ if (tags.includes("cheapest")) {
+ return [{
+ emoji: "💰",
+ text: "Cheapest",
+ color: "bg-white text-gray-800 border-gray-200",
+ }];
+ }
+ if (tags.includes("fastest")) {
+ return [{
+ emoji: "⚡",
+ text: "Fastest",
+ color: "bg-white text-gray-800 border-gray-200",
+ }];
+ }
+
+ return [];
+};
+
+// Generate mock baggage data for demonstration
+const getMockBaggageInfo = (flight: FlightOption): BaggageInfo => {
+ // Generate different baggage scenarios based on flight characteristics
+ const isLowCost = flight.tags?.includes('cheapest');
+ const isPremium = flight.tags?.includes('recommended');
+
+ // Mock scenarios
+ const scenarios = [
+ // Scenario 1: Full service airline
+ {
+ checkedBaggage: { included: true, weight: "23kg", pieces: 1 },
+ carryOnBaggage: { included: true, weight: "7kg", dimensions: "55x40x20cm" }
+ },
+ // Scenario 2: Low cost carrier
+ {
+ checkedBaggage: { included: false },
+ carryOnBaggage: { included: true, weight: "7kg", dimensions: "55x40x20cm" }
+ },
+ // Scenario 3: Premium service
+ {
+ checkedBaggage: { included: true, weight: "32kg", pieces: 2 },
+ carryOnBaggage: { included: true, weight: "10kg", dimensions: "55x40x20cm" }
+ },
+ // Scenario 4: Basic service
+ {
+ checkedBaggage: { included: true, weight: "20kg", pieces: 1 },
+ carryOnBaggage: { included: true, weight: "7kg", dimensions: "55x40x20cm" }
+ }
+ ];
+
+ // Select scenario based on flight type
+ if (isPremium) {
+ return scenarios[2]; // Premium service
+ } else if (isLowCost) {
+ return scenarios[1]; // Low cost carrier
+ } else {
+ // Randomly select between full service and basic service
+ return Math.random() > 0.5 ? scenarios[0] : scenarios[3];
+ }
+};
+
+// Baggage Display Component
+const BaggageDisplay = ({ flight }: { flight: FlightOption }) => {
+ const baggageInfo = getMockBaggageInfo(flight);
+
+ return (
+
+ {/* Checked Baggage */}
+
+
+
+
Check-in
+ {baggageInfo.checkedBaggage?.included ? (
+
+ {baggageInfo.checkedBaggage.weight}
+ {baggageInfo.checkedBaggage.pieces && baggageInfo.checkedBaggage.pieces > 1
+ ? ` (${baggageInfo.checkedBaggage.pieces} pcs)`
+ : ''}
+
+ ) : (
+
+
+
+ )}
+
+
+
+ {/* Divider */}
+
+
+ {/* Carry-on Baggage */}
+
+
+
+
Carry-on
+ {baggageInfo.carryOnBaggage?.included ? (
+
+ {baggageInfo.carryOnBaggage.weight}
+
+ ) : (
+
+
+
+ )}
+
+
+
+ );
+};
+
+const FlightCard = ({
+ flight,
+ onSelect,
+ isLoading,
+}: {
+ flight: FlightOption;
+ onSelect: (flightOfferId: string) => void;
+ isLoading?: boolean;
+}) => {
+ const badgeConfigs = flight.tags && flight.tags.length > 0 ? getBadgeConfigs(flight.tags) : [];
+
+ // Generate personalized flight highlights
+ const getFlightHighlights = (flight: FlightOption) => {
+ const highlights = [];
+
+ // Add tag-based highlights
+ if (flight.tags?.includes('recommended')) {
+ highlights.push("Your usual flight, travelled 12 times");
+ }
+ if (flight.tags?.includes('cheapest')) {
+ highlights.push("Cheapest option with short layover");
+ }
+ if (flight.tags?.includes('fastest')) {
+ highlights.push("Fastest route to your destination");
+ }
+
+ // Add additional contextual highlights
+ if (flight.segments.length === 1) {
+ highlights.push("Direct flight - no hassle with connections");
+ } else if (flight.segments.length === 2) {
+ highlights.push("Single layover - good balance of time and price");
+ }
+
+ // Add cancellation policy information
+ if (flight.offerRules?.isRefundable) {
+ highlights.push("Flexible booking with free cancellation");
+ } else {
+ highlights.push("Non-refundable - lock in this great price");
+ }
+
+ // Return max 3 highlights
+ return highlights.slice(0, 3);
+ };
+
+ //Todo: @Khalid, this is very critical and hacky, please verify the actual flight timings with what we are showing.
+ const formatTime = (isoString: string) => {
+ return new Date(isoString).toLocaleTimeString("en-US", {
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ });
+ };
+
+ // Format duration from ISO duration string
+ const formatDuration = (duration: string) => {
+ const match = duration.match(/PT(\d+)H(\d+)?M?/);
+ if (match) {
+ const hours = match[1];
+ const minutes = match[2] || "0";
+ return `${hours}h ${minutes}m`;
+ }
+ return duration;
+ };
+
+ // Helper function to truncate airline name to 10 characters
+ const truncateAirlineName = (name: string) => {
+ if (name.length > 10) {
+ return name.substring(0, 10) + "...";
+ }
+ return name;
+ };
+
+ // Get airline IATA code from segments
+ const getAirlineIataFromFlightOption = (flight: FlightOption) => {
+ if (flight.segments && flight.segments.length > 0) {
+ return flight.segments[0].airlineIata || "";
+ }
+ return "";
+ };
+
+ // Get airline name from segments (truncated to 10 characters)
+ const getAirlineNameFromFlightOption = (flight: FlightOption) => {
+ if (flight.segments && flight.segments.length > 0) {
+ const airlineName = flight.segments[0].airlineName || flight.segments[0].airlineIata || "Unknown";
+ return truncateAirlineName(airlineName);
+ }
+ return "Unknown";
+ };
+
+
+
+ // Get flight number from segments
+ const getFlightNumberFromFlightOption = (flight: FlightOption) => {
+ if (flight.segments && flight.segments.length > 0) {
+ return flight.segments
+ .map(segment => segment.flightNumber)
+ .join(", ") || "Unknown";
+ }
+ return "Unknown";
+ };
+
+
+
+ const departureInfo = flight.departure;
+ const arrivalInfo = flight.arrival;
+ const duration = flight.duration
+ ? formatDuration(flight.duration)
+ : "Unknown";
+ const price = flight.totalAmount || 0;
+ const currency = flight.currency || "USD";
+ const currencySymbol = getCurrencySymbol(currency);
+
+ return (
+
+ {/* Content Area */}
+
+ {/* Top Row: Badges on left, Flight Info on right */}
+
+ {/* Badges */}
+
+ {badgeConfigs.length > 0 && badgeConfigs.map((badgeConfig, index) => (
+
+ {badgeConfig.emoji}
+ {badgeConfig.text}
+
+ ))}
+
+
+ {/* Airline and Flight Number - Top Right */}
+
+
+ {/* Airline Logo */}
+
+
+ {getAirlineNameFromFlightOption(flight)}
+
+
+ {/* Flight numbers - always show comma-separated */}
+
+ {getFlightNumberFromFlightOption(flight)}
+
+
+
+
+ {/* Flight Route */}
+
+
+
+ {formatTime(departureInfo.date)}
+
+
{departureInfo.airportIata}
+
+
+
+
+
+ {duration}
+
+
+ {/* Stop dots based on number of stops */}
+ {flight.segments.length === 2 && (
+ // One stop - light orange dot
+
+ )}
+ {flight.segments.length === 3 && (
+ // Two stops - light red dots
+ <>
+
+
+ >
+ )}
+ {flight.segments.length > 3 && (
+ // More than two stops - multiple light red dots
+ <>
+
+
+
+ >
+ )}
+ {/* Non-stop flights don't show any dots */}
+
+
+ {flight.segments.length == 1
+ ? "Non-stop"
+ : `${flight.segments.length - 1} stop${flight.segments.length - 1 > 1 ? "s" : ""}`}
+
+
+
+
+
+ {formatTime(arrivalInfo.date)}
+
+
{arrivalInfo.airportIata}
+
+
+
+ {/* Baggage Information */}
+
+
+ {/* Flight Highlights with Moving Gradient Border */}
+ {(() => {
+ const highlights = getFlightHighlights(flight);
+ return highlights.length > 0 && (
+
+
+ {/* Inner content with white background */}
+
+
+ {highlights.map((highlight, index) => (
+
+ •
+ {highlight}
+
+ ))}
+
+
+
+
+ {/* Add the CSS animation styles */}
+
+
+ );
+ })()}
+
+
+ {/* Minimal spacer for button alignment */}
+
+
+ {/* Select Button with Price - Pinned to bottom */}
+
onSelect(flight.flightOfferId)}
+ disabled={isLoading}
+ className="w-full bg-white border border-gray-300 py-3 text-gray-900 transition-colors duration-200 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 mt-1"
+ >
+
+ {isLoading ? "Selecting..." : "Select Flight"}
+ {currencySymbol}{price.toLocaleString()}
+
+
+
+ );
+};
+
+// Loading/Empty Flight Card Component
+const EmptyFlightCard = ({ isLoading = true }: { isLoading?: boolean }) => {
+ return (
+
+ {isLoading ? (
+ <>
+ {/* Content Area - Flexible */}
+
+ {/* Loading Badge */}
+
+
+
+
+ {/* Loading Airline and Flight Number */}
+
+
+
+
+
+
+ {/* Loading Flight Route */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* Loading Cancellation Info */}
+
+
+
+
+
+ {/* Loading Button - Pinned to bottom */}
+
+ >
+ ) : (
+
+
+
Searching for flights...
+
This may take a few moments
+
+ )}
+
+ );
+};
+
+// Responsive Carousel Component
+const ResponsiveCarousel = ({
+ flights,
+ onSelect,
+ isLoading,
+}: {
+ flights: FlightOption[];
+ onSelect: (flightOfferId: string) => void;
+ isLoading: boolean;
+}) => {
+ const carouselRef = useRef(null);
+ const [currentIndex, setCurrentIndex] = useState(0);
+ const [canScrollLeft, setCanScrollLeft] = useState(false);
+ const [canScrollRight, setCanScrollRight] = useState(true);
+
+ // Get cards per view based on screen size - more conservative to prevent overflow
+ const getCardsPerView = () => {
+ if (typeof window === 'undefined') return 3;
+ const width = window.innerWidth;
+ if (width >= 1200) return 3; // Large desktop: 3 full cards
+ if (width >= 1024) return 2.8; // Desktop: 2 full + partial third
+ if (width >= 768) return 2; // Tablet: 2 full cards
+ if (width >= 640) return 1.8; // Small tablet: 1 full + partial second
+ if (width >= 480) return 1.3; // Large phone: 1 full + partial second
+ if (width >= 360) return 1.1; // Phone: 1 full + small glimpse of second
+ return 1; // Very small phone: 1 card only
+ };
+
+ const [cardsPerView, setCardsPerView] = useState(getCardsPerView());
+
+ useEffect(() => {
+ const handleResize = () => {
+ setCardsPerView(getCardsPerView());
+ };
+
+ window.addEventListener('resize', handleResize);
+ return () => window.removeEventListener('resize', handleResize);
+ }, []);
+
+ const updateScrollButtons = () => {
+ if (!carouselRef.current) return;
+
+ const { scrollLeft, scrollWidth, clientWidth } = carouselRef.current;
+ setCanScrollLeft(scrollLeft > 0);
+ setCanScrollRight(scrollLeft < scrollWidth - clientWidth - 1);
+ };
+
+ useEffect(() => {
+ updateScrollButtons();
+ }, [flights, cardsPerView]);
+
+ const scrollToIndex = (index: number) => {
+ if (!carouselRef.current) return;
+
+ const cardWidth = carouselRef.current.clientWidth / cardsPerView;
+ const scrollPosition = index * cardWidth;
+
+ carouselRef.current.scrollTo({
+ left: scrollPosition,
+ behavior: 'smooth'
+ });
+
+ setCurrentIndex(index);
+ };
+
+ const scrollLeft = () => {
+ const newIndex = Math.max(0, currentIndex - 1);
+ scrollToIndex(newIndex);
+ };
+
+ const scrollRight = () => {
+ const maxIndex = Math.max(0, flights.length - Math.floor(cardsPerView));
+ const newIndex = Math.min(maxIndex, currentIndex + 1);
+ scrollToIndex(newIndex);
+ };
+
+ const shouldShowNavigation = flights.length > Math.floor(cardsPerView);
+
+ // If no flights, show empty state with horizontal scroll on mobile
+ if (flights.length === 0) {
+ return (
+
+
+ {[...Array(3)].map((_, index) => (
+
+
+
+ ))}
+
+
+ );
+ }
+
+ return (
+
+ {/* Navigation Buttons - Only show on larger screens and positioned inside container */}
+ {shouldShowNavigation && cardsPerView >= 2 && (
+ <>
+
+
+
+
+
+
+
+ >
+ )}
+
+ {/* Carousel Container */}
+
= 2 ? '16px' : '12px', // Smaller gap on mobile
+ paddingLeft: shouldShowNavigation && cardsPerView >= 2 ? '40px' : '0px', // Space for nav buttons
+ paddingRight: shouldShowNavigation && cardsPerView >= 2 ? '40px' : '0px',
+ }}
+ onScroll={updateScrollButtons}
+ >
+ {flights.map((flight, index) => {
+ // Calculate card width more conservatively to prevent overflow
+ const gapSize = cardsPerView >= 2 ? 16 : 12;
+ const totalGaps = (cardsPerView - 1) * gapSize;
+ const availableWidth = 100; // percentage
+ const cardWidth = (availableWidth / cardsPerView) - (totalGaps / cardsPerView);
+
+ return (
+
+
+
+ );
+ })}
+
+
+ );
+};
+
+// Direct Flight Display Component - Shows exactly 3 distinct flights
+const DirectFlightDisplay = ({
+ flights,
+ onSelect,
+ isLoading,
+}: {
+ flights: FlightOption[];
+ onSelect: (flightOfferId: string) => void;
+ isLoading: boolean;
+}) => {
+ // Helper function to get flights sorted by different criteria
+ const getSortedFlights = (flights: FlightOption[], sortBy: 'price' | 'duration' | 'ranking') => {
+ const flightsCopy = [...flights];
+
+ switch (sortBy) {
+ case 'price':
+ return flightsCopy.sort((a, b) => (a.totalAmount || 0) - (b.totalAmount || 0));
+ case 'duration':
+ return flightsCopy.sort((a, b) => {
+ const getDurationMinutes = (duration: string) => {
+ const match = duration.match(/PT(\d+)H(\d+)?M?/);
+ if (match) {
+ const hours = parseInt(match[1]) || 0;
+ const minutes = parseInt(match[2]) || 0;
+ return hours * 60 + minutes;
+ }
+ return 0;
+ };
+ return getDurationMinutes(a.duration || '') - getDurationMinutes(b.duration || '');
+ });
+ case 'ranking':
+ return flightsCopy.sort((a, b) => (b.rankingScore || 0) - (a.rankingScore || 0));
+ default:
+ return flightsCopy;
+ }
+ };
+
+ // Get the three distinct flights to display
+ const getThreeDistinctFlights = () => {
+ if (flights.length === 0) return [];
+
+ const selectedFlights: FlightOption[] = [];
+ const usedFlightIds = new Set();
+
+ // 1. First priority: Best flight (highest ranking or recommended)
+ const recommendedFlight = flights.find(flight => flight.tags?.includes('recommended'));
+ const bestFlight = recommendedFlight || getSortedFlights(flights, 'ranking')[0];
+
+ if (bestFlight) {
+ // Ensure this flight has the "recommended" tag for display
+ const flightWithBestTag = {
+ ...bestFlight,
+ tags: [...(bestFlight.tags || []), 'recommended'].filter((tag, index, arr) => arr.indexOf(tag) === index)
+ };
+ selectedFlights.push(flightWithBestTag);
+ usedFlightIds.add(bestFlight.flightOfferId);
+ }
+
+ // 2. Second priority: Cheapest flight (not already selected)
+ const cheapestFlights = getSortedFlights(flights, 'price');
+ const cheapestFlight = cheapestFlights.find(flight => !usedFlightIds.has(flight.flightOfferId));
+
+ if (cheapestFlight) {
+ // Ensure this flight has the "cheapest" tag for display
+ const flightWithCheapestTag = {
+ ...cheapestFlight,
+ tags: [...(cheapestFlight.tags || []), 'cheapest'].filter((tag, index, arr) => arr.indexOf(tag) === index)
+ };
+ selectedFlights.push(flightWithCheapestTag);
+ usedFlightIds.add(cheapestFlight.flightOfferId);
+ }
+
+ // 3. Third priority: Fastest flight (not already selected)
+ const fastestFlights = getSortedFlights(flights, 'duration');
+ const fastestFlight = fastestFlights.find(flight => !usedFlightIds.has(flight.flightOfferId));
+
+ if (fastestFlight) {
+ // Ensure this flight has the "fastest" tag for display
+ const flightWithFastestTag = {
+ ...fastestFlight,
+ tags: [...(fastestFlight.tags || []), 'fastest'].filter((tag, index, arr) => arr.indexOf(tag) === index)
+ };
+ selectedFlights.push(flightWithFastestTag);
+ usedFlightIds.add(fastestFlight.flightOfferId);
+ }
+
+ // If we still don't have 3 flights, add more from the remaining flights
+ if (selectedFlights.length < 3) {
+ const remainingFlights = flights.filter(flight => !usedFlightIds.has(flight.flightOfferId));
+ const additionalFlights = remainingFlights.slice(0, 3 - selectedFlights.length);
+ selectedFlights.push(...additionalFlights);
+ }
+
+ return selectedFlights;
+ };
+
+ const flightsToShow = getThreeDistinctFlights();
+
+ console.log("DirectFlightDisplay - Flights to show:", flightsToShow.length);
+
+ // Always use ResponsiveCarousel for consistent display
+ return (
+
+ );
+};
+
+// Flight List Item Component for Bottom Sheet
+const FlightListItem = ({
+ flight,
+ onSelect,
+ isLoading,
+}: {
+ flight: FlightOption;
+ onSelect: (flightOfferId: string) => void;
+ isLoading?: boolean;
+}) => {
+ const formatTime = (isoString: string) => {
+ return new Date(isoString).toLocaleTimeString("en-US", {
+ hour: "2-digit",
+ minute: "2-digit",
+ hour12: false,
+ });
+ };
+
+ const formatDuration = (duration: string) => {
+ const match = duration.match(/PT(\d+)H(\d+)?M?/);
+ if (match) {
+ const hours = match[1];
+ const minutes = match[2] || "0";
+ return `${hours}h ${minutes}m`;
+ }
+ return duration;
+ };
+
+ const getAirlineInfo = (flight: FlightOption) => {
+ if (flight.segments && flight.segments.length > 0) {
+ const airlineName = flight.segments[0].airlineName || flight.segments[0].airlineIata || "Unknown";
+ const airlineIata = flight.segments[0].airlineIata || "";
+ // Truncate airline name to 10 characters
+ const airline = airlineName.length > 10 ? airlineName.substring(0, 10) + "..." : airlineName;
+
+ // If multiple flights, show individual flight numbers
+ if (flight.segments.length > 1) {
+ const flightNumbers = flight.segments.map(s => s.flightNumber).join(", ");
+ return {
+ airline,
+ airlineIata,
+ flightNumber: flightNumbers,
+ isMultiFlight: true
+ };
+ } else {
+ return {
+ airline,
+ airlineIata,
+ flightNumber: flight.segments[0].flightNumber,
+ isMultiFlight: false
+ };
+ }
+ }
+ return { airline: "Unknown", airlineIata: "", flightNumber: "Unknown", isMultiFlight: false };
+ };
+
+ const departureInfo = flight.departure;
+ const arrivalInfo = flight.arrival;
+ const duration = flight.duration ? formatDuration(flight.duration) : "Unknown";
+ const price = flight.totalAmount || 0;
+ const currency = flight.currency || "USD";
+ const currencySymbol = getCurrencySymbol(currency);
+ const { airline, airlineIata, flightNumber } = getAirlineInfo(flight);
+
+ return (
+ onSelect(flight.flightOfferId)}
+ >
+ {/* Mobile Layout */}
+
+ {/* Main Flight Row */}
+
+ {/* Left: Airline Info */}
+
+ {/* Airline Logo */}
+
+
+ {/* Airline Details */}
+
+
+ {airline.length > 12 ? airline.substring(0, 12) + '...' : airline}
+
+
+ {flightNumber}
+
+
+
+
+ {/* Center: Times and Duration */}
+
+ {/* Departure */}
+
+
+ {formatTime(departureInfo.date)}
+
+
+
+ {/* Duration & Stops */}
+
+
+ {duration}
+
+
+ {flight.segments.length === 1
+ ? "Non-stop"
+ : `${flight.segments.length - 1} stop${flight.segments.length - 1 > 1 ? "s" : ""}`}
+
+
+
+ {/* Arrival */}
+
+
+ {formatTime(arrivalInfo.date)}
+
+
+
+
+ {/* Right: Price */}
+
+
+ {currencySymbol}{price.toLocaleString()}
+
+
+
+
+
+
+
+ {/* Desktop Layout */}
+
+ {/* Left: Airline Info */}
+
+
+ {/* Airline Logo */}
+
+
{airline}
+
+
+ {flightNumber}
+
+
+
+ {/* Center-Left: Departure Time */}
+
+
+ {formatTime(departureInfo.date)}
+
+
{departureInfo.airportIata}
+
+
+ {/* Center: Duration & Stops */}
+
+
+ {duration}
+
+
+
+ {flight.segments.length > 1 && (
+
+ )}
+
+
+ {flight.segments.length === 1
+ ? "Non-stop"
+ : `${flight.segments.length - 1} stop${flight.segments.length - 1 > 1 ? "s" : ""}`}
+
+
+
+ {/* Center-Right: Arrival Time */}
+
+
+ {formatTime(arrivalInfo.date)}
+
+
{arrivalInfo.airportIata}
+
+
+ {/* Right: Price */}
+
+
+ {currencySymbol}{price.toLocaleString()}
+
+ {flight.offerRules?.isRefundable && (
+
Free Cancellation
+ )}
+
+
+
+ );
+};
+
+// Tab Component
+const FlightTabs = ({
+ flights,
+ onSelect,
+ isLoading,
+}: {
+ flights: FlightOption[];
+ onSelect: (flightOfferId: string) => void;
+ isLoading: boolean;
+}) => {
+ const [activeTab, setActiveTab] = useState<'recommended' | 'cheapest' | 'fastest'>('recommended');
+
+ // Organize flights by tags
+ const recommendedFlights = flights.filter(flight => flight.tags?.includes('recommended'));
+ const cheapestFlights = flights.filter(flight => flight.tags?.includes('cheapest'));
+ const fastestFlights = flights.filter(flight => flight.tags?.includes('fastest'));
+
+ // Debug logging
+ console.log("FlightTabs - Total flights:", flights.length);
+ console.log("FlightTabs - Recommended flights:", recommendedFlights.length);
+ console.log("FlightTabs - Cheapest flights:", cheapestFlights.length);
+ console.log("FlightTabs - Fastest flights:", fastestFlights.length);
+
+ // Fallback: If no flights have the expected tags, distribute them across tabs
+ let fallbackRecommended = recommendedFlights;
+ let fallbackCheapest = cheapestFlights;
+ let fallbackFastest = fastestFlights;
+
+ if (recommendedFlights.length === 0 && cheapestFlights.length === 0 && fastestFlights.length === 0 && flights.length > 0) {
+ console.log("No flights with expected tags found, using fallback distribution");
+ // Distribute flights across tabs as fallback
+ const flightsPerTab = Math.ceil(flights.length / 3);
+ fallbackRecommended = flights.slice(0, flightsPerTab);
+ fallbackCheapest = flights.slice(flightsPerTab, flightsPerTab * 2);
+ fallbackFastest = flights.slice(flightsPerTab * 2);
+ }
+
+ const tabs = [
+ {
+ id: 'recommended' as const,
+ label: 'Recommended',
+ icon: Star,
+ flights: fallbackRecommended,
+ color: 'text-blue-600 border-blue-600',
+ bgColor: 'bg-blue-50',
+ },
+ {
+ id: 'cheapest' as const,
+ label: 'Cheapest',
+ icon: DollarSign,
+ flights: fallbackCheapest,
+ color: 'text-green-600 border-green-600',
+ bgColor: 'bg-green-50',
+ },
+ {
+ id: 'fastest' as const,
+ label: 'Fastest',
+ icon: Zap,
+ flights: fallbackFastest,
+ color: 'text-orange-600 border-orange-600',
+ bgColor: 'bg-orange-50',
+ },
+ ];
+
+ const activeTabData = tabs.find(tab => tab.id === activeTab);
+
+ return (
+
+ {/* Tab Headers */}
+
+ {tabs.map((tab) => {
+ const Icon = tab.icon;
+ const isActive = activeTab === tab.id;
+
+ return (
+ setActiveTab(tab.id)}
+ className={cn(
+ "flex-1 flex items-center justify-center gap-2 py-3 px-4 text-sm font-medium border-b-2 transition-colors duration-200",
+ isActive
+ ? `${tab.color} ${tab.bgColor}`
+ : "text-gray-500 border-transparent hover:text-gray-700 hover:bg-gray-50"
+ )}
+ >
+
+ {tab.label}
+
+ {tab.flights.length}
+
+
+ );
+ })}
+
+
+ {/* Tab Content */}
+
+ {activeTabData && (
+ <>
+ {activeTabData.flights.length > 0 ? (
+
+ ) : (
+
+
+ {[...Array(3)].map((_, index) => (
+
+
+
+ ))}
+
+
+ )}
+ >
+ )}
+
+
+ );
+};
+
+const FlightOptionsWidget = (args: Record) => {
+ console.log("FlightOptionsWidget args:", args);
+ console.log("flightOffers:", args.flightOffers);
+
+ const thread = useStreamContext();
+ const [selectedFlight, setSelectedFlight] = useState(null);
+ const [isLoading, setIsLoading] = useState(false);
+ const [showAllFlights, setShowAllFlights] = useState(false);
+ const [bottomSheetFilter, setBottomSheetFilter] = useState<'cheapest' | 'fastest' | 'recommended'>('cheapest');
+
+ const allFlightTuples = args.flightOffers || [];
+
+ // Debug: Log flight tags
+ if (allFlightTuples.length > 0) {
+ console.log("Sample flight tags:", allFlightTuples[0]?.tags);
+ console.log("All flight tags:", allFlightTuples.map((f: any) => ({ id: f.flightOfferId, tags: f.tags })));
+ }
+
+ const handleSelectFlight = async (flightOfferId: string) => {
+ setSelectedFlight(flightOfferId);
+ setIsLoading(true);
+
+ const responseData = {
+ selectedFlightId: flightOfferId,
+ };
+
+ try {
+ await submitInterruptResponse(thread, "response", responseData);
+ } catch (error) {
+ // Optional: already handled inside the utility
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ const handleShowAllFlights = () => {
+ setShowAllFlights(true);
+ };
+
+ // Sort flights based on the selected filter
+ const getSortedFlights = (flights: FlightOption[], sortBy: 'cheapest' | 'fastest' | 'recommended') => {
+ const flightsCopy = [...flights];
+
+ switch (sortBy) {
+ case 'cheapest':
+ return flightsCopy.sort((a, b) => (a.totalAmount || 0) - (b.totalAmount || 0));
+ case 'fastest':
+ // Sort by duration (convert ISO duration to minutes for comparison)
+ return flightsCopy.sort((a, b) => {
+ const getDurationMinutes = (duration: string) => {
+ const match = duration.match(/PT(\d+)H(\d+)?M?/);
+ if (match) {
+ const hours = parseInt(match[1]) || 0;
+ const minutes = parseInt(match[2]) || 0;
+ return hours * 60 + minutes;
+ }
+ return 0;
+ };
+ return getDurationMinutes(a.duration || '') - getDurationMinutes(b.duration || '');
+ });
+ case 'recommended':
+ // Sort by ranking score (higher is better)
+ return flightsCopy.sort((a, b) => (b.rankingScore || 0) - (a.rankingScore || 0));
+ default:
+ return flightsCopy;
+ }
+ };
+
+ const sortedFlights = getSortedFlights(allFlightTuples, bottomSheetFilter);
+
+ // Check if we have any flights with the mandatory tags
+ const hasRecommended = allFlightTuples.some((flight: any) => flight.tags?.includes('recommended'));
+ const hasCheapest = allFlightTuples.some((flight: any) => flight.tags?.includes('cheapest'));
+ const hasFastest = allFlightTuples.some((flight: any) => flight.tags?.includes('fastest'));
+
+ // Show loading state if no mandatory tags are present (unless no flights at all)
+ const shouldShowLoading = allFlightTuples.length > 0 && (!hasRecommended || !hasCheapest || !hasFastest);
+
+ return (
+ <>
+
+
+
+ Available Flights
+
+
Choose from the best options
+
+
+ {/* Direct Flight Display - Only 3 Tagged Flights */}
+
+ {allFlightTuples.length > 0 ? (
+
+ ) : (
+ // Show loading state when no flights are available
+
+
+ {[...Array(3)].map((_, index) => (
+
+
+
+ ))}
+
+
+ )}
+
+
+ {/* Show All Flights Button */}
+ {allFlightTuples.length > 6 && (
+
+
+ Show all flights ({allFlightTuples.length} total)
+
+
+ )}
+
+ {/* Selection Feedback */}
+ {selectedFlight && (
+
+
+ Flight{" "}
+ {allFlightTuples.find((f: any) => f.flightOfferId === selectedFlight)
+ ?.segments?.[0]?.flightNumber || "Unknown"}{" "}
+ selected!
+
+
+ )}
+
+
+ {/* Bottom Sheet Modal for All Flights */}
+
+
+
+
+ All Available Flights ({allFlightTuples.length} flights)
+
+
+
+ {/* Filter Tabs */}
+
+
+ {[
+ { id: 'cheapest' as const, label: 'Cheapest', icon: DollarSign },
+ { id: 'fastest' as const, label: 'Fastest', icon: Zap },
+ { id: 'recommended' as const, label: 'Recommended', icon: Star },
+ ].map((tab) => {
+ const Icon = tab.icon;
+ const isActive = bottomSheetFilter === tab.id;
+
+ return (
+ setBottomSheetFilter(tab.id)}
+ className={cn(
+ "flex-1 flex items-center justify-center gap-2 py-3 px-4 text-sm font-medium border-b-2 transition-colors duration-200",
+ isActive
+ ? "text-blue-600 border-blue-600 bg-blue-50"
+ : "text-gray-500 border-transparent hover:text-gray-700 hover:bg-gray-50"
+ )}
+ >
+
+ {tab.label}
+
+ );
+ })}
+
+
+
+ {/* Flight List */}
+
+
+ {sortedFlights.map((flight: any, index: number) => (
+
+ ))}
+
+
+
+
+ >
+ );
+};
+
+export default FlightOptionsWidget;
diff --git a/src/components/widgets/flightStatus.wdiget.tsx b/src/components/widgets/flightStatus.wdiget.tsx
new file mode 100644
index 00000000..a5d44355
--- /dev/null
+++ b/src/components/widgets/flightStatus.wdiget.tsx
@@ -0,0 +1,238 @@
+'use client';
+
+import React from 'react';
+import Image from 'next/image';
+import { cn } from '@/lib/utils';
+
+interface FlightStatusData {
+ departureCode: string;
+ departureCity: string;
+ departureCountryCode: string;
+ departureTerminal: string;
+ departureGate: string;
+ arrivalCode: string;
+ arrivalCity: string;
+ arrivalCountryCode: string;
+ arrivalTerminal: string;
+ arrivalGate: string;
+ scheduledTime: string;
+ actualTime: string;
+ status: 'early' | 'on-time' | 'delayed';
+ statusText: string;
+ duration: string;
+ flightType: string;
+ airlineIata: string;
+ airlineName: string;
+ flightNumber: string;
+}
+
+// Mock flight status data matching the image
+const mockFlightStatus: FlightStatusData = {
+ departureCode: 'DEL',
+ departureCity: 'New delhi',
+ departureCountryCode: 'IN',
+ departureTerminal: 'Terminal 1',
+ departureGate: 'Gate 2',
+ arrivalCode: 'BOM',
+ arrivalCity: 'Mumbai',
+ arrivalCountryCode: 'IN',
+ arrivalTerminal: 'Terminal 1',
+ arrivalGate: 'Gate 2',
+ scheduledTime: '10:15',
+ actualTime: '08:15',
+ status: 'early',
+ statusText: '5m Early',
+ duration: '2h 5m',
+ flightType: 'Direct',
+ airlineIata: '6E',
+ airlineName: 'IndiGo',
+ flightNumber: '6E 123'
+};
+
+const getStatusColor = (status: 'early' | 'on-time' | 'delayed') => {
+ switch (status) {
+ case 'early':
+ return 'text-green-600';
+ case 'on-time':
+ return 'text-green-600';
+ case 'delayed':
+ return 'text-red-600';
+ default:
+ return 'text-black';
+ }
+};
+
+const getTimeColor = (status: 'early' | 'on-time' | 'delayed') => {
+ switch (status) {
+ case 'early':
+ return 'text-green-600';
+ case 'on-time':
+ return 'text-black';
+ case 'delayed':
+ return 'text-red-600';
+ default:
+ return 'text-black';
+ }
+};
+
+// Helper function to get airline logo path
+const getAirlineLogoPath = (airlineIata: string): string => {
+ if (!airlineIata) return '';
+ return `/airlines/${airlineIata.toUpperCase()}.png`;
+};
+
+// Helper function to convert country code to flag emoji
+const getCountryFlag = (countryCode: string): string => {
+ if (!countryCode || countryCode.length !== 2) return countryCode;
+
+ // Convert country code to flag emoji
+ const codePoints = countryCode
+ .toUpperCase()
+ .split('')
+ .map(char => 127397 + char.charCodeAt(0));
+
+ return String.fromCodePoint(...codePoints);
+};
+
+// Airline Logo Component
+const AirlineLogo = ({
+ airlineIata,
+ airlineName,
+ size = 'md'
+}: {
+ airlineIata: string;
+ airlineName: string;
+ size?: 'sm' | 'md' | 'lg'
+}) => {
+ const logoPath = getAirlineLogoPath(airlineIata);
+
+ // Size configurations
+ const sizeConfig = {
+ sm: { container: 'w-5 h-5', fallback: 'w-3 h-3' },
+ md: { container: 'w-6 h-6', fallback: 'w-4 h-4' },
+ lg: { container: 'w-8 h-8', fallback: 'w-6 h-6' }
+ };
+
+ const { container, fallback } = sizeConfig[size];
+
+ return (
+
+ {logoPath ? (
+
{
+ // Fallback to gray circle if image fails to load
+ const target = e.target as HTMLImageElement;
+ target.style.display = 'none';
+ const parent = target.parentElement;
+ if (parent) {
+ parent.innerHTML = `
`;
+ }
+ }}
+ />
+ ) : (
+
+ )}
+
+ );
+};
+
+const FlightStatusWidget = () => {
+ const flight = mockFlightStatus;
+
+ return (
+
+ {/* Airline Info Header */}
+
+
+
+
+ {flight.airlineName}
+
+
+ {flight.flightNumber}
+
+
+
+
+ {/* Departure Section */}
+
+
+
+
+ {flight.departureCode}
+
+
+ {getCountryFlag(flight.departureCountryCode)}
+
+ {flight.departureCity}
+
+
+
+ {flight.departureTerminal} . {flight.departureGate}
+
+
+
+
+ {flight.actualTime}
+
+
+ {flight.scheduledTime}
+
+ {flight.statusText}
+
+
+
+
+
+
+ {/* Flight Duration Info */}
+
+
+ {flight.duration} . {flight.flightType}
+
+
+
+ {/* Arrival Section */}
+
+
+
+
+ {flight.arrivalCode}
+
+
+ {getCountryFlag(flight.arrivalCountryCode)}
+
+ {flight.arrivalCity}
+
+
+
+ {flight.arrivalTerminal} . {flight.arrivalGate}
+
+
+
+
+ {flight.scheduledTime}
+
+
+ On time
+
+
+
+
+
+ );
+};
+
+export default FlightStatusWidget;
diff --git a/src/components/widgets/index.ts b/src/components/widgets/index.ts
new file mode 100644
index 00000000..fd459034
--- /dev/null
+++ b/src/components/widgets/index.ts
@@ -0,0 +1,17 @@
+import FlightOptionsWidget from "./flightOptions.widget";
+import FlightStatusWidget from "./flightStatus.wdiget";
+import SearchCriteriaWidget from "./searchCriteria.widget";
+import LoungeWidget from "./lounge.widget";
+import weatherWidget from "./weather.widget";
+import ReviewWidget from "./review.widget";
+
+export const componentMap = {
+ SearchCriteriaWidget, // Add mapping for SearchCriteria type
+ FlightOptionsWidget,
+ FlightStatusWidget, /// simple widget needs to send from server
+ LoungeWidget, /// simple widget needs to send from server
+ weatherWidget, /// simple widget needs to send from server
+ TravelerDetailsWidget: ReviewWidget, /// Flight booking review widget
+} as const;
+
+export type ComponentType = keyof typeof componentMap;
diff --git a/src/components/widgets/lounge.widget.tsx b/src/components/widgets/lounge.widget.tsx
new file mode 100644
index 00000000..cd37c60f
--- /dev/null
+++ b/src/components/widgets/lounge.widget.tsx
@@ -0,0 +1,245 @@
+'use client';
+
+import React, { useState, useRef } from 'react';
+import Image from 'next/image';
+import { Button } from '@/components/common/ui/button';
+import { MapPin, Check, CreditCard } from 'lucide-react';
+import { cn } from '@/lib/utils';
+
+interface Lounge {
+ id: string;
+ name: string;
+ location: string;
+ image: string;
+ accessType: 'free' | 'paid';
+ accessText: string;
+ terminal?: string;
+}
+
+// Mock lounge data matching the design
+const mockLoungeData: Lounge[] = [
+ {
+ id: '1',
+ name: 'Encalm Lounge',
+ location: 'International Departures',
+ image: '/api/placeholder/300/200',
+ accessType: 'free',
+ accessText: 'Free access',
+ terminal: 'Terminal 1'
+ },
+ {
+ id: '2',
+ name: 'Plaza Premium Lounge',
+ location: 'International Departures',
+ image: '/api/placeholder/300/200',
+ accessType: 'paid',
+ accessText: 'Check eligibility',
+ terminal: 'Terminal 1'
+ },
+ {
+ id: '3',
+ name: 'Business Lounge',
+ location: 'Domestic Departures',
+ image: '/api/placeholder/300/200',
+ accessType: 'free',
+ accessText: 'Free access',
+ terminal: 'Terminal 2'
+ },
+ {
+ id: '4',
+ name: 'Executive Lounge',
+ location: 'International Departures',
+ image: '/api/placeholder/300/200',
+ accessType: 'paid',
+ accessText: 'Check eligibility',
+ terminal: 'Terminal 2'
+ }
+];
+
+const terminals = ['Terminal 1', 'Terminal 2', 'Terminal 3'];
+
+const LoungCard = ({ lounge }: { lounge: Lounge }) => {
+ return (
+
+ {/* Lounge Image */}
+
+ {
+ // Fallback to a gradient background if image fails to load
+ const target = e.target as HTMLImageElement;
+ target.style.display = 'none';
+ target.parentElement!.style.background = 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)';
+ }}
+ />
+
+
+ {/* Lounge Info */}
+
+ {/* Lounge Name */}
+
+ {lounge.name}
+
+
+ {/* Location */}
+
+
+
+ {lounge.location}
+
+
+
+ {/* Access Info */}
+
+ {lounge.accessType === 'free' ? (
+ <>
+
+
+
+
+ {lounge.accessText}
+
+ >
+ ) : (
+ <>
+
+
+
+
+ {lounge.accessText}
+
+ >
+ )}
+
+
+
+ );
+};
+
+const LoungesWidget = () => {
+ const [activeTerminal, setActiveTerminal] = useState('Terminal 1');
+ const scrollContainerRef = useRef(null);
+ const [isDragging, setIsDragging] = useState(false);
+ const [startX, setStartX] = useState(0);
+ const [scrollLeft, setScrollLeft] = useState(0);
+
+ // Filter lounges by active terminal
+ const filteredLounges = mockLoungeData.filter(lounge => lounge.terminal === activeTerminal);
+
+ // Enhanced Touch/Mouse drag handlers for mobile-like carousel
+ const handleMouseDown = (e: React.MouseEvent) => {
+ if (window.innerWidth > 640) { // Only enable mouse drag on desktop
+ setIsDragging(true);
+ setStartX(e.pageX - (scrollContainerRef.current?.offsetLeft || 0));
+ setScrollLeft(scrollContainerRef.current?.scrollLeft || 0);
+ if (scrollContainerRef.current) {
+ scrollContainerRef.current.style.cursor = 'grabbing';
+ }
+ }
+ };
+
+ const handleMouseMove = (e: React.MouseEvent) => {
+ if (!isDragging || !scrollContainerRef.current || window.innerWidth <= 640) return;
+ e.preventDefault();
+ const x = e.pageX - (scrollContainerRef.current.offsetLeft || 0);
+ const walk = (x - startX) * 1.5;
+ scrollContainerRef.current.scrollLeft = scrollLeft - walk;
+ };
+
+ const handleMouseUp = () => {
+ setIsDragging(false);
+ if (scrollContainerRef.current) {
+ scrollContainerRef.current.style.cursor = 'grab';
+ }
+ };
+
+ const handleTouchStart = (e: React.TouchEvent) => {
+ setIsDragging(true);
+ setStartX(e.touches[0].pageX);
+ setScrollLeft(scrollContainerRef.current?.scrollLeft || 0);
+ };
+
+ const handleTouchMove = (e: React.TouchEvent) => {
+ if (!isDragging || !scrollContainerRef.current) return;
+ const x = e.touches[0].pageX;
+ const walk = (startX - x) * 1.2;
+ scrollContainerRef.current.scrollLeft = scrollLeft + walk;
+ };
+
+ const handleTouchEnd = () => {
+ setIsDragging(false);
+ };
+
+ return (
+
+ {/* Header */}
+
+
Lounges
+
+ See All
+
+
+
+ {/* Terminal Tabs - Pill Shaped, Left Aligned */}
+
+ {terminals.map((terminal) => (
+ setActiveTerminal(terminal)}
+ className={cn(
+ "px-3 sm:px-4 py-1.5 sm:py-2 text-xs sm:text-sm font-medium rounded-full transition-all duration-200 border",
+ activeTerminal === terminal
+ ? "bg-gray-900 text-white border-gray-900"
+ : "bg-white text-gray-600 border-gray-300 hover:border-gray-400 hover:text-gray-900"
+ )}
+ >
+ {terminal}
+
+ ))}
+
+
+ {/* Lounges Carousel */}
+
+
+ {filteredLounges.map((lounge) => (
+
+ ))}
+
+
+
+ );
+};
+
+export default LoungesWidget;
diff --git a/src/components/widgets/review-widget-demo.tsx b/src/components/widgets/review-widget-demo.tsx
new file mode 100644
index 00000000..93d1ba08
--- /dev/null
+++ b/src/components/widgets/review-widget-demo.tsx
@@ -0,0 +1,276 @@
+"use client";
+
+import React, { useState } from "react";
+import ReviewWidget from "./review.widget";
+import { Button } from "@/components/common/ui/button";
+import {
+ Sheet,
+ SheetContent,
+ SheetHeader,
+ SheetTitle,
+} from "@/components/ui/sheet";
+
+// Example API response data
+const exampleApiData = {
+ "value": {
+ "type": "widget",
+ "widget": {
+ "type": "TravelerDetailsWidget",
+ "args": {
+ "flightItinerary": {
+ "userContext": {
+ "userDetails": {
+ "travellerId": 27912,
+ "firstName": "MITESH JAGDISH",
+ "lastName": "BALDHA",
+ "dateOfBirth": "1989-01-25",
+ "gender": "Male",
+ "nationality": "Indian",
+ "numberOfFlights": 57,
+ "email": "ceo@explerainc.com",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": "+919737332299"
+ }
+ ],
+ "isPrimaryTraveller": true,
+ "documents": [
+ {
+ "documentId": 55,
+ "documentType": "passport",
+ "documentNumber": "Z6956116",
+ "nationality": "India",
+ "expiryDate": "2033-03-01",
+ "issuingDate": "2017-05-31",
+ "issuingCountry": "India",
+ "documentUrl": "https://hh-boarding-pass.s3.ap-south-1.amazonaws.com/user-documents/12118_1753255060955_4_PASSPORT___MITESH_BALDHA_2.jpg"
+ }
+ ]
+ },
+ "savedTravellers": [
+ {
+ "travellerId": 27912,
+ "firstName": "MITESH JAGDISH",
+ "lastName": "BALDHA",
+ "dateOfBirth": "1989-01-25",
+ "gender": "Male",
+ "nationality": "Indian",
+ "numberOfFlights": 57,
+ "email": "ceo@explerainc.com",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": "+919737332299"
+ }
+ ],
+ "isPrimaryTraveller": true,
+ "documents": [
+ {
+ "documentId": 55,
+ "documentType": "passport",
+ "documentNumber": "Z6956116",
+ "nationality": "India",
+ "expiryDate": "2033-03-01",
+ "issuingDate": "2017-05-31",
+ "issuingCountry": "India",
+ "documentUrl": "https://hh-boarding-pass.s3.ap-south-1.amazonaws.com/user-documents/12118_1753255060955_4_PASSPORT___MITESH_BALDHA_2.jpg"
+ }
+ ]
+ },
+ {
+ "travellerId": 27896,
+ "firstName": "SANDEEP VITHALBHAI",
+ "lastName": "SOJITRA",
+ "dateOfBirth": "",
+ "gender": "Male",
+ "nationality": "Indian",
+ "numberOfFlights": 19,
+ "email": "explera.surat@gmail.com",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": "+919624332299"
+ }
+ ],
+ "isPrimaryTraveller": false,
+ "documents": [
+ {
+ "documentId": 74,
+ "documentType": "passport",
+ "documentNumber": "Z3690598",
+ "nationality": "India",
+ "expiryDate": "2027-02-07",
+ "issuingDate": "2017-02-08",
+ "issuingCountry": "Surat, India",
+ "documentUrl": "https://hh-boarding-pass.s3.ap-south-1.amazonaws.com/user-documents/12118_1753603930881_Screenshot_2025_07_27_at_13.41.58.png"
+ }
+ ]
+ }
+ ]
+ },
+ "selectionContext": {
+ "selectedFlightOffers": [
+ {
+ "flightOfferId": "1",
+ "totalEmission": 0,
+ "totalEmissionUnit": "Kg",
+ "currency": "INR",
+ "totalAmount": 5015,
+ "duration": "PT2H55M",
+ "departure": {
+ "date": "2025-08-24T10:25:00",
+ "airportIata": "BLR",
+ "airportName": "",
+ "cityCode": "BLR",
+ "countryCode": "IN"
+ },
+ "arrival": {
+ "date": "2025-08-24T13:20:00",
+ "airportIata": "DEL",
+ "airportName": "",
+ "cityCode": "DEL",
+ "countryCode": "IN"
+ },
+ "segments": [
+ {
+ "id": "98",
+ "airlineIata": "AI",
+ "flightNumber": "9478",
+ "duration": "PT2H55M",
+ "aircraftType": "BOEING 737 ALL SERIES PASSENGER",
+ "airlineName": "",
+ "departure": {
+ "date": "2025-08-24T10:25:00",
+ "airportIata": "BLR",
+ "airportName": "",
+ "cityCode": "BLR",
+ "countryCode": "IN"
+ },
+ "arrival": {
+ "date": "2025-08-24T13:20:00",
+ "airportIata": "DEL",
+ "airportName": "",
+ "cityCode": "DEL",
+ "countryCode": "IN"
+ }
+ }
+ ],
+ "offerRules": {
+ "isRefundable": false
+ },
+ "rankingScore": 0,
+ "pros": [],
+ "cons": [],
+ "tags": [
+ "cheapest",
+ "recommended"
+ ]
+ }
+ ]
+ }
+ },
+ "bookingRequirements": {
+ "emailAddressRequired": true,
+ "invoiceAddressRequired": false,
+ "mailingAddressRequired": false,
+ "phoneCountryCodeRequired": false,
+ "mobilePhoneNumberRequired": true,
+ "phoneNumberRequired": false,
+ "postalCodeRequired": false,
+ "travelerRequirements": null
+ }
+ }
+ }
+ }
+};
+
+// Example with travelerRequirements not null (shows travel documents)
+const exampleApiDataWithTravelDocs = {
+ ...exampleApiData,
+ value: {
+ ...exampleApiData.value,
+ widget: {
+ ...exampleApiData.value.widget,
+ args: {
+ ...exampleApiData.value.widget.args,
+ bookingRequirements: {
+ ...exampleApiData.value.widget.args.bookingRequirements,
+ travelerRequirements: {
+ documentRequired: true,
+ passportRequired: true
+ }
+ }
+ }
+ }
+ }
+};
+
+const ReviewWidgetDemo: React.FC = () => {
+ const [showBottomSheet, setShowBottomSheet] = useState(false);
+
+ const handleSubmit = (data: any) => {
+ console.log("Booking data submitted:", data);
+ alert("Booking submitted successfully!");
+ };
+
+ return (
+
+
Review Widget Demo
+
+
+
Bottom Sheet Mode (No Travel Docs - travelerRequirements: null)
+
setShowBottomSheet(true)}>
+ Open Review Widget in Bottom Sheet
+
+
+
+
+
+
+ Review Your Booking
+
+
+
+
+ setShowBottomSheet(false)}
+ />
+
+
+
+
+
+
+
With Travel Documents (travelerRequirements: not null)
+
+
+
+
+
Without Travel Documents (travelerRequirements: null)
+
+
+
+
+
Regular Mode (Mock Data)
+
+
+
+ );
+};
+
+export default ReviewWidgetDemo;
diff --git a/src/components/widgets/review.widget.tsx b/src/components/widgets/review.widget.tsx
new file mode 100644
index 00000000..caf67afa
--- /dev/null
+++ b/src/components/widgets/review.widget.tsx
@@ -0,0 +1,2406 @@
+"use client";
+
+import React, { useState, useMemo } from "react";
+import { Button } from "@/components/common/ui/button";
+import { Input } from "@/components/common/ui/input";
+import { Label } from "@/components/common/ui/label";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "@/components/common/ui/select";
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/common/ui/popover";
+import { Calendar } from "@/components/ui/calendar";
+import {
+ Command,
+ CommandEmpty,
+ CommandGroup,
+ CommandInput,
+ CommandItem,
+ CommandList,
+} from "@/components/ui/command";
+import {
+ ArrowRight,
+ Calendar as CalendarIcon,
+ Clock,
+ ChevronDown,
+ ChevronUp,
+ Plane,
+ MapPin,
+ Shield,
+ AlertTriangle,
+ Check,
+ ChevronsUpDown,
+} from "lucide-react";
+import { cn } from "@/lib/utils";
+import { submitInterruptResponse } from "./util";
+import { useStreamContext } from "@/providers/Stream";
+import Image from "next/image";
+
+// DateInput component using shadcn Calendar (same as searchCriteria.widget.tsx)
+interface DateInputProps {
+ date?: Date;
+ onDateChange?: (date: Date | undefined) => void;
+ placeholder?: string;
+ className?: string;
+ disablePast?: boolean;
+ disableFuture?: boolean;
+}
+
+const DateInput = ({
+ date,
+ onDateChange,
+ placeholder,
+ className,
+ disablePast = false,
+ disableFuture = false,
+}: DateInputProps) => {
+ const [isOpen, setIsOpen] = useState(false);
+
+ const formatDateDisplay = (date: Date | undefined) => {
+ if (!date) return placeholder || "Select date";
+ const options: Intl.DateTimeFormatOptions = {
+ weekday: 'short',
+ day: 'numeric',
+ month: 'short',
+ year: 'numeric'
+ };
+ return date.toLocaleDateString('en-US', options);
+ };
+
+ const today = new Date();
+ today.setHours(0, 0, 0, 0);
+
+ const getDisabledDates = (date: Date) => {
+ if (disablePast && date < today) return true;
+ if (disableFuture && date > today) return true;
+ return false;
+ };
+
+ return (
+
+
+
+
+ {formatDateDisplay(date)}
+
+
+
+ {
+ onDateChange?.(selectedDate);
+ setIsOpen(false);
+ }}
+ disabled={getDisabledDates}
+ initialFocus
+ />
+
+
+ );
+};
+
+// CountryCombobox component (similar pattern to AirportCombobox)
+interface Country {
+ code: string;
+ name: string;
+}
+
+const POPULAR_COUNTRIES: Country[] = [
+ { code: "US", name: "United States" },
+ { code: "IN", name: "India" },
+ { code: "GB", name: "United Kingdom" },
+ { code: "CA", name: "Canada" },
+ { code: "AU", name: "Australia" },
+ { code: "DE", name: "Germany" },
+ { code: "FR", name: "France" },
+ { code: "JP", name: "Japan" },
+ { code: "CN", name: "China" },
+ { code: "BR", name: "Brazil" },
+ { code: "MX", name: "Mexico" },
+ { code: "IT", name: "Italy" },
+ { code: "ES", name: "Spain" },
+ { code: "NL", name: "Netherlands" },
+ { code: "SG", name: "Singapore" },
+ { code: "AE", name: "United Arab Emirates" },
+];
+
+interface CountryComboboxProps {
+ value?: string;
+ onValueChange?: (value: string) => void;
+ placeholder?: string;
+ className?: string;
+}
+
+const CountryCombobox = ({
+ value,
+ onValueChange,
+ placeholder = "Select country...",
+ className
+}: CountryComboboxProps) => {
+ const [open, setOpen] = useState(false);
+ const [searchQuery, setSearchQuery] = useState("");
+
+ const selectedCountry = React.useMemo(() => {
+ if (!value) return null;
+ const country = POPULAR_COUNTRIES.find(c => c.name === value || c.code === value);
+ return country ? country.name : value;
+ }, [value]);
+
+ const displayCountries = React.useMemo(() => {
+ let countries = POPULAR_COUNTRIES;
+
+ if (searchQuery && searchQuery.trim().length > 0) {
+ const query = searchQuery.toLowerCase();
+ countries = countries.filter(country =>
+ country.name.toLowerCase().includes(query) ||
+ country.code.toLowerCase().includes(query)
+ );
+ }
+
+ return countries.map(country => ({
+ value: country.name,
+ label: country.name,
+ code: country.code
+ }));
+ }, [searchQuery]);
+
+ return (
+
+
+
+
+ {selectedCountry || placeholder}
+
+
+
+
+
+
+
+
+ No countries found.
+
+ {displayCountries.map((country) => (
+ {
+ onValueChange?.(currentValue === value ? "" : currentValue);
+ setOpen(false);
+ setSearchQuery("");
+ }}
+ >
+
+
{country.label}
+
{country.code}
+
+
+
+ ))}
+
+
+
+
+
+ );
+};
+
+// TypeScript Interfaces for API Response
+interface ApiPhone {
+ countryCode: string;
+ number: string;
+}
+
+interface ApiDocument {
+ documentId: number;
+ documentType: string;
+ documentNumber: string;
+ nationality: string;
+ expiryDate: string;
+ issuingDate: string;
+ issuingCountry: string;
+ documentUrl: string;
+}
+
+interface ApiTraveller {
+ travellerId: number;
+ firstName: string;
+ lastName: string;
+ dateOfBirth: string;
+ gender: string;
+ nationality: string;
+ numberOfFlights: number;
+ email: string;
+ phone: ApiPhone[];
+ isPrimaryTraveller: boolean;
+ documents: ApiDocument[];
+}
+
+interface ApiFlightSegment {
+ id: string;
+ airlineIata: string;
+ flightNumber: string;
+ duration: string;
+ aircraftType: string;
+ airlineName: string;
+ departure: {
+ date: string;
+ airportIata: string;
+ airportName: string;
+ cityCode: string;
+ countryCode: string;
+ };
+ arrival: {
+ date: string;
+ airportIata: string;
+ airportName: string;
+ cityCode: string;
+ countryCode: string;
+ };
+}
+
+interface ApiFlightOffer {
+ flightOfferId: string;
+ totalEmission: number;
+ totalEmissionUnit: string;
+ currency: string;
+ totalAmount: number;
+ duration: string;
+ departure: {
+ date: string;
+ airportIata: string;
+ airportName: string;
+ cityCode: string;
+ countryCode: string;
+ };
+ arrival: {
+ date: string;
+ airportIata: string;
+ airportName: string;
+ cityCode: string;
+ countryCode: string;
+ };
+ segments: ApiFlightSegment[];
+ offerRules: {
+ isRefundable: boolean;
+ };
+ rankingScore: number;
+ pros: string[];
+ cons: string[];
+ tags: string[];
+}
+
+interface ApiBookingRequirements {
+ emailAddressRequired: boolean;
+ invoiceAddressRequired: boolean;
+ mailingAddressRequired: boolean;
+ phoneCountryCodeRequired: boolean;
+ mobilePhoneNumberRequired: boolean;
+ phoneNumberRequired: boolean;
+ postalCodeRequired: boolean;
+ travelerRequirements: any;
+}
+
+interface ApiWidgetArgs {
+ flightItinerary: {
+ userContext: {
+ userDetails: ApiTraveller;
+ savedTravellers: ApiTraveller[];
+ };
+ selectionContext: {
+ selectedFlightOffers: ApiFlightOffer[];
+ };
+ };
+ bookingRequirements: ApiBookingRequirements;
+}
+
+interface ApiResponse {
+ value: {
+ type: string;
+ widget: {
+ type: string;
+ args: ApiWidgetArgs;
+ };
+ };
+}
+
+// Component Interfaces
+interface FlightDetails {
+ departure: {
+ city: string;
+ airport: string;
+ code: string;
+ date: string;
+ time: string;
+ };
+ arrival: {
+ city: string;
+ airport: string;
+ code: string;
+ date: string;
+ time: string;
+ };
+ airline: {
+ name: string;
+ flightNumber: string;
+ cabinClass: string;
+ aircraftType?: string;
+ iataCode?: string;
+ };
+ duration: string;
+}
+
+interface PassengerDetails {
+ firstName: string;
+ lastName: string;
+ dateOfBirth: string;
+ gender: string;
+ title: string;
+}
+
+interface ContactInformation {
+ phone: string;
+ email: string;
+}
+
+interface TravelDocument {
+ type: string;
+ number: string;
+ issuingCountry: string;
+ expiryDate: string;
+ nationality: string;
+}
+
+interface SeatAllocation {
+ isSelected: boolean;
+ seatNumber: string;
+ location: string;
+ price: number;
+}
+
+interface PaymentSummary {
+ baseFare: number;
+ taxes: number;
+ fees: number;
+ discount: number;
+ seatFare: number;
+ total: number;
+ currency: string;
+}
+
+interface ReviewWidgetProps {
+ // Legacy props for backward compatibility
+ flightDetails?: FlightDetails;
+ passengerDetails?: PassengerDetails;
+ contactInfo?: ContactInformation;
+ travelDocument?: TravelDocument;
+ seatAllocation?: SeatAllocation;
+ paymentSummary?: PaymentSummary;
+ onSubmit?: (data: any) => void;
+ // New API response prop
+ apiData?: ApiResponse;
+ // Bottom sheet mode
+ isInBottomSheet?: boolean;
+ // Function to close the bottom sheet
+ onClose?: () => void;
+}
+
+// Utility functions to transform API data
+const formatDateTime = (isoString: string) => {
+ const date = new Date(isoString);
+ const dateStr = date.toLocaleDateString('en-US', {
+ month: 'short',
+ day: 'numeric',
+ year: 'numeric'
+ });
+ const timeStr = date.toLocaleTimeString('en-US', {
+ hour: 'numeric',
+ minute: '2-digit',
+ hour12: true
+ });
+ return { date: dateStr, time: timeStr };
+};
+
+const parseDuration = (duration: string) => {
+ // Parse ISO 8601 duration format (PT2H55M)
+ const match = duration.match(/PT(?:(\d+)H)?(?:(\d+)M)?/);
+ if (!match) return duration;
+
+ const hours = parseInt(match[1] || '0');
+ const minutes = parseInt(match[2] || '0');
+
+ if (hours > 0 && minutes > 0) {
+ return `${hours}h ${minutes}m`;
+ } else if (hours > 0) {
+ return `${hours}h`;
+ } else {
+ return `${minutes}m`;
+ }
+};
+
+// Helper function to get airline logo path
+const getAirlineLogoPath = (airlineIata: string): string => {
+ if (!airlineIata) return '';
+ return `/airlines/${airlineIata.toUpperCase()}.png`;
+};
+
+// Airline Logo Component
+const AirlineLogo = ({
+ airlineIata,
+ airlineName,
+ size = 'md'
+}: {
+ airlineIata: string;
+ airlineName: string;
+ size?: 'sm' | 'md' | 'lg'
+}) => {
+ const logoPath = getAirlineLogoPath(airlineIata);
+
+ // Size configurations
+ const sizeConfig = {
+ sm: { container: 'w-6 h-6', fallback: 'w-4 h-4' },
+ md: { container: 'w-8 h-8', fallback: 'w-6 h-6' },
+ lg: { container: 'w-10 h-10', fallback: 'w-8 h-8' }
+ };
+
+ const { container, fallback } = sizeConfig[size];
+
+ return (
+
+ {logoPath ? (
+
{
+ // Fallback to gray circle if image fails to load
+ const target = e.target as HTMLImageElement;
+ target.style.display = 'none';
+ const parent = target.parentElement;
+ if (parent) {
+ parent.innerHTML = `
`;
+ }
+ }}
+ />
+ ) : (
+
+ )}
+
+ );
+};
+
+const transformApiDataToFlightDetails = (apiData: ApiResponse): FlightDetails | null => {
+ const flightOffer = apiData.value.widget.args.flightItinerary.selectionContext.selectedFlightOffers[0];
+ if (!flightOffer) return null;
+
+ const departure = formatDateTime(flightOffer.departure.date);
+ const arrival = formatDateTime(flightOffer.arrival.date);
+
+ // Get airline info from first segment
+ const firstSegment = flightOffer.segments[0];
+
+ return {
+ departure: {
+ city: flightOffer.departure.cityCode,
+ airport: flightOffer.departure.airportName || flightOffer.departure.airportIata,
+ code: flightOffer.departure.airportIata,
+ date: departure.date,
+ time: departure.time,
+ },
+ arrival: {
+ city: flightOffer.arrival.cityCode,
+ airport: flightOffer.arrival.airportName || flightOffer.arrival.airportIata,
+ code: flightOffer.arrival.airportIata,
+ date: arrival.date,
+ time: arrival.time,
+ },
+ airline: {
+ name: firstSegment.airlineName || firstSegment.airlineIata,
+ flightNumber: `${firstSegment.airlineIata} ${firstSegment.flightNumber}`,
+ cabinClass: "Economy", // Default as not provided in API
+ aircraftType: firstSegment.aircraftType,
+ iataCode: firstSegment.airlineIata,
+ },
+ duration: parseDuration(flightOffer.duration),
+ };
+};
+
+const transformApiDataToPassengerDetails = (apiData: ApiResponse): PassengerDetails | null => {
+ const userDetails = apiData.value.widget.args.flightItinerary.userContext.userDetails;
+ if (!userDetails) return null;
+
+ return {
+ firstName: userDetails.firstName,
+ lastName: userDetails.lastName,
+ dateOfBirth: userDetails.dateOfBirth,
+ gender: userDetails.gender,
+ title: userDetails.gender === 'Male' ? 'Mr' : userDetails.gender === 'Female' ? 'Ms' : '',
+ };
+};
+
+const transformApiDataToContactInfo = (apiData: ApiResponse): ContactInformation | null => {
+ const userDetails = apiData.value.widget.args.flightItinerary.userContext.userDetails;
+ if (!userDetails) return null;
+
+ const phone = userDetails.phone && userDetails.phone.length > 0 ? userDetails.phone[0].number : '';
+
+ return {
+ phone: phone,
+ email: userDetails.email,
+ };
+};
+
+const transformApiDataToTravelDocument = (apiData: ApiResponse): TravelDocument | null => {
+ const userDetails = apiData.value.widget.args.flightItinerary.userContext.userDetails;
+ if (!userDetails || !userDetails.documents || userDetails.documents.length === 0) return null;
+
+ const document = userDetails.documents[0];
+
+ return {
+ type: document.documentType.charAt(0).toUpperCase() + document.documentType.slice(1),
+ number: document.documentNumber,
+ issuingCountry: document.issuingCountry,
+ expiryDate: document.expiryDate,
+ nationality: document.nationality,
+ };
+};
+
+const transformApiDataToPaymentSummary = (apiData: ApiResponse): PaymentSummary | null => {
+ const flightOffer = apiData.value.widget.args.flightItinerary.selectionContext.selectedFlightOffers[0];
+ if (!flightOffer) return null;
+
+ // Since detailed breakdown is not provided in API, we'll estimate
+ const total = flightOffer.totalAmount;
+ const baseFare = Math.round(total * 0.75); // Estimate 75% as base fare
+ const taxes = Math.round(total * 0.20); // Estimate 20% as taxes
+ const fees = Math.round(total * 0.05); // Estimate 5% as fees
+
+ return {
+ baseFare: baseFare,
+ taxes: taxes,
+ fees: fees,
+ discount: 0,
+ seatFare: 0,
+ total: total,
+ currency: flightOffer.currency,
+ };
+};
+
+const transformApiDataToSavedPassengers = (apiData: ApiResponse) => {
+ const savedTravellers = apiData.value.widget.args.flightItinerary.userContext.savedTravellers;
+ if (!savedTravellers) return [];
+
+ return savedTravellers.map((traveller, index) => ({
+ id: traveller.travellerId.toString(),
+ firstName: traveller.firstName,
+ lastName: traveller.lastName,
+ gender: traveller.gender,
+ dateOfBirth: traveller.dateOfBirth,
+ }));
+};
+
+// Mock saved passengers data (fallback)
+const mockSavedPassengers = [
+ {
+ id: "1",
+ firstName: "John",
+ lastName: "Doe",
+ gender: "Male",
+ dateOfBirth: "1990-01-15",
+ },
+ {
+ id: "2",
+ firstName: "Jane",
+ lastName: "Smith",
+ gender: "Female",
+ dateOfBirth: "1985-03-22",
+ },
+ {
+ id: "3",
+ firstName: "Michael",
+ lastName: "Johnson",
+ gender: "Male",
+ dateOfBirth: "1992-07-08",
+ },
+ {
+ id: "4",
+ firstName: "Sarah",
+ lastName: "Williams",
+ gender: "Female",
+ dateOfBirth: "1988-11-30",
+ },
+];
+
+// Mock data for demonstration
+const mockData = {
+ flightDetails: {
+ departure: {
+ city: "New York",
+ airport: "John F. Kennedy International Airport",
+ code: "JFK",
+ date: "Dec 15, 2024",
+ time: "2:30 PM",
+ },
+ arrival: {
+ city: "San Francisco",
+ airport: "San Francisco International Airport",
+ code: "SFO",
+ date: "Dec 15, 2024",
+ time: "6:15 PM",
+ },
+ airline: {
+ name: "American Airlines",
+ flightNumber: "AA 1234",
+ cabinClass: "Economy",
+ aircraftType: "Boeing 737-800",
+ iataCode: "AA",
+ },
+ duration: "5h 45m",
+ },
+ passengerDetails: {
+ firstName: "John",
+ lastName: "Doe",
+ dateOfBirth: "1990-01-15",
+ gender: "Male",
+ title: "Mr",
+ },
+ contactInfo: {
+ phone: "+1 (555) 123-4567",
+ email: "john.doe@email.com",
+ },
+ travelDocument: {
+ type: "Passport",
+ number: "A12345678",
+ issuingCountry: "United States",
+ expiryDate: "2029-01-11",
+ nationality: "American",
+ },
+ seatAllocation: {
+ isSelected: true,
+ seatNumber: "12A",
+ location: "Window seat, front of aircraft",
+ price: 25.0,
+ },
+ paymentSummary: {
+ baseFare: 249.0,
+ taxes: 35.5,
+ fees: 12.75,
+ discount: 20.0,
+ seatFare: 25.0,
+ total: 302.25,
+ currency: "USD",
+ },
+};
+
+const ReviewWidget: React.FC = ({
+ flightDetails,
+ passengerDetails,
+ contactInfo,
+ travelDocument,
+ seatAllocation,
+ paymentSummary,
+ onSubmit,
+ apiData,
+ isInBottomSheet = false,
+ onClose,
+}) => {
+ // Get thread context for interrupt responses
+ const stream = useStreamContext();
+ const thread = (stream as any)?.thread || null;
+
+ // Debug logging for API data (only in development)
+ if (process.env.NODE_ENV === 'development') {
+ console.log("🔄 ReviewWidget received props:", {
+ hasApiData: !!apiData,
+ apiDataKeys: apiData ? Object.keys(apiData) : null,
+ hasFlightDetails: !!flightDetails,
+ hasPassengerDetails: !!passengerDetails,
+ hasContactInfo: !!contactInfo,
+ hasTravelDocument: !!travelDocument,
+ hasSeatAllocation: !!seatAllocation,
+ hasPaymentSummary: !!paymentSummary
+ });
+ }
+
+ // Transform API data or use provided props/mock data
+ const transformedFlightDetails = apiData ? transformApiDataToFlightDetails(apiData) : null;
+ const transformedPassengerDetails = apiData ? transformApiDataToPassengerDetails(apiData) : null;
+ const transformedContactInfo = apiData ? transformApiDataToContactInfo(apiData) : null;
+ const transformedTravelDocument = apiData ? transformApiDataToTravelDocument(apiData) : null;
+ const transformedPaymentSummary = apiData ? transformApiDataToPaymentSummary(apiData) : null;
+ const savedPassengers = apiData ? transformApiDataToSavedPassengers(apiData) : mockSavedPassengers;
+
+ // Determine if travel documents component should be shown
+ // Hide if travelerRequirements is null in API data
+ const showTravelDocuments = apiData
+ ? apiData.value.widget.args.bookingRequirements.travelerRequirements !== null
+ : true; // Show by default for non-API usage (legacy/demo mode)
+
+ // Debug transformed data (only in development)
+ if (process.env.NODE_ENV === 'development') {
+ console.log("🔄 Transformed data:", {
+ hasTransformedFlightDetails: !!transformedFlightDetails,
+ hasTransformedPassengerDetails: !!transformedPassengerDetails,
+ hasTransformedContactInfo: !!transformedContactInfo,
+ hasTransformedTravelDocument: !!transformedTravelDocument,
+ hasTransformedPaymentSummary: !!transformedPaymentSummary,
+ savedPassengersCount: savedPassengers.length,
+ travelerRequirements: apiData?.value.widget.args.bookingRequirements.travelerRequirements,
+ showTravelDocuments: showTravelDocuments
+ });
+ }
+
+ // Use transformed data, provided props, or fallback to mock data
+ const finalFlightDetails = transformedFlightDetails || flightDetails || mockData.flightDetails;
+ const finalPassengerDetails = transformedPassengerDetails || passengerDetails || mockData.passengerDetails;
+ const finalContactInfo = transformedContactInfo || contactInfo || mockData.contactInfo;
+ const finalTravelDocument = transformedTravelDocument || travelDocument || mockData.travelDocument;
+ const finalPaymentSummary = transformedPaymentSummary || paymentSummary || mockData.paymentSummary;
+ const finalSeatAllocation = seatAllocation || mockData.seatAllocation;
+
+ // Determine if seat component should be shown (only if seatAllocation is provided)
+ const showSeatComponent = !!seatAllocation;
+
+ // Hook to detect desktop screen size
+ const [isDesktop, setIsDesktop] = useState(false);
+
+ React.useEffect(() => {
+ const checkScreenSize = () => {
+ setIsDesktop(window.innerWidth >= 1024); // lg breakpoint
+ };
+
+ checkScreenSize();
+ window.addEventListener('resize', checkScreenSize);
+
+ return () => window.removeEventListener('resize', checkScreenSize);
+ }, []);
+
+ // Component state
+ const [isFlightExpanded, setIsFlightExpanded] = useState(false);
+ const [isContactExpanded, setIsContactExpanded] = useState(false);
+ const [isTravelDocsExpanded, setIsTravelDocsExpanded] = useState(false);
+ const [isPaymentExpanded, setIsPaymentExpanded] = useState(false);
+ const [isSeatSelected, setIsSeatSelected] = useState(finalSeatAllocation?.isSelected || false);
+ const [isSavedPassengersExpanded, setIsSavedPassengersExpanded] = useState(false);
+
+ // Update payment expanded state when screen size changes to desktop
+ React.useEffect(() => {
+ if (isDesktop && !isPaymentExpanded) {
+ setIsPaymentExpanded(true);
+ }
+ }, [isDesktop, isPaymentExpanded]);
+
+ // Form state - initialize with transformed/provided data
+ const [passenger, setPassenger] = useState(finalPassengerDetails);
+ const [contact, setContact] = useState(finalContactInfo);
+ const [document, setDocument] = useState(
+ showTravelDocuments
+ ? finalTravelDocument || {
+ type: '',
+ number: '',
+ issuingCountry: '',
+ expiryDate: '',
+ nationality: ''
+ }
+ : null
+ );
+
+ // Validation state
+ const [validationErrors, setValidationErrors] = useState<{[key: string]: boolean}>({});
+
+ // Validation functions
+ const validateField = (value: string | undefined | null, fieldName: string): boolean => {
+ const isEmpty = !value || value.trim() === '';
+ setValidationErrors(prev => ({
+ ...prev,
+ [fieldName]: isEmpty
+ }));
+ return !isEmpty;
+ };
+
+ const validateEmail = (email: string | undefined | null): boolean => {
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ const isValid = email && emailRegex.test(email);
+ setValidationErrors(prev => ({
+ ...prev,
+ email: !isValid
+ }));
+ return !!isValid;
+ };
+
+ const validateAllFields = (): boolean => {
+ let isValid = true;
+ const errors: {[key: string]: boolean} = {};
+
+ // Validate passenger details
+ if (!passenger.firstName?.trim()) {
+ errors.firstName = true;
+ isValid = false;
+ }
+ if (!passenger.lastName?.trim()) {
+ errors.lastName = true;
+ isValid = false;
+ }
+ if (!passenger.gender?.trim()) {
+ errors.gender = true;
+ isValid = false;
+ }
+ // Only validate Date of Birth if travel documents are shown and expanded
+ if (showTravelDocuments && isTravelDocsExpanded && !passenger.dateOfBirth?.trim()) {
+ errors.dateOfBirth = true;
+ isValid = false;
+ }
+
+ // Validate contact information
+ if (!contact.email?.trim()) {
+ errors.email = true;
+ isValid = false;
+ } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(contact.email)) {
+ errors.email = true;
+ isValid = false;
+ }
+ if (!contact.phone?.trim()) {
+ errors.phone = true;
+ isValid = false;
+ }
+
+ // Validate travel documents (only if shown)
+ if (showTravelDocuments) {
+ if (!document || !document.type?.trim()) {
+ errors.documentType = true;
+ isValid = false;
+ }
+ if (!document || !document.number?.trim()) {
+ errors.documentNumber = true;
+ isValid = false;
+ }
+ if (!document || !document.issuingCountry?.trim()) {
+ errors.issuingCountry = true;
+ isValid = false;
+ }
+ if (!document || !document.expiryDate?.trim()) {
+ errors.expiryDate = true;
+ isValid = false;
+ }
+ if (!document || !document.nationality?.trim()) {
+ errors.nationality = true;
+ isValid = false;
+ }
+ }
+
+ setValidationErrors(errors);
+ return isValid;
+ };
+
+ // Check if form is valid for submit button (computed property)
+ const isFormValid = useMemo(() => {
+ // Check passenger details
+ if (!passenger.firstName?.trim() || !passenger.lastName?.trim() || !passenger.gender?.trim()) {
+ return false;
+ }
+
+ // Only validate Date of Birth if travel documents are shown and expanded
+ if (showTravelDocuments && isTravelDocsExpanded && !passenger.dateOfBirth?.trim()) {
+ return false;
+ }
+
+ // Check contact information
+ if (!contact.email?.trim() || !contact.phone?.trim()) {
+ return false;
+ }
+
+ // Validate email format
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ if (!emailRegex.test(contact.email)) {
+ return false;
+ }
+
+ // Check travel documents (only if shown)
+ if (showTravelDocuments) {
+ if (!document || !document.type?.trim() || !document.number?.trim() ||
+ !document.issuingCountry?.trim() || !document.expiryDate?.trim() ||
+ !document.nationality?.trim()) {
+ return false;
+ }
+ }
+
+ return true;
+ }, [passenger, contact, document, showTravelDocuments, isTravelDocsExpanded]);
+
+ // Calculate total with seat selection
+ const calculateTotal = () => {
+ if (!showSeatComponent) {
+ return finalPaymentSummary.total;
+ }
+ const seatFare = isSeatSelected && finalSeatAllocation ? finalSeatAllocation.price : 0;
+ return finalPaymentSummary.baseFare + finalPaymentSummary.taxes + finalPaymentSummary.fees + seatFare - finalPaymentSummary.discount;
+ };
+
+ // Handle selecting a saved passenger
+ const handleSelectSavedPassenger = (savedPassenger: typeof savedPassengers[0]) => {
+ setPassenger({
+ firstName: savedPassenger.firstName,
+ lastName: savedPassenger.lastName,
+ gender: savedPassenger.gender,
+ dateOfBirth: savedPassenger.dateOfBirth,
+ title: passenger.title, // Keep existing title if any
+ });
+ setIsSavedPassengersExpanded(false); // Collapse the section after selection
+ };
+
+ const handleSubmit = async () => {
+ // Validate all fields before submission
+ if (!validateAllFields()) {
+ // Scroll to first error field
+ const firstErrorField = window.document.querySelector('.border-red-500');
+ if (firstErrorField) {
+ firstErrorField.scrollIntoView({ behavior: 'smooth', block: 'center' });
+ }
+ return;
+ }
+
+ const bookingData = {
+ flightDetails: finalFlightDetails,
+ passenger,
+ contact,
+ document,
+ seatAllocation: showSeatComponent ? {
+ ...finalSeatAllocation,
+ isSelected: isSeatSelected,
+ } : null,
+ total: calculateTotal(),
+ apiData, // Include original API data for backend processing
+ };
+
+ if (onSubmit) {
+ onSubmit(bookingData);
+ } else if (thread) {
+ await submitInterruptResponse(thread, "booking_confirmation", bookingData);
+ } else {
+ // Demo mode - just log the data
+ console.log("Demo booking submission:", bookingData);
+ const currency = finalPaymentSummary.currency === 'INR' ? '₹' : '$';
+ alert(`Booking confirmed! Total: ${currency}${calculateTotal().toFixed(2)}`);
+ }
+ };
+
+ return (
+
+
+ {/* Header - Only show if not in bottom sheet (title is in sheet header) */}
+ {!isInBottomSheet && (
+
+ Review Your Booking
+
+ )}
+
+
+
+ {/* Desktop Two-Column Layout */}
+
+ {/* Left Column - Flight Info and Forms */}
+
+ {/* Flight Details */}
+
+
setIsFlightExpanded(!isFlightExpanded)}
+ >
+ {/* Compact View */}
+
+
+
+
+
+
{finalFlightDetails.departure.code}
+
{finalFlightDetails.departure.time}
+
+
+
+
{finalFlightDetails.arrival.code}
+
{finalFlightDetails.arrival.time}
+
+
+
+
+
+
+
{finalFlightDetails.airline.name}
+
{finalFlightDetails.airline.cabinClass}
+
+
+
+
+
+
+ {/* Chevron Icon */}
+
+ {isFlightExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {/* Expanded View */}
+ {isFlightExpanded && (
+
+ {/* Airline Info */}
+
+
+
+
+ {finalFlightDetails.airline.name}
+
+
+
+ Aircraft: {finalFlightDetails.airline.aircraftType || 'Not specified'}
+
+
+
+
+
+ {/* Route Details */}
+
+ {/* Departure */}
+
+
Departure
+
{finalFlightDetails.departure.time}
+
{finalFlightDetails.departure.city}
+
{finalFlightDetails.departure.date}
+
+
+ {/* Duration Indicator */}
+
+
{finalFlightDetails.duration}
+
+
Non-stop
+
+
+ {/* Arrival */}
+
+
Arrival
+
{finalFlightDetails.arrival.time}
+
{finalFlightDetails.arrival.city}
+
{finalFlightDetails.arrival.date}
+
+
+
+ )}
+
+
+ {/* Passenger Details */}
+
+
Passenger Details
+
+
+ {/* First Name */}
+
+
+ First Name *
+
+
{
+ setPassenger({ ...passenger, firstName: e.target.value });
+ validateField(e.target.value, 'firstName');
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.firstName ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="Enter first name"
+ />
+ {validationErrors.firstName && (
+
First name is required
+ )}
+
+
+ {/* Last Name */}
+
+
+ Last Name *
+
+
{
+ setPassenger({ ...passenger, lastName: e.target.value });
+ validateField(e.target.value, 'lastName');
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.lastName ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="Enter last name"
+ />
+ {validationErrors.lastName && (
+
Last name is required
+ )}
+
+
+ {/* Gender */}
+
+
+ Gender *
+
+
{
+ setPassenger({ ...passenger, gender: value });
+ validateField(value, 'gender');
+ }}
+ >
+
+
+
+
+ Male
+ Female
+
+
+ {validationErrors.gender && (
+
Gender is required
+ )}
+
+
+
+ {/* Footer Note */}
+
+
+ Please ensure all details match your travel documents exactly.
+
+
+
+ {/* Saved Passengers Button */}
+
+
setIsSavedPassengersExpanded(!isSavedPassengersExpanded)}
+ className="w-full flex items-center justify-between text-sm"
+ >
+ Saved Passengers
+ {isSavedPassengersExpanded ? (
+
+ ) : (
+
+ )}
+
+
+ {/* Saved Passengers List */}
+ {isSavedPassengersExpanded && (
+
+
+
+ Select a saved passenger:
+
+
+ {savedPassengers.map((savedPassenger) => (
+
handleSelectSavedPassenger(savedPassenger)}
+ className="w-full text-left p-3 bg-white border rounded-md hover:bg-blue-50 hover:border-blue-200 transition-colors duration-200"
+ >
+
+
+
+ {savedPassenger.firstName} {savedPassenger.lastName}
+
+
+ {savedPassenger.gender} • {savedPassenger.dateOfBirth ? `Born ${savedPassenger.dateOfBirth}` : 'No DOB'}
+
+
+
+
+
+ ))}
+
+
+
+ )}
+
+
+
+ {/* Contact Information */}
+
+
setIsContactExpanded(!isContactExpanded)}
+ >
+
+
+
Contact Information
+ {!isContactExpanded && (
+
+ {contact.phone} • {contact.email}
+
+ )}
+
+
+ {isContactExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {isContactExpanded && (
+
+
+ {/* Phone Number */}
+
+
+ Phone Number *
+
+
{
+ setContact({ ...contact, phone: e.target.value });
+ validateField(e.target.value, 'phone');
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.phone ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="+1 (555) 123-4567"
+ />
+ {validationErrors.phone && (
+
Phone number is required
+ )}
+
+
+ {/* Email Address */}
+
+
+ Email Address *
+
+
{
+ setContact({ ...contact, email: e.target.value });
+ validateEmail(e.target.value);
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.email ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="your.email@example.com"
+ />
+ {validationErrors.email && (
+
Valid email address is required
+ )}
+
+
+
+
+
+ We'll use this information to send you booking confirmations and updates.
+
+
+
+ )}
+
+
+ {/* Travel Documents - Only show if travelerRequirements is not null */}
+ {showTravelDocuments && (
+
+
setIsTravelDocsExpanded(!isTravelDocsExpanded)}
+ >
+
+
+
Travel Documents
+ {!isTravelDocsExpanded && document && document.type && document.number && (
+
+ {document.type} • {document.number} • Expires {document.expiryDate}
+
+ )}
+
+
+ {isTravelDocsExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {isTravelDocsExpanded && (
+
+
+ {/* Date of Birth */}
+
+
+ Date of Birth *
+
+
{
+ const dateString = date ? date.toISOString().split('T')[0] : '';
+ setPassenger({ ...passenger, dateOfBirth: dateString });
+ validateField(dateString, 'dateOfBirth');
+ }}
+ placeholder="Select date of birth"
+ disableFuture={true}
+ className={cn(
+ validationErrors.dateOfBirth ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ />
+ {validationErrors.dateOfBirth && (
+ Date of birth is required
+ )}
+
+
+ {/* Document Type */}
+
+
+ Document Type *
+
+
{
+ setDocument({ ...(document || {}), type: value } as any);
+ validateField(value, 'documentType');
+ }}
+ >
+
+
+
+
+ Passport
+ National ID
+ Driver's License
+
+
+ {validationErrors.documentType && (
+
Document type is required
+ )}
+
+
+ {/* Document Number */}
+
+
+ {document?.type || 'Document'} Number *
+
+
{
+ setDocument({ ...(document || {}), number: e.target.value } as any);
+ validateField(e.target.value, 'documentNumber');
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm font-mono focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.documentNumber ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="Enter document number"
+ />
+ {validationErrors.documentNumber && (
+
Document number is required
+ )}
+
+
+ {/* Issuing Country */}
+
+
+ Issuing Country *
+
+
{
+ setDocument({ ...(document || {}), issuingCountry: value } as any);
+ validateField(value, 'issuingCountry');
+ }}
+ placeholder="Select issuing country"
+ className={cn(
+ validationErrors.issuingCountry ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ />
+ {validationErrors.issuingCountry && (
+ Issuing country is required
+ )}
+
+
+ {/* Nationality */}
+
+
+ Nationality *
+
+
{
+ setDocument({ ...(document || {}), nationality: value } as any);
+ validateField(value, 'nationality');
+ }}
+ placeholder="Select nationality"
+ className={cn(
+ validationErrors.nationality ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ />
+ {validationErrors.nationality && (
+ Nationality is required
+ )}
+
+
+ {/* Expiry Date */}
+
+
+ Expiry Date *
+
+
{
+ const dateString = date ? date.toISOString().split('T')[0] : '';
+ setDocument({ ...(document || {}), expiryDate: dateString } as any);
+ validateField(dateString, 'expiryDate');
+ }}
+ placeholder="Select expiry date"
+ disablePast={true}
+ className={cn(
+ validationErrors.expiryDate ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ />
+ {validationErrors.expiryDate && (
+ Expiry date is required
+ )}
+ {/* Expiry Warning */}
+ {(() => {
+ if (!document?.expiryDate) return null;
+ const expiryDate = new Date(document.expiryDate);
+ const today = new Date();
+ const daysUntilExpiry = Math.ceil((expiryDate.getTime() - today.getTime()) / (1000 * 3600 * 24));
+
+ if (daysUntilExpiry < 180 && daysUntilExpiry > 0) {
+ return (
+
+ );
+ }
+ return null;
+ })()}
+
+
+
+ {/* Verification Status */}
+
+
+
+ Document verified
+
+
+
+ )}
+
+ )}
+
+
+ {/* Right Column - Payment Info and Actions */}
+
+ {/* Seat Allocation - Only show if seat data is available */}
+ {showSeatComponent && finalSeatAllocation && (
+
+
+
+
Seat Allocation
+ {isSeatSelected && (
+
+ {finalSeatAllocation.seatNumber}
+
+ )}
+
+
+ {/* Toggle Switch */}
+
+ Select seat
+ setIsSeatSelected(!isSeatSelected)}
+ className={cn(
+ "relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2",
+ isSeatSelected ? "bg-green-600" : "bg-gray-300"
+ )}
+ role="switch"
+ aria-checked={isSeatSelected}
+ aria-label="Toggle seat selection"
+ >
+
+
+
+
+ {/* Seat Card */}
+
+
+
+
+
+
+ {isSeatSelected ? `Seat ${finalSeatAllocation.seatNumber}` : "No seat selected"}
+
+
+ {isSeatSelected && (
+
{finalSeatAllocation.location}
+ )}
+
+
+
+
+ {isSeatSelected ? `${finalPaymentSummary.currency === 'INR' ? '₹' : '$'}${finalSeatAllocation.price.toFixed(2)}` : `${finalPaymentSummary.currency === 'INR' ? '₹' : '$'}0.00`}
+
+
+ {isSeatSelected ? "Seat fee" : "No fee"}
+
+
+
+
+
+ {!isSeatSelected && (
+
+
+ 💡 Select a seat to ensure you get your preferred location on the aircraft.
+
+
+ )}
+
+ )}
+
+ {/* Payment Summary */}
+
+
setIsPaymentExpanded(!isPaymentExpanded)}
+ >
+
+
+
Payment Summary
+
+ Total: {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{calculateTotal().toFixed(2)} {finalPaymentSummary.currency}
+
+
+
+ {isPaymentExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {isPaymentExpanded && (
+
+ {/* Base Fare */}
+
+ Base fare
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.baseFare.toFixed(2)}
+
+
+ {/* Taxes */}
+
+ Taxes & fees
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.taxes.toFixed(2)}
+
+
+ {/* Service Fees */}
+
+ Service fees
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.fees.toFixed(2)}
+
+
+ {/* Seat Selection - Only show if seat component is enabled */}
+ {showSeatComponent && finalSeatAllocation && (
+
+ Seat selection
+
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{isSeatSelected ? finalSeatAllocation.price.toFixed(2) : "0.00"}
+
+
+ )}
+
+ {/* Discount */}
+ {finalPaymentSummary.discount > 0 && (
+
+ Discount
+
+ -{finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.discount.toFixed(2)}
+
+
+ )}
+
+ {/* Total */}
+
+
+ Total
+
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{calculateTotal().toFixed(2)} {finalPaymentSummary.currency}
+
+
+
+
+ )}
+
+
+ {/* Desktop Action Buttons */}
+
+
+ Back
+
+
+ Confirm Booking
+
+
+
+
+
+ {/* Mobile/Tablet Single Column Layout */}
+
+ {/* Flight Details */}
+
+
setIsFlightExpanded(!isFlightExpanded)}
+ >
+ {/* Compact View */}
+
+
+ {/* Desktop Layout */}
+
+
+
+
{finalFlightDetails.departure.code}
+
{finalFlightDetails.departure.time}
+
+
+
+
{finalFlightDetails.arrival.code}
+
{finalFlightDetails.arrival.time}
+
+
+
+
+
+
{finalFlightDetails.airline.name}
+
{finalFlightDetails.airline.cabinClass}
+
+
+
+
+ {/* Mobile Layout */}
+
+
+
+
{finalFlightDetails.departure.code}
+
{finalFlightDetails.departure.time}
+
+
+
+
{finalFlightDetails.arrival.code}
+
{finalFlightDetails.arrival.time}
+
+
+
+
+
+
{finalFlightDetails.airline.name}
+
{finalFlightDetails.airline.cabinClass}
+
+
+
+
+
+ {/* Chevron Icon */}
+
+ {isFlightExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {/* Expanded View */}
+ {isFlightExpanded && (
+
+ {/* Airline Info */}
+
+
+
+
+ {finalFlightDetails.airline.name}
+
+
+
+ Aircraft: {finalFlightDetails.airline.aircraftType || 'Not specified'}
+
+
+
+
+
+ {/* Route Details */}
+
+ {/* Departure */}
+
+
Departure
+
{finalFlightDetails.departure.time}
+
{finalFlightDetails.departure.city}
+
{finalFlightDetails.departure.date}
+
+
+ {/* Duration Indicator */}
+
+
{finalFlightDetails.duration}
+
+
Non-stop
+
+
+ {/* Arrival */}
+
+
Arrival
+
{finalFlightDetails.arrival.time}
+
{finalFlightDetails.arrival.city}
+
{finalFlightDetails.arrival.date}
+
+
+
+ )}
+
+
+ {/* Passenger Details */}
+
+
Passenger Details
+
+
+ {/* First Name */}
+
+
+ First Name *
+
+
{
+ setPassenger({ ...passenger, firstName: e.target.value });
+ validateField(e.target.value, 'firstName');
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.firstName ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="Enter first name"
+ />
+ {validationErrors.firstName && (
+
First name is required
+ )}
+
+
+ {/* Last Name */}
+
+
+ Last Name *
+
+
{
+ setPassenger({ ...passenger, lastName: e.target.value });
+ validateField(e.target.value, 'lastName');
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.lastName ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="Enter last name"
+ />
+ {validationErrors.lastName && (
+
Last name is required
+ )}
+
+
+ {/* Gender */}
+
+
+ Gender *
+
+
{
+ setPassenger({ ...passenger, gender: value });
+ validateField(value, 'gender');
+ }}
+ >
+
+
+
+
+ Male
+ Female
+
+
+ {validationErrors.gender && (
+
Gender is required
+ )}
+
+
+
+ {/* Footer Note */}
+
+
+ Please ensure all details match your travel documents exactly.
+
+
+
+ {/* Saved Passengers Button */}
+
+
setIsSavedPassengersExpanded(!isSavedPassengersExpanded)}
+ className="w-full flex items-center justify-between text-sm"
+ >
+ Saved Passengers
+ {isSavedPassengersExpanded ? (
+
+ ) : (
+
+ )}
+
+
+ {/* Saved Passengers List */}
+ {isSavedPassengersExpanded && (
+
+
+
+ Select a saved passenger:
+
+
+ {savedPassengers.map((savedPassenger) => (
+
handleSelectSavedPassenger(savedPassenger)}
+ className="w-full text-left p-3 bg-white border rounded-md hover:bg-blue-50 hover:border-blue-200 transition-colors duration-200"
+ >
+
+
+
+ {savedPassenger.firstName} {savedPassenger.lastName}
+
+
+ {savedPassenger.gender} • {savedPassenger.dateOfBirth ? `Born ${savedPassenger.dateOfBirth}` : 'No DOB'}
+
+
+
+
+
+ ))}
+
+
+
+ )}
+
+
+
+ {/* Contact Information */}
+
+
setIsContactExpanded(!isContactExpanded)}
+ >
+
+
+
Contact Information
+ {!isContactExpanded && (
+
+ {contact.phone} • {contact.email}
+
+ )}
+
+
+ {isContactExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {isContactExpanded && (
+
+
+ {/* Phone Number */}
+
+
+ Phone Number *
+
+
{
+ setContact({ ...contact, phone: e.target.value });
+ validateField(e.target.value, 'phone');
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.phone ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="+1 (555) 123-4567"
+ />
+ {validationErrors.phone && (
+
Phone number is required
+ )}
+
+
+ {/* Email Address */}
+
+
+ Email Address *
+
+
{
+ setContact({ ...contact, email: e.target.value });
+ validateEmail(e.target.value);
+ }}
+ className={cn(
+ "w-full border rounded-md px-2 py-1.5 text-sm focus:ring-2 focus:ring-blue-500 focus:border-blue-500",
+ validationErrors.email ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ placeholder="your.email@example.com"
+ />
+ {validationErrors.email && (
+
Valid email address is required
+ )}
+
+
+
+
+
+ We'll use this information to send you booking confirmations and updates.
+
+
+
+ )}
+
+
+ {/* Travel Documents - Only show if travelerRequirements is not null */}
+ {showTravelDocuments && (
+
+
setIsTravelDocsExpanded(!isTravelDocsExpanded)}
+ >
+
+
+
Travel Documents
+ {!isTravelDocsExpanded && document && document.type && document.number && (
+
+ {document.type} • {document.number} • Expires {document.expiryDate}
+
+ )}
+
+
+ {isTravelDocsExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {isTravelDocsExpanded && (
+
+
+ {/* Date of Birth */}
+
+
+ Date of Birth *
+
+
{
+ const dateString = date ? date.toISOString().split('T')[0] : '';
+ setPassenger({ ...passenger, dateOfBirth: dateString });
+ validateField(dateString, 'dateOfBirth');
+ }}
+ placeholder="Select date of birth"
+ disableFuture={true}
+ className={cn(
+ validationErrors.dateOfBirth ? "border-red-500 focus:border-red-500 focus:ring-red-500" : ""
+ )}
+ />
+ {validationErrors.dateOfBirth && (
+ Date of birth is required
+ )}
+
+
+ {/* Document Type */}
+
+
+ Document Type *
+
+
{
+ setDocument({ ...(document || {}), type: value } as any);
+ validateField(value, 'documentType');
+ }}
+ >
+
+
+
+
+ Passport
+ National ID
+ Driver's License
+
+
+ {validationErrors.documentType && (
+
Document type is required
+ )}
+
+
+
+ {/* Verification Status */}
+
+
+
+ Document verified
+
+
+
+ )}
+
+ )}
+
+ {/* Seat Allocation - Only show if seat data is available */}
+ {showSeatComponent && finalSeatAllocation && (
+
+
+
+
Seat Allocation
+ {isSeatSelected && (
+
+ {finalSeatAllocation.seatNumber}
+
+ )}
+
+
+ {/* Toggle Switch */}
+
+ Select seat
+ setIsSeatSelected(!isSeatSelected)}
+ className={cn(
+ "relative inline-flex h-6 w-11 items-center rounded-full transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-green-500 focus:ring-offset-2",
+ isSeatSelected ? "bg-green-600" : "bg-gray-300"
+ )}
+ role="switch"
+ aria-checked={isSeatSelected}
+ aria-label="Toggle seat selection"
+ >
+
+
+
+
+
+ {/* Seat Card */}
+
+
+
+
+
+
+ {isSeatSelected ? `Seat ${finalSeatAllocation.seatNumber}` : "No seat selected"}
+
+
+ {isSeatSelected && (
+
{finalSeatAllocation.location}
+ )}
+
+
+
+
+ {isSeatSelected ? `${finalPaymentSummary.currency === 'INR' ? '₹' : '$'}${finalSeatAllocation.price.toFixed(2)}` : `${finalPaymentSummary.currency === 'INR' ? '₹' : '$'}0.00`}
+
+
+ {isSeatSelected ? "Seat fee" : "No fee"}
+
+
+
+
+
+ {!isSeatSelected && (
+
+
+ 💡 Select a seat to ensure you get your preferred location on the aircraft.
+
+
+ )}
+
+ )}
+
+ {/* Payment Summary */}
+
+
setIsPaymentExpanded(!isPaymentExpanded)}
+ >
+
+
+
Payment Summary
+
+ Total: {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{calculateTotal().toFixed(2)} {finalPaymentSummary.currency}
+
+
+
+ {isPaymentExpanded ? (
+
+ ) : (
+
+ )}
+
+
+
+
+ {isPaymentExpanded && (
+
+ {/* Base Fare */}
+
+ Base fare
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.baseFare.toFixed(2)}
+
+
+ {/* Taxes */}
+
+ Taxes & fees
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.taxes.toFixed(2)}
+
+
+ {/* Service Fees */}
+
+ Service fees
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.fees.toFixed(2)}
+
+
+ {/* Seat Selection - Only show if seat component is enabled */}
+ {showSeatComponent && finalSeatAllocation && (
+
+ Seat selection
+
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{isSeatSelected ? finalSeatAllocation.price.toFixed(2) : "0.00"}
+
+
+ )}
+
+ {/* Discount */}
+ {finalPaymentSummary.discount > 0 && (
+
+ Discount
+
+ -{finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{finalPaymentSummary.discount.toFixed(2)}
+
+
+ )}
+
+ {/* Total */}
+
+
+ Total
+
+ {finalPaymentSummary.currency === 'INR' ? '₹' : '$'}{calculateTotal().toFixed(2)} {finalPaymentSummary.currency}
+
+
+
+
+ )}
+
+
+
+ {/* Action Buttons */}
+ {isInBottomSheet ? (
+ // Bottom sheet buttons - always sticky at bottom
+
+
+
+ Back
+
+
+ Confirm Booking
+
+
+
+ ) : (
+ // Mobile/Tablet Sticky Button (Desktop buttons are in the right column)
+ // Only show on mobile/tablet, hidden on desktop (lg and above)
+
+
+ Confirm Booking
+
+
+ )}
+
+
+ );
+};
+
+export default ReviewWidget;
diff --git a/src/components/widgets/searchCriteria.widget.tsx b/src/components/widgets/searchCriteria.widget.tsx
new file mode 100644
index 00000000..2fce7f5c
--- /dev/null
+++ b/src/components/widgets/searchCriteria.widget.tsx
@@ -0,0 +1,452 @@
+"use client";
+
+import React, { useState, useEffect } from "react";
+import { Button } from "@/components/common/ui/button";
+import { Plus, Minus, CalendarIcon } from "lucide-react";
+import { AirportCombobox } from "@/components/common/ui/airportCombobox";
+import { cn } from "@/lib/utils";
+import { useStreamContext } from "@/providers/Stream";
+import {submitInterruptResponse} from "./util";
+import {
+ Popover,
+ PopoverContent,
+ PopoverTrigger,
+} from "@/components/common/ui/popover";
+import { Calendar } from "@/components/ui/calendar";
+import { getUserLocation, LocationResult } from "@/lib/utils";
+
+// DateInput component using shadcn Calendar
+interface DateInputProps {
+ date?: Date;
+ onDateChange?: (date: Date | undefined) => void;
+ placeholder?: string;
+ className?: string;
+}
+
+const DateInput = ({
+ date,
+ onDateChange,
+ placeholder,
+ className,
+}: DateInputProps) => {
+ const [isOpen, setIsOpen] = useState(false);
+
+ const formatDateDisplay = (date: Date | undefined) => {
+ if (!date) return placeholder || "Select date";
+ const options: Intl.DateTimeFormatOptions = {
+ weekday: 'short',
+ day: 'numeric',
+ month: 'short',
+ year: 'numeric'
+ };
+ return date.toLocaleDateString('en-US', options);
+ };
+
+ const today = new Date();
+ today.setHours(0, 0, 0, 0);
+
+ return (
+
+
+
+
+ {formatDateDisplay(date)}
+
+
+
+ {
+ onDateChange?.(selectedDate);
+ setIsOpen(false);
+ }}
+ disabled={(date: Date) => date < today}
+ initialFocus
+ />
+
+
+ );
+};
+
+const SearchCriteriaWidget = (args: Record) => {
+ const thread = useStreamContext();
+
+ // Extract data from args
+ const flightSearchCriteria = args.flightSearchCriteria || {};
+
+ // Initialize state from args
+ const [tripType, setTripType] = useState<"oneway" | "round">(
+ flightSearchCriteria.isRoundTrip ? "round" : "oneway",
+ );
+
+ // Separate traveller counts
+ const [adults, setAdults] = useState(flightSearchCriteria.adults || 1);
+ const [children, setChildren] = useState(flightSearchCriteria.children || 0);
+ const [infants, setInfants] = useState(flightSearchCriteria.infants || 0);
+
+ const [flightClass, setFlightClass] = useState(
+ flightSearchCriteria.class
+ ? flightSearchCriteria.class.charAt(0).toUpperCase() +
+ flightSearchCriteria.class.slice(1)
+ : "Economy",
+ );
+ const [fromAirport, setFromAirport] = useState(
+ flightSearchCriteria.originAirport || "",
+ );
+ const [toAirport, setToAirport] = useState(
+ flightSearchCriteria.destinationAirport || "",
+ );
+ const [departureDate, setDepartureDate] = useState(
+ flightSearchCriteria.departureDate
+ ? new Date(flightSearchCriteria.departureDate)
+ : undefined,
+ );
+ const [returnDate, setReturnDate] = useState(
+ flightSearchCriteria.returnDate ? new Date(flightSearchCriteria.returnDate) : undefined,
+ );
+ const [isLoading, setIsLoading] = useState(false);
+ const [showTravellerDropdown, setShowTravellerDropdown] = useState(false);
+
+ // Location-related state
+ const [locationResult, setLocationResult] = useState(null);
+ const [isGettingLocation, setIsGettingLocation] = useState(false);
+
+ // Request user location when component loads
+ useEffect(() => {
+ const requestLocation = async () => {
+ setIsGettingLocation(true);
+ try {
+ const result = await getUserLocation();
+ setLocationResult(result);
+
+ if (result.success) {
+ console.log("Location obtained successfully:", result.data);
+ // You can use the location data here if needed
+ // For example, to find nearby airports or set default location
+ } else {
+ console.log("Location request failed:", result.error);
+ }
+ } catch (error) {
+ console.error("Unexpected error getting location:", error);
+ setLocationResult({
+ success: false,
+ error: {
+ code: -1,
+ message: "Unexpected error occurred while getting location"
+ }
+ });
+ } finally {
+ setIsGettingLocation(false);
+ }
+ };
+
+ requestLocation();
+ }, [setLocationResult, setIsGettingLocation]); // Dependencies to avoid warnings
+
+ // Wrapper functions for date state setters to match DateInput component interface
+ const handleDepartureDateChange = (date: Date | undefined) => {
+ setDepartureDate(date);
+ };
+
+ const handleReturnDateChange = (date: Date | undefined) => {
+ setReturnDate(date);
+ };
+
+
+
+ const handleSubmit = async (e: React.FormEvent) => {
+ e.preventDefault();
+ setIsLoading(true);
+
+ const responseData = {
+ flightSearchCriteria: {
+ adults,
+ children,
+ infants,
+ class: flightClass.toLowerCase(),
+ departureDate: departureDate?.toISOString().split("T")[0],
+ returnDate: returnDate?.toISOString().split("T")[0],
+ destinationAirport: toAirport,
+ originAirport: fromAirport,
+ isRoundTrip: tripType === "round",
+ passengers: [{ id: 1, type: "adult" }],
+ },
+ selectedTravellerIds: [],
+ allTravellers: [],
+ };
+
+ try {
+ await submitInterruptResponse(thread, "response", responseData);
+ } catch (error: any) {
+ console.error("Error submitting interrupt response:", error);
+ // Optional: already handled inside the utility
+ } finally {
+ setIsLoading(false);
+ }
+ };
+
+ // Helper functions for traveller counts
+ const getTotalTravellers = () => adults + children + infants;
+
+ const formatTravellerText = () => {
+ const total = getTotalTravellers();
+ if (total === 1 && adults === 1) {
+ return `1 Adult, ${flightClass}`;
+ }
+
+ const parts = [];
+ if (adults > 0) parts.push(`${adults} Adult${adults > 1 ? 's' : ''}`);
+ if (children > 0) parts.push(`${children} Child${children > 1 ? 'ren' : ''}`);
+ if (infants > 0) parts.push(`${infants} Infant${infants > 1 ? 's' : ''}`);
+
+ return `${parts.join(', ')}, ${flightClass}`;
+ };
+
+
+
+ return (
+ <>
+
+
+
+ >
+ );
+};
+
+export default SearchCriteriaWidget;
diff --git a/src/components/widgets/util.ts b/src/components/widgets/util.ts
new file mode 100644
index 00000000..e919468d
--- /dev/null
+++ b/src/components/widgets/util.ts
@@ -0,0 +1,58 @@
+// src/utils/submitInterruptResponse.ts
+
+import { toast } from "sonner";
+
+// Mock auth functions for development - replace with actual imports when authService is available
+const getJwtToken = (): string | null => {
+ try {
+ if (typeof window === "undefined") return null;
+ return window.localStorage.getItem("flyo:jwt:token");
+ } catch {
+ return null;
+ }
+};
+
+const GetUserId = (jwtToken: string): string | number => {
+ try {
+ // Simple mock implementation
+ return "mock-user-id";
+ } catch (err) {
+ console.error("Error getting user ID from JWT:", err);
+ return "";
+ }
+};
+
+export async function submitInterruptResponse(
+ thread: any, // Replace with proper type from your stream context
+ type: string,
+ data: Record,
+): Promise {
+ try {
+ // Get user ID from JWT token
+ const jwtToken = getJwtToken();
+ const userId = jwtToken ? GetUserId(jwtToken) : null;
+
+ await thread.submit(
+ { userId },
+ {
+ command: {
+ resume: [
+ {
+ type,
+ data,
+ },
+ ],
+ },
+ },
+ );
+ } catch (error) {
+ console.error("Error submitting response:", error);
+ toast.error("Error", {
+ description: "Failed to submit response.",
+ richColors: true,
+ closeButton: true,
+ duration: 5000,
+ });
+ throw error; // rethrow if the calling function needs to handle it
+ }
+}
diff --git a/src/components/widgets/weather.widget.tsx b/src/components/widgets/weather.widget.tsx
new file mode 100644
index 00000000..aba24e63
--- /dev/null
+++ b/src/components/widgets/weather.widget.tsx
@@ -0,0 +1,127 @@
+'use client';
+
+import React from 'react';
+import { Sun, Cloud, CloudRain, Sunset } from 'lucide-react';
+
+interface HourlyForecast {
+ time: string;
+ temperature: number;
+ icon: 'sun' | 'cloud-sun' | 'sunset' | 'cloud';
+}
+
+interface WeatherData {
+ city: string;
+ currentTemp: number;
+ warning?: string;
+ hourlyForecast: HourlyForecast[];
+}
+
+// Mock weather data matching the image
+const mockWeatherData: WeatherData = {
+ city: 'Asheville',
+ currentTemp: 47,
+ warning: 'Winter storm warning',
+ hourlyForecast: [
+ { time: '4PM', temperature: 46, icon: 'sun' },
+ { time: '5PM', temperature: 44, icon: 'sun' },
+ { time: '6PM', temperature: 41, icon: 'cloud-sun' },
+ { time: '6:14', temperature: 41, icon: 'sunset' },
+ { time: '7PM', temperature: 37, icon: 'cloud' },
+ { time: '8PM', temperature: 35, icon: 'cloud' },
+ ]
+};
+
+const WeatherIcon = ({ type, className }: { type: string; className?: string }) => {
+ switch (type) {
+ case 'sun':
+ return ;
+ case 'cloud-sun':
+ return (
+
+
+
+
+ );
+ case 'sunset':
+ return ;
+ case 'cloud':
+ return ;
+ default:
+ return ;
+ }
+};
+
+const WeatherWidget = () => {
+ const weather = mockWeatherData;
+
+ return (
+
+ {/* Background decorative elements */}
+
+
+ {/* Main content */}
+
+ {/* Header */}
+
+
+
+ {weather.city}
+
+
+ {weather.currentTemp}°
+
+
+
+
+
+
+
+ {/* Warning */}
+ {weather.warning && (
+
+
+ {weather.warning}
+
+
+ )}
+
+ {/* Hourly Forecast */}
+
+ {weather.hourlyForecast.map((hour, index) => (
+
+ {/* Time */}
+
+ {hour.time}
+
+
+ {/* Icon */}
+
+
+
+
+ {/* Temperature */}
+
+ {hour.temperature}°
+
+
+ ))}
+
+
+
+ );
+};
+
+export default WeatherWidget;
diff --git a/src/lib/utils.ts b/src/lib/utils.ts
index a5ef1935..90a78293 100644
--- a/src/lib/utils.ts
+++ b/src/lib/utils.ts
@@ -4,3 +4,125 @@ import { twMerge } from "tailwind-merge";
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
+
+// Location-related types
+export interface LocationData {
+ latitude: number;
+ longitude: number;
+ accuracy: number;
+ timestamp: number;
+}
+
+export interface LocationError {
+ code: number;
+ message: string;
+}
+
+export interface LocationResult {
+ success: boolean;
+ data?: LocationData;
+ error?: LocationError;
+}
+
+/**
+ * Reusable function to get user's current location
+ * Handles permission requests and location fetching
+ * @param options - Geolocation options (optional)
+ * @returns Promise - Location data or error
+ */
+export async function getUserLocation(
+ options: PositionOptions = {
+ enableHighAccuracy: true,
+ timeout: 10000,
+ maximumAge: 300000, // 5 minutes
+ },
+): Promise {
+ // Check if geolocation is supported
+ if (!navigator.geolocation) {
+ return {
+ success: false,
+ error: {
+ code: -1,
+ message: "Geolocation is not supported by this browser",
+ },
+ };
+ }
+
+ try {
+ // Check current permission status
+ const permission = await navigator.permissions.query({
+ name: "geolocation",
+ });
+
+ console.log(`Geolocation permission status: ${permission.state}`);
+
+ // If permission is denied, return error
+ if (permission.state === "denied") {
+ return {
+ success: false,
+ error: {
+ code: 1,
+ message:
+ "Location access denied. Please enable location permissions in your browser settings.",
+ },
+ };
+ }
+
+ // Get current position
+ const position = await new Promise(
+ (resolve, reject) => {
+ navigator.geolocation.getCurrentPosition(resolve, reject, options);
+ },
+ );
+
+ const locationData: LocationData = {
+ latitude: position.coords.latitude,
+ longitude: position.coords.longitude,
+ accuracy: position.coords.accuracy,
+ timestamp: position.timestamp,
+ };
+
+ console.log("User location obtained:", locationData);
+
+ return {
+ success: true,
+ data: locationData,
+ };
+ } catch (error: any) {
+ let errorMessage = "Failed to get location";
+ let errorCode = 0;
+
+ if (error.code) {
+ switch (error.code) {
+ case 1: // PERMISSION_DENIED
+ errorMessage = "Location access denied by user";
+ errorCode = 1;
+ break;
+ case 2: // POSITION_UNAVAILABLE
+ errorMessage = "Location information unavailable";
+ errorCode = 2;
+ break;
+ case 3: // TIMEOUT
+ errorMessage = "Location request timed out";
+ errorCode = 3;
+ break;
+ default:
+ errorMessage = error.message || "Unknown location error";
+ errorCode = error.code;
+ }
+ }
+
+ console.error("Location error:", {
+ code: errorCode,
+ message: errorMessage,
+ });
+
+ return {
+ success: false,
+ error: {
+ code: errorCode,
+ message: errorMessage,
+ },
+ };
+ }
+}
diff --git a/src/providers/Stream.tsx b/src/providers/Stream.tsx
index b6d0c091..6e400676 100644
--- a/src/providers/Stream.tsx
+++ b/src/providers/Stream.tsx
@@ -17,13 +17,14 @@ import {
import { useQueryState } from "nuqs";
import { Input } from "@/components/ui/input";
import { Button } from "@/components/ui/button";
-import { LangGraphLogoSVG } from "@/components/icons/langgraph";
+import { FlyoLogoSVG } from "@/components/icons/langgraph";
import { Label } from "@/components/ui/label";
import { ArrowRight } from "lucide-react";
import { PasswordInput } from "@/components/ui/password-input";
import { getApiKey } from "@/lib/api-key";
import { useThreads } from "./Thread";
import { toast } from "sonner";
+import { storeThread } from "@/utils/thread-storage";
export type StateType = { messages: Message[]; ui?: UIMessage[] };
@@ -93,10 +94,34 @@ const StreamSession = ({
}
},
onThreadId: (id) => {
+ console.log("New thread ID created:", id);
setThreadId(id);
+
+ // Store new thread in local storage immediately
+ storeThread({
+ thread_id: id,
+ assistant_id: assistantId,
+ title: "New Chat",
+ messages_count: 0,
+ });
+
// Refetch threads list when thread ID changes.
// Wait for some seconds before fetching so we're able to get the new thread that was created.
- sleep().then(() => getThreads().then(setThreads).catch(console.error));
+ sleep().then(() => {
+ console.log("Refetching threads after new thread creation...");
+ getThreads()
+ .then((threads) => {
+ console.log(`Fetched ${threads.length} threads after creation`);
+ setThreads(threads);
+ })
+ .catch((error) => {
+ console.error("Failed to refetch threads:", error);
+ });
+ });
+ },
+ onUpdateEvent: (data) => {
+ // Log the complete data received from the LangGraph backend
+ console.log("LangGraph backend full update:", data);
},
});
@@ -167,13 +192,10 @@ export const StreamProvider: React.FC<{ children: ReactNode }> = ({
-
-
- Agent Chat
-
+
- Welcome to Agent Chat! Before you get started, you need to enter
+ Welcome to Flyo Chat! Before you get started, you need to enter
the URL of the deployment and the assistant / graph ID.
@@ -234,9 +256,9 @@ export const StreamProvider: React.FC<{ children: ReactNode }> = ({
LangSmith API Key
This is NOT required if using a local LangGraph
- server. This value is stored in your browser's local storage and
- is only used to authenticate requests sent to your LangGraph
- server.
+ server. This value is stored in your browser's local
+ storage and is only used to authenticate requests sent to your
+ LangGraph server.
Promise;
@@ -41,16 +46,51 @@ export function ThreadProvider({ children }: { children: ReactNode }) {
const getThreads = useCallback(async (): Promise => {
if (!apiUrl || !assistantId) return [];
- const client = createClient(apiUrl, getApiKey() ?? undefined);
- const threads = await client.threads.search({
- metadata: {
- ...getThreadSearchMetadata(assistantId),
- },
- limit: 100,
- });
+ try {
+ const client = createClient(apiUrl, getApiKey() ?? undefined);
+
+ // Try multiple search strategies to find threads
+ let threads: Thread[] = [];
+
+ // Strategy 1: Search with metadata
+ try {
+ threads = await client.threads.search({
+ metadata: {
+ ...getThreadSearchMetadata(assistantId),
+ },
+ limit: 100,
+ });
+ console.log(`Found ${threads.length} threads with metadata search`);
+ } catch (error) {
+ console.warn("Metadata search failed:", error);
+ }
+
+ // Strategy 2: If no threads found, try without metadata (fallback)
+ if (threads.length === 0) {
+ try {
+ threads = await client.threads.search({
+ limit: 100,
+ });
+ console.log(`Found ${threads.length} threads with general search`);
+ } catch (error) {
+ console.warn("General search failed:", error);
+ }
+ }
+
+ // Strategy 3: If server search fails, use local storage as fallback
+ if (threads.length === 0) {
+ console.log("Using local storage fallback for threads");
+ const storedThreads = getStoredThreads();
+ threads = convertStoredThreadsToThreads(storedThreads);
+ console.log(`Found ${threads.length} threads from local storage`);
+ }
- return threads;
+ return threads;
+ } catch (error) {
+ console.error("Failed to fetch threads:", error);
+ return [];
+ }
}, [apiUrl, assistantId]);
const value = {
diff --git a/src/review.json b/src/review.json
new file mode 100644
index 00000000..96626e60
--- /dev/null
+++ b/src/review.json
@@ -0,0 +1,220 @@
+{
+ "value": {
+ "type": "widget",
+ "widget": {
+ "type": "TravelerDetailsWidget",
+ "args": {
+ "flightItinerary": {
+ "userContext": {
+ "userDetails": {
+ "travellerId": 27912,
+ "firstName": "MITESH JAGDISH",
+ "lastName": "BALDHA",
+ "dateOfBirth": "1989-01-25",
+ "gender": "Male",
+ "nationality": "Indian",
+ "numberOfFlights": 57,
+ "email": "ceo@explerainc.com",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": "+919737332299"
+ }
+ ],
+ "isPrimaryTraveller": true,
+ "documents": [
+ {
+ "documentId": 55,
+ "documentType": "passport",
+ "documentNumber": "Z6956116",
+ "nationality": "India",
+ "expiryDate": "2033-03-01",
+ "issuingDate": "2017-05-31",
+ "issuingCountry": "India",
+ "documentUrl": "https://hh-boarding-pass.s3.ap-south-1.amazonaws.com/user-documents/12118_1753255060955_4_PASSPORT___MITESH_BALDHA_2.jpg"
+ }
+ ]
+ },
+ "savedTravellers": [
+ {
+ "travellerId": 27912,
+ "firstName": "MITESH JAGDISH",
+ "lastName": "BALDHA",
+ "dateOfBirth": "1989-01-25",
+ "gender": "Male",
+ "nationality": "Indian",
+ "numberOfFlights": 57,
+ "email": "ceo@explerainc.com",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": "+919737332299"
+ }
+ ],
+ "isPrimaryTraveller": true,
+ "documents": [
+ {
+ "documentId": 55,
+ "documentType": "passport",
+ "documentNumber": "Z6956116",
+ "nationality": "India",
+ "expiryDate": "2033-03-01",
+ "issuingDate": "2017-05-31",
+ "issuingCountry": "India",
+ "documentUrl": "https://hh-boarding-pass.s3.ap-south-1.amazonaws.com/user-documents/12118_1753255060955_4_PASSPORT___MITESH_BALDHA_2.jpg"
+ }
+ ]
+ },
+ {
+ "travellerId": 27896,
+ "firstName": "SANDEEP VITHALBHAI",
+ "lastName": "SOJITRA",
+ "dateOfBirth": "",
+ "gender": "Male",
+ "nationality": "Indian",
+ "numberOfFlights": 19,
+ "email": "explera.surat@gmail.com",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": "+919624332299"
+ }
+ ],
+ "isPrimaryTraveller": false,
+ "documents": [
+ {
+ "documentId": 74,
+ "documentType": "passport",
+ "documentNumber": "Z3690598",
+ "nationality": "India",
+ "expiryDate": "2027-02-07",
+ "issuingDate": "2017-02-08",
+ "issuingCountry": "Surat, India",
+ "documentUrl": "https://hh-boarding-pass.s3.ap-south-1.amazonaws.com/user-documents/12118_1753603930881_Screenshot_2025_07_27_at_13.41.58.png"
+ }
+ ]
+ },
+ {
+ "travellerId": 27937,
+ "firstName": "LABHUBEN MANUBHAI",
+ "lastName": "MANGUKIYA",
+ "dateOfBirth": "1956-04-20",
+ "gender": "Female",
+ "nationality": "Indian",
+ "numberOfFlights": 18,
+ "email": "explera.surat@gmail.com",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": "+919624332299"
+ }
+ ],
+ "isPrimaryTraveller": false,
+ "documents": [
+ {
+ "documentId": 68,
+ "documentType": "passport",
+ "documentNumber": "Z4757908",
+ "nationality": "India",
+ "expiryDate": "2028-04-17",
+ "issuingDate": "2018-04-18",
+ "issuingCountry": "India",
+ "documentUrl": "https://hh-boarding-pass.s3.ap-south-1.amazonaws.com/user-documents/12118_1753266660047_LABHUBEN_MANGUKIYA_Passport_Fornt.jpg"
+ }
+ ]
+ },
+ {
+ "travellerId": 27902,
+ "firstName": "kedkanok",
+ "lastName": "saithongtae",
+ "dateOfBirth": "",
+ "gender": "",
+ "nationality": "N/A",
+ "numberOfFlights": 16,
+ "email": "jdhjks@gmail.comd",
+ "phone": [
+ {
+ "countryCode": "",
+ "number": ""
+ }
+ ],
+ "isPrimaryTraveller": false,
+ "documents": []
+ }
+ ]
+ },
+ "selectionContext": {
+ "selectedFlightOffers": [
+ {
+ "flightOfferId": "1",
+ "totalEmission": 0,
+ "totalEmissionUnit": "Kg",
+ "currency": "INR",
+ "totalAmount": 5015,
+ "duration": "PT2H55M",
+ "departure": {
+ "date": "2025-08-24T10:25:00",
+ "airportIata": "BLR",
+ "airportName": "",
+ "cityCode": "BLR",
+ "countryCode": "IN"
+ },
+ "arrival": {
+ "date": "2025-08-24T13:20:00",
+ "airportIata": "DEL",
+ "airportName": "",
+ "cityCode": "DEL",
+ "countryCode": "IN"
+ },
+ "segments": [
+ {
+ "id": "98",
+ "airlineIata": "AI",
+ "flightNumber": "9478",
+ "duration": "PT2H55M",
+ "aircraftType": "BOEING 737 ALL SERIES PASSENGER",
+ "airlineName": "",
+ "departure": {
+ "date": "2025-08-24T10:25:00",
+ "airportIata": "BLR",
+ "airportName": "",
+ "cityCode": "BLR",
+ "countryCode": "IN"
+ },
+ "arrival": {
+ "date": "2025-08-24T13:20:00",
+ "airportIata": "DEL",
+ "airportName": "",
+ "cityCode": "DEL",
+ "countryCode": "IN"
+ }
+ }
+ ],
+ "offerRules": {
+ "isRefundable": false
+ },
+ "rankingScore": 0,
+ "pros": [],
+ "cons": [],
+ "tags": [
+ "cheapest",
+ "recommended"
+ ]
+ }
+ ]
+ }
+ },
+ "bookingRequirements": {
+ "emailAddressRequired": true,
+ "invoiceAddressRequired": false,
+ "mailingAddressRequired": false,
+ "phoneCountryCodeRequired": false,
+ "mobilePhoneNumberRequired": true,
+ "phoneNumberRequired": false,
+ "postalCodeRequired": false,
+ "travelerRequirements": null
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/services/airportService.ts b/src/services/airportService.ts
new file mode 100644
index 00000000..5390939f
--- /dev/null
+++ b/src/services/airportService.ts
@@ -0,0 +1,45 @@
+interface AirportApiResponse {
+ k: string; // Airport code
+ v: string; // Full airport description
+}
+
+export async function searchAirports(
+ query: string,
+): Promise {
+ if (!query || query.trim().length === 0) {
+ return [];
+ }
+
+ const trimmedQuery = query.trim();
+
+ // First try direct API call
+ try {
+ const directUrl = `https://www.cleartrip.com/places/airports/search?string=${encodeURIComponent(trimmedQuery)}`;
+ const response = await fetch(directUrl);
+
+ if (response.ok) {
+ const data: AirportApiResponse[] = await response.json();
+ return Array.isArray(data) ? data : [];
+ }
+ } catch (directError) {
+ console.log("Direct API call failed, trying proxy:", directError);
+ }
+
+ // Fallback to proxy API if direct call fails (likely due to CORS)
+ try {
+ const proxyUrl = `/api/airports/search?string=${encodeURIComponent(trimmedQuery)}`;
+ const response = await fetch(proxyUrl);
+
+ if (!response.ok) {
+ throw new Error(
+ `Proxy API failed: ${response.status} ${response.statusText}`,
+ );
+ }
+
+ const data: AirportApiResponse[] = await response.json();
+ return Array.isArray(data) ? data : [];
+ } catch (proxyError) {
+ console.error("Both direct and proxy API calls failed:", proxyError);
+ return [];
+ }
+}
diff --git a/src/services/authService.ts b/src/services/authService.ts
new file mode 100644
index 00000000..53e97fcb
--- /dev/null
+++ b/src/services/authService.ts
@@ -0,0 +1,164 @@
+export interface AuthTokens {
+ accessToken: string;
+ refreshToken: string;
+ idToken: string;
+}
+
+export interface LoginResponse {
+ jwtToken: string;
+ userType: string;
+}
+
+/**
+ * Login with Google OAuth tokens
+ */
+export const loginWithGoogle = async (
+ tokens: AuthTokens,
+): Promise => {
+ try {
+ console.log("Login request tokens:", tokens);
+ console.log(
+ "Login request URL:",
+ `https://prod-api.flyo.ai/core/v2/websiteLogin`,
+ );
+
+ const response = await fetch(
+ `https://prod-api.flyo.ai/core/v2/websiteLogin`,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ accessToken: tokens.accessToken,
+ refreshToken: tokens.refreshToken,
+ idToken: tokens.idToken,
+ }),
+ },
+ );
+
+ if (!response.ok) {
+ const errorData = await response.json().catch(() => ({}));
+ throw new Error(
+ `Login failed: ${errorData.message || response.statusText}`,
+ );
+ }
+
+ const loginResponse: LoginResponse = await response.json();
+ return loginResponse;
+ } catch (error) {
+ console.error("Error in loginWithGoogle:", error);
+ throw error;
+ }
+};
+
+/**
+ * Check if user is authenticated by checking JWT token in localStorage
+ */
+export const isAuthenticated = (): boolean => {
+ try {
+ if (typeof window === "undefined") return false;
+ const token = window.localStorage.getItem("flyo:jwt:token");
+ return !!token;
+ } catch {
+ return false;
+ }
+};
+
+/**
+ * Store JWT token in localStorage with validation
+ */
+export const storeJwtTokenWithValidation = (
+ jwtToken: string,
+ userType: string,
+): void => {
+ try {
+ if (!jwtToken) {
+ throw new Error("JWT token is required");
+ }
+
+ // Store the JWT token
+ window.localStorage.setItem("flyo:jwt:token", jwtToken);
+ window.localStorage.setItem("flyo:user:type", userType);
+
+ console.log("JWT token stored successfully");
+ } catch (error) {
+ console.error("Error storing JWT token:", error);
+ throw error;
+ }
+};
+
+/**
+ * Get stored JWT token
+ */
+export const getJwtToken = (): string | null => {
+ try {
+ if (typeof window === "undefined") return null;
+ return window.localStorage.getItem("flyo:jwt:token");
+ } catch {
+ return null;
+ }
+};
+
+/**
+ * Clear authentication data
+ */
+export const clearAuthData = (): void => {
+ try {
+ if (typeof window === "undefined") return;
+ window.localStorage.removeItem("flyo:jwt:token");
+ window.localStorage.removeItem("flyo:user:type");
+ } catch (error) {
+ console.error("Error clearing auth data:", error);
+ }
+};
+
+/**
+ * Logout user and redirect to login page
+ */
+export const logout = (): void => {
+ clearAuthData();
+ if (typeof window !== "undefined") {
+ window.location.href = "/login";
+ }
+};
+
+export const decodeJwtPayload = (token: string): any => {
+ try {
+ // Split the token into parts
+ const parts = token.split(".");
+ if (parts.length !== 3) {
+ throw new Error("Invalid JWT token format");
+ }
+
+ // Decode the payload (second part)
+ const payload = parts[1];
+
+ // Add padding if needed for base64 decoding
+ const paddedPayload = payload + "=".repeat((4 - (payload.length % 4)) % 4);
+
+ // Decode base64url to string
+ const decodedPayload = atob(
+ paddedPayload.replace(/-/g, "+").replace(/_/g, "/"),
+ );
+
+ // Parse JSON
+ return JSON.parse(decodedPayload);
+ } catch (err) {
+ console.error("Error decoding JWT payload:", err);
+ return null;
+ }
+};
+
+export const GetUserId = (jwtToken: string): string | number => {
+ try {
+ const decoded = decodeJwtPayload(jwtToken);
+ if (decoded && decoded.userId) {
+ return decoded.userId;
+ }
+ return "";
+ } catch (err) {
+ console.error("Error getting user ID from JWT:", err);
+ return "";
+ }
+};
diff --git a/src/utils/image-size-enforcer.ts b/src/utils/image-size-enforcer.ts
new file mode 100644
index 00000000..af0cfbb7
--- /dev/null
+++ b/src/utils/image-size-enforcer.ts
@@ -0,0 +1,100 @@
+/**
+ * Image Size Enforcer - JavaScript-based image size control
+ * This provides a fallback for any images that bypass CSS rules
+ */
+
+export function enforceImageSizes() {
+ // Function to resize an image element
+ const resizeImage = (img: HTMLImageElement) => {
+ const maxHeight = window.innerWidth <= 480 ? 160 : window.innerWidth <= 768 ? 224 : 288;
+
+ // Apply styles directly to the element
+ img.style.setProperty('max-width', '100%', 'important');
+ img.style.setProperty('width', 'auto', 'important');
+ img.style.setProperty('height', 'auto', 'important');
+ img.style.setProperty('max-height', `${maxHeight}px`, 'important');
+ img.style.setProperty('object-fit', 'contain', 'important');
+ img.style.setProperty('border-radius', '8px', 'important');
+ img.style.setProperty('box-shadow', '0 2px 8px rgba(0, 0, 0, 0.1)', 'important');
+ img.style.setProperty('display', 'block', 'important');
+ img.style.setProperty('margin', '1rem auto', 'important');
+ };
+
+ // Process all existing images
+ const processExistingImages = () => {
+ const images = document.querySelectorAll('img');
+ images.forEach(resizeImage);
+ };
+
+ // Set up mutation observer to catch dynamically added images
+ const setupMutationObserver = () => {
+ const observer = new MutationObserver((mutations) => {
+ mutations.forEach((mutation) => {
+ mutation.addedNodes.forEach((node) => {
+ if (node.nodeType === Node.ELEMENT_NODE) {
+ const element = node as Element;
+
+ // Check if the added node is an image
+ if (element.tagName === 'IMG') {
+ resizeImage(element as HTMLImageElement);
+ }
+
+ // Check for images within the added node
+ const images = element.querySelectorAll('img');
+ images.forEach(resizeImage);
+ }
+ });
+ });
+ });
+
+ observer.observe(document.body, {
+ childList: true,
+ subtree: true,
+ });
+
+ return observer;
+ };
+
+ // Set up resize listener for responsive behavior
+ const setupResizeListener = () => {
+ let resizeTimeout: NodeJS.Timeout;
+
+ const handleResize = () => {
+ clearTimeout(resizeTimeout);
+ resizeTimeout = setTimeout(() => {
+ processExistingImages();
+ }, 100);
+ };
+
+ window.addEventListener('resize', handleResize);
+
+ return () => window.removeEventListener('resize', handleResize);
+ };
+
+ // Initialize everything
+ const init = () => {
+ // Process images immediately
+ processExistingImages();
+
+ // Set up observers
+ const observer = setupMutationObserver();
+ const cleanupResize = setupResizeListener();
+
+ // Return cleanup function
+ return () => {
+ observer.disconnect();
+ cleanupResize();
+ };
+ };
+
+ return init();
+}
+
+// Auto-initialize when DOM is ready
+if (typeof window !== 'undefined') {
+ if (document.readyState === 'loading') {
+ document.addEventListener('DOMContentLoaded', enforceImageSizes);
+ } else {
+ enforceImageSizes();
+ }
+}
diff --git a/src/utils/thread-storage.ts b/src/utils/thread-storage.ts
new file mode 100644
index 00000000..b1930777
--- /dev/null
+++ b/src/utils/thread-storage.ts
@@ -0,0 +1,153 @@
+/**
+ * Local storage utilities for thread persistence
+ * Provides fallback storage when server-side thread storage fails
+ */
+
+import { Thread } from "@langchain/langgraph-sdk";
+
+const STORAGE_KEY = "flyo:chat:threads";
+const MAX_STORED_THREADS = 50;
+
+export interface StoredThread {
+ thread_id: string;
+ created_at: string;
+ updated_at: string;
+ title: string;
+ assistant_id: string;
+ user_id?: string;
+ messages_count: number;
+ first_message?: string;
+}
+
+/**
+ * Get threads from local storage
+ */
+export function getStoredThreads(): StoredThread[] {
+ try {
+ if (typeof window === "undefined") return [];
+ const stored = localStorage.getItem(STORAGE_KEY);
+ if (!stored) return [];
+
+ const threads = JSON.parse(stored) as StoredThread[];
+ return threads.sort((a, b) => new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime());
+ } catch (error) {
+ console.error("Failed to get stored threads:", error);
+ return [];
+ }
+}
+
+/**
+ * Store a thread in local storage
+ */
+export function storeThread(thread: Partial): void {
+ try {
+ if (typeof window === "undefined") return;
+
+ const threads = getStoredThreads();
+ const existingIndex = threads.findIndex(t => t.thread_id === thread.thread_id);
+
+ const storedThread: StoredThread = {
+ thread_id: thread.thread_id || "",
+ created_at: thread.created_at || new Date().toISOString(),
+ updated_at: new Date().toISOString(),
+ title: thread.title || thread.first_message || "New Chat",
+ assistant_id: thread.assistant_id || "",
+ user_id: thread.user_id,
+ messages_count: thread.messages_count || 0,
+ first_message: thread.first_message,
+ };
+
+ if (existingIndex >= 0) {
+ threads[existingIndex] = storedThread;
+ } else {
+ threads.unshift(storedThread);
+ }
+
+ // Keep only the most recent threads
+ const trimmedThreads = threads.slice(0, MAX_STORED_THREADS);
+
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(trimmedThreads));
+ console.log("Thread stored locally:", storedThread.thread_id);
+ } catch (error) {
+ console.error("Failed to store thread:", error);
+ }
+}
+
+/**
+ * Update thread with message information
+ */
+export function updateThreadWithMessage(
+ threadId: string,
+ messageContent: string,
+ assistantId: string,
+ userId?: string
+): void {
+ try {
+ const threads = getStoredThreads();
+ const existingThread = threads.find(t => t.thread_id === threadId);
+
+ if (existingThread) {
+ existingThread.updated_at = new Date().toISOString();
+ existingThread.messages_count += 1;
+ if (!existingThread.first_message && messageContent) {
+ existingThread.first_message = messageContent.substring(0, 100);
+ existingThread.title = messageContent.substring(0, 50) + (messageContent.length > 50 ? "..." : "");
+ }
+ } else {
+ storeThread({
+ thread_id: threadId,
+ assistant_id: assistantId,
+ user_id: userId,
+ messages_count: 1,
+ first_message: messageContent.substring(0, 100),
+ title: messageContent.substring(0, 50) + (messageContent.length > 50 ? "..." : ""),
+ });
+ }
+
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(threads));
+ } catch (error) {
+ console.error("Failed to update thread:", error);
+ }
+}
+
+/**
+ * Convert stored threads to Thread format for compatibility
+ */
+export function convertStoredThreadsToThreads(storedThreads: StoredThread[]): Thread[] {
+ return storedThreads.map(stored => ({
+ thread_id: stored.thread_id,
+ created_at: stored.created_at,
+ updated_at: stored.updated_at,
+ metadata: {
+ assistant_id: stored.assistant_id,
+ user_id: stored.user_id,
+ title: stored.title,
+ },
+ values: {
+ messages: [], // We don't store full messages locally
+ },
+ status: "idle" as const,
+ }));
+}
+
+/**
+ * Clear all stored threads
+ */
+export function clearStoredThreads(): void {
+ try {
+ if (typeof window === "undefined") return;
+ localStorage.removeItem(STORAGE_KEY);
+ console.log("Stored threads cleared");
+ } catch (error) {
+ console.error("Failed to clear stored threads:", error);
+ }
+}
+
+/**
+ * Get thread title from stored threads
+ */
+export function getThreadTitle(threadId: string): string {
+ const threads = getStoredThreads();
+ const thread = threads.find(t => t.thread_id === threadId);
+ return thread?.title || threadId;
+}
diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo
new file mode 100644
index 00000000..90f2844d
--- /dev/null
+++ b/tsconfig.tsbuildinfo
@@ -0,0 +1 @@
+{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/react/global.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/next/dist/styled-jsx/types/css.d.ts","./node_modules/next/dist/styled-jsx/types/macro.d.ts","./node_modules/next/dist/styled-jsx/types/style.d.ts","./node_modules/next/dist/styled-jsx/types/global.d.ts","./node_modules/next/dist/styled-jsx/types/index.d.ts","./node_modules/next/dist/shared/lib/amp.d.ts","./node_modules/next/amp.d.ts","./node_modules/next/dist/server/get-page-files.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/globals.typedarray.d.ts","./node_modules/@types/node/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/react/canary.d.ts","./node_modules/@types/react/experimental.d.ts","./node_modules/@types/react-dom/index.d.ts","./node_modules/@types/react-dom/canary.d.ts","./node_modules/@types/react-dom/experimental.d.ts","./node_modules/next/dist/lib/fallback.d.ts","./node_modules/next/dist/compiled/webpack/webpack.d.ts","./node_modules/next/dist/server/config.d.ts","./node_modules/next/dist/lib/load-custom-routes.d.ts","./node_modules/next/dist/shared/lib/image-config.d.ts","./node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.d.ts","./node_modules/next/dist/server/body-streams.d.ts","./node_modules/next/dist/server/lib/cache-control.d.ts","./node_modules/next/dist/lib/setup-exception-listeners.d.ts","./node_modules/next/dist/lib/worker.d.ts","./node_modules/next/dist/lib/constants.d.ts","./node_modules/next/dist/client/components/app-router-headers.d.ts","./node_modules/next/dist/build/rendering-mode.d.ts","./node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.d.ts","./node_modules/next/dist/server/require-hook.d.ts","./node_modules/next/dist/server/lib/experimental/ppr.d.ts","./node_modules/next/dist/build/webpack/plugins/app-build-manifest-plugin.d.ts","./node_modules/next/dist/lib/page-types.d.ts","./node_modules/next/dist/build/segment-config/app/app-segment-config.d.ts","./node_modules/next/dist/build/segment-config/pages/pages-segment-config.d.ts","./node_modules/next/dist/build/analysis/get-page-static-info.d.ts","./node_modules/next/dist/build/webpack/loaders/get-module-build-info.d.ts","./node_modules/next/dist/build/webpack/plugins/middleware-plugin.d.ts","./node_modules/next/dist/server/node-polyfill-crypto.d.ts","./node_modules/next/dist/server/node-environment-baseline.d.ts","./node_modules/next/dist/server/node-environment-extensions/error-inspect.d.ts","./node_modules/next/dist/server/node-environment-extensions/random.d.ts","./node_modules/next/dist/server/node-environment-extensions/date.d.ts","./node_modules/next/dist/server/node-environment-extensions/web-crypto.d.ts","./node_modules/next/dist/server/node-environment-extensions/node-crypto.d.ts","./node_modules/next/dist/server/node-environment.d.ts","./node_modules/next/dist/build/page-extensions-type.d.ts","./node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.d.ts","./node_modules/next/dist/server/route-kind.d.ts","./node_modules/next/dist/server/route-definitions/route-definition.d.ts","./node_modules/next/dist/server/route-modules/route-module.d.ts","./node_modules/next/dist/shared/lib/deep-readonly.d.ts","./node_modules/next/dist/server/load-components.d.ts","./node_modules/next/dist/server/route-definitions/app-page-route-definition.d.ts","./node_modules/next/dist/server/lib/cache-handlers/types.d.ts","./node_modules/next/dist/server/response-cache/types.d.ts","./node_modules/next/dist/server/resume-data-cache/cache-store.d.ts","./node_modules/next/dist/server/resume-data-cache/resume-data-cache.d.ts","./node_modules/next/dist/server/render-result.d.ts","./node_modules/next/dist/build/webpack/plugins/next-font-manifest-plugin.d.ts","./node_modules/next/dist/client/components/router-reducer/router-reducer-types.d.ts","./node_modules/next/dist/client/flight-data-helpers.d.ts","./node_modules/next/dist/client/components/router-reducer/fetch-server-response.d.ts","./node_modules/next/dist/shared/lib/app-router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.d.ts","./node_modules/next/dist/server/route-definitions/locale-route-definition.d.ts","./node_modules/next/dist/server/route-definitions/pages-route-definition.d.ts","./node_modules/next/dist/shared/lib/mitt.d.ts","./node_modules/next/dist/client/with-router.d.ts","./node_modules/next/dist/client/router.d.ts","./node_modules/next/dist/client/route-loader.d.ts","./node_modules/next/dist/client/page-loader.d.ts","./node_modules/next/dist/shared/lib/bloom-filter.d.ts","./node_modules/next/dist/shared/lib/router/router.d.ts","./node_modules/next/dist/shared/lib/router-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/loadable.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/image-config-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/amp-context.shared-runtime.d.ts","./node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/server/route-modules/pages/module.compiled.d.ts","./node_modules/next/dist/build/templates/pages.d.ts","./node_modules/next/dist/server/route-modules/pages/module.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","./node_modules/next/dist/client/components/react-dev-overlay/pages/pages-dev-overlay.d.ts","./node_modules/next/dist/server/render.d.ts","./node_modules/next/dist/server/response-cache/index.d.ts","./node_modules/next/dist/build/webpack/plugins/pages-manifest-plugin.d.ts","./node_modules/next/dist/server/route-definitions/pages-api-route-definition.d.ts","./node_modules/next/dist/server/route-matches/pages-api-route-match.d.ts","./node_modules/next/dist/server/instrumentation/types.d.ts","./node_modules/next/dist/server/route-matchers/route-matcher.d.ts","./node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.d.ts","./node_modules/next/dist/server/lib/i18n-provider.d.ts","./node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.d.ts","./node_modules/next/dist/server/normalizers/normalizer.d.ts","./node_modules/next/dist/server/normalizers/locale-route-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/pathname-normalizer.d.ts","./node_modules/next/dist/server/normalizers/request/suffix.d.ts","./node_modules/next/dist/server/normalizers/request/rsc.d.ts","./node_modules/next/dist/server/normalizers/request/prefetch-rsc.d.ts","./node_modules/next/dist/server/normalizers/request/next-data.d.ts","./node_modules/next/dist/server/after/builtin-request-context.d.ts","./node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.d.ts","./node_modules/next/dist/server/base-server.d.ts","./node_modules/next/dist/server/web/next-url.d.ts","./node_modules/next/dist/compiled/@edge-runtime/cookies/index.d.ts","./node_modules/next/dist/server/web/spec-extension/cookies.d.ts","./node_modules/next/dist/server/web/spec-extension/request.d.ts","./node_modules/next/dist/server/web/spec-extension/fetch-event.d.ts","./node_modules/next/dist/server/web/spec-extension/response.d.ts","./node_modules/next/dist/build/segment-config/middleware/middleware-config.d.ts","./node_modules/next/dist/server/web/types.d.ts","./node_modules/next/dist/server/web/adapter.d.ts","./node_modules/next/dist/server/use-cache/cache-life.d.ts","./node_modules/next/dist/server/app-render/types.d.ts","./node_modules/next/dist/shared/lib/modern-browserslist-target.d.ts","./node_modules/next/dist/shared/lib/constants.d.ts","./node_modules/next/dist/build/webpack/loaders/metadata/types.d.ts","./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.d.ts","./node_modules/next/dist/server/lib/app-dir-module.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.d.ts","./node_modules/next/dist/server/async-storage/draft-mode-provider.d.ts","./node_modules/next/dist/server/web/spec-extension/adapters/headers.d.ts","./node_modules/next/dist/server/app-render/cache-signal.d.ts","./node_modules/next/dist/server/app-render/dynamic-rendering.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage-instance.d.ts","./node_modules/next/dist/server/request/fallback-params.d.ts","./node_modules/next/dist/server/lib/lazy-result.d.ts","./node_modules/next/dist/server/lib/implicit-tags.d.ts","./node_modules/next/dist/server/app-render/work-unit-async-storage.external.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-relative-url.d.ts","./node_modules/next/dist/server/app-render/clean-async-snapshot-instance.d.ts","./node_modules/next/dist/server/app-render/clean-async-snapshot.external.d.ts","./node_modules/next/dist/server/app-render/app-render.d.ts","./node_modules/next/dist/shared/lib/server-inserted-metadata.shared-runtime.d.ts","./node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.d.ts","./node_modules/next/dist/client/components/error-boundary.d.ts","./node_modules/next/dist/client/components/layout-router.d.ts","./node_modules/next/dist/client/components/render-from-template-context.d.ts","./node_modules/next/dist/server/app-render/action-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/action-async-storage.external.d.ts","./node_modules/next/dist/client/components/client-page.d.ts","./node_modules/next/dist/client/components/client-segment.d.ts","./node_modules/next/dist/server/request/search-params.d.ts","./node_modules/next/dist/client/components/hooks-server-context.d.ts","./node_modules/next/dist/client/components/http-access-fallback/error-boundary.d.ts","./node_modules/next/dist/lib/metadata/types/alternative-urls-types.d.ts","./node_modules/next/dist/lib/metadata/types/extra-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-types.d.ts","./node_modules/next/dist/lib/metadata/types/manifest-types.d.ts","./node_modules/next/dist/lib/metadata/types/opengraph-types.d.ts","./node_modules/next/dist/lib/metadata/types/twitter-types.d.ts","./node_modules/next/dist/lib/metadata/types/metadata-interface.d.ts","./node_modules/next/dist/lib/metadata/types/resolvers.d.ts","./node_modules/next/dist/lib/metadata/types/icons.d.ts","./node_modules/next/dist/lib/metadata/resolve-metadata.d.ts","./node_modules/next/dist/lib/metadata/metadata.d.ts","./node_modules/next/dist/client/components/metadata/metadata-boundary.d.ts","./node_modules/next/dist/server/app-render/rsc/preloads.d.ts","./node_modules/next/dist/server/app-render/rsc/postpone.d.ts","./node_modules/next/dist/server/app-render/rsc/taint.d.ts","./node_modules/next/dist/server/app-render/collect-segment-data.d.ts","./node_modules/next/dist/server/app-render/entry-base.d.ts","./node_modules/next/dist/build/templates/app-page.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.d.ts","./node_modules/next/dist/server/route-modules/app-page/module.compiled.d.ts","./node_modules/next/dist/server/route-definitions/app-route-route-definition.d.ts","./node_modules/next/dist/server/async-storage/work-store.d.ts","./node_modules/next/dist/server/web/http.d.ts","./node_modules/next/dist/server/route-modules/app-route/shared-modules.d.ts","./node_modules/next/dist/client/components/redirect-status-code.d.ts","./node_modules/next/dist/client/components/redirect-error.d.ts","./node_modules/next/dist/build/templates/app-route.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.d.ts","./node_modules/next/dist/server/route-modules/app-route/module.compiled.d.ts","./node_modules/next/dist/build/segment-config/app/app-segments.d.ts","./node_modules/next/dist/build/static-paths/types.d.ts","./node_modules/next/dist/build/utils.d.ts","./node_modules/next/dist/build/turborepo-access-trace/types.d.ts","./node_modules/next/dist/build/turborepo-access-trace/result.d.ts","./node_modules/next/dist/build/turborepo-access-trace/helpers.d.ts","./node_modules/next/dist/build/turborepo-access-trace/index.d.ts","./node_modules/next/dist/export/routes/types.d.ts","./node_modules/next/dist/export/types.d.ts","./node_modules/next/dist/export/worker.d.ts","./node_modules/next/dist/build/worker.d.ts","./node_modules/next/dist/build/index.d.ts","./node_modules/next/dist/server/lib/incremental-cache/index.d.ts","./node_modules/next/dist/server/after/after.d.ts","./node_modules/next/dist/server/after/after-context.d.ts","./node_modules/next/dist/server/app-render/work-async-storage-instance.d.ts","./node_modules/next/dist/server/app-render/work-async-storage.external.d.ts","./node_modules/next/dist/server/request/params.d.ts","./node_modules/next/dist/server/route-matches/route-match.d.ts","./node_modules/next/dist/server/request-meta.d.ts","./node_modules/next/dist/cli/next-test.d.ts","./node_modules/next/dist/server/config-shared.d.ts","./node_modules/next/dist/server/base-http/index.d.ts","./node_modules/next/dist/server/api-utils/index.d.ts","./node_modules/next/dist/shared/lib/router/utils/parse-url.d.ts","./node_modules/next/dist/server/base-http/node.d.ts","./node_modules/next/dist/server/lib/async-callback-set.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-regex.d.ts","./node_modules/next/dist/shared/lib/router/utils/route-matcher.d.ts","./node_modules/sharp/lib/index.d.ts","./node_modules/next/dist/server/image-optimizer.d.ts","./node_modules/next/dist/server/next-server.d.ts","./node_modules/next/dist/lib/coalesced-function.d.ts","./node_modules/next/dist/server/lib/router-utils/types.d.ts","./node_modules/next/dist/trace/types.d.ts","./node_modules/next/dist/trace/trace.d.ts","./node_modules/next/dist/trace/shared.d.ts","./node_modules/next/dist/trace/index.d.ts","./node_modules/next/dist/build/load-jsconfig.d.ts","./node_modules/next/dist/build/webpack-config.d.ts","./node_modules/next/dist/build/swc/generated-native.d.ts","./node_modules/next/dist/build/swc/types.d.ts","./node_modules/next/dist/server/dev/parse-version-info.d.ts","./node_modules/next/dist/client/components/react-dev-overlay/types.d.ts","./node_modules/next/dist/server/dev/dev-indicator-server-state.d.ts","./node_modules/next/dist/server/dev/hot-reloader-types.d.ts","./node_modules/next/dist/telemetry/storage.d.ts","./node_modules/next/dist/server/lib/render-server.d.ts","./node_modules/next/dist/server/lib/router-server.d.ts","./node_modules/next/dist/shared/lib/router/utils/path-match.d.ts","./node_modules/next/dist/server/lib/router-utils/filesystem.d.ts","./node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.d.ts","./node_modules/next/dist/server/lib/types.d.ts","./node_modules/next/dist/server/lib/lru-cache.d.ts","./node_modules/next/dist/server/lib/dev-bundler-service.d.ts","./node_modules/next/dist/server/dev/static-paths-worker.d.ts","./node_modules/next/dist/server/dev/next-dev-server.d.ts","./node_modules/next/dist/server/next.d.ts","./node_modules/next/dist/types.d.ts","./node_modules/next/dist/shared/lib/html-context.shared-runtime.d.ts","./node_modules/@next/env/dist/index.d.ts","./node_modules/next/dist/shared/lib/utils.d.ts","./node_modules/next/dist/pages/_app.d.ts","./node_modules/next/app.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-cache.d.ts","./node_modules/next/dist/server/web/spec-extension/revalidate.d.ts","./node_modules/next/dist/server/web/spec-extension/unstable-no-store.d.ts","./node_modules/next/dist/server/use-cache/cache-tag.d.ts","./node_modules/next/cache.d.ts","./node_modules/next/dist/shared/lib/runtime-config.external.d.ts","./node_modules/next/config.d.ts","./node_modules/next/dist/pages/_document.d.ts","./node_modules/next/document.d.ts","./node_modules/next/dist/shared/lib/dynamic.d.ts","./node_modules/next/dynamic.d.ts","./node_modules/next/dist/pages/_error.d.ts","./node_modules/next/error.d.ts","./node_modules/next/dist/shared/lib/head.d.ts","./node_modules/next/head.d.ts","./node_modules/next/dist/server/request/cookies.d.ts","./node_modules/next/dist/server/request/headers.d.ts","./node_modules/next/dist/server/request/draft-mode.d.ts","./node_modules/next/headers.d.ts","./node_modules/next/dist/shared/lib/get-img-props.d.ts","./node_modules/next/dist/client/image-component.d.ts","./node_modules/next/dist/shared/lib/image-external.d.ts","./node_modules/next/image.d.ts","./node_modules/next/dist/client/link.d.ts","./node_modules/next/link.d.ts","./node_modules/next/dist/client/components/redirect.d.ts","./node_modules/next/dist/client/components/not-found.d.ts","./node_modules/next/dist/client/components/forbidden.d.ts","./node_modules/next/dist/client/components/unauthorized.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.server.d.ts","./node_modules/next/dist/client/components/unstable-rethrow.d.ts","./node_modules/next/dist/client/components/navigation.react-server.d.ts","./node_modules/next/dist/client/components/navigation.d.ts","./node_modules/next/navigation.d.ts","./node_modules/next/router.d.ts","./node_modules/next/dist/client/script.d.ts","./node_modules/next/script.d.ts","./node_modules/next/dist/server/web/spec-extension/user-agent.d.ts","./node_modules/next/dist/compiled/@edge-runtime/primitives/url.d.ts","./node_modules/next/dist/server/web/spec-extension/image-response.d.ts","./node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/emoji/index.d.ts","./node_modules/next/dist/compiled/@vercel/og/types.d.ts","./node_modules/next/dist/server/after/index.d.ts","./node_modules/next/dist/server/request/root-params.d.ts","./node_modules/next/dist/server/request/connection.d.ts","./node_modules/next/server.d.ts","./node_modules/next/types/global.d.ts","./node_modules/next/types/compiled.d.ts","./node_modules/next/types.d.ts","./node_modules/next/index.d.ts","./node_modules/next/image-types/global.d.ts","./next-env.d.ts","./node_modules/langgraph-nextjs-api-passthrough/dist/index.d.ts","./src/app/api/[..._path]/route.ts","./src/app/api/airports/search/route.ts","./node_modules/@radix-ui/react-slot/dist/index.d.mts","./node_modules/clsx/clsx.d.mts","./node_modules/class-variance-authority/dist/types.d.ts","./node_modules/class-variance-authority/dist/index.d.ts","./node_modules/tailwind-merge/dist/types.d.ts","./src/lib/utils.ts","./src/components/ui/button.tsx","./src/services/authservice.ts","./src/components/auth/login.tsx","./src/components/auth/protectedroute.tsx","./src/components/auth/logoutbutton.tsx","./src/components/auth/index.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@langchain/langgraph-sdk/dist/schema.d.ts","./node_modules/@langchain/langgraph-sdk/dist/types.messages.d.ts","./node_modules/@langchain/langgraph-sdk/dist/types.stream.d.ts","./node_modules/@langchain/langgraph-sdk/dist/types.d.ts","./node_modules/@langchain/langgraph-sdk/dist/utils/async_caller.d.ts","./node_modules/@langchain/langgraph-sdk/dist/client.d.ts","./node_modules/@langchain/langgraph-sdk/dist/singletons/fetch.d.ts","./node_modules/@langchain/langgraph-sdk/dist/index.d.ts","./node_modules/@langchain/langgraph-sdk/index.d.ts","./src/components/thread/utils.ts","./node_modules/@langchain/core/dist/load/map_keys.d.ts","./node_modules/@langchain/core/dist/load/serializable.d.ts","./node_modules/zod/v3/helpers/typealiases.d.cts","./node_modules/zod/v3/helpers/util.d.cts","./node_modules/zod/v3/zoderror.d.cts","./node_modules/zod/v3/locales/en.d.cts","./node_modules/zod/v3/errors.d.cts","./node_modules/zod/v3/helpers/parseutil.d.cts","./node_modules/zod/v3/helpers/enumutil.d.cts","./node_modules/zod/v3/helpers/errorutil.d.cts","./node_modules/zod/v3/helpers/partialutil.d.cts","./node_modules/zod/v3/standard-schema.d.cts","./node_modules/zod/v3/types.d.cts","./node_modules/zod/v3/external.d.cts","./node_modules/zod/v3/index.d.cts","./node_modules/zod/v4/core/standard-schema.d.cts","./node_modules/zod/v4/core/util.d.cts","./node_modules/zod/v4/core/versions.d.cts","./node_modules/zod/v4/core/schemas.d.cts","./node_modules/zod/v4/core/checks.d.cts","./node_modules/zod/v4/core/errors.d.cts","./node_modules/zod/v4/core/core.d.cts","./node_modules/zod/v4/core/parse.d.cts","./node_modules/zod/v4/core/regexes.d.cts","./node_modules/zod/v4/locales/ar.d.cts","./node_modules/zod/v4/locales/az.d.cts","./node_modules/zod/v4/locales/be.d.cts","./node_modules/zod/v4/locales/ca.d.cts","./node_modules/zod/v4/locales/cs.d.cts","./node_modules/zod/v4/locales/de.d.cts","./node_modules/zod/v4/locales/en.d.cts","./node_modules/zod/v4/locales/eo.d.cts","./node_modules/zod/v4/locales/es.d.cts","./node_modules/zod/v4/locales/fa.d.cts","./node_modules/zod/v4/locales/fi.d.cts","./node_modules/zod/v4/locales/fr.d.cts","./node_modules/zod/v4/locales/fr-ca.d.cts","./node_modules/zod/v4/locales/he.d.cts","./node_modules/zod/v4/locales/hu.d.cts","./node_modules/zod/v4/locales/id.d.cts","./node_modules/zod/v4/locales/it.d.cts","./node_modules/zod/v4/locales/ja.d.cts","./node_modules/zod/v4/locales/kh.d.cts","./node_modules/zod/v4/locales/ko.d.cts","./node_modules/zod/v4/locales/mk.d.cts","./node_modules/zod/v4/locales/ms.d.cts","./node_modules/zod/v4/locales/nl.d.cts","./node_modules/zod/v4/locales/no.d.cts","./node_modules/zod/v4/locales/ota.d.cts","./node_modules/zod/v4/locales/ps.d.cts","./node_modules/zod/v4/locales/pl.d.cts","./node_modules/zod/v4/locales/pt.d.cts","./node_modules/zod/v4/locales/ru.d.cts","./node_modules/zod/v4/locales/sl.d.cts","./node_modules/zod/v4/locales/sv.d.cts","./node_modules/zod/v4/locales/ta.d.cts","./node_modules/zod/v4/locales/th.d.cts","./node_modules/zod/v4/locales/tr.d.cts","./node_modules/zod/v4/locales/ua.d.cts","./node_modules/zod/v4/locales/ur.d.cts","./node_modules/zod/v4/locales/vi.d.cts","./node_modules/zod/v4/locales/zh-cn.d.cts","./node_modules/zod/v4/locales/zh-tw.d.cts","./node_modules/zod/v4/locales/index.d.cts","./node_modules/zod/v4/core/registries.d.cts","./node_modules/zod/v4/core/doc.d.cts","./node_modules/zod/v4/core/function.d.cts","./node_modules/zod/v4/core/api.d.cts","./node_modules/zod/v4/core/json-schema.d.cts","./node_modules/zod/v4/core/to-json-schema.d.cts","./node_modules/zod/v4/core/index.d.cts","./node_modules/@langchain/core/dist/utils/types/zod.d.ts","./node_modules/@langchain/core/dist/utils/types/index.d.ts","./node_modules/@langchain/core/dist/messages/base.d.ts","./node_modules/@langchain/core/dist/messages/content_blocks.d.ts","./node_modules/@langchain/core/dist/messages/tool.d.ts","./node_modules/@langchain/core/dist/messages/ai.d.ts","./node_modules/@langchain/core/dist/messages/chat.d.ts","./node_modules/@langchain/core/dist/messages/function.d.ts","./node_modules/@langchain/core/dist/messages/human.d.ts","./node_modules/@langchain/core/dist/messages/system.d.ts","./node_modules/@langchain/core/dist/messages/utils.d.ts","./node_modules/langsmith/dist/experimental/otel/types.d.ts","./node_modules/eventemitter3/index.d.ts","./node_modules/p-queue/dist/queue.d.ts","./node_modules/p-queue/dist/options.d.ts","./node_modules/p-queue/dist/priority-queue.d.ts","./node_modules/p-queue/dist/index.d.ts","./node_modules/langsmith/dist/utils/async_caller.d.ts","./node_modules/langsmith/dist/schemas.d.ts","./node_modules/langsmith/dist/evaluation/evaluator.d.ts","./node_modules/langsmith/dist/client.d.ts","./node_modules/langsmith/dist/run_trees.d.ts","./node_modules/langsmith/dist/singletons/constants.d.ts","./node_modules/langsmith/dist/singletons/types.d.ts","./node_modules/langsmith/dist/singletons/traceable.d.ts","./node_modules/langsmith/singletons/traceable.d.ts","./node_modules/@langchain/core/dist/agents.d.ts","./node_modules/@langchain/core/dist/outputs.d.ts","./node_modules/@langchain/core/dist/documents/document.d.ts","./node_modules/@langchain/core/dist/callbacks/base.d.ts","./node_modules/langsmith/dist/singletons/fetch.d.ts","./node_modules/langsmith/dist/utils/project.d.ts","./node_modules/langsmith/dist/index.d.ts","./node_modules/langsmith/index.d.ts","./node_modules/langsmith/run_trees.d.ts","./node_modules/langsmith/schemas.d.ts","./node_modules/@langchain/core/dist/tracers/base.d.ts","./node_modules/@langchain/core/dist/tracers/tracer_langchain.d.ts","./node_modules/@langchain/core/dist/callbacks/manager.d.ts","./node_modules/@langchain/core/dist/types/_internal.d.ts","./node_modules/@langchain/core/dist/runnables/types.d.ts","./node_modules/@langchain/core/dist/utils/fast-json-patch/src/helpers.d.ts","./node_modules/@langchain/core/dist/utils/fast-json-patch/src/core.d.ts","./node_modules/@langchain/core/dist/utils/fast-json-patch/src/duplex.d.ts","./node_modules/@langchain/core/dist/utils/fast-json-patch/index.d.ts","./node_modules/@langchain/core/dist/utils/stream.d.ts","./node_modules/@langchain/core/dist/tracers/event_stream.d.ts","./node_modules/@langchain/core/dist/tracers/log_stream.d.ts","./node_modules/@langchain/core/dist/runnables/graph.d.ts","./node_modules/@langchain/core/dist/runnables/base.d.ts","./node_modules/@langchain/core/dist/documents/transformers.d.ts","./node_modules/js-tiktoken/dist/core-cb1c5044.d.ts","./node_modules/js-tiktoken/dist/lite.d.ts","./node_modules/@langchain/core/dist/utils/js-sha1/hash.d.ts","./node_modules/@langchain/core/dist/utils/js-sha256/hash.d.ts","./node_modules/@langchain/core/dist/utils/hash.d.ts","./node_modules/@langchain/core/dist/caches/base.d.ts","./node_modules/@langchain/core/dist/prompt_values.d.ts","./node_modules/@langchain/core/dist/utils/async_caller.d.ts","./node_modules/@langchain/core/dist/runnables/config.d.ts","./node_modules/zod/index.d.cts","./node_modules/zod-to-json-schema/dist/types/parsers/any.d.ts","./node_modules/zod-to-json-schema/dist/types/errormessages.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/array.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/bigint.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/boolean.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/number.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/date.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/enum.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/intersection.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/literal.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/string.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/record.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/map.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/nativeenum.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/never.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/null.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/nullable.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/object.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/set.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/tuple.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/undefined.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/union.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/unknown.d.ts","./node_modules/zod-to-json-schema/dist/types/parsetypes.d.ts","./node_modules/zod-to-json-schema/dist/types/refs.d.ts","./node_modules/zod-to-json-schema/dist/types/options.d.ts","./node_modules/zod-to-json-schema/dist/types/getrelativepath.d.ts","./node_modules/zod-to-json-schema/dist/types/parsedef.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/branded.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/catch.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/default.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/effects.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/optional.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/pipeline.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/promise.d.ts","./node_modules/zod-to-json-schema/dist/types/parsers/readonly.d.ts","./node_modules/zod-to-json-schema/dist/types/selectparser.d.ts","./node_modules/zod-to-json-schema/dist/types/zodtojsonschema.d.ts","./node_modules/zod-to-json-schema/dist/types/index.d.ts","./node_modules/@cfworker/json-schema/dist/esm/deep-compare-strict.d.ts","./node_modules/@cfworker/json-schema/dist/esm/types.d.ts","./node_modules/@cfworker/json-schema/dist/esm/dereference.d.ts","./node_modules/@cfworker/json-schema/dist/esm/format.d.ts","./node_modules/@cfworker/json-schema/dist/esm/pointer.d.ts","./node_modules/@cfworker/json-schema/dist/esm/ucs2-length.d.ts","./node_modules/@cfworker/json-schema/dist/esm/validate.d.ts","./node_modules/@cfworker/json-schema/dist/esm/validator.d.ts","./node_modules/@cfworker/json-schema/dist/esm/index.d.ts","./node_modules/@langchain/core/dist/utils/json_schema.d.ts","./node_modules/@langchain/core/dist/language_models/base.d.ts","./node_modules/@langchain/core/dist/messages/modifier.d.ts","./node_modules/@langchain/core/dist/messages/transformers.d.ts","./node_modules/@langchain/core/dist/messages/index.d.ts","./node_modules/@langchain/core/messages.d.ts","./node_modules/@langchain/core/agents.d.ts","./node_modules/@langchain/core/dist/runnables/passthrough.d.ts","./node_modules/@langchain/core/dist/runnables/router.d.ts","./node_modules/@langchain/core/dist/runnables/branch.d.ts","./node_modules/@langchain/core/dist/chat_history.d.ts","./node_modules/@langchain/core/dist/runnables/history.d.ts","./node_modules/@langchain/core/dist/runnables/index.d.ts","./node_modules/@langchain/core/runnables.d.ts","./node_modules/@langchain/core/dist/tools/utils.d.ts","./node_modules/@langchain/core/dist/tools/types.d.ts","./node_modules/@langchain/core/dist/tools/index.d.ts","./node_modules/@langchain/core/tools.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/tool_executor.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/serde/base.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/types.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/serde/types.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/base.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/memory.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/id.d.ts","./node_modules/@langchain/core/dist/embeddings.d.ts","./node_modules/@langchain/core/embeddings.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/store/base.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/store/batch.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/store/memory.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/store/index.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/cache/base.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/cache/memory.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/cache/index.d.ts","./node_modules/@langchain/langgraph-checkpoint/dist/index.d.ts","./node_modules/@langchain/langgraph-checkpoint/index.d.ts","./node_modules/@langchain/langgraph/dist/channels/base.d.ts","./node_modules/@langchain/langgraph/dist/channels/binop.d.ts","./node_modules/@langchain/langgraph/dist/channels/last_value.d.ts","./node_modules/@langchain/langgraph/dist/managed/base.d.ts","./node_modules/@langchain/langgraph/dist/graph/annotation.d.ts","./node_modules/@langchain/core/runnables/graph.d.ts","./node_modules/@langchain/core/callbacks/manager.d.ts","./node_modules/@langchain/langgraph/dist/utils.d.ts","./node_modules/@langchain/langgraph/dist/pregel/utils/index.d.ts","./node_modules/@langchain/langgraph/dist/pregel/read.d.ts","./node_modules/@langchain/core/utils/stream.d.ts","./node_modules/@langchain/core/tracers/log_stream.d.ts","./node_modules/@langchain/langgraph/dist/constants.d.ts","./node_modules/@langchain/langgraph/dist/pregel/write.d.ts","./node_modules/@langchain/langgraph/dist/pregel/runnable_types.d.ts","./node_modules/@langchain/langgraph/dist/pregel/types.d.ts","./node_modules/@langchain/langgraph/dist/pregel/stream.d.ts","./node_modules/@langchain/langgraph/dist/pregel/algo.d.ts","./node_modules/@langchain/langgraph/dist/pregel/index.d.ts","./node_modules/@langchain/langgraph/dist/graph/graph.d.ts","./node_modules/@langchain/langgraph/dist/graph/zod/state.d.ts","./node_modules/@langchain/langgraph/dist/graph/state.d.ts","./node_modules/@langchain/langgraph/dist/graph/message.d.ts","./node_modules/@langchain/langgraph/dist/graph/index.d.ts","./node_modules/@langchain/langgraph/dist/errors.d.ts","./node_modules/@langchain/langgraph/dist/channels/any_value.d.ts","./node_modules/@langchain/langgraph/dist/channels/dynamic_barrier_value.d.ts","./node_modules/@langchain/langgraph/dist/channels/named_barrier_value.d.ts","./node_modules/@langchain/langgraph/dist/channels/topic.d.ts","./node_modules/@langchain/langgraph/dist/channels/index.d.ts","./node_modules/@langchain/langgraph/dist/channels/ephemeral_value.d.ts","./node_modules/@langchain/langgraph/dist/managed/is_last_step.d.ts","./node_modules/@langchain/langgraph/dist/managed/shared_value.d.ts","./node_modules/@langchain/langgraph/dist/managed/index.d.ts","./node_modules/@langchain/langgraph/dist/func/types.d.ts","./node_modules/@langchain/langgraph/dist/func/index.d.ts","./node_modules/@langchain/langgraph/dist/graph/messages_annotation.d.ts","./node_modules/@langchain/langgraph/dist/web.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/agent_executor.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/chat_agent_executor.d.ts","./node_modules/@langchain/core/dist/language_models/chat_models.d.ts","./node_modules/@langchain/core/language_models/chat_models.d.ts","./node_modules/@langchain/core/language_models/base.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/tool_node.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/react_agent_executor.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/interrupt.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/agentname.d.ts","./node_modules/@langchain/langgraph/dist/prebuilt/index.d.ts","./node_modules/@langchain/langgraph/prebuilt.d.ts","./src/components/thread/agent-inbox/types.ts","./node_modules/date-fns/constants.d.ts","./node_modules/date-fns/locale/types.d.ts","./node_modules/date-fns/fp/types.d.ts","./node_modules/date-fns/types.d.ts","./node_modules/date-fns/add.d.ts","./node_modules/date-fns/addbusinessdays.d.ts","./node_modules/date-fns/adddays.d.ts","./node_modules/date-fns/addhours.d.ts","./node_modules/date-fns/addisoweekyears.d.ts","./node_modules/date-fns/addmilliseconds.d.ts","./node_modules/date-fns/addminutes.d.ts","./node_modules/date-fns/addmonths.d.ts","./node_modules/date-fns/addquarters.d.ts","./node_modules/date-fns/addseconds.d.ts","./node_modules/date-fns/addweeks.d.ts","./node_modules/date-fns/addyears.d.ts","./node_modules/date-fns/areintervalsoverlapping.d.ts","./node_modules/date-fns/clamp.d.ts","./node_modules/date-fns/closestindexto.d.ts","./node_modules/date-fns/closestto.d.ts","./node_modules/date-fns/compareasc.d.ts","./node_modules/date-fns/comparedesc.d.ts","./node_modules/date-fns/constructfrom.d.ts","./node_modules/date-fns/constructnow.d.ts","./node_modules/date-fns/daystoweeks.d.ts","./node_modules/date-fns/differenceinbusinessdays.d.ts","./node_modules/date-fns/differenceincalendardays.d.ts","./node_modules/date-fns/differenceincalendarisoweekyears.d.ts","./node_modules/date-fns/differenceincalendarisoweeks.d.ts","./node_modules/date-fns/differenceincalendarmonths.d.ts","./node_modules/date-fns/differenceincalendarquarters.d.ts","./node_modules/date-fns/differenceincalendarweeks.d.ts","./node_modules/date-fns/differenceincalendaryears.d.ts","./node_modules/date-fns/differenceindays.d.ts","./node_modules/date-fns/differenceinhours.d.ts","./node_modules/date-fns/differenceinisoweekyears.d.ts","./node_modules/date-fns/differenceinmilliseconds.d.ts","./node_modules/date-fns/differenceinminutes.d.ts","./node_modules/date-fns/differenceinmonths.d.ts","./node_modules/date-fns/differenceinquarters.d.ts","./node_modules/date-fns/differenceinseconds.d.ts","./node_modules/date-fns/differenceinweeks.d.ts","./node_modules/date-fns/differenceinyears.d.ts","./node_modules/date-fns/eachdayofinterval.d.ts","./node_modules/date-fns/eachhourofinterval.d.ts","./node_modules/date-fns/eachminuteofinterval.d.ts","./node_modules/date-fns/eachmonthofinterval.d.ts","./node_modules/date-fns/eachquarterofinterval.d.ts","./node_modules/date-fns/eachweekofinterval.d.ts","./node_modules/date-fns/eachweekendofinterval.d.ts","./node_modules/date-fns/eachweekendofmonth.d.ts","./node_modules/date-fns/eachweekendofyear.d.ts","./node_modules/date-fns/eachyearofinterval.d.ts","./node_modules/date-fns/endofday.d.ts","./node_modules/date-fns/endofdecade.d.ts","./node_modules/date-fns/endofhour.d.ts","./node_modules/date-fns/endofisoweek.d.ts","./node_modules/date-fns/endofisoweekyear.d.ts","./node_modules/date-fns/endofminute.d.ts","./node_modules/date-fns/endofmonth.d.ts","./node_modules/date-fns/endofquarter.d.ts","./node_modules/date-fns/endofsecond.d.ts","./node_modules/date-fns/endoftoday.d.ts","./node_modules/date-fns/endoftomorrow.d.ts","./node_modules/date-fns/endofweek.d.ts","./node_modules/date-fns/endofyear.d.ts","./node_modules/date-fns/endofyesterday.d.ts","./node_modules/date-fns/_lib/format/formatters.d.ts","./node_modules/date-fns/_lib/format/longformatters.d.ts","./node_modules/date-fns/format.d.ts","./node_modules/date-fns/formatdistance.d.ts","./node_modules/date-fns/formatdistancestrict.d.ts","./node_modules/date-fns/formatdistancetonow.d.ts","./node_modules/date-fns/formatdistancetonowstrict.d.ts","./node_modules/date-fns/formatduration.d.ts","./node_modules/date-fns/formatiso.d.ts","./node_modules/date-fns/formatiso9075.d.ts","./node_modules/date-fns/formatisoduration.d.ts","./node_modules/date-fns/formatrfc3339.d.ts","./node_modules/date-fns/formatrfc7231.d.ts","./node_modules/date-fns/formatrelative.d.ts","./node_modules/date-fns/fromunixtime.d.ts","./node_modules/date-fns/getdate.d.ts","./node_modules/date-fns/getday.d.ts","./node_modules/date-fns/getdayofyear.d.ts","./node_modules/date-fns/getdaysinmonth.d.ts","./node_modules/date-fns/getdaysinyear.d.ts","./node_modules/date-fns/getdecade.d.ts","./node_modules/date-fns/_lib/defaultoptions.d.ts","./node_modules/date-fns/getdefaultoptions.d.ts","./node_modules/date-fns/gethours.d.ts","./node_modules/date-fns/getisoday.d.ts","./node_modules/date-fns/getisoweek.d.ts","./node_modules/date-fns/getisoweekyear.d.ts","./node_modules/date-fns/getisoweeksinyear.d.ts","./node_modules/date-fns/getmilliseconds.d.ts","./node_modules/date-fns/getminutes.d.ts","./node_modules/date-fns/getmonth.d.ts","./node_modules/date-fns/getoverlappingdaysinintervals.d.ts","./node_modules/date-fns/getquarter.d.ts","./node_modules/date-fns/getseconds.d.ts","./node_modules/date-fns/gettime.d.ts","./node_modules/date-fns/getunixtime.d.ts","./node_modules/date-fns/getweek.d.ts","./node_modules/date-fns/getweekofmonth.d.ts","./node_modules/date-fns/getweekyear.d.ts","./node_modules/date-fns/getweeksinmonth.d.ts","./node_modules/date-fns/getyear.d.ts","./node_modules/date-fns/hourstomilliseconds.d.ts","./node_modules/date-fns/hourstominutes.d.ts","./node_modules/date-fns/hourstoseconds.d.ts","./node_modules/date-fns/interval.d.ts","./node_modules/date-fns/intervaltoduration.d.ts","./node_modules/date-fns/intlformat.d.ts","./node_modules/date-fns/intlformatdistance.d.ts","./node_modules/date-fns/isafter.d.ts","./node_modules/date-fns/isbefore.d.ts","./node_modules/date-fns/isdate.d.ts","./node_modules/date-fns/isequal.d.ts","./node_modules/date-fns/isexists.d.ts","./node_modules/date-fns/isfirstdayofmonth.d.ts","./node_modules/date-fns/isfriday.d.ts","./node_modules/date-fns/isfuture.d.ts","./node_modules/date-fns/islastdayofmonth.d.ts","./node_modules/date-fns/isleapyear.d.ts","./node_modules/date-fns/ismatch.d.ts","./node_modules/date-fns/ismonday.d.ts","./node_modules/date-fns/ispast.d.ts","./node_modules/date-fns/issameday.d.ts","./node_modules/date-fns/issamehour.d.ts","./node_modules/date-fns/issameisoweek.d.ts","./node_modules/date-fns/issameisoweekyear.d.ts","./node_modules/date-fns/issameminute.d.ts","./node_modules/date-fns/issamemonth.d.ts","./node_modules/date-fns/issamequarter.d.ts","./node_modules/date-fns/issamesecond.d.ts","./node_modules/date-fns/issameweek.d.ts","./node_modules/date-fns/issameyear.d.ts","./node_modules/date-fns/issaturday.d.ts","./node_modules/date-fns/issunday.d.ts","./node_modules/date-fns/isthishour.d.ts","./node_modules/date-fns/isthisisoweek.d.ts","./node_modules/date-fns/isthisminute.d.ts","./node_modules/date-fns/isthismonth.d.ts","./node_modules/date-fns/isthisquarter.d.ts","./node_modules/date-fns/isthissecond.d.ts","./node_modules/date-fns/isthisweek.d.ts","./node_modules/date-fns/isthisyear.d.ts","./node_modules/date-fns/isthursday.d.ts","./node_modules/date-fns/istoday.d.ts","./node_modules/date-fns/istomorrow.d.ts","./node_modules/date-fns/istuesday.d.ts","./node_modules/date-fns/isvalid.d.ts","./node_modules/date-fns/iswednesday.d.ts","./node_modules/date-fns/isweekend.d.ts","./node_modules/date-fns/iswithininterval.d.ts","./node_modules/date-fns/isyesterday.d.ts","./node_modules/date-fns/lastdayofdecade.d.ts","./node_modules/date-fns/lastdayofisoweek.d.ts","./node_modules/date-fns/lastdayofisoweekyear.d.ts","./node_modules/date-fns/lastdayofmonth.d.ts","./node_modules/date-fns/lastdayofquarter.d.ts","./node_modules/date-fns/lastdayofweek.d.ts","./node_modules/date-fns/lastdayofyear.d.ts","./node_modules/date-fns/_lib/format/lightformatters.d.ts","./node_modules/date-fns/lightformat.d.ts","./node_modules/date-fns/max.d.ts","./node_modules/date-fns/milliseconds.d.ts","./node_modules/date-fns/millisecondstohours.d.ts","./node_modules/date-fns/millisecondstominutes.d.ts","./node_modules/date-fns/millisecondstoseconds.d.ts","./node_modules/date-fns/min.d.ts","./node_modules/date-fns/minutestohours.d.ts","./node_modules/date-fns/minutestomilliseconds.d.ts","./node_modules/date-fns/minutestoseconds.d.ts","./node_modules/date-fns/monthstoquarters.d.ts","./node_modules/date-fns/monthstoyears.d.ts","./node_modules/date-fns/nextday.d.ts","./node_modules/date-fns/nextfriday.d.ts","./node_modules/date-fns/nextmonday.d.ts","./node_modules/date-fns/nextsaturday.d.ts","./node_modules/date-fns/nextsunday.d.ts","./node_modules/date-fns/nextthursday.d.ts","./node_modules/date-fns/nexttuesday.d.ts","./node_modules/date-fns/nextwednesday.d.ts","./node_modules/date-fns/parse/_lib/types.d.ts","./node_modules/date-fns/parse/_lib/setter.d.ts","./node_modules/date-fns/parse/_lib/parser.d.ts","./node_modules/date-fns/parse/_lib/parsers.d.ts","./node_modules/date-fns/parse.d.ts","./node_modules/date-fns/parseiso.d.ts","./node_modules/date-fns/parsejson.d.ts","./node_modules/date-fns/previousday.d.ts","./node_modules/date-fns/previousfriday.d.ts","./node_modules/date-fns/previousmonday.d.ts","./node_modules/date-fns/previoussaturday.d.ts","./node_modules/date-fns/previoussunday.d.ts","./node_modules/date-fns/previousthursday.d.ts","./node_modules/date-fns/previoustuesday.d.ts","./node_modules/date-fns/previouswednesday.d.ts","./node_modules/date-fns/quarterstomonths.d.ts","./node_modules/date-fns/quarterstoyears.d.ts","./node_modules/date-fns/roundtonearesthours.d.ts","./node_modules/date-fns/roundtonearestminutes.d.ts","./node_modules/date-fns/secondstohours.d.ts","./node_modules/date-fns/secondstomilliseconds.d.ts","./node_modules/date-fns/secondstominutes.d.ts","./node_modules/date-fns/set.d.ts","./node_modules/date-fns/setdate.d.ts","./node_modules/date-fns/setday.d.ts","./node_modules/date-fns/setdayofyear.d.ts","./node_modules/date-fns/setdefaultoptions.d.ts","./node_modules/date-fns/sethours.d.ts","./node_modules/date-fns/setisoday.d.ts","./node_modules/date-fns/setisoweek.d.ts","./node_modules/date-fns/setisoweekyear.d.ts","./node_modules/date-fns/setmilliseconds.d.ts","./node_modules/date-fns/setminutes.d.ts","./node_modules/date-fns/setmonth.d.ts","./node_modules/date-fns/setquarter.d.ts","./node_modules/date-fns/setseconds.d.ts","./node_modules/date-fns/setweek.d.ts","./node_modules/date-fns/setweekyear.d.ts","./node_modules/date-fns/setyear.d.ts","./node_modules/date-fns/startofday.d.ts","./node_modules/date-fns/startofdecade.d.ts","./node_modules/date-fns/startofhour.d.ts","./node_modules/date-fns/startofisoweek.d.ts","./node_modules/date-fns/startofisoweekyear.d.ts","./node_modules/date-fns/startofminute.d.ts","./node_modules/date-fns/startofmonth.d.ts","./node_modules/date-fns/startofquarter.d.ts","./node_modules/date-fns/startofsecond.d.ts","./node_modules/date-fns/startoftoday.d.ts","./node_modules/date-fns/startoftomorrow.d.ts","./node_modules/date-fns/startofweek.d.ts","./node_modules/date-fns/startofweekyear.d.ts","./node_modules/date-fns/startofyear.d.ts","./node_modules/date-fns/startofyesterday.d.ts","./node_modules/date-fns/sub.d.ts","./node_modules/date-fns/subbusinessdays.d.ts","./node_modules/date-fns/subdays.d.ts","./node_modules/date-fns/subhours.d.ts","./node_modules/date-fns/subisoweekyears.d.ts","./node_modules/date-fns/submilliseconds.d.ts","./node_modules/date-fns/subminutes.d.ts","./node_modules/date-fns/submonths.d.ts","./node_modules/date-fns/subquarters.d.ts","./node_modules/date-fns/subseconds.d.ts","./node_modules/date-fns/subweeks.d.ts","./node_modules/date-fns/subyears.d.ts","./node_modules/date-fns/todate.d.ts","./node_modules/date-fns/transpose.d.ts","./node_modules/date-fns/weekstodays.d.ts","./node_modules/date-fns/yearstodays.d.ts","./node_modules/date-fns/yearstomonths.d.ts","./node_modules/date-fns/yearstoquarters.d.ts","./node_modules/date-fns/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./src/components/thread/agent-inbox/utils.ts","./src/components/common/ui/button.tsx","./node_modules/lucide-react/dist/lucide-react.d.ts","./node_modules/@langchain/langgraph-sdk/dist/react/stream.d.ts","./node_modules/@langchain/langgraph-sdk/dist/react/index.d.ts","./node_modules/@langchain/langgraph-sdk/react.d.ts","./node_modules/@langchain/langgraph-sdk/dist/react-ui/types.d.ts","./node_modules/@langchain/langgraph-sdk/dist/react-ui/client.d.ts","./node_modules/@langchain/langgraph-sdk/dist/react-ui/index.d.ts","./node_modules/@langchain/langgraph-sdk/react-ui.d.ts","./node_modules/mitt/index.d.ts","./node_modules/nuqs/dist/_tsup-dts-rollup.d.ts","./node_modules/nuqs/dist/index.d.ts","./src/components/ui/input.tsx","./src/components/icons/langgraph.tsx","./node_modules/@radix-ui/react-primitive/dist/index.d.mts","./node_modules/@radix-ui/react-label/dist/index.d.mts","./src/components/ui/label.tsx","./src/components/ui/password-input.tsx","./src/lib/api-key.tsx","./node_modules/uuid/dist/esm-browser/types.d.ts","./node_modules/uuid/dist/esm-browser/max.d.ts","./node_modules/uuid/dist/esm-browser/nil.d.ts","./node_modules/uuid/dist/esm-browser/parse.d.ts","./node_modules/uuid/dist/esm-browser/stringify.d.ts","./node_modules/uuid/dist/esm-browser/v1.d.ts","./node_modules/uuid/dist/esm-browser/v1tov6.d.ts","./node_modules/uuid/dist/esm-browser/v35.d.ts","./node_modules/uuid/dist/esm-browser/v3.d.ts","./node_modules/uuid/dist/esm-browser/v4.d.ts","./node_modules/uuid/dist/esm-browser/v5.d.ts","./node_modules/uuid/dist/esm-browser/v6.d.ts","./node_modules/uuid/dist/esm-browser/v6tov1.d.ts","./node_modules/uuid/dist/esm-browser/v7.d.ts","./node_modules/uuid/dist/esm-browser/validate.d.ts","./node_modules/uuid/dist/esm-browser/version.d.ts","./node_modules/uuid/dist/esm-browser/index.d.ts","./src/providers/client.ts","./src/providers/thread.tsx","./node_modules/sonner/dist/index.d.mts","./src/providers/stream.tsx","./src/components/widgets/util.ts","./node_modules/@radix-ui/react-context/dist/index.d.mts","./node_modules/@radix-ui/react-dismissable-layer/dist/index.d.mts","./node_modules/@radix-ui/react-focus-scope/dist/index.d.mts","./node_modules/@radix-ui/react-portal/dist/index.d.mts","./node_modules/@radix-ui/react-dialog/dist/index.d.mts","./src/components/ui/sheet.tsx","./src/components/ui/skeleton.tsx","./src/components/widgets/flightoptions.widget.tsx","./src/components/widgets/flightstatus.wdiget.tsx","./node_modules/cmdk/dist/index.d.ts","./src/components/ui/dialog.tsx","./src/components/ui/command.tsx","./node_modules/@radix-ui/react-arrow/dist/index.d.mts","./node_modules/@radix-ui/rect/dist/index.d.mts","./node_modules/@radix-ui/react-popper/dist/index.d.mts","./node_modules/@radix-ui/react-popover/dist/index.d.mts","./src/components/common/ui/popover.tsx","./src/services/airportservice.ts","./src/components/common/ui/airportcombobox.tsx","./node_modules/react-day-picker/dist/esm/ui.d.ts","./node_modules/date-fns/locale/af.d.ts","./node_modules/date-fns/locale/ar.d.ts","./node_modules/date-fns/locale/ar-dz.d.ts","./node_modules/date-fns/locale/ar-eg.d.ts","./node_modules/date-fns/locale/ar-ma.d.ts","./node_modules/date-fns/locale/ar-sa.d.ts","./node_modules/date-fns/locale/ar-tn.d.ts","./node_modules/date-fns/locale/az.d.ts","./node_modules/date-fns/locale/be.d.ts","./node_modules/date-fns/locale/be-tarask.d.ts","./node_modules/date-fns/locale/bg.d.ts","./node_modules/date-fns/locale/bn.d.ts","./node_modules/date-fns/locale/bs.d.ts","./node_modules/date-fns/locale/ca.d.ts","./node_modules/date-fns/locale/ckb.d.ts","./node_modules/date-fns/locale/cs.d.ts","./node_modules/date-fns/locale/cy.d.ts","./node_modules/date-fns/locale/da.d.ts","./node_modules/date-fns/locale/de.d.ts","./node_modules/date-fns/locale/de-at.d.ts","./node_modules/date-fns/locale/el.d.ts","./node_modules/date-fns/locale/en-au.d.ts","./node_modules/date-fns/locale/en-ca.d.ts","./node_modules/date-fns/locale/en-gb.d.ts","./node_modules/date-fns/locale/en-ie.d.ts","./node_modules/date-fns/locale/en-in.d.ts","./node_modules/date-fns/locale/en-nz.d.ts","./node_modules/date-fns/locale/en-us.d.ts","./node_modules/date-fns/locale/en-za.d.ts","./node_modules/date-fns/locale/eo.d.ts","./node_modules/date-fns/locale/es.d.ts","./node_modules/date-fns/locale/et.d.ts","./node_modules/date-fns/locale/eu.d.ts","./node_modules/date-fns/locale/fa-ir.d.ts","./node_modules/date-fns/locale/fi.d.ts","./node_modules/date-fns/locale/fr.d.ts","./node_modules/date-fns/locale/fr-ca.d.ts","./node_modules/date-fns/locale/fr-ch.d.ts","./node_modules/date-fns/locale/fy.d.ts","./node_modules/date-fns/locale/gd.d.ts","./node_modules/date-fns/locale/gl.d.ts","./node_modules/date-fns/locale/gu.d.ts","./node_modules/date-fns/locale/he.d.ts","./node_modules/date-fns/locale/hi.d.ts","./node_modules/date-fns/locale/hr.d.ts","./node_modules/date-fns/locale/ht.d.ts","./node_modules/date-fns/locale/hu.d.ts","./node_modules/date-fns/locale/hy.d.ts","./node_modules/date-fns/locale/id.d.ts","./node_modules/date-fns/locale/is.d.ts","./node_modules/date-fns/locale/it.d.ts","./node_modules/date-fns/locale/it-ch.d.ts","./node_modules/date-fns/locale/ja.d.ts","./node_modules/date-fns/locale/ja-hira.d.ts","./node_modules/date-fns/locale/ka.d.ts","./node_modules/date-fns/locale/kk.d.ts","./node_modules/date-fns/locale/km.d.ts","./node_modules/date-fns/locale/kn.d.ts","./node_modules/date-fns/locale/ko.d.ts","./node_modules/date-fns/locale/lb.d.ts","./node_modules/date-fns/locale/lt.d.ts","./node_modules/date-fns/locale/lv.d.ts","./node_modules/date-fns/locale/mk.d.ts","./node_modules/date-fns/locale/mn.d.ts","./node_modules/date-fns/locale/ms.d.ts","./node_modules/date-fns/locale/mt.d.ts","./node_modules/date-fns/locale/nb.d.ts","./node_modules/date-fns/locale/nl.d.ts","./node_modules/date-fns/locale/nl-be.d.ts","./node_modules/date-fns/locale/nn.d.ts","./node_modules/date-fns/locale/oc.d.ts","./node_modules/date-fns/locale/pl.d.ts","./node_modules/date-fns/locale/pt.d.ts","./node_modules/date-fns/locale/pt-br.d.ts","./node_modules/date-fns/locale/ro.d.ts","./node_modules/date-fns/locale/ru.d.ts","./node_modules/date-fns/locale/se.d.ts","./node_modules/date-fns/locale/sk.d.ts","./node_modules/date-fns/locale/sl.d.ts","./node_modules/date-fns/locale/sq.d.ts","./node_modules/date-fns/locale/sr.d.ts","./node_modules/date-fns/locale/sr-latn.d.ts","./node_modules/date-fns/locale/sv.d.ts","./node_modules/date-fns/locale/ta.d.ts","./node_modules/date-fns/locale/te.d.ts","./node_modules/date-fns/locale/th.d.ts","./node_modules/date-fns/locale/tr.d.ts","./node_modules/date-fns/locale/ug.d.ts","./node_modules/date-fns/locale/uk.d.ts","./node_modules/date-fns/locale/uz.d.ts","./node_modules/date-fns/locale/uz-cyrl.d.ts","./node_modules/date-fns/locale/vi.d.ts","./node_modules/date-fns/locale/zh-cn.d.ts","./node_modules/date-fns/locale/zh-hk.d.ts","./node_modules/date-fns/locale/zh-tw.d.ts","./node_modules/date-fns/locale.d.ts","./node_modules/react-day-picker/dist/esm/components/button.d.ts","./node_modules/react-day-picker/dist/esm/components/captionlabel.d.ts","./node_modules/react-day-picker/dist/esm/components/chevron.d.ts","./node_modules/react-day-picker/dist/esm/components/day.d.ts","./node_modules/react-day-picker/dist/esm/components/daybutton.d.ts","./node_modules/react-day-picker/dist/esm/components/dropdown.d.ts","./node_modules/react-day-picker/dist/esm/components/dropdownnav.d.ts","./node_modules/react-day-picker/dist/esm/components/footer.d.ts","./node_modules/react-day-picker/dist/esm/classes/calendarweek.d.ts","./node_modules/react-day-picker/dist/esm/classes/calendarmonth.d.ts","./node_modules/react-day-picker/dist/esm/components/month.d.ts","./node_modules/react-day-picker/dist/esm/components/monthgrid.d.ts","./node_modules/react-day-picker/dist/esm/components/months.d.ts","./node_modules/react-day-picker/dist/esm/components/monthsdropdown.d.ts","./node_modules/react-day-picker/dist/esm/components/nav.d.ts","./node_modules/react-day-picker/dist/esm/components/nextmonthbutton.d.ts","./node_modules/react-day-picker/dist/esm/components/option.d.ts","./node_modules/react-day-picker/dist/esm/components/previousmonthbutton.d.ts","./node_modules/react-day-picker/dist/esm/components/root.d.ts","./node_modules/react-day-picker/dist/esm/components/select.d.ts","./node_modules/react-day-picker/dist/esm/components/week.d.ts","./node_modules/react-day-picker/dist/esm/components/weekday.d.ts","./node_modules/react-day-picker/dist/esm/components/weekdays.d.ts","./node_modules/react-day-picker/dist/esm/components/weeknumber.d.ts","./node_modules/react-day-picker/dist/esm/components/weeknumberheader.d.ts","./node_modules/react-day-picker/dist/esm/components/weeks.d.ts","./node_modules/react-day-picker/dist/esm/components/yearsdropdown.d.ts","./node_modules/react-day-picker/dist/esm/components/custom-components.d.ts","./node_modules/react-day-picker/dist/esm/formatters/formatcaption.d.ts","./node_modules/react-day-picker/dist/esm/formatters/formatday.d.ts","./node_modules/react-day-picker/dist/esm/formatters/formatmonthdropdown.d.ts","./node_modules/react-day-picker/dist/esm/formatters/formatweeknumber.d.ts","./node_modules/react-day-picker/dist/esm/formatters/formatweeknumberheader.d.ts","./node_modules/react-day-picker/dist/esm/formatters/formatweekdayname.d.ts","./node_modules/react-day-picker/dist/esm/formatters/formatyeardropdown.d.ts","./node_modules/react-day-picker/dist/esm/formatters/index.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelgrid.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelgridcell.d.ts","./node_modules/react-day-picker/dist/esm/labels/labeldaybutton.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelnav.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelmonthdropdown.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelnext.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelprevious.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelweekday.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelweeknumber.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelweeknumberheader.d.ts","./node_modules/react-day-picker/dist/esm/labels/labelyeardropdown.d.ts","./node_modules/react-day-picker/dist/esm/labels/index.d.ts","./node_modules/react-day-picker/dist/esm/types/shared.d.ts","./node_modules/react-day-picker/dist/esm/classes/datelib.d.ts","./node_modules/react-day-picker/dist/esm/classes/calendarday.d.ts","./node_modules/react-day-picker/dist/esm/classes/index.d.ts","./node_modules/react-day-picker/dist/esm/components/monthcaption.d.ts","./node_modules/react-day-picker/dist/esm/types/props.d.ts","./node_modules/react-day-picker/dist/esm/types/selection.d.ts","./node_modules/react-day-picker/dist/esm/usedaypicker.d.ts","./node_modules/react-day-picker/dist/esm/types/deprecated.d.ts","./node_modules/react-day-picker/dist/esm/types/index.d.ts","./node_modules/react-day-picker/dist/esm/daypicker.d.ts","./node_modules/react-day-picker/dist/esm/helpers/getdefaultclassnames.d.ts","./node_modules/react-day-picker/dist/esm/helpers/index.d.ts","./node_modules/react-day-picker/dist/esm/utils/addtorange.d.ts","./node_modules/react-day-picker/dist/esm/utils/datematchmodifiers.d.ts","./node_modules/react-day-picker/dist/esm/utils/rangecontainsdayofweek.d.ts","./node_modules/react-day-picker/dist/esm/utils/rangecontainsmodifiers.d.ts","./node_modules/react-day-picker/dist/esm/utils/rangeincludesdate.d.ts","./node_modules/react-day-picker/dist/esm/utils/rangeoverlaps.d.ts","./node_modules/react-day-picker/dist/esm/utils/typeguards.d.ts","./node_modules/react-day-picker/dist/esm/utils/index.d.ts","./node_modules/@date-fns/tz/constants/index.d.ts","./node_modules/@date-fns/tz/date/index.d.ts","./node_modules/@date-fns/tz/date/mini.d.ts","./node_modules/@date-fns/tz/tz/index.d.ts","./node_modules/@date-fns/tz/tzoffset/index.d.ts","./node_modules/@date-fns/tz/tzscan/index.d.ts","./node_modules/@date-fns/tz/index.d.ts","./node_modules/react-day-picker/dist/esm/index.d.ts","./src/components/ui/calendar.tsx","./src/components/widgets/searchcriteria.widget.tsx","./src/components/widgets/lounge.widget.tsx","./src/components/widgets/weather.widget.tsx","./src/components/common/ui/input.tsx","./src/components/common/ui/label.tsx","./node_modules/@radix-ui/react-select/dist/index.d.mts","./src/components/common/ui/select.tsx","./src/components/widgets/review.widget.tsx","./src/components/widgets/index.ts","./src/lib/agent-inbox-interrupt.ts","./src/lib/ensure-tool-responses.ts","./src/lib/multimodal-utils.ts","./src/app/error.tsx","./src/app/global-error.tsx","./node_modules/next/dist/compiled/@next/font/dist/types.d.ts","./node_modules/next/dist/compiled/@next/font/dist/google/index.d.ts","./node_modules/next/font/google/index.d.ts","./node_modules/nuqs/dist/adapters/next/app.d.ts","./src/app/layout.tsx","./src/app/loading.tsx","./src/app/not-found.tsx","./node_modules/motion-utils/dist/index.d.ts","./node_modules/motion-dom/dist/index.d.ts","./node_modules/framer-motion/dist/types.d-d0hxpxhm.d.ts","./node_modules/framer-motion/dist/types/index.d.ts","./node_modules/@langchain/core/dist/output_parsers/base.d.ts","./node_modules/@langchain/core/dist/output_parsers/transform.d.ts","./node_modules/@langchain/core/dist/output_parsers/bytes.d.ts","./node_modules/@langchain/core/dist/output_parsers/list.d.ts","./node_modules/@langchain/core/dist/output_parsers/string.d.ts","./node_modules/@langchain/core/dist/output_parsers/structured.d.ts","./node_modules/@langchain/core/dist/utils/json_patch.d.ts","./node_modules/@langchain/core/dist/utils/json.d.ts","./node_modules/@langchain/core/dist/output_parsers/json.d.ts","./node_modules/@langchain/core/dist/output_parsers/xml.d.ts","./node_modules/@langchain/core/dist/output_parsers/index.d.ts","./node_modules/@langchain/core/output_parsers.d.ts","./node_modules/@radix-ui/react-tooltip/dist/index.d.mts","./src/components/ui/tooltip.tsx","./src/components/thread/tooltip-icon-button.tsx","./src/components/thread/messages/shared.tsx","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/vfile-message/lib/index.d.ts","./node_modules/vfile-message/index.d.ts","./node_modules/vfile/lib/index.d.ts","./node_modules/vfile/index.d.ts","./node_modules/unified/lib/callable-instance.d.ts","./node_modules/trough/lib/index.d.ts","./node_modules/trough/index.d.ts","./node_modules/unified/lib/index.d.ts","./node_modules/unified/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/mdast-util-to-hast/lib/state.d.ts","./node_modules/mdast-util-to-hast/lib/footer.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/blockquote.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/delete.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/emphasis.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/heading.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/html.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/image.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/inline-code.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link-reference.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/link.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list-item.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/list.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/paragraph.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/root.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/strong.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-cell.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/table-row.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/text.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/thematic-break.d.ts","./node_modules/mdast-util-to-hast/lib/handlers/index.d.ts","./node_modules/mdast-util-to-hast/lib/index.d.ts","./node_modules/mdast-util-to-hast/index.d.ts","./node_modules/remark-rehype/lib/index.d.ts","./node_modules/remark-rehype/index.d.ts","./node_modules/react-markdown/lib/index.d.ts","./node_modules/react-markdown/index.d.ts","./node_modules/micromark-util-types/index.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/html.d.ts","./node_modules/micromark-extension-gfm-footnote/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-footnote/index.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/html.d.ts","./node_modules/micromark-extension-gfm-strikethrough/lib/syntax.d.ts","./node_modules/micromark-extension-gfm-strikethrough/index.d.ts","./node_modules/micromark-extension-gfm/index.d.ts","./node_modules/mdast-util-from-markdown/lib/types.d.ts","./node_modules/mdast-util-from-markdown/lib/index.d.ts","./node_modules/mdast-util-from-markdown/index.d.ts","./node_modules/mdast-util-to-markdown/lib/types.d.ts","./node_modules/mdast-util-to-markdown/lib/index.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/blockquote.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/definition.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/emphasis.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/heading.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/html.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/image-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/inline-code.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/link-reference.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/list-item.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/paragraph.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/root.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/strong.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/text.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/thematic-break.d.ts","./node_modules/mdast-util-to-markdown/lib/handle/index.d.ts","./node_modules/mdast-util-to-markdown/index.d.ts","./node_modules/mdast-util-gfm-footnote/lib/index.d.ts","./node_modules/mdast-util-gfm-footnote/index.d.ts","./node_modules/markdown-table/index.d.ts","./node_modules/mdast-util-gfm-table/lib/index.d.ts","./node_modules/mdast-util-gfm-table/index.d.ts","./node_modules/mdast-util-gfm/lib/index.d.ts","./node_modules/mdast-util-gfm/index.d.ts","./node_modules/remark-gfm/lib/index.d.ts","./node_modules/remark-gfm/index.d.ts","./node_modules/katex/types/katex.d.ts","./node_modules/rehype-katex/lib/index.d.ts","./node_modules/rehype-katex/index.d.ts","./node_modules/mdast-util-math/lib/index.d.ts","./node_modules/mdast-util-math/index.d.ts","./node_modules/remark-math/lib/index.d.ts","./node_modules/remark-math/index.d.ts","./node_modules/@types/react-syntax-highlighter/index.d.ts","./src/components/thread/syntax-highlighter.tsx","./src/components/thread/markdown-text.tsx","./src/components/thread/messages/tool-calls.tsx","./node_modules/@langchain/core/messages/tool.d.ts","./src/components/thread/agent-inbox/components/tool-call-table.tsx","./src/components/thread/agent-inbox/components/state-view.tsx","./src/components/thread/agent-inbox/components/thread-id.tsx","./src/components/ui/textarea.tsx","./node_modules/@radix-ui/react-separator/dist/index.d.mts","./src/components/ui/separator.tsx","./src/components/thread/agent-inbox/components/inbox-item-input.tsx","./node_modules/@langchain/langgraph/web.d.ts","./src/components/thread/agent-inbox/hooks/use-interrupted-actions.tsx","./src/components/thread/agent-inbox/components/thread-actions-view.tsx","./src/components/thread/agent-inbox/index.tsx","./src/components/debug/debugpanel.tsx","./src/components/thread/messages/generic-interrupt.tsx","./src/components/thread/artifact.tsx","./src/components/thread/messages/ai.tsx","./src/components/thread/multimodalpreview.tsx","./src/components/thread/messages/human.tsx","./node_modules/use-stick-to-bottom/dist/usesticktobottom.d.ts","./node_modules/use-stick-to-bottom/dist/sticktobottom.d.ts","./node_modules/use-stick-to-bottom/dist/index.d.ts","./src/hooks/usemediaquery.tsx","./src/components/thread/history/index.tsx","./node_modules/@radix-ui/react-switch/dist/index.d.mts","./src/components/ui/switch.tsx","./src/components/icons/github.tsx","./src/hooks/use-file-upload.tsx","./src/components/thread/contentblockspreview.tsx","./src/components/thread/index.tsx","./node_modules/next-themes/dist/index.d.ts","./src/components/ui/sonner.tsx","./src/app/page.tsx","./src/app/login/page.tsx","./src/app/widgets/page.tsx","./src/components/common/ui/airportsearch.tsx","./src/components/common/ui/calendar.tsx","./node_modules/@radix-ui/react-avatar/dist/index.d.mts","./src/components/ui/avatar.tsx","./src/components/ui/card.tsx","./src/components/ui/popover.tsx","./src/components/widgets/review-widget-demo.tsx","./.next/types/cache-life.d.ts","./.next/types/app/layout.ts","./.next/types/app/page.ts","./.next/types/app/api/[..._path]/route.ts","./.next/types/app/login/page.ts","./.next/types/app/widgets/page.ts","./node_modules/@types/d3-array/index.d.ts","./node_modules/@types/d3-color/index.d.ts","./node_modules/@types/d3-ease/index.d.ts","./node_modules/@types/d3-interpolate/index.d.ts","./node_modules/@types/d3-path/index.d.ts","./node_modules/@types/d3-time/index.d.ts","./node_modules/@types/d3-scale/index.d.ts","./node_modules/@types/d3-shape/index.d.ts","./node_modules/@types/d3-timer/index.d.ts","./node_modules/@types/ms/index.d.ts","./node_modules/@types/debug/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/estree-jsx/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/katex/index.d.ts","./node_modules/@types/prismjs/index.d.ts","./node_modules/@types/retry/index.d.ts","./node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/cookie/index.d.ts","../../../node_modules/@types/cors/index.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/history/domutils.d.ts","../../../node_modules/@types/history/createbrowserhistory.d.ts","../../../node_modules/@types/history/createhashhistory.d.ts","../../../node_modules/@types/history/creatememoryhistory.d.ts","../../../node_modules/@types/history/locationutils.d.ts","../../../node_modules/@types/history/pathutils.d.ts","../../../node_modules/@types/history/index.d.ts","../../../node_modules/@types/react/global.d.ts","../../../node_modules/csstype/index.d.ts","../../../node_modules/@types/react/index.d.ts","../../../node_modules/@types/react-router/index.d.ts","../../../node_modules/react-router/dist/development/route-data-5ozazqtt.d.mts","../../../node_modules/react-router/dist/development/fog-of-war-1hwhk5ey.d.mts","../../../node_modules/cookie/dist/index.d.ts","../../../node_modules/react-router/dist/development/future-lddp5fkh.d.mts","../../../node_modules/react-router/dist/development/index.d.mts","../../../node_modules/@types/react-router-dom/index.d.ts"],"fileIdsList":[[95,137,467,475],[95,137,334,1291],[95,137,334,1444],[95,137,334,1443],[95,137,334,1445],[95,137,421,422,423,424],[95,137,471,472],[95,137],[95,137,672],[95,137,671,672,673,674,675,676,677,678],[95,137,1264],[95,137,1265],[95,137,1264,1265,1266,1267,1268,1269],[95,137,597],[95,137,609],[95,137,573,575,576,577,578,579,580,598,626],[95,137,500,501,572,573,597,598,599],[95,137,501,572,573,597,598,599,600,608],[95,137,501,684],[95,137,599,609,620],[95,137,629],[95,137,514,570,571,573,598,609,620,623,627,628,629,630,680],[95,137,514,570,598,609,620,627,628,630,681,684,696],[95,137,500],[95,137,573,575],[95,137,501,572],[95,137,573],[95,137,573,574],[95,137,573,574,575,576,577,578,579,580,581,682,683],[95,137,573,575,576,577,578,579,580,620,621,681,682],[95,137,573,575,576,577,578,579,580],[95,137,598,609,628,630,684,692],[95,137,1299],[95,137,1298,1299,1300,1301,1302,1303,1306,1307],[95,137,598,1299,1304,1305],[95,137,684,1299],[95,137,501,514,571,1298],[95,137,573,598,609,1298],[95,137,598,1299,1304],[95,137,501,573,579],[95,137,501,571,575,596,607,609,611,616,617,618,619],[95,137,609,620,630],[95,137,609,611],[95,137,611],[95,137,607,620,630,684,690],[95,137,611,620,630,687,688,689,691],[95,137,620,630],[95,137,616,620,630],[95,137,501,571,609,610],[95,137,514,571,575,609,620,630,680,681,694,695],[95,137,514,571,573,575,609,620,630,680,681],[95,137,575],[95,137,501,572,573,597,598,599,600,605,606],[95,137,600,607,616],[95,137,600,607,615,616,617],[95,137,600,604,605,606,607],[95,137,612,613,614],[95,137,612],[95,137,613],[95,137,624,625],[95,137,615],[95,137,571,670,679],[95,137,610],[95,137,571],[95,137,514,570],[95,137,705],[95,137,681],[95,137,756],[95,137,684],[95,137,1308],[95,137,692],[95,137,619],[95,137,696],[95,137,618],[95,137,616],[95,137,693,699,700,701],[95,137,699],[95,137,711,712],[95,137,711],[95,137,699,700,701,702,703,704,710,713],[95,137,693,699,700,701,702],[95,137,706],[95,137,707],[95,137,707,708,709],[95,137,714],[95,137,490,492,493,494],[95,137,490,491,492,493,495,496],[81,95,137,264,1040,1041,1043],[95,137,1043,1044],[95,137,1040],[95,137,490,491,492,493,495],[95,137,489],[95,137,490,492],[95,137,491],[95,137,497],[95,137,1045],[95,137,1041],[95,137,716],[95,137,715],[95,137,745],[95,137,716,717,718,741,742,743,744],[95,137,728],[95,137,715,718,724,725,728,734,746,750],[95,137,730],[95,137,693,716,717,718,719],[95,137,693,715,716,720,721,723,725,728,730,731,734],[95,137,720,735,737,738],[95,137,685,730,737],[95,137,631,685,720,738,753],[95,137,693,715,716,719,720,724,728,730,735,736],[95,137,631,716],[95,137,693],[95,137,719,747,748],[95,137,719],[95,137,693,715,719,730],[95,137,685,686,693,697,698,753],[95,137,685,758],[95,137,685,693,697,698,728,737],[95,137,698,754,755,759,760,761,762],[95,137,631,685,693,697,715,728,730,738,739,752,753,757,758,759],[95,137,693,697],[95,137,685,693,697,723,728,752],[95,137,693,715,716,719,722,725,731,732],[95,137,693,715,716,719,721,724,725,726,727,728,729,730,731,733],[95,137,693,723,724],[95,137,693,715],[95,137,726,731],[95,137,693,715,716,719,721,724,725,726,728,730],[95,137,693,723,728],[95,137,693,722],[95,137,715,724,725,728,730,731,734,739,740,745,746,749,751,752],[95,137,763],[95,137,753],[81,95,137,1052],[81,95,137,1052,1079],[81,95,137],[81,95,137,1052,1079,1080,1081,1082],[81,95,137,1052,1079,1080,1081,1082,1093],[81,95,137,1052,1079,1091,1092],[81,95,137,1052,1079,1080,1082,1093],[95,137,1460],[95,137,1464],[95,137,1463],[95,137,1468],[95,137,1470,1471],[95,137,1314],[95,137,1024,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036],[95,137,1024,1025,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036],[95,137,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036],[95,137,1024,1025,1026,1028,1029,1030,1031,1032,1033,1034,1035,1036],[95,137,1024,1025,1026,1027,1029,1030,1031,1032,1033,1034,1035,1036],[95,137,1024,1025,1026,1027,1028,1030,1031,1032,1033,1034,1035,1036],[95,137,1024,1025,1026,1027,1028,1029,1031,1032,1033,1034,1035,1036],[95,137,1024,1025,1026,1027,1028,1029,1030,1032,1033,1034,1035,1036],[95,137,1024,1025,1026,1027,1028,1029,1030,1031,1033,1034,1035,1036],[95,137,1024,1025,1026,1027,1028,1029,1030,1031,1032,1034,1035,1036],[95,137,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1035,1036],[95,137,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1036],[95,137,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035],[95,134,137],[95,136,137],[137],[95,137,142,172],[95,137,138,143,149,150,157,169,180],[95,137,138,139,149,157],[90,91,92,95,137],[95,137,140,181],[95,137,141,142,150,158],[95,137,142,169,177],[95,137,143,145,149,157],[95,136,137,144],[95,137,145,146],[95,137,147,149],[95,136,137,149],[95,137,149,150,151,169,180],[95,137,149,150,151,164,169,172],[95,132,137],[95,132,137,145,149,152,157,169,180],[95,137,149,150,152,153,157,169,177,180],[95,137,152,154,169,177,180],[93,94,95,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],[95,137,149,155],[95,137,156,180],[95,137,145,149,157,169],[95,137,158],[95,137,159],[95,136,137,160],[95,134,135,136,137,138,139,140,141,142,143,144,145,146,147,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186],[95,137,162],[95,137,163],[95,137,149,164,165],[95,137,164,166,181,183],[95,137,149,169,170,172],[95,137,171,172],[95,137,169,170],[95,137,172],[95,137,173],[95,134,137,169,174],[95,137,149,175,176],[95,137,175,176],[95,137,142,157,169,177],[95,137,178],[95,137,157,179],[95,137,152,163,180],[95,137,142,181],[95,137,169,182],[95,137,156,183],[95,137,184],[95,137,149,151,160,169,172,180,182,183,185],[95,137,169,186],[81,95,137,190,192],[81,85,95,137,188,189,190,191,415,463],[81,95,137,1408],[81,85,95,137,189,192,415,463],[81,85,95,137,188,192,415,463],[79,80,95,137],[95,137,478,479],[95,137,478],[81,95,137,1083],[95,137,769],[95,137,767,769],[95,137,767],[95,137,769,833,834],[95,137,769,836],[95,137,769,837],[95,137,854],[95,137,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1021,1022],[95,137,769,930],[95,137,767,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1135,1136,1137,1138,1139,1140,1141,1142,1143,1144,1145,1146,1147,1148,1149,1150,1151,1152,1153,1154,1155,1156,1157,1158,1159,1160,1161,1162,1163,1164,1165,1166,1167,1168,1169,1170,1171,1172,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193],[95,137,769,834,954],[95,137,767,951,952],[95,137,953],[95,137,769,951],[95,137,766,767,768],[81,95,137,264,1294,1295],[81,95,137,264,1294,1295,1296],[95,137,622],[95,137,467],[95,137,582,588,589,590],[95,137,589,592],[95,137,589,591,592,601,602],[95,137,589,591],[95,137,592,594],[95,137,592,593,595],[95,137,587],[95,137,603],[95,137,592],[95,137,589],[95,137,595],[95,137,1358,1361,1364,1366,1367,1368],[95,137,1325,1353,1358,1361,1364,1366,1368,1405],[95,137,1325,1353,1358,1361,1364,1368,1405],[95,137,1391,1392,1396,1405],[95,137,1368,1391,1393,1396,1405],[95,137,1368,1391,1393,1395,1405],[95,137,1325,1353,1368,1391,1393,1394,1396,1405],[95,137,1393,1396,1397],[95,137,1368,1391,1393,1396,1398,1405],[95,137,1325,1353,1368,1391,1393,1396,1404,1405],[95,137,1315,1353,1368,1391,1393,1396,1405],[95,137,1315,1325,1326,1327,1351,1352,1353,1405],[95,137,1315,1326,1353],[95,137,1315,1325,1326,1353,1405],[95,137,1328,1329,1330,1331,1332,1333,1334,1335,1336,1337,1338,1339,1340,1341,1342,1343,1344,1345,1346,1347,1348,1349,1350],[95,137,1315,1319,1325,1327,1353,1405],[95,137,1369,1370,1390],[95,137,1325,1353,1391,1393,1396,1405],[95,137,1325,1353,1405],[95,137,1371,1372,1373,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,1388,1389],[95,137,1314,1325,1353,1405],[95,137,1358,1359,1360,1364,1368],[95,137,1358,1361,1364,1368],[95,137,1358,1361,1362,1363,1368],[95,137,1294],[87,95,137],[95,137,419],[95,137,426],[95,137,196,210,211,212,214,378],[95,137,196,200,202,203,204,205,206,367,378,380],[95,137,378],[95,137,211,230,347,356,374],[95,137,196],[95,137,193],[95,137,398],[95,137,378,380,397],[95,137,301,344,347,469],[95,137,311,326,356,373],[95,137,261],[95,137,361],[95,137,360,361,362],[95,137,360],[89,95,137,152,193,196,200,203,207,208,209,211,215,223,224,295,357,358,378,415],[95,137,196,213,250,298,378,394,395,469],[95,137,213,469],[95,137,224,298,299,378,469],[95,137,469],[95,137,196,213,214,469],[95,137,207,359,366],[95,137,163,264,374],[95,137,264,374],[81,95,137,264],[81,95,137,264,318],[95,137,241,259,374,452],[95,137,353,446,447,448,449,451],[95,137,264],[95,137,352],[95,137,352,353],[95,137,204,238,239,296],[95,137,240,241,296],[95,137,450],[95,137,241,296],[81,95,137,197,440],[81,95,137,180],[81,95,137,213,248],[81,95,137,213],[95,137,246,251],[81,95,137,247,418],[95,137,1287],[81,85,95,137,152,187,188,189,192,415,461,462],[95,137,152],[95,137,152,200,230,266,285,296,363,364,378,379,469],[95,137,223,365],[95,137,415],[95,137,195],[81,95,137,301,315,325,335,337,373],[95,137,163,301,315,334,335,336,373],[95,137,328,329,330,331,332,333],[95,137,330],[95,137,334],[81,95,137,247,264,418],[81,95,137,264,416,418],[81,95,137,264,418],[95,137,285,370],[95,137,370],[95,137,152,379,418],[95,137,322],[95,136,137,321],[95,137,225,229,236,267,296,308,310,311,312,314,346,373,376,379],[95,137,313],[95,137,225,241,296,308],[95,137,311,373],[95,137,311,318,319,320,322,323,324,325,326,327,338,339,340,341,342,343,373,374,469],[95,137,306],[95,137,152,163,225,229,230,235,237,241,271,285,294,295,346,369,378,379,380,415,469],[95,137,373],[95,136,137,211,229,295,308,309,369,371,372,379],[95,137,311],[95,136,137,235,267,288,302,303,304,305,306,307,310,373,374],[95,137,152,288,289,302,379,380],[95,137,211,285,295,296,308,369,373,379],[95,137,152,378,380],[95,137,152,169,376,379,380],[95,137,152,163,180,193,200,213,225,229,230,236,237,242,266,267,268,270,271,274,275,277,280,281,282,283,284,296,368,369,374,376,378,379,380],[95,137,152,169],[95,137,196,197,198,208,376,377,415,418,469],[95,137,152,169,180,227,396,398,399,400,401,469],[95,137,163,180,193,227,230,267,268,275,285,293,296,369,374,376,381,382,388,394,411,412],[95,137,207,208,223,295,358,369,378],[95,137,152,180,197,200,267,376,378,386],[95,137,300],[95,137,152,408,409,410],[95,137,376,378],[95,137,308,309],[95,137,229,267,368,418],[95,137,152,163,275,285,376,382,388,390,394,411,414],[95,137,152,207,223,394,404],[95,137,196,242,368,378,406],[95,137,152,213,242,378,389,390,402,403,405,407],[89,95,137,225,228,229,415,418],[95,137,152,163,180,200,207,215,223,230,236,237,267,268,270,271,283,285,293,296,368,369,374,375,376,381,382,383,385,387,418],[95,137,152,169,207,376,388,408,413],[95,137,218,219,220,221,222],[95,137,274,276],[95,137,278],[95,137,276],[95,137,278,279],[95,137,152,200,235,379],[95,137,152,163,195,197,225,229,230,236,237,263,265,376,380,415,418],[95,137,152,163,180,199,204,267,375,379],[95,137,302],[95,137,303],[95,137,304],[95,137,374],[95,137,226,233],[95,137,152,200,226,236],[95,137,232,233],[95,137,234],[95,137,226,227],[95,137,226,243],[95,137,226],[95,137,273,274,375],[95,137,272],[95,137,227,374,375],[95,137,269,375],[95,137,227,374],[95,137,346],[95,137,228,231,236,267,296,301,308,315,317,345,376,379],[95,137,241,252,255,256,257,258,259,316],[95,137,355],[95,137,211,228,229,289,296,311,322,326,348,349,350,351,353,354,357,368,373,378],[95,137,241],[95,137,263],[95,137,152,228,236,244,260,262,266,376,415,418],[95,137,241,252,253,254,255,256,257,258,259,416],[95,137,227],[95,137,289,290,293,369],[95,137,152,274,378],[95,137,288,311],[95,137,287],[95,137,283,289],[95,137,286,288,378],[95,137,152,199,289,290,291,292,378,379],[81,95,137,238,240,296],[95,137,297],[81,95,137,197],[81,95,137,374],[81,89,95,137,229,237,415,418],[95,137,197,440,441],[81,95,137,251],[81,95,137,163,180,195,245,247,249,250,418],[95,137,213,374,379],[95,137,374,384],[81,95,137,150,152,163,195,251,298,415,416,417],[81,95,137,188,189,192,415,463],[81,82,83,84,85,95,137],[95,137,142],[95,137,391,392,393],[95,137,391],[81,85,95,137,152,154,163,187,188,189,190,192,193,195,271,334,380,414,418,463],[95,137,428],[95,137,430],[95,137,432],[95,137,1288],[95,137,434],[95,137,436,437,438],[95,137,442],[86,88,95,137,420,425,427,429,431,433,435,439,443,445,454,455,457,467,468,469,470],[95,137,444],[95,137,453],[95,137,247],[95,137,456],[95,136,137,289,290,291,293,325,374,458,459,460,463,464,465,466],[95,137,187],[81,95,137,1047],[95,137,1048],[95,137,583,584,585,586],[95,137,584],[95,137,584,585],[95,137,1244],[95,137,1203],[95,137,1245],[95,137,1023,1126,1194,1243],[95,137,1203,1204,1244,1245],[95,137,1195,1196,1197,1198,1199,1200,1201,1202,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1247],[81,95,137,1246,1252],[81,95,137,1252],[81,95,137,1204],[81,95,137,1246],[81,95,137,1200],[95,137,1223,1224,1225,1226,1227,1228,1229],[95,137,1252],[95,137,1254],[95,137,1098,1222,1230,1242,1246,1250,1252,1253,1255,1263,1270],[95,137,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241],[95,137,1244,1252],[95,137,1098,1215,1242,1243,1247,1248,1250],[95,137,1243,1248,1249,1251],[81,95,137,1098,1243,1244],[95,137,1243,1248],[81,95,137,1098,1222,1230,1242],[81,95,137,1204,1243,1245,1248,1249],[95,137,1256,1257,1258,1259,1260,1261,1262],[95,137,1356],[81,95,137,1315,1324,1353,1355],[95,137,1402],[95,137,1315,1319,1353,1401],[95,137,1365,1398,1399],[95,137,1400],[95,137,1406],[95,137,1324,1325,1353,1405],[95,137,1353,1354],[95,137,1315,1319,1324,1325,1353,1405],[95,137,169,187],[95,137,1321],[95,104,108,137,180],[95,104,137,169,180],[95,99,137],[95,101,104,137,177,180],[95,137,157,177],[95,99,137,187],[95,101,104,137,157,180],[95,96,97,100,103,137,149,169,180],[95,104,111,137],[95,96,102,137],[95,104,125,126,137],[95,100,104,137,172,180,187],[95,125,137,187],[95,98,99,137,187],[95,104,137],[95,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,126,127,128,129,130,131,137],[95,104,119,137],[95,104,111,112,137],[95,102,104,112,113,137],[95,103,137],[95,96,99,104,137],[95,104,108,112,113,137],[95,108,137],[95,102,104,107,137,180],[95,96,101,104,111,137],[95,137,169],[95,99,104,125,137,185,187],[95,137,1319,1323],[95,137,1314,1319,1320,1322,1324],[95,137,1430,1431],[81,95,137,1430],[95,137,1057,1058,1059,1060,1061,1062,1063,1065,1066,1067,1068,1069,1070,1071,1072],[95,137,1057],[95,137,1057,1064],[95,137,1316],[95,137,1317,1318],[95,137,1314,1317,1319],[95,137,655,656],[95,137,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669],[95,137,631,655,656],[95,137,656],[95,137,631,633,655,656],[95,137,631,633,656],[95,137,631,633,637,656,657],[95,137,631],[95,137,631,656],[95,137,631,643,655,656],[95,137,632,656],[95,137,631,647,655,656],[95,137,631,640,655,656],[95,137,631,639,642,655,656],[95,137,632,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654],[95,137,631,655,657],[95,137,513],[95,137,504,505],[95,137,502,503,504,506,507,512],[95,137,503,504],[95,137,512],[95,137,504],[95,137,502,503,504,507,508,509,510,511],[95,137,502,503,514],[95,137,516,518,519,520,521],[95,137,516,518,520,521],[95,137,516,518,520],[95,137,516,518,519,521],[95,137,516,518,521],[95,137,516,517,518,519,520,521,522,523,563,564,565,566,567,568,569],[95,137,518,521],[95,137,515,516,517,519,520,521],[95,137,518,564,568],[95,137,518,519,520,521],[95,137,520],[95,137,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562],[95,137,474],[81,95,137,471,1289,1290],[81,95,137,488],[95,137,445],[81,95,137,488,1075,1077,1426,1440,1442],[81,95,137,1075,1077,1086,1087,1273,1274,1275,1280],[95,137,485,486,487],[81,95,137,483,484],[81,95,137,484],[81,95,137,482,1038,1039,1090,1095,1096],[81,95,137,482,1038,1095,1096,1276],[81,95,137,477,480,482],[81,95,137,482,1038,1039,1271],[81,95,137,482],[81,95,137,480,482,1053],[81,95,137,482,1094],[81,95,137,482,1039,1278],[81,95,137,483,764,765,1037,1039,1076,1410,1416,1418],[81,95,137,482,483,685,1037,1039,1297,1410,1412,1413],[95,137,482,483,764,1037,1049,1076,1415,1419,1421],[81,95,137,1039,1297,1311,1312],[95,137,1037,1412],[81,95,137,484,764,765,1037,1076,1077,1420],[81,95,137,764,1077,1414,1422],[95,137,498,685,764],[95,137,685,764,765,1023,1036],[81,95,137,482,685,1428],[81,95,137,483,498,499,1039,1049,1075,1084,1085,1433],[81,95,137,482,483,484,488,498,1039,1049,1051,1054,1073,1076,1077,1283,1297,1311,1312,1425,1426,1427,1429,1432,1433,1434,1436,1437,1438,1439],[81,95,137,482,1039,1312,1357,1400,1403,1407,1409],[81,95,137,482,498,499,685,1046,1049,1077,1282,1309,1313,1410,1411,1423,1425,1426],[81,95,137,1039,1084,1281,1297,1424],[81,95,137,482,484,498,499,1077,1284,1313,1416,1428],[81,95,137,483,1039,1297,1312],[81,95,137,498,1039,1297],[81,95,137,443,482,685,1039],[81,95,137,482,483,1311],[95,137,498],[81,95,137,482,1448],[81,95,137,482,483,1039,1271],[81,95,137,482,1039,1088,1089],[81,95,137,482,1039,1083],[81,95,137,482,1053],[81,95,137,482,483,1039,1050],[81,95,137,482,1417],[95,137,482],[95,137,1076,1441],[81,95,137,482,1435],[81,95,137,482,1310],[81,95,137,443,482,1038,1039,1077,1078,1084,1085],[95,137,1086,1087,1273,1274,1275,1280],[81,95,137,443,482,1038,1039],[81,95,137,1038,1084,1280],[81,95,137,443,482,1038,1039,1077,1078,1090,1095,1272,1276,1277,1279],[81,95,137,482,1038,1039,1077,1078,1095,1097,1272],[95,137,1076],[81,95,137,1039],[81,95,137,685,1076,1284],[95,137,764],[95,137,498,1073],[95,137,685,1076],[95,137,478,481],[81,95,137,483,498,1039,1042,1046,1049,1050,1051,1054,1055,1056,1075,1076],[81,95,137,498,1049,1056,1073,1074],[95,137,152,187,1477],[95,137,152,187],[95,137,149,152,187,1482,1483,1484],[95,137,1478,1483,1485,1487],[95,137,1489,1495],[95,137,1490,1491,1492,1493,1494],[95,137,1495],[95,137,1495,1498,1504],[95,137,1495,1498],[80,95,137,1496],[95,137,150,169,187,1481],[95,137,152,187,1482,1486],[95,137,1498,1500],[95,137,1498,1500,1501,1502,1503],[95,137,1498]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"170d4db14678c68178ee8a3d5a990d5afb759ecb6ec44dbd885c50f6da6204f6","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"d4d7d3f832882a4b2d611a7eaaa80c780c3342b5732090130fa9af4a40bd051e","impliedFormat":1},{"version":"acd8fd5090ac73902278889c38336ff3f48af6ba03aa665eb34a75e7ba1dccc4","impliedFormat":1},{"version":"d6258883868fb2680d2ca96bc8b1352cab69874581493e6d52680c5ffecdb6cc","impliedFormat":1},{"version":"1b61d259de5350f8b1e5db06290d31eaebebc6baafd5f79d314b5af9256d7153","impliedFormat":1},{"version":"f258e3960f324a956fc76a3d3d9e964fff2244ff5859dcc6ce5951e5413ca826","impliedFormat":1},{"version":"643f7232d07bf75e15bd8f658f664d6183a0efaca5eb84b48201c7671a266979","impliedFormat":1},{"version":"0f6666b58e9276ac3a38fdc80993d19208442d6027ab885580d93aec76b4ef00","impliedFormat":1},{"version":"05fd364b8ef02fb1e174fbac8b825bdb1e5a36a016997c8e421f5fab0a6da0a0","impliedFormat":1},{"version":"631eff75b0e35d1b1b31081d55209abc43e16b49426546ab5a9b40bdd40b1f60","impliedFormat":1},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"d802f0e6b5188646d307f070d83512e8eb94651858de8a82d1e47f60fb6da4e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"a12d953aa755b14ac1d28ecdc1e184f3285b01d6d1e58abc11bf1826bc9d80e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"a38efe83ff77c34e0f418a806a01ca3910c02ee7d64212a59d59bca6c2c38fa1","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"fac88fbdde5ae2c50fe0a490d63ef7662509271d3c7d00543de8cdd82df2949a","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"e9b97d69510658d2f4199b7d384326b7c4053b9e6645f5c19e1c2a54ede427fc","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f478f6f5902dc144c0d6d7bdc919c5177cac4d17a8ca8653c2daf6d7dc94317f","affectsGlobalScope":true,"impliedFormat":1},{"version":"19d5f8d3930e9f99aa2c36258bf95abbe5adf7e889e6181872d1cdba7c9a7dd5","impliedFormat":1},{"version":"9855e02d837744303391e5623a531734443a5f8e6e8755e018c41d63ad797db2","impliedFormat":1},{"version":"bdba81959361810be44bcfdd283f4d601e406ab5ad1d2bdff0ed480cf983c9d7","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"71450bbc2d82821d24ca05699a533e72758964e9852062c53b30f31c36978ab8","affectsGlobalScope":true,"impliedFormat":1},{"version":"b326f4813b90d230ec3950f66bd5b5ce3971aac5fac67cfafc54aa07b39fd07f","affectsGlobalScope":true,"impliedFormat":1},{"version":"25d130083f833251b5b4c2794890831b1b8ce2ead24089f724181576cf9d7279","impliedFormat":1},{"version":"ffe66ee5c9c47017aca2136e95d51235c10e6790753215608bff1e712ff54ec6","impliedFormat":1},{"version":"c196aaab6ba9679c918dcc1ee272c5f798ea9fc489b194d293de5074cf96d56b","impliedFormat":1},{"version":"017caf5d2a8ef581cf94f678af6ce7415e06956317946315560f1487b9a56167","impliedFormat":1},{"version":"528b62e4272e3ddfb50e8eed9e359dedea0a4d171c3eb8f337f4892aac37b24b","impliedFormat":1},{"version":"d71535813e39c23baa113bc4a29a0e187b87d1105ccc8c5a6ebaca38d9a9bff2","impliedFormat":1},{"version":"d83f86427b468176fbacb28ef302f152ad3d2d127664c627216e45cfa06fbf7e","affectsGlobalScope":true,"impliedFormat":1},{"version":"f72bc8fe16da67e4e3268599295797b202b95e54bd215a03f97e925dd1502a36","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"915e18c559321c0afaa8d34674d3eb77e1ded12c3e85bf2a9891ec48b07a1ca5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a2f3aa60aece790303a62220456ff845a1b980899bdc2e81646b8e33d9d9cc15","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"814118df420c4e38fe5ae1b9a3bafb6e9c2aa40838e528cde908381867be6466","impliedFormat":1},{"version":"0be405730b99eee7dbb051d74f6c3c0f1f8661d86184a7122b82c2bfb0991922","impliedFormat":1},{"version":"199c8269497136f3a0f4da1d1d90ab033f899f070e0dd801946f2a241c8abba2","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"125d792ec6c0c0f657d758055c494301cc5fdb327d9d9d5960b3f129aff76093","impliedFormat":1},{"version":"12aad38de6f0594dc21efa78a2c1f67bf6a7ef5a389e05417fe9945284450908","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"edbb3546af6a57fa655860fef11f4109390f4a2f1eab4a93f548ccc21d604a56","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"98ffdf93dfdd206516971d28e3e473f417a5cfd41172e46b4ce45008f640588e","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"27c45985c94b8b342110506d89ac2c145e1eaaac62fa4baae471c603ef3dda90","affectsGlobalScope":true,"impliedFormat":1},{"version":"0f7e00beefa952297cde4638b2124d2d9a1eed401960db18edcadaa8500c78eb","impliedFormat":1},{"version":"3a051941721a7f905544732b0eb819c8d88333a96576b13af08b82c4f17581e4","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"a4568ec1888b5306bbde6d9ede5c4a81134635fa8aad7eaad15752760eb9783f","affectsGlobalScope":true,"impliedFormat":1},{"version":"3797dd6f4ea3dc15f356f8cdd3128bfa18122213b38a80d6c1f05d8e13cbdad8","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"865a2612f5ec073dd48d454307ccabb04c48f8b96fda9940c5ebfe6b4b451f51","impliedFormat":1},{"version":"de9b09c703c51ac4bf93e37774cfc1c91e4ff17a5a0e9127299be49a90c5dc63","impliedFormat":1},{"version":"a0acca63c9e39580f32a10945df231815f0fe554c074da96ba6564010ffbd2d8","impliedFormat":1},{"version":"1be330b3a0b00590633f04c3b35db7fa618c9ee079258e2b24c137eb4ffcd728","impliedFormat":1},{"version":"0a5ab5c020557d3ccc84b92c0ca55ff790e886d92662aae668020d6320ab1867","impliedFormat":1},{"version":"413df52d4ea14472c2fa5bee62f7a40abd1eb49be0b9722ee01ee4e52e63beb2","impliedFormat":1},{"version":"db6d2d9daad8a6d83f281af12ce4355a20b9a3e71b82b9f57cddcca0a8964a96","impliedFormat":1},{"version":"7bd32a723a12f78ed756747468f2030bdd55774c68f628de07598dba5b912b14","impliedFormat":1},{"version":"24f8562308dd8ba6013120557fa7b44950b619610b2c6cb8784c79f11e3c4f90","impliedFormat":1},{"version":"a1d3d6e9718cceaf1e4352845387af0620564d3d2dff02611a5c3276f73c26cb","impliedFormat":1},{"version":"a86f82d646a739041d6702101afa82dcb935c416dd93cbca7fd754fd0282ce1f","impliedFormat":1},{"version":"57d6ac03382e30e9213641ff4f18cf9402bb246b77c13c8e848c0b1ca2b7ef92","impliedFormat":1},{"version":"ce75b1aebb33d510ff28af960a9221410a3eaf7f18fc5f21f9404075fba77256","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"57e47d02e88abef89d214cdf52b478104dc17997015746e288cbb580beaef266","impliedFormat":1},{"version":"b1177acd771acfcc2648a03fc03ad3b3a1b1d2bdfa6769db0f669293b596ca13","impliedFormat":1},{"version":"3494c5bf00c1a40293ee5ff5128334b63d346abbf560c8987202c92dbc5bdc48","impliedFormat":1},{"version":"9e2739b32f741859263fdba0244c194ca8e96da49b430377930b8f721d77c000","impliedFormat":1},{"version":"99d62b942e98f691f508fc752637fec27661970aa3b0f5eb5a1e2775b995c273","impliedFormat":1},{"version":"a9af0e608929aaf9ce96bd7a7b99c9360636c31d73670e4af09a09950df97841","impliedFormat":1},{"version":"48d37b90a04e753a925228f50304d02c4f95d57bf682f8bb688621c3cd9d32ec","impliedFormat":1},{"version":"361e2b13c6765d7f85bb7600b48fde782b90c7c41105b7dab1f6e7871071ba20","impliedFormat":1},{"version":"c86fe861cf1b4c46a0fb7d74dffe596cf679a2e5e8b1456881313170f092e3fa","impliedFormat":1},{"version":"b6db56e4903e9c32e533b78ac85522de734b3d3a8541bf24d256058d464bf04b","impliedFormat":1},{"version":"24daa0366f837d22c94a5c0bad5bf1fd0f6b29e1fae92dc47c3072c3fdb2fbd5","impliedFormat":1},{"version":"b68c4ed987ef5693d3dccd85222d60769463aca404f2ffca1c4c42781dce388e","impliedFormat":1},{"version":"889c00f3d32091841268f0b994beba4dceaa5df7573be12c2c829d7c5fbc232c","impliedFormat":1},{"version":"65f43099ded6073336e697512d9b80f2d4fec3182b7b2316abf712e84104db00","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"12b8dfed70961bea1861e5d39e433580e71323abb5d33da6605182ec569db584","impliedFormat":1},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":1},{"version":"7e560f533aaf88cf9d3b427dcf6c112dd3f2ee26d610e2587583b6c354c753db","impliedFormat":1},{"version":"71e0082342008e4dfb43202df85ea0986ef8e003c921a1e49999d0234a3019da","impliedFormat":1},{"version":"27ab780875bcbb65e09da7496f2ca36288b0c541abaa75c311450a077d54ec15","impliedFormat":1},{"version":"b620391fe8060cf9bedc176a4d01366e6574d7a71e0ac0ab344a4e76576fcbb8","impliedFormat":1},{"version":"380647d8f3b7f852cca6d154a376dbf8ac620a2f12b936594504a8a852e71d2f","impliedFormat":1},{"version":"3e7efde639c6a6c3edb9847b3f61e308bf7a69685b92f665048c45132f51c218","impliedFormat":1},{"version":"df45ca1176e6ac211eae7ddf51336dc075c5314bc5c253651bae639defd5eec5","impliedFormat":1},{"version":"ef61792acbfa8c27c9bd113f02731e66229f7d3a169e3c1993b508134f1a58e0","impliedFormat":1},{"version":"9c82171d836c47486074e4ca8e059735bf97b205e70b196535b5efd40cbe1bc5","impliedFormat":1},{"version":"94fe3281392e1015b22f39535878610b4fa6f1388dc8d78746be3bc4e4bb8950","impliedFormat":1},{"version":"106c6025f1d99fd468fd8bf6e5bda724e11e5905a4076c5d29790b6c3745e50c","impliedFormat":1},{"version":"ce41407ff95aad31e28897741dfffb236d966eb38894f7a791c3a575b53f9d02","impliedFormat":1},{"version":"fac1803c07fbc9574815fdb83afddd9d0d4a2ce13f56d4e4cbb4525f8c09ee0a","impliedFormat":1},{"version":"824c76aec8d8c7e65769688cbee102238c0ef421ed6686f41b2a7d8e7e78a931","impliedFormat":1},{"version":"5eef43ef86c9c3945780211c2ce25cb9b66143a102713e56a2bea85163c5c3c7","impliedFormat":1},{"version":"a2a1cdf7273ad6641938a487ecf2fdd38f60abce41907817e44ab39e482e8739","impliedFormat":1},{"version":"c5426dbfc1cf90532f66965a7aa8c1136a78d4d0f96d8180ecbfc11d7722f1a5","impliedFormat":1},{"version":"ca921bf56756cb6fe957f6af693a35251b134fb932dc13f3dfff0bb7106f80b4","impliedFormat":1},{"version":"fee92c97f1aa59eb7098a0cc34ff4df7e6b11bae71526aca84359a2575f313d8","impliedFormat":1},{"version":"4da246ee3b860278888dd51913e6407a09ca43530db886e7bec2a592c9b9bde6","impliedFormat":1},{"version":"8c05ac9ead787bfc3e144b88bdc7d1ad8c0c7f1cd8412ab58cd3e1208d1990af","impliedFormat":1},{"version":"a23185bc5ef590c287c28a91baf280367b50ae4ea40327366ad01f6f4a8edbc5","impliedFormat":1},{"version":"65a15fc47900787c0bd18b603afb98d33ede930bed1798fc984d5ebb78b26cf9","impliedFormat":1},{"version":"9d202701f6e0744adb6314d03d2eb8fc994798fc83d91b691b75b07626a69801","impliedFormat":1},{"version":"de9d2df7663e64e3a91bf495f315a7577e23ba088f2949d5ce9ec96f44fba37d","impliedFormat":1},{"version":"c7af78a2ea7cb1cd009cfb5bdb48cd0b03dad3b54f6da7aab615c2e9e9d570c5","impliedFormat":1},{"version":"1ee45496b5f8bdee6f7abc233355898e5bf9bd51255db65f5ff7ede617ca0027","impliedFormat":1},{"version":"0c7c947ff881c4274c0800deaa0086971e0bfe51f89a33bd3048eaa3792d4876","affectsGlobalScope":true,"impliedFormat":1},{"version":"db01d18853469bcb5601b9fc9826931cc84cc1a1944b33cad76fd6f1e3d8c544","affectsGlobalScope":true,"impliedFormat":1},{"version":"dba114fb6a32b355a9cfc26ca2276834d72fe0e94cd2c3494005547025015369","impliedFormat":1},{"version":"a8f8e6ab2fa07b45251f403548b78eaf2022f3c2254df3dc186cb2671fe4996d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa6c12a7c0f6b84d512f200690bfc74819e99efae69e4c95c4cd30f6884c526e","impliedFormat":1},{"version":"f1c32f9ce9c497da4dc215c3bc84b722ea02497d35f9134db3bb40a8d918b92b","impliedFormat":1},{"version":"b73c319af2cc3ef8f6421308a250f328836531ea3761823b4cabbd133047aefa","affectsGlobalScope":true,"impliedFormat":1},{"version":"e433b0337b8106909e7953015e8fa3f2d30797cea27141d1c5b135365bb975a6","impliedFormat":1},{"version":"15b36126e0089bfef173ab61329e8286ce74af5e809d8a72edcafd0cc049057f","impliedFormat":1},{"version":"ddff7fc6edbdc5163a09e22bf8df7bef75f75369ebd7ecea95ba55c4386e2441","impliedFormat":1},{"version":"13283350547389802aa35d9f2188effaeac805499169a06ef5cd77ce2a0bd63f","impliedFormat":1},{"version":"2e4f37ffe8862b14d8e24ae8763daaa8340c0df0b859d9a9733def0eee7562d9","impliedFormat":1},{"version":"d07cbc787a997d83f7bde3877fec5fb5b12ce8c1b7047eb792996ed9726b4dde","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"8bba776476c48b0e319d243f353190f24096057acede3c2f620fee17ff885dba","impliedFormat":1},{"version":"b83cb14474fa60c5f3ec660146b97d122f0735627f80d82dd03e8caa39b4388c","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"2b2f9dac86b659e6d5cd623bcc21519910a48114fc0cef52d8f86962c48d44e2","impliedFormat":1},{"version":"7e8b76334c75984d57a810a0652c61066ffacede59001dfc5c633565f791ee60","impliedFormat":1},{"version":"72ca9ca89ca15055cbb6ce767b6bf56615be5f1ea6a87ab432ee0603c8d19010","impliedFormat":1},{"version":"7274fbffbd7c9589d8d0ffba68157237afd5cecff1e99881ea3399127e60572f","impliedFormat":1},{"version":"b73cbf0a72c8800cf8f96a9acfe94f3ad32ca71342a8908b8ae484d61113f647","impliedFormat":1},{"version":"bae6dd176832f6423966647382c0d7ba9e63f8c167522f09a982f086cd4e8b23","impliedFormat":1},{"version":"208c9af9429dd3c76f5927b971263174aaa4bc7621ddec63f163640cbd3c473c","impliedFormat":1},{"version":"20865ac316b8893c1a0cc383ccfc1801443fbcc2a7255be166cf90d03fac88c9","impliedFormat":1},{"version":"c9958eb32126a3843deedda8c22fb97024aa5d6dd588b90af2d7f2bfac540f23","impliedFormat":1},{"version":"d682336018141807fb602709e2d95a192828fcb8d5ba06dda3833a8ea98f69e3","impliedFormat":1},{"version":"461d0ad8ae5f2ff981778af912ba71b37a8426a33301daa00f21c6ccb27f8156","impliedFormat":1},{"version":"e927c2c13c4eaf0a7f17e6022eee8519eb29ef42c4c13a31e81a611ab8c95577","impliedFormat":1},{"version":"fcafff163ca5e66d3b87126e756e1b6dfa8c526aa9cd2a2b0a9da837d81bbd72","impliedFormat":1},{"version":"70246ad95ad8a22bdfe806cb5d383a26c0c6e58e7207ab9c431f1cb175aca657","impliedFormat":1},{"version":"f00f3aa5d64ff46e600648b55a79dcd1333458f7a10da2ed594d9f0a44b76d0b","impliedFormat":1},{"version":"772d8d5eb158b6c92412c03228bd9902ccb1457d7a705b8129814a5d1a6308fc","impliedFormat":1},{"version":"45490817629431853543adcb91c0673c25af52a456479588b6486daba34f68bb","impliedFormat":1},{"version":"802e797bcab5663b2c9f63f51bdf67eff7c41bc64c0fd65e6da3e7941359e2f7","impliedFormat":1},{"version":"b01bd582a6e41457bc56e6f0f9de4cb17f33f5f3843a7cf8210ac9c18472fb0f","impliedFormat":1},{"version":"8b4327413e5af38cd8cb97c59f48c3c866015d5d642f28518e3a891c469f240e","impliedFormat":1},{"version":"cecad464ddaf764e5490018d248a8df1733f3d63435fbddac72941c1f4005b66","impliedFormat":1},{"version":"6124e973eab8c52cabf3c07575204efc1784aca6b0a30c79eb85fe240a857efa","impliedFormat":1},{"version":"0d891735a21edc75df51f3eb995e18149e119d1ce22fd40db2b260c5960b914e","impliedFormat":1},{"version":"3b414b99a73171e1c4b7b7714e26b87d6c5cb03d200352da5342ab4088a54c85","impliedFormat":1},{"version":"51b1709e7ad186919a0e30237a8607100143a86d28771b3d3f046359aca1e65c","impliedFormat":1},{"version":"0a437ae178f999b46b6153d79095b60c42c996bc0458c04955f1c996dc68b971","impliedFormat":1},{"version":"74b2a5e5197bd0f2e0077a1ea7c07455bbea67b87b0869d9786d55104006784f","impliedFormat":1},{"version":"4a7baeb6325920044f66c0f8e5e6f1f52e06e6d87588d837bdf44feb6f35c664","impliedFormat":1},{"version":"6dcf60530c25194a9ee0962230e874ff29d34c59605d8e069a49928759a17e0a","impliedFormat":1},{"version":"56013416784a6b754f3855f8f2bf6ce132320679b8a435389aca0361bce4df6b","impliedFormat":1},{"version":"43e96a3d5d1411ab40ba2f61d6a3192e58177bcf3b133a80ad2a16591611726d","impliedFormat":1},{"version":"30f4dab03b4bc54def77049ee3a10137109cf3b4acf2fd0e885c619760cfe694","impliedFormat":1},{"version":"002eae065e6960458bda3cf695e578b0d1e2785523476f8a9170b103c709cd4f","impliedFormat":1},{"version":"c51641ab4bfa31b7a50a0ca37edff67f56fab3149881024345b13f2b48b7d2de","impliedFormat":1},{"version":"a57b1802794433adec9ff3fed12aa79d671faed86c49b09e02e1ac41b4f1d33a","impliedFormat":1},{"version":"52abbd5035a97ebfb4240ec8ade2741229a7c26450c84eb73490dc5ea048b911","impliedFormat":1},{"version":"1042064ece5bb47d6aba91648fbe0635c17c600ebdf567588b4ca715602f0a9d","impliedFormat":1},{"version":"4360ad4de54de2d5c642c4375d5eab0e7fe94ebe8adca907e6c186bbef75a54d","impliedFormat":1},{"version":"4a889f2c763edb4d55cb624257272ac10d04a1cad2ed2948b10ed4a7fda2a428","impliedFormat":1},{"version":"7bb79aa2fead87d9d56294ef71e056487e848d7b550c9a367523ee5416c44cfa","impliedFormat":1},{"version":"9c9cae45dc94c2192c7d25f80649414fa13c425d0399a2c7cb2b979e4e50af42","impliedFormat":1},{"version":"6c87b6bcf4336b29c837ea49afbdde69cc15a91cbbfd9f20c0af8694927dec08","impliedFormat":1},{"version":"27ff4196654e6373c9af16b6165120e2dd2169f9ad6abb5c935af5abd8c7938c","impliedFormat":1},{"version":"6dd9bcf10678b889842d467706836a0ab42e6c58711e33918ed127073807ee65","impliedFormat":1},{"version":"8c030e515014c10a2b98f9f48408e3ba18023dfd3f56e3312c6c2f3ae1f55a16","impliedFormat":1},{"version":"dafc31e9e8751f437122eb8582b93d477e002839864410ff782504a12f2a550c","impliedFormat":1},{"version":"ef9efc827cdad89c4ee54142164c793f530aa4d844ca9121cc35368310d5fb9c","impliedFormat":1},{"version":"643672ce383e1c58ea665a92c5481f8441edbd3e91db36e535abccbc9035adeb","impliedFormat":1},{"version":"8fa022ea514ce0ea78ac9b7092a9f97f08ead20c839c779891019e110fce8307","impliedFormat":1},{"version":"c93235337600b786fd7d0ff9c71a00f37ca65c4d63e5d695fc75153be2690f09","impliedFormat":1},{"version":"fa45f48f2def181ab2fb107a032c91b6c043ad05a179f3fbaafb8e5411fd01e4","impliedFormat":1},{"version":"a8e493c0355aabdd495e141bf1c4ec93454a0698c8675df466724adc2fcfe630","impliedFormat":1},{"version":"99702c9058170ae70ea72acbf01be3111784f06152dbf478f52c9afe423528bd","impliedFormat":1},{"version":"cf32f58a7ad3498c69c909121772971ffdee176b882f39c78532d0e0ab41a30d","impliedFormat":1},{"version":"e2bbc579a2fda9473e06b2a68d693e56928900f73ccfc03dabea789fe144e8a5","impliedFormat":1},{"version":"ce0df82a9ae6f914ba08409d4d883983cc08e6d59eb2df02d8e4d68309e7848b","impliedFormat":1},{"version":"796273b2edc72e78a04e86d7c58ae94d370ab93a0ddf40b1aa85a37a1c29ecd7","impliedFormat":1},{"version":"5df15a69187d737d6d8d066e189ae4f97e41f4d53712a46b2710ff9f8563ec9f","impliedFormat":1},{"version":"e17cd049a1448de4944800399daa4a64c5db8657cc9be7ef46be66e2a2cd0e7c","impliedFormat":1},{"version":"d05fb434f4ba073aed74b6c62eff1723c835de2a963dbb091e000a2decb5a691","impliedFormat":1},{"version":"bff8c8bffbf5f302a30ccb1c0557dae477892d50a80eecfe393bd89bac7fb41d","impliedFormat":1},{"version":"43ba4f2fa8c698f5c304d21a3ef596741e8e85a810b7c1f9b692653791d8d97a","impliedFormat":1},{"version":"4d4927cbee21750904af7acf940c5e3c491b4d5ebc676530211e389dd375607a","impliedFormat":1},{"version":"72105519d0390262cf0abe84cf41c926ade0ff475d35eb21307b2f94de985778","impliedFormat":1},{"version":"8a97e578a9bc40eb4f1b0ca78f476f2e9154ecbbfd5567ee72943bab37fc156a","impliedFormat":1},{"version":"a58abf1f5c8feb335475097abeddd32fd71c4dc2065a3d28cf15cacabad9654a","impliedFormat":1},{"version":"ccf6dd45b708fb74ba9ed0f2478d4eb9195c9dfef0ff83a6092fa3cf2ff53b4f","impliedFormat":1},{"version":"2d7db1d73456e8c5075387d4240c29a2a900847f9c1bff106a2e490da8fbd457","impliedFormat":1},{"version":"2b15c805f48e4e970f8ec0b1915f22d13ca6212375e8987663e2ef5f0205e832","impliedFormat":1},{"version":"f22d05663d873ee7a600faf78abb67f3f719d32266803440cf11d5db7ac0cab2","impliedFormat":1},{"version":"f0f05149debcf31b3a717ce8dd16e0323a789905cb9e27239167b604153b8885","impliedFormat":1},{"version":"35069c2c417bd7443ae7c7cafd1de02f665bf015479fec998985ffbbf500628c","impliedFormat":1},{"version":"b4f4d239a6632b86b315a6e4cfe0fac4e4bf6c934263bc07dd2bf5c7dbb8e6a5","impliedFormat":1},{"version":"0d44227395ae4a117dd7c8c9a048e18ade1f1f631bc5b883f9d469126e3cedab","impliedFormat":1},{"version":"9e21f8e2c0cfea713a4a372f284b60089c0841eb90bf3610539d89dbcd12d65a","impliedFormat":1},{"version":"045b752f44bf9bbdcaffd882424ab0e15cb8d11fa94e1448942e338c8ef19fba","impliedFormat":1},{"version":"2894c56cad581928bb37607810af011764a2f511f575d28c9f4af0f2ef02d1ab","impliedFormat":1},{"version":"0a72186f94215d020cb386f7dca81d7495ab6c17066eb07d0f44a5bf33c1b21a","impliedFormat":1},{"version":"a072c5f254d5cbb6522c0d4eeeb7cc4a6ce7f2f8ad84e2593d903bfe3aa44176","impliedFormat":1},{"version":"52b390f86821086a1be50100487faa9f7b23fc04343efb590f304382b4950e04","impliedFormat":1},{"version":"87122b31fe473758a5724388c93826caab566f62be2196aefc2ae8b04b814b52","impliedFormat":1},{"version":"063ab26d3488a665d2c3bc963b18ce220dad7351190629179165bc8c499c6cd9","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"2652448ac55a2010a1f71dd141f828b682298d39728f9871e1cdf8696ef443fd","impliedFormat":1},{"version":"fb400501bee56d86fa9b490e9d8b07d7df163d34d8235fcea27c3f9e8d064d1a","impliedFormat":1},{"version":"120599fd965257b1f4d0ff794bc696162832d9d8467224f4665f713a3119078b","impliedFormat":1},{"version":"5433f33b0a20300cca35d2f229a7fc20b0e8477c44be2affeb21cb464af60c76","impliedFormat":1},{"version":"db036c56f79186da50af66511d37d9fe77fa6793381927292d17f81f787bb195","impliedFormat":1},{"version":"bd4131091b773973ca5d2326c60b789ab1f5e02d8843b3587effe6e1ea7c9d86","impliedFormat":1},{"version":"794998dc1c5a19ce77a75086fe829fb9c92f2fd07b5631c7d5e0d04fd9bc540c","impliedFormat":1},{"version":"409678793827cdf5814e027b1f9e52a0445acb1c322282311c1c4e0855a0918e","impliedFormat":1},{"version":"6ac6715916fa75a1f7ebdfeacac09513b4d904b667d827b7535e84ff59679aff","impliedFormat":1},{"version":"0427df5c06fafc5fe126d14b9becd24160a288deff40e838bfbd92a35f8d0d00","impliedFormat":1},{"version":"3545dc8a9bdbd33db34462af7eed83f703083e4fee9135dadbba7edfe1e7db3c","impliedFormat":1},{"version":"7b5153a9b237898879441e5ddb576ded76ef3ab4c5baee4bb749ca5c72fc395d","impliedFormat":1},{"version":"49c346823ba6d4b12278c12c977fb3a31c06b9ca719015978cb145eb86da1c61","impliedFormat":1},{"version":"bfac6e50eaa7e73bb66b7e052c38fdc8ccfc8dbde2777648642af33cf349f7f1","impliedFormat":1},{"version":"92f7c1a4da7fbfd67a2228d1687d5c2e1faa0ba865a94d3550a3941d7527a45d","impliedFormat":1},{"version":"f53b120213a9289d9a26f5af90c4c686dd71d91487a0aa5451a38366c70dc64b","impliedFormat":1},{"version":"83fe880c090afe485a5c02262c0b7cdd76a299a50c48d9bde02be8e908fb4ae6","impliedFormat":1},{"version":"d5c2934185201f0768fb80d220f0e617cd05aa4c0c791ffcd508646c474b3c44","impliedFormat":1},{"version":"57d67b72e06059adc5e9454de26bbfe567d412b962a501d263c75c2db430f40e","impliedFormat":1},{"version":"6511e4503cf74c469c60aafd6589e4d14d5eb0a25f9bf043dcbecdf65f261972","impliedFormat":1},{"version":"e326c507507d6c6f3df4152e9e132a6189b30e14a262782796c2a627ba5d42cc","impliedFormat":1},{"version":"75efc43fb206f3825eb219c96b1e59fdabf2f2f042f424fa5f96335b99897540","impliedFormat":1},{"version":"a67b87d0281c97dfc1197ef28dfe397fc2c865ccd41f7e32b53f647184cc7307","impliedFormat":1},{"version":"771ffb773f1ddd562492a6b9aaca648192ac3f056f0e1d997678ff97dbb6bf9b","impliedFormat":1},{"version":"232f70c0cf2b432f3a6e56a8dc3417103eb162292a9fd376d51a3a9ea5fbbf6f","impliedFormat":1},{"version":"ca651584d8d718c1f0655ec4b0c340fbcd967ec1e1758807af3a3f43bc81f81e","impliedFormat":1},{"version":"cfb5f0ab72180f4e0b9ed1534847a63d5394b9a8ee685ae149d25fd53f1aec66","impliedFormat":1},{"version":"8a0e762ceb20c7e72504feef83d709468a70af4abccb304f32d6b9bac1129b2c","impliedFormat":1},{"version":"f613e4e752659ebd241be4d991c05200248b50e753fcecf50a249d30f4367794","impliedFormat":1},{"version":"9252d498a77517aab5d8d4b5eb9d71e4b225bbc7123df9713e08181de63180f6","impliedFormat":1},{"version":"de1ccef0cb3623291d55871e39eb7005cb79d8da519cb46959b0ba5e2422184f","impliedFormat":1},{"version":"35e6379c3f7cb27b111ad4c1aa69538fd8e788ab737b8ff7596a1b40e96f4f90","impliedFormat":1},{"version":"1fffe726740f9787f15b532e1dc870af3cd964dbe29e191e76121aa3dd8693f2","impliedFormat":1},{"version":"7cd657e359eac7829db5f02c856993e8945ffccc71999cdfb4ab3bf801a1bbc6","impliedFormat":1},{"version":"1a82deef4c1d39f6882f28d275cad4c01f907b9b39be9cbc472fcf2cf051e05b","impliedFormat":1},{"version":"4b20fcf10a5413680e39f5666464859fc56b1003e7dfe2405ced82371ebd49b6","impliedFormat":1},{"version":"f0f3f57e29b40e9cb0c4b155a96de2f61e51700d2c335dd547ef3c85e668c6a8","impliedFormat":1},{"version":"f7d628893c9fa52ba3ab01bcb5e79191636c4331ee5667ecc6373cbccff8ae12","impliedFormat":1},{"version":"a169ba2d40cc94a500759aa86eded1f63395252bb7508a8b67dc681ff413ac8d","impliedFormat":1},{"version":"6a76daf108400ca1333e325772f24f40ebdde2120ef68f8c87d7a1adf0257541","impliedFormat":1},{"version":"313698394e61f0343ebf11b64e5cde7e948110eaba98e8dbd7bdd67ee8df2639","impliedFormat":1},{"version":"6459054aabb306821a043e02b89d54da508e3a6966601a41e71c166e4ea1474f","impliedFormat":1},{"version":"bb37588926aba35c9283fe8d46ebf4e79ffe976343105f5c6d45f282793352b2","impliedFormat":1},{"version":"05c97cddbaf99978f83d96de2d8af86aded9332592f08ce4a284d72d0952c391","impliedFormat":1},{"version":"72179f9dd22a86deaad4cc3490eb0fe69ee084d503b686985965654013f1391b","impliedFormat":1},{"version":"2e6114a7dd6feeef85b2c80120fdbfb59a5529c0dcc5bfa8447b6996c97a69f5","impliedFormat":1},{"version":"7b6ff760c8a240b40dab6e4419b989f06a5b782f4710d2967e67c695ef3e93c4","impliedFormat":1},{"version":"c8f004e6036aa1c764ad4ec543cf89a5c1893a9535c80ef3f2b653e370de45e6","impliedFormat":1},{"version":"91357dba2d5a7234ccfae834dc8363b5635e08f373bd18f548a9046b01864619","impliedFormat":1},{"version":"f31bbb122869d8903ff13c1036bdefc1e6a5bac9b2c3c35e42a9de84d43cd04a","impliedFormat":1},{"version":"c7fdbcfa0991e15215e2a5751676115cac943b39289791546c7197d7bb889c51","impliedFormat":1},{"version":"f974e4a06953682a2c15d5bd5114c0284d5abf8bc0fe4da25cb9159427b70072","impliedFormat":1},{"version":"50256e9c31318487f3752b7ac12ff365c8949953e04568009c8705db802776fb","impliedFormat":1},{"version":"7d73b24e7bf31dfb8a931ca6c4245f6bb0814dfae17e4b60c9e194a631fe5f7b","impliedFormat":1},{"version":"4eac446ac161245bfc6daa95f2cc64d2da4f7844e36a7a5641abfd4771ef0923","impliedFormat":1},{"version":"8de9fe97fa9e00ec00666fa77ab6e91b35d25af8ca75dabcb01e14ad3299b150","impliedFormat":1},{"version":"076527b1c2fd207de3101ba10e0c2b7d155aa8369cc7fe3eed723811e428223d","impliedFormat":1},{"version":"6c800b281b9e89e69165fd11536195488de3ff53004e55905e6c0059a2d8591e","impliedFormat":1},{"version":"7d4254b4c6c67a29d5e7f65e67d72540480ac2cfb041ca484847f5ae70480b62","impliedFormat":1},{"version":"397f568f996f8ffcf12d9156342552b0da42f6571eadba6bce61c99e1651977d","impliedFormat":1},{"version":"ff0c0d446569f8756be0882b520fd94429468de9f922ab6bf9eed4da55eb0187","impliedFormat":1},{"version":"d663134457d8d669ae0df34eabd57028bddc04fc444c4bc04bc5215afc91e1f4","impliedFormat":1},{"version":"a52674bc98da7979607e0f44d4c015c59c1b1d264c83fc50ec79ff2cfea06723","impliedFormat":1},{"version":"89b3d1b267c4380fbb8e5cadccbb284843b90066f16a2f6e8a5b3a030bb7dcfb","impliedFormat":1},{"version":"f58226e78464f9c85be6cf47c665a8e33b32121ab4cdb2670b66a06f1114a55c","impliedFormat":1},{"version":"9b06ce81ad598c9c6b011cb66182fa66575ad6bd1f8f655830a6a0223a197ab7","impliedFormat":1},{"version":"e108f38a04a607f9386d68a4c6f3fdae1b712960f11f6482c6f1769bab056c2e","impliedFormat":1},{"version":"a3128a84a9568762a2996df79717d92154d18dd894681fc0ab3a098fa7f8ee3b","affectsGlobalScope":true,"impliedFormat":1},{"version":"347791f3792f436950396dd6171d6450234358001ae7c94ca209f1406566ccbf","impliedFormat":1},{"version":"dd80b1e600d00f5c6a6ba23f455b84a7db121219e68f89f10552c54ba46e4dc9","impliedFormat":1},{"version":"2896c2e673a5d3bd9b4246811f79486a073cbb03950c3d252fba10003c57411a","impliedFormat":1},{"version":"616775f16134fa9d01fc677ad3f76e68c051a056c22ab552c64cc281a9686790","impliedFormat":1},{"version":"65c24a8baa2cca1de069a0ba9fba82a173690f52d7e2d0f1f7542d59d5eb4db0","impliedFormat":1},{"version":"f9fe6af238339a0e5f7563acee3178f51db37f32a2e7c09f85273098cee7ec49","impliedFormat":1},{"version":"51bf55bb6eb80f11b3aa59fb0a9571565a7ea304a19381f6da5630f4b2e206c4","impliedFormat":1},{"version":"77e71242e71ebf8528c5802993697878f0533db8f2299b4d36aa015bae08a79c","impliedFormat":1},{"version":"98a787be42bd92f8c2a37d7df5f13e5992da0d967fab794adbb7ee18370f9849","impliedFormat":1},{"version":"5c96bad5f78466785cdad664c056e9e2802d5482ca5f862ed19ba34ffbb7b3a4","impliedFormat":1},{"version":"b7fff2d004c5879cae335db8f954eb1d61242d9f2d28515e67902032723caeab","impliedFormat":1},{"version":"5f3dc10ae646f375776b4e028d2bed039a93eebbba105694d8b910feebbe8b9c","impliedFormat":1},{"version":"bb0cd7862b72f5eba39909c9889d566e198fcaddf7207c16737d0c2246112678","impliedFormat":1},{"version":"4545c1a1ceca170d5d83452dd7c4994644c35cf676a671412601689d9a62da35","impliedFormat":1},{"version":"320f4091e33548b554d2214ce5fc31c96631b513dffa806e2e3a60766c8c49d9","impliedFormat":1},{"version":"a2d648d333cf67b9aeac5d81a1a379d563a8ffa91ddd61c6179f68de724260ff","impliedFormat":1},{"version":"d90d5f524de38889d1e1dbc2aeef00060d779f8688c02766ddb9ca195e4a713d","impliedFormat":1},{"version":"a3f41ed1b4f2fc3049394b945a68ae4fdefd49fa1739c32f149d32c0545d67f5","impliedFormat":1},{"version":"bad68fd0401eb90fe7da408565c8aee9c7a7021c2577aec92fa1382e8876071a","impliedFormat":1},{"version":"47699512e6d8bebf7be488182427189f999affe3addc1c87c882d36b7f2d0b0e","impliedFormat":1},{"version":"fec01479923e169fb52bd4f668dbeef1d7a7ea6e6d491e15617b46f2cacfa37d","impliedFormat":1},{"version":"8a8fb3097ba52f0ae6530ec6ab34e43e316506eb1d9aa29420a4b1e92a81442d","impliedFormat":1},{"version":"44e09c831fefb6fe59b8e65ad8f68a7ecc0e708d152cfcbe7ba6d6080c31c61e","impliedFormat":1},{"version":"1c0a98de1323051010ce5b958ad47bc1c007f7921973123c999300e2b7b0ecc0","impliedFormat":1},{"version":"4655709c9cb3fd6db2b866cab7c418c40ed9533ce8ea4b66b5f17ec2feea46a9","impliedFormat":1},{"version":"87affad8e2243635d3a191fa72ef896842748d812e973b7510a55c6200b3c2a4","impliedFormat":1},{"version":"ad036a85efcd9e5b4f7dd5c1a7362c8478f9a3b6c3554654ca24a29aa850a9c5","impliedFormat":1},{"version":"fedebeae32c5cdd1a85b4e0504a01996e4a8adf3dfa72876920d3dd6e42978e7","impliedFormat":1},{"version":"22b87e96a61c525464e115db0148593a861e77806fd37ab280e1903019a6e212","impliedFormat":1},{"version":"cdf21eee8007e339b1b9945abf4a7b44930b1d695cc528459e68a3adc39a622e","impliedFormat":1},{"version":"330896c1a2b9693edd617be24fbf9e5895d6e18c7955d6c08f028f272b37314d","impliedFormat":1},{"version":"1d9c0a9a6df4e8f29dc84c25c5aa0bb1da5456ebede7a03e03df08bb8b27bae6","impliedFormat":1},{"version":"84380af21da938a567c65ef95aefb5354f676368ee1a1cbb4cae81604a4c7d17","impliedFormat":1},{"version":"1af3e1f2a5d1332e136f8b0b95c0e6c0a02aaabd5092b36b64f3042a03debf28","impliedFormat":1},{"version":"30d8da250766efa99490fc02801047c2c6d72dd0da1bba6581c7e80d1d8842a4","impliedFormat":1},{"version":"03566202f5553bd2d9de22dfab0c61aa163cabb64f0223c08431fb3fc8f70280","impliedFormat":1},{"version":"9a01f12466488eccd8d9eafc8fecb9926c175a4bf4a8f73a07c3bcf8b3363282","impliedFormat":1},{"version":"b80f624162276f24a4ec78b8e86fbee80ca255938e12f8b58e7a8f1a6937120b","impliedFormat":1},{"version":"1de80059b8078ea5749941c9f863aa970b4735bdbb003be4925c853a8b6b4450","impliedFormat":1},{"version":"1d079c37fa53e3c21ed3fa214a27507bda9991f2a41458705b19ed8c2b61173d","impliedFormat":1},{"version":"5bf5c7a44e779790d1eb54c234b668b15e34affa95e78eada73e5757f61ed76a","impliedFormat":1},{"version":"5835a6e0d7cd2738e56b671af0e561e7c1b4fb77751383672f4b009f4e161d70","impliedFormat":1},{"version":"5c634644d45a1b6bc7b05e71e05e52ec04f3d73d9ac85d5927f647a5f965181a","impliedFormat":1},{"version":"4b7f74b772140395e7af67c4841be1ab867c11b3b82a51b1aeb692822b76c872","impliedFormat":1},{"version":"27be6622e2922a1b412eb057faa854831b95db9db5035c3f6d4b677b902ab3b7","impliedFormat":1},{"version":"b95a6f019095dd1d48fd04965b50dfd63e5743a6e75478343c46d2582a5132bf","impliedFormat":99},{"version":"c2008605e78208cfa9cd70bd29856b72dda7ad89df5dc895920f8e10bcb9cd0a","impliedFormat":99},{"version":"a61e739f0b2c0165086c77a28d7e4b58a2a8703c646cd1e1641788484afc6ff2","impliedFormat":99},{"version":"63a7595a5015e65262557f883463f934904959da563b4f788306f699411e9bac","impliedFormat":1},{"version":"9e40365afca304124bc53eb03412643abf074a1580e4dc279a7a16000d11f985","impliedFormat":1},{"version":"4ba137d6553965703b6b55fd2000b4e07ba365f8caeb0359162ad7247f9707a6","impliedFormat":1},{"version":"ceec3c81b2d81f5e3b855d9367c1d4c664ab5046dff8fd56552df015b7ccbe8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4e18cfe14fa8602c7ff80cbbddb91e31608e5ae20bd361fe7e6a607706cb033c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a1219ee18b9282b4c6a31f1f0bcc9255b425e99363268ba6752a932cf76662f0","impliedFormat":1},{"version":"3dc14e1ab45e497e5d5e4295271d54ff689aeae00b4277979fdd10fa563540ae","impliedFormat":1},{"version":"1d63055b690a582006435ddd3aa9c03aac16a696fac77ce2ed808f3e5a06efab","impliedFormat":1},{"version":"b789bf89eb19c777ed1e956dbad0925ca795701552d22e68fd130a032008b9f9","impliedFormat":1},"9a964c445118d72402f630b029a9f48cb1b5682c49df14ec08e66513096929ec",{"version":"79f6d5e4ba721ae31342781517ae91ad0170bdcde5fb541ed598948684b656e5","impliedFormat":99},{"version":"302209b02e712e4c9b0bf77853d182788b995fad4599e51c0f12bd47968544ae","signature":"9a2e94eeebde80a2034850148d27ac31d9c13371c12034d4e3bf28d9f31d4739"},{"version":"9c58383d80ea24e28ac016e4600a14f67e0873e0c8c03143da91fa30276ccbde","signature":"61f458cea07e8aead31c99a23941534367f74c7083a153de969058cec45360e1"},{"version":"a80ec72f5e178862476deaeed532c305bdfcd3627014ae7ac2901356d794fc93","impliedFormat":99},{"version":"c57b441e0c0a9cbdfa7d850dae1f8a387d6f81cbffbc3cd0465d530084c2417d","impliedFormat":99},{"version":"2fbe402f0ee5aa8ab55367f88030f79d46211c0a0f342becaa9f648bf8534e9d","impliedFormat":1},{"version":"b94258ef37e67474ac5522e9c519489a55dcb3d4a8f645e335fc68ea2215fe88","impliedFormat":1},{"version":"8b15d05f236e8537d3ecbe4422ce46bf0de4e4cd40b2f909c91c5818af4ff17a","impliedFormat":1},{"version":"59701d26164cee86b8334af73eda40fb791e759840ec308e4fb37b943c04d979","signature":"3f3c78ff021eed31afacbc9215a251ad8e8edcd7928bc9d2a230e941f80ed72b"},{"version":"a1e4afff1d51d6359b86f2a0b261e6c796445edab6286d8ee515eca7689b047e","signature":"c72c5e0ae54a7675b294563f023d15d3f1bbd824ed1610dd40da077d587ee154"},{"version":"32cc630dab5f100d0424624d9810b8e99f95714072f56261f5c77ddc49df88cf","signature":"c6566860697bdcbb1562b25d74e26a54691fac72a1ae403b1f75844cecf86e12"},{"version":"0edcc6263f4178a74f8af885ac789541529afff4dcb5c40d2fdc42863f451862","signature":"668cde7d52acf462f3db47292f324ab4fbd3ba8e7c715ff2c95e21995b2d6547"},{"version":"90e5b5545e7089bda0e4e8f745e17214146e2a1b153d30976befd015f29db62c","signature":"4c1887023d78b7d5d910c6c8775ef6fb704ff25160c70adfd033f8c05d902c6a"},{"version":"9fb87d0efefcaedf6e581be46b8735d479b5e3976612ee83739a44563d6bab9a","signature":"62f31d0bfe54782b023dc3f72a981018b390f93af40f7b401480111030d24be4"},{"version":"11ea6fdec6352074466756ccd8530adc9b930535b8796b7e71e3effa8c2ca0b0","signature":"5b6ea5efc16278df55a3d921efb06b168b6a2b2318ba602ccb3f380fccb0d124"},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"34e854192cccc958421e27007c5b4257497d83f1f3ef223ff887cf7b4437ebdf","impliedFormat":99},{"version":"37085b1ddaf5f0bb8927792fa323168899496f3e1f8f561b0a509f4e3c6f22ac","impliedFormat":99},{"version":"73c75faa70481d9e5da05e478f0e9b90510ac14b3e3941a7f2a55dbbaf4f7bd7","impliedFormat":99},{"version":"bcaa27ccdb568c4164457c1d6872bb6671d24e22a6c1d5c2be81961903320016","impliedFormat":99},{"version":"b5a50f4a7703426ae26461bf6cb20d52d47853bf714f22797c050c047a6edff2","impliedFormat":99},{"version":"343c099c21e10bfe9e28d28ddf3e22b480ae8e159f73fef82ff697e890f7ce9d","impliedFormat":99},{"version":"7c7a8b6ac82fd8866595df6879aa845496367fbc65fad7fb23a9795a4865bb5c","impliedFormat":99},{"version":"a2c3ec177382c64fe2645bb219dca2644a58f8f7310574420525c1da81b0ecd2","impliedFormat":99},{"version":"c98517664512e9f8bc990db01c296a4d667a53cef785bd5cbc4c4298dbded589","impliedFormat":99},{"version":"51122eb2a1f5c4d64f2359d8ebbffbdf400a135633eba91b268177b59b9d8523","signature":"e95f5bea53b4c1a780728edbcb7bc50fabc4248d7c1164480190006d72267428"},{"version":"e041c6f9649b1566f851a5dc822b58c599d18d3daf737c6b43850008a98e708e","impliedFormat":99},{"version":"4dc2ad909582f0f07b5308464940471a46dab85d41e713ed109e9502caa7dc49","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"08b2fae7b0f553ad9f79faec864b179fc58bc172e295a70943e8585dd85f600c","impliedFormat":1},{"version":"f12edf1672a94c578eca32216839604f1e1c16b40a1896198deabf99c882b340","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"4fdb529707247a1a917a4626bfb6a293d52cd8ee57ccf03830ec91d39d606d6d","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"309ebd217636d68cf8784cbc3272c16fb94fb8e969e18b6fe88c35200340aef1","impliedFormat":1},{"version":"91cf9887208be8641244827c18e620166edf7e1c53114930b54eaeaab588a5be","impliedFormat":1},{"version":"ef9b6279acc69002a779d0172916ef22e8be5de2d2469ff2f4bb019a21e89de2","impliedFormat":1},{"version":"71623b889c23a332292c85f9bf41469c3f2efa47f81f12c73e14edbcffa270d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"88863d76039cc550f8b7688a213dd051ae80d94a883eb99389d6bc4ce21c8688","impliedFormat":1},{"version":"e9ce511dae7201b833936d13618dff01815a9db2e6c2cc28646e21520c452d6c","impliedFormat":1},{"version":"243649afb10d950e7e83ee4d53bd2fbd615bb579a74cf6c1ce10e64402cdf9bb","impliedFormat":1},{"version":"35575179030368798cbcd50da928a275234445c9a0df32d4a2c694b2b3d20439","impliedFormat":1},{"version":"c939cb12cb000b4ec9c3eca3fe7dee1fe373ccb801237631d9252bad10206d61","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"b42d3651103a532f7492e719a828647af97306b2356ae757ebb7f17f4a8c41e5","impliedFormat":1},{"version":"03268b4d02371bdf514f513797ed3c9eb0840b0724ff6778bda0ef74c35273be","impliedFormat":1},{"version":"3511847babb822e10715a18348d1cbb0dae73c4e4c0a1bcf7cbc12771b310d45","impliedFormat":1},{"version":"80e653fbbec818eecfe95d182dc65a1d107b343d970159a71922ac4491caa0af","impliedFormat":1},{"version":"53f00dc83ccceb8fad22eb3aade64e4bcdb082115f230c8ba3d40f79c835c30e","impliedFormat":1},{"version":"35475931e8b55c4d33bfe3abc79f5673924a0bd4224c7c6108a4e08f3521643c","impliedFormat":1},{"version":"9078205849121a5d37a642949d687565498da922508eacb0e5a0c3de427f0ae5","impliedFormat":1},{"version":"e8f8f095f137e96dc64b56e59556c02f3c31db4b354801d6ae3b90dceae60240","impliedFormat":1},{"version":"451abef2a26cebb6f54236e68de3c33691e3b47b548fd4c8fa05fd84ab2238ff","impliedFormat":1},{"version":"f91770fbae1e0f079ec92d44e033e20d119ba58ee5ffee96e9aceb9c445103c7","impliedFormat":99},{"version":"e0233b8bea5602dbd314604d457e33b72688740d2dc08ebcd42ac8f5ea7c8903","impliedFormat":99},{"version":"de2fac2990176a263775e64c4ac26bc7714f88094973e7276604dde2a92fef9f","impliedFormat":99},{"version":"2c43a4835bf2ccfb296ad5c271d9b807aac44e970e1c1ef09674aff8a2f3242c","impliedFormat":99},{"version":"34b47287db2fe4d80d04acc0fe2a12c0a405facb9c7abebff327cda5dc4e5b35","impliedFormat":99},{"version":"32fe263186cc25d5fd59d49a26a3b0f0b5d34d22b47cc73c21449301a958fd4b","impliedFormat":99},{"version":"ce47315e1bcc7dfa3b80a5f1ecbb72816f64f28d6b237f15614823c26d2103ab","impliedFormat":99},{"version":"abdf7d01383e687b4c44f07e7b357b1c13d25741a12db492e19f47177b584f45","impliedFormat":99},{"version":"198bea7a8143889fd135cb7978407151a49a6070c13854ff5068da8db6716361","impliedFormat":99},{"version":"88475ad865c443430bb2748f86694b45359ac4236e99145624668f5c929d64c2","impliedFormat":99},{"version":"23a19cc1c28361c60681d5f490f9cfa3587e7057c6961312a0738a13e31552c2","impliedFormat":99},{"version":"a5a9789213d82b5626dd93ba13a1084dc562c437e93bbc203eeac8e68d7dc950","impliedFormat":99},{"version":"b80c780c52524beb13488942543972c8b0e54400e8b59cee0169f38d0fabb968","impliedFormat":1},{"version":"a0a118c9a66853bb5ec086c878963b5d178ecb3eec72d75dc553d86adef67801","impliedFormat":1},{"version":"4bbf82fc081be97a72c494d1055e4f62ad743957cdc52b5a597b49d262ae5fd4","impliedFormat":1},{"version":"4583bf6ebd196f0c7e9aa26bfe5dfee09ea69eee63c2e97448518ea5ee17bc64","impliedFormat":1},{"version":"2b16288372f6367cdb13e77cbd0e667d5af3034a5b733a0daa98a111cfee227f","impliedFormat":1},{"version":"ad7d3197e540298c80697fdf6b6fbd33951d219fde607eaeab157bbd2b044b7e","impliedFormat":99},{"version":"5abb680bf2bcf8bf600d175237830c885b49cc97fb6c7b94e51332f05ce91adc","impliedFormat":99},{"version":"835a8a06ee923c4c7651662ce13c3a6ed5c1eb782f150e8a845cedd123350423","impliedFormat":99},{"version":"c245f55cdeb5507a987766f95324014bbe95d762174e7605745cf8414f50a813","impliedFormat":99},{"version":"2d01d351d3eb3df7b1c073e57f51192360ac84ad32613917db91024964571b85","impliedFormat":99},{"version":"b4bb54348002daa10071771f5ac7448a6e0d2df6d59f6176de8bbf5c5ce12ca5","impliedFormat":99},{"version":"d0a0a343fcc35d593ddb06f129d35a632913deaea4531f58056b336377b5dedc","impliedFormat":99},{"version":"e0a3dfc09ec4f5c202814a903e278746ec79675b43836eb21dcaca5484457066","impliedFormat":99},{"version":"dae6ed1e5e91a00ae399ac4e5355099d7b0e018ef079dc72c8dff8d05eee8b22","impliedFormat":99},{"version":"3d102dc8e1a7e7d49ae52a1b196f79d85f6091b6d2b88cddffec2c8bcf03eb27","impliedFormat":99},{"version":"224b3c29dbb675f0573d45773e0bae4723289a8a6a3145e4a93a1eb4d91d9cad","impliedFormat":99},{"version":"db94209891d71ac046f5e0e0c9917bce9f6453c81da47bf0704ca3709b58a3ca","impliedFormat":99},{"version":"294bf7fa82b71cefc04aca85f1b9499309c1242b991ff005f98867a66dc0e567","impliedFormat":99},{"version":"4f954a02b5fef179a6ffb4e4752620383213e617520a5e3bad2ce3c44054e7ae","impliedFormat":99},{"version":"180b1f419372dc3c0a719988c8b3cd4d27996bb68709f877d9efc57955908661","impliedFormat":99},{"version":"a0c310af22ff0fad99b188a20a6ef6312531d69d58216fd5c3ec5e1e6fc3d62f","impliedFormat":99},{"version":"c98517664512e9f8bc990db01c296a4d667a53cef785bd5cbc4c4298dbded589","impliedFormat":99},{"version":"d4185a496f5147371df1d690ad2962539e988c3c48e8652f58973b82b5dcedd9","impliedFormat":99},{"version":"f8771cd6b291f7bf465c4541459d70c8534bf1b02a7039fec04e8e28df005843","impliedFormat":99},{"version":"3a892a91308d42048fca6fca2bfdf49c3f5966f0983eb83f2d60d4d039cae4ca","impliedFormat":99},{"version":"249c2259577d1f441d4c928f09c383df9e3d6e5246afdae4351100b554363f8b","impliedFormat":99},{"version":"38e50b338c6bd54cd81e3d4854916c838a85db2a53b54593c8f91bac8c0df99f","impliedFormat":99},{"version":"2a88099323000d6f98c860a26af8480148e06fac5971d8019666538fc2817f4c","impliedFormat":99},{"version":"9e98d742d1869b46207f8c3d293d91c223a115a950b8451c00f98e24b5bafd7e","impliedFormat":99},{"version":"a63568515082ad88e397f1fea481630e36df8ca4455f7c553bd29941da78701b","impliedFormat":99},{"version":"70ae70978cc2f67a6600faf4b0a7958ec13436b2705848bfa3e53fd075663d1e","impliedFormat":99},{"version":"2baca6b964eb2a811cdd75dc2450b7ffc90f7275f080627ab7bd472d9d00726d","impliedFormat":99},{"version":"83367da177bdda20f8809efc0ceb54869a0daa875b48c2149b68a009e2c53beb","impliedFormat":99},{"version":"07b6c5fbe9598fdefb3337f02a9cb57e05f843bed50788babe9d70e6e652a366","impliedFormat":99},{"version":"83e5da1af0730da24bbe4b428db35f34e8d47cff2f85307b25d8e768c6abfddb","impliedFormat":99},{"version":"e75520a03123ade67d03ecb5b19f56b58f2b8d42d91ef152e7f1856fb4760d88","impliedFormat":99},{"version":"b920d52ab993cc4d41c4bc0f94a6b93e97fbe9b87cce7bba720d8abf81bb6fb7","impliedFormat":99},{"version":"aaab10f2856c707f44c494105b303f621162f4087bd1175083bc0605b621ecb9","impliedFormat":99},{"version":"fb91ab32d5c1da788315d07faac524eb1baef360dc2c73c70cae7032131917e8","impliedFormat":99},{"version":"fbed22e9d96b3e4e7c20e5834777086f9a9b3128796ac7fa5a03b5268ded74e9","impliedFormat":99},{"version":"0b69199ae81efb4f353a233952807aa5ffd9b6a2447f5b279ab4c60c720ed482","impliedFormat":99},{"version":"fe6cb067964876eacbf5adf4744d581ac37fd812e2d6f3f78cf487460a2aed0c","impliedFormat":99},{"version":"48f7e706f98ba54d0a2e6a982379d093293e3965c5d89b77dd9ec1b6dc16a5bb","impliedFormat":99},{"version":"b0577cc97124dfe697d2d26531f19e8253e3ba58c3ff1701aa15193a7a3d2f3a","impliedFormat":99},{"version":"61b2b27c6b9f9d557f07f56bb47f0a5a1ce989fcb03ddbf537328af9ccf4d79f","impliedFormat":99},{"version":"0c0dc1a78055cc982b0e8c1c75994c6a5da2cf55e5e50d2084128e77de3004d9","impliedFormat":99},{"version":"e9ba3970a46178df808e99fa11cc7c8a6bdd01c573a1edd894b7010f70b549c5","impliedFormat":99},{"version":"7d35c980e3b5fecacff7e784ff54d63238bf6a79539e1ff133f21cec05aa2ab1","impliedFormat":99},{"version":"5780b706cece027f0d4444fbb4e1af62dc51e19da7c3d3719f67b22b033859b9","impliedFormat":1},{"version":"ef38456e22b0bffcd9ff28dc1a7138e84918a212e6960dd620cc3000341c0ebe","impliedFormat":1},{"version":"07a1cea63a067c0845029ea6e1933af842783efa3006510f504b1f09bd2ebff0","impliedFormat":1},{"version":"48ce8d49a17cdd6dbb687c406af1caf4bed54fbe40ff14c6c505ccca6176cd21","impliedFormat":1},{"version":"3cd6ca36b5729325dd2eb0359eb1e2aed4f8cc73c3b8341e1733dfeee99fbeeb","impliedFormat":1},{"version":"0e8edbe744dfc3ce65e9fa2283f1f0eb2c0aaaec4df19765f51c346e45452cda","impliedFormat":1},{"version":"e8f32bdfbcbddd21331a469193a5c63c7b5e0d80025e649d91f833869bf5b7aa","impliedFormat":1},{"version":"1bea3584ffe75ae8fa970d651b8bbd7c67a75d21df6bd1762dc2abea73012b66","impliedFormat":1},{"version":"bf0e009524b9b436156b4a326cc3e92f1fdcd16ce51d119c94e4addc910e645e","impliedFormat":1},{"version":"52e0c1007dea40e9a588f22425a80250020ef0cd9b4a9deb36f315e075d1ab40","impliedFormat":1},{"version":"2c6ecd1f21dc339d42cecf914e1b844cef3cb68e3ec6f0ed5a9c4f6a588beb92","impliedFormat":1},{"version":"653672db5220ac24c728958a680b0db84c8d0d0f7ade5d78dbac72035d9ea70b","impliedFormat":1},{"version":"3e689acc1789753818d875db16406686afb5b5e689dcc76d8106a960016f6352","impliedFormat":1},{"version":"d7a7229e7c12bf013834713f569d122a43056a5f34391b8388a582895b02c9e8","impliedFormat":1},{"version":"b811d082368e5b7f337d08f3e80be3d7e4c0c7f0249b00f8224acba9f77087e9","impliedFormat":1},{"version":"c26c383b08e47dfbd741193ef1e7f8f002ac3b0d2f6bf3d4b6b9a99ee2d9378e","impliedFormat":1},{"version":"75473b178a514d8768d6ead4a4da267aa6bedeeb792cd9437e45b46fa2dcf608","impliedFormat":1},{"version":"a75457a1e79e2bc885376b11f0a6c058e843dcac1f9d84c2293c75b13fa8803b","impliedFormat":1},{"version":"0e776b64bf664fffad4237b220b92dccd7cc1cf60b933a7ce01fb7a9b742b713","impliedFormat":1},{"version":"97fe820ad369ce125b96c8fadd590addae19e293d5f6dc3833b7fd3808fea329","impliedFormat":1},{"version":"4e8a7cea443cbce825d1de249990bd71988cf491f689f5f4ada378c1cb965067","impliedFormat":1},{"version":"acca4486b08bf5dc91c23d65f47181bd13f82571969c85e8df474fa6bc5c2a88","impliedFormat":1},{"version":"47244c79b80aee467a62c420ef5c2a58837236d9bf0087e9d6b43e278a71a46f","impliedFormat":1},{"version":"971dc452ac09307ee049acb21bbd30a82d1c163377465d6b33fd4d677ed2385d","impliedFormat":1},{"version":"226b58896f4f01f4c669d908f32c657bcab1a83f3aebb2f3d711a4fe7ba2a2d6","impliedFormat":1},{"version":"171df77317ddf15dd165eafd18800f722ba0f774802545187f78629d3210be16","impliedFormat":1},{"version":"5d85ddf06bed9df0a9b75ec83723575d16343727ee5ce3df1b3a914b95358cf8","impliedFormat":1},{"version":"9a447607a90667c6db7737f30d2429f6f06efde55a47a2a3eeebc52e866d153e","impliedFormat":1},{"version":"95b74ccaa6228d938036d13a96a47645f9c3d3b707c0b6989a18d77fd62447cb","impliedFormat":1},{"version":"856b83248d7e9a1343e28e8f113b142bd49b0adece47c157ab7adf3393f82967","impliedFormat":1},{"version":"bd987883be09d8ebe7aafed2e79a591d12b5845ac4a8a0b5601bdb0367c124c0","impliedFormat":1},{"version":"75ceb3dc5530c9b0797d8d6f6cbb883bb2b1add64f630c3c6d6f847aae87482e","impliedFormat":1},{"version":"efb2b9333117561dd5fc803927c1a212a8bf1dd1a5bd4549cc3c049d4a78ec63","impliedFormat":1},{"version":"ef17d2b0d94e266d4ec8caa84010b8a7b71e476c9cfa17e3db366f873d28445e","impliedFormat":1},{"version":"604a4451df97c7bfc75846cd1ed702129db0bee0f753658e0964d67619eea825","impliedFormat":1},{"version":"b9dfc4e6c69b1d60c7c060fb7d18951ca50f01fcdb46cf4eed23ca7f16471350","impliedFormat":1},{"version":"6911b52e74e60b6f3b79fc36d22a5d9537a807e16ec2e03fd594008c83981ab5","impliedFormat":1},{"version":"2551daa9cd45fb05ee16cee6282892c14a92e49a2d592b29fc9ff6d4ceef7dc2","impliedFormat":1},{"version":"5ba862c2b8f6fc41d95b417b19ed28111a685554ba2bac5bcf30680a92a46f26","impliedFormat":1},{"version":"449babe88138e129aef94c1696b527898f9e13ab62bce129daee0e85266e48a7","impliedFormat":1},{"version":"61d6c43861d171f1129a3179983d8af80995d3e86f90bdeaad9415756022d4b3","impliedFormat":99},{"version":"33bb7966e2c859326207e0bda17423fbf1bd81dbc8e6ba54fa143f950566e9da","impliedFormat":99},{"version":"4ae63b19255579a897918c94e928c4351c6bb6de552d50f14f41c6f175f4d282","impliedFormat":99},{"version":"6701d92fe59eaa51088a26816117828e532d7b443119534b3c287252e362b894","impliedFormat":99},{"version":"4276e358bf27203613ebe2f917706385875fa02481ed2829a96611eecc8c4255","impliedFormat":99},{"version":"c223c62757304681e71494f26e78e828c83f9612b76c1181b2e9a7cf6f853fec","impliedFormat":99},{"version":"d0f4d6c857e665d4163074039b1fbd996d67b8ef233117412adf4748b33689f5","impliedFormat":99},{"version":"e25f0e3f148d4fb60ad91dc4ac77886119d2ff74f408596477c62f7bda54cb9b","impliedFormat":99},{"version":"a204e4f8f148eacfce004a47fb7920ffce1e7744323c2018731d288bf805c590","impliedFormat":99},{"version":"347887ad5b67dcf4293eda7172cb03e649f5fb03ed2bc55651ef4aae6b51571d","impliedFormat":99},{"version":"e969c88b7f0115f52e140d8a476a4f4ddf51d23b1fca5eb8f1e99f15c101d9a3","impliedFormat":99},{"version":"d877145760dcb69e781b3b75c180e8bd0a313e512da94da1df4edbb2c9e80fc0","impliedFormat":99},{"version":"298008b26d30649b3d3e8bccec15496876eaa00d9a0c99aa61c2b9baf9076ee3","impliedFormat":99},{"version":"19bfe9081b7ff86e802cdf0cb2638cc86fe938e1c3706ce396e3db1fca4afa58","impliedFormat":99},{"version":"5174824580984ce594e422af8ece554d39cc883f587263584005d1ed9e8a4294","impliedFormat":99},{"version":"5d88c2f3bf77fe5ec107f01c6f4082b8b8fe6dbebc9e64768a29c892625bac6d","impliedFormat":99},{"version":"10fe4d3ae47ef73d8aecc0c9796e5db38d2ffcdfd460bec6826a468d0a1b30f9","impliedFormat":99},{"version":"37199f5ee67b9604e93dd15246acbd53c7edc52725059fd7c5adb69b05f7ae0e","impliedFormat":99},{"version":"7ebd648adb3609298469ec316135b05de2582c07289542322e25cc87fdf73067","impliedFormat":99},{"version":"7528ecab2633a7fe9249040bc7f2a2f7f904e94a6af9e6d780866b307288029a","impliedFormat":99},{"version":"e2fe78557c1ad18c12672660a3f1cfee7c675b2544ac5f7920e5b6366f99d36a","impliedFormat":99},{"version":"2b254456fc96b41a082b7c2c5380c1bb24ec13bc16237947352adcb637a78b44","impliedFormat":99},{"version":"426f37f0f4eb934278b203b6473ca9a5f7c20cec85f78867ac04b38ed7f2b76b","impliedFormat":99},{"version":"efbc1cda3658d91bec28606ea37318d75b6f7f8428369af4be1b91bc54381357","impliedFormat":99},{"version":"0493316312fe1ba3afa1cc8726672f471708013d13b4e49fd23faf5886ffae10","impliedFormat":99},{"version":"efce536c5285d41d6bc7823197aabaf04032459551a0f9f2d9892d178a1b22b4","impliedFormat":99},{"version":"84efb55fff9b3512aa1c37b0309897771e275d5dbd983655609cb62909566a59","impliedFormat":99},{"version":"65d21d2809f2945b1da76ea15da2e30faeb91cb469e14dca51b2707a39f2eb6a","impliedFormat":99},{"version":"828643d188769a3db529d48ab3378612c02e55aa527a7dd94ab099519e000cb3","impliedFormat":99},{"version":"6b7bca85b3a40597879fb3e405f7762af0f1cd72203f447d6d220c6426a6555e","impliedFormat":99},{"version":"95dabab27d8ba8e2d2bb7a8a8fafcfcbcdf866a488d9c86fddfb17bc63ec040c","impliedFormat":99},{"version":"6dd989c645aedabd5a9985ad507ae7aee5c3f7b6a326ec3ec7b32ffae1c199fd","impliedFormat":99},{"version":"6418f5624ca93c78b69c5c33c12b1b877d0835fe28b09b8910fa0c319ef585cb","impliedFormat":99},{"version":"bcf305ec5cbef99c3a5d895db92ffd90f1fcc0f89d27f6e1871ffe69268f69ce","impliedFormat":99},{"version":"2bde553812b19c094268941fd73b2ba75b58eb57b2faf2a07b507139b1839e81","impliedFormat":99},{"version":"71b0e26a6d0af2c069279436b984838210eb63d8d2966e4d6dba1f1ca11dc1a1","impliedFormat":99},{"version":"251f9bbc78c9cf9a85311aa7aa91ac4f82274ec2a375b4e4eacdc2a0d6831bb4","impliedFormat":99},{"version":"fe2f1f6453c033ccd21fc6919b68eaf5619ba168d3e8ecbf4b5bc5d28919ddc7","impliedFormat":99},{"version":"eaefb89fa8f5fb3800dd9925c47a2c4a5095c8e1784583ef3887812941cea8ad","impliedFormat":99},{"version":"38e5aedc0368900e6ac6ebb61c9184940e0ab3cdd5be1d9e0f27b8772b656d18","impliedFormat":99},{"version":"5abe3e353584055c0a1204ff5896ff92e474aecd2aa9871ee7ae0768bba8d8c7","impliedFormat":99},{"version":"52ed7207f33e2be0498bd9f8335c7ffff545943df43f9aa2db05ed2cc27fcbf6","impliedFormat":99},{"version":"6e1690b55037a844383d12551c730f27f0c6882e786bff973881eae78905db37","impliedFormat":99},{"version":"f20e493763033c254def095a19d15918896aee0c632cfaec6cbfa3542a6c92c5","impliedFormat":99},{"version":"c98517664512e9f8bc990db01c296a4d667a53cef785bd5cbc4c4298dbded589","impliedFormat":99},{"version":"34f1126dabf479f356c5057ac04f0d2e86252d17ab3b3840eafbc29e2b03e43b","impliedFormat":99},{"version":"1326c9d6bed97c1190882451a12d6475fbf691baf98e2a104451baf614b04f7e","impliedFormat":99},{"version":"e94e8ea4ab8954a256cea5aeb1d6838b496ce50695abf5ffcf7b8624648664e9","impliedFormat":99},{"version":"c7db6d713ed3b1ce907b464cbb49db7da69086a6c2ac317172a55fc147d1490d","impliedFormat":99},{"version":"d33fa6aa781e24ebea8d8d7b4f65a18a51c40167dc817004bbb92ce8f58b2a6f","impliedFormat":99},{"version":"2d04d6ef2a5ca2cd4fb21542ab585adf936aa122acb5624624372606afa7356e","impliedFormat":99},{"version":"629dd088a427d3d29d578578f95e9876e9c240a4ec367c8fe214fc93092cac36","impliedFormat":99},{"version":"3080a78b567d1bb72aaa165ce6233c99945f71eae0810862d1854edcaa9ed18f","impliedFormat":99},{"version":"1020149ef47af842ed8f0b4cbcccea7654ec75e77a84d7aa0fc415a2448270cb","impliedFormat":99},{"version":"f3835c2768dbe603ddc2c8353e59f7d9fb388f79eb2f292541a2edaa458a0d4b","impliedFormat":99},{"version":"9e70db32392b20c8a4c3a1611aef9d85e1747fff03e07f6eb610b4e3b7858949","impliedFormat":99},{"version":"2bbb4c88ed22cb62cced53dda2475bec4b3cfaa9d31e32d5e99c45d10f93daa2","impliedFormat":99},{"version":"0bd712cde7d0919c9755440fc0fa1e923f4102f5f76bea2c6674553fb2c8e1e0","impliedFormat":99},{"version":"c9961345e88cca1c3ed7cbd9ed4d1da0a7edb3e37e70ffce903fbec5673e608e","impliedFormat":99},{"version":"239307d4cae49820d3f769810f242fd0c44f842133f8b7c837d473d83495e3cc","impliedFormat":99},{"version":"f338468fe54079d209b32c00412a68a9c13d6e059b892b4cb7c0598f527b3428","impliedFormat":99},{"version":"166486ccecb7e3fa6067eb782f27bca452f87bdf759bb411a20dbb8734bc48fe","impliedFormat":99},{"version":"e84be3d3b1c90d834a95d10c2836d6cbb08b9eb3cf06ce597ccfd1f4e054dd47","impliedFormat":99},{"version":"41ca86a3722b2f03d489a1f31b55c95e274ef9b0b7e23c095dc48445f45259de","impliedFormat":99},{"version":"dac7375e95be9e1e0c12dc0b3e2f13c61e5c7ba4bf2dfab257c83c33d9d0d8dc","impliedFormat":99},{"version":"04ccc9232708262f5f9f5ce41d17453e32f4b87ef868558da5988d7a53bc8a09","impliedFormat":99},{"version":"6f43ef3148cd8d91f00be90faaac45e20849b4b45232be222a803f196a55eb0d","impliedFormat":99},{"version":"024efe88fccfb4738e575cf0488bd43d85aee02835b8325ef2dbea798480a66c","impliedFormat":99},{"version":"df74063dafa02f2f878e5d8535855d782914e1b0710624ae5f7ae704333a2c5b","impliedFormat":99},{"version":"f902dc3da1b6de676e1fd3005c5639ed687f9a05bf458a3106699fbcdb4ce43e","impliedFormat":99},{"version":"70a82959a0cc9929ad85460f0d6dc38c939d13a01a51e3ff4d5ee288426594a7","impliedFormat":99},{"version":"8b0d3c14e14ff80d94c33dc74805c0788731a902612d120ea0d010b924759ae8","impliedFormat":99},{"version":"a840ac85f23f8c0fdb1c9b87b7b43fb88fa271dd936a35794e9d98aab4b39f65","impliedFormat":99},{"version":"805e0af2746a67cb04a7e9ce9854c3e5a4cf55bef231eecc89de435366024caf","impliedFormat":99},{"version":"fc819b8353648951d5c762a2eb6e4cf4c3abc5ee4f2d56547192a6fa96b91207","impliedFormat":99},{"version":"46a2ee69fa603e0794edf02e09e3d613d403a627720e0bc795a3e2ecc64c1833","impliedFormat":99},{"version":"d9d1bd7c4a2c17717d37e70360163be84eaea4a24369c30b4f689338f3184e3e","impliedFormat":99},{"version":"bff953aa2451a7433910867851be0aeb7f4bf259a1826802e44849d30fdd3ce3","impliedFormat":99},{"version":"bccda97b9f2ed9a10b78cb647de9ccbb54e26be7a6fc29db438cdf2aa1109763","impliedFormat":99},{"version":"54a5595f6d6d7b9ca15cce574ca31d675af0af68e6e54f85b06217ddd4eb1a70","impliedFormat":99},{"version":"34ede2dfca10557d5f155c9cc0b242938c842de0f72e5bceda4de6b00339336c","impliedFormat":99},{"version":"0216a3bbad03f5139a26b5f1728b382f38265e34c1f2014425e117030228025e","impliedFormat":99},{"version":"80043ce88f7908981f2a108e12dd7a431aac5b7f1ce987ae2c12fd2eae438c51","impliedFormat":99},{"version":"9e9cc22cf85bc0808a0521e9577868ddcb513ba5ce1e6ad91a18f5d873cb7984","impliedFormat":99},{"version":"9e524a809f3ade6ebf02d34a0bd11fc0370308dca6dbe9c9469601d2eaf5fe36","impliedFormat":99},{"version":"c65b4d7e4177af3ff21b3034a8030dca1b2c2543bd13a9c5e961b70883498f2b","impliedFormat":99},{"version":"864f49da74709da6e77fed102c5aeb2bb64d98ee0ab87372c632e2e3a47c2f02","impliedFormat":99},{"version":"f90b582a9a18fd14dee9cbbf59a886829305009294ce589e543453423eda5d42","impliedFormat":99},{"version":"9f93d6164d92c1be6483ee2efdb93f75dd3a8960770de8afe44bfcd3c7ca9c6d","impliedFormat":99},{"version":"56002c283ac6b6333eca51ffadf9b06d1a2bca50f7880e7702a9b1661afe4584","impliedFormat":99},{"version":"45a0935f048b9d15ab04c579e464636d7d8d264f9846a764fd0fad9ac5529a98","impliedFormat":99},{"version":"4f0a356e46c6b4b2dc44a223ce0db07b1ec9e0927556923257edbb1dd070ffa5","impliedFormat":99},{"version":"6d05743fbd01eb2e796d428ffe82d7b0320a334a305043bb3867af53876ef589","impliedFormat":99},{"version":"64b239bddde122bcaf5f468b6f81b40bbb0b84970df9a146dee73cde781a1d49","impliedFormat":99},{"version":"edd73902e93cdca49083ed90fd106e8921430e43653424fcd8f92136d9d3fac7","signature":"d1d45c07822808bc8866df0d9030e0c542786b45d7dc54b705c2f70960af433d"},{"version":"2cef84bf00cbdb452fdc5d8ecfe7b8c0aa3fa788bdc4ad8961e2e636530dbb60","impliedFormat":99},{"version":"24104650185414f379d5cc35c0e2c19f06684a73de5b472bae79e0d855771ecf","impliedFormat":99},{"version":"799003c0ab928582fca04977f47b8d85b43a8de610f4eef0ad2d069fbb9f9399","impliedFormat":99},{"version":"b13dd41c344a23e085f81b2f5cd96792e6b35ae814f32b25e39d9841844ad240","impliedFormat":99},{"version":"17d8b4e6416e48b6e23b73d05fd2fde407e2af8fddbe9da2a98ede14949c3489","impliedFormat":99},{"version":"6d17b2b41f874ab4369b8e04bdbe660163ea5c8239785c850f767370604959e3","impliedFormat":99},{"version":"04b4c044c8fe6af77b6c196a16c41e0f7d76b285d036d79dcaa6d92e24b4982b","impliedFormat":99},{"version":"30bdeead5293c1ddfaea4097d3e9dd5a6b0bc59a1e07ff4714ea1bbe7c5b2318","impliedFormat":99},{"version":"e7df226dcc1b0ce76b32f160556f3d1550124c894aae2d5f73cefaaf28df7779","impliedFormat":99},{"version":"f2b7eef5c46c61e6e72fba9afd7cc612a08c0c48ed44c3c5518559d8508146a2","impliedFormat":99},{"version":"00f0ba57e829398d10168b7db1e16217f87933e61bd8612b53a894bd7d6371da","impliedFormat":99},{"version":"126b20947d9fa74a88bb4e9281462bda05e529f90e22d08ee9f116a224291e84","impliedFormat":99},{"version":"40d9e43acee39702745eb5c641993978ac40f227475eacc99a83ba893ad995db","impliedFormat":99},{"version":"8a66b69b21c8de9cb88b4b6d12f655d5b7636e692a014c5aa1bd81745c8c51d5","impliedFormat":99},{"version":"ebbb846bdd5a78fdacff59ae04cea7a097912aeb1a2b34f8d88f4ebb84643069","impliedFormat":99},{"version":"7321adb29ffd637acb33ee67ea035f1a97d0aa0b14173291cc2fd58e93296e04","impliedFormat":99},{"version":"320816f1a4211188f07a782bdb6c1a44555b3e716ce13018f528ad7387108d5f","impliedFormat":99},{"version":"b2cc8a474b7657f4a03c67baf6bff75e26635fd4b5850675e8cad524a09ddd0c","impliedFormat":99},{"version":"0d081e9dc251063cc69611041c17d25847e8bdbe18164baaa89b7f1f1633c0ab","impliedFormat":99},{"version":"a64c25d8f4ec16339db49867ea2324e77060782993432a875d6e5e8608b0de1e","impliedFormat":99},{"version":"0739310b6b777f3e2baaf908c0fbc622c71160e6310eb93e0d820d86a52e2e23","impliedFormat":99},{"version":"37b32e4eadd8cd3c263e7ac1681c58b2ac54f3f77bb34c5e4326cc78516d55a9","impliedFormat":99},{"version":"9b7a8974e028c4ed6f7f9abb969e3eb224c069fd7f226e26fcc3a5b0e2a1eba8","impliedFormat":99},{"version":"e8100b569926a5592146ed68a0418109d625a045a94ed878a8c5152b1379237c","impliedFormat":99},{"version":"594201c616c318b7f3149a912abd8d6bdf338d765b7bcbde86bca2e66b144606","impliedFormat":99},{"version":"03e380975e047c5c6ded532cf8589e6cc85abb7be3629e1e4b0c9e703f2fd36f","impliedFormat":99},{"version":"fae14b53b7f52a8eb3274c67c11f261a58530969885599efe3df0277b48909e1","impliedFormat":99},{"version":"c41206757c428186f2e0d1fd373915c823504c249336bdc9a9c9bbdf9da95fef","impliedFormat":99},{"version":"e961f853b7b0111c42b763a6aa46fc70d06a697db3d8ed69b38f7ba0ae42a62b","impliedFormat":99},{"version":"3db90f79e36bcb60b3f8de1bc60321026800979c150e5615047d598c787a64b7","impliedFormat":99},{"version":"639b6fb3afbb8f6067c1564af2bd284c3e883f0f1556d59bd5eb87cdbbdd8486","impliedFormat":99},{"version":"49795f5478cb607fd5965aa337135a8e7fd1c58bc40c0b6db726adf186dd403f","impliedFormat":99},{"version":"7d8890e6e2e4e215959e71d5b5bd49482cf7a23be68d48ea446601a4c99bd511","impliedFormat":99},{"version":"d56f72c4bb518de5702b8b6ae3d3c3045c99e0fd48b3d3b54c653693a8378017","impliedFormat":99},{"version":"4c9ac40163e4265b5750510d6d2933fb7b39023eed69f7b7c68b540ad960826e","impliedFormat":99},{"version":"8dfab17cf48e7be6e023c438a9cdf6d15a9b4d2fa976c26e223ba40c53eb8da8","impliedFormat":99},{"version":"38bdf7ccacfd8e418de3a7b1e3cecc29b5625f90abc2fa4ac7843a290f3bf555","impliedFormat":99},{"version":"9819e46a914735211fbc04b8dc6ba65152c62e3a329ca0601a46ba6e05b2c897","impliedFormat":99},{"version":"50f0dc9a42931fb5d65cdd64ba0f7b378aedd36e0cfca988aa4109aad5e714cb","impliedFormat":99},{"version":"894f23066f9fafccc6e2dd006ed5bd85f3b913de90f17cf1fe15a2eb677fd603","impliedFormat":99},{"version":"abdf39173867e6c2d6045f120a316de451bbb6351a6929546b8470ddf2e4b3b9","impliedFormat":99},{"version":"aa2cb4053f948fbd606228195bbe44d78733861b6f7204558bbee603202ee440","impliedFormat":99},{"version":"6911b41bfe9942ac59c2da1bbcbe5c3c1f4e510bf65cae89ed00f434cc588860","impliedFormat":99},{"version":"7b81bc4d4e2c764e85d869a8dd9fe3652b34b45c065482ac94ffaacc642b2507","impliedFormat":99},{"version":"895df4edb46ccdcbce2ec982f5eed292cf7ea3f7168f1efea738ee346feab273","impliedFormat":99},{"version":"8692bb1a4799eda7b2e3288a6646519d4cebb9a0bddf800085fc1bd8076997a0","impliedFormat":99},{"version":"239c9e98547fe99711b01a0293f8a1a776fc10330094aa261f3970aaba957c82","impliedFormat":99},{"version":"34833ec50360a32efdc12780ae624e9a710dd1fd7013b58c540abf856b54285a","impliedFormat":99},{"version":"647538e4007dcc351a8882067310a0835b5bb8559d1cfa5f378e929bceb2e64d","impliedFormat":99},{"version":"992d6b1abcc9b6092e5a574d51d441238566b6461ade5de53cb9718e4f27da46","impliedFormat":99},{"version":"938702305649bf1050bd79f3803cf5cc2904596fc1edd4e3b91033184eae5c54","impliedFormat":99},{"version":"1e931d3c367d4b96fe043e792196d9c2cf74f672ff9c0b894be54e000280a79d","impliedFormat":99},{"version":"05bec322ea9f6eb9efcd6458bb47087e55bd688afdd232b78379eb5d526816ed","impliedFormat":99},{"version":"4c449a874c2d2e5e5bc508e6aa98f3140218e78c585597a21a508a647acd780a","impliedFormat":99},{"version":"dae15e326140a633d7693e92b1af63274f7295ea94fb7c322d5cbe3f5e48be88","impliedFormat":99},{"version":"c2b0a869713bca307e58d81d1d1f4b99ebfc7ec8b8f17e80dde40739aa8a2bc6","impliedFormat":99},{"version":"6e4b4ff6c7c54fa9c6022e88f2f3e675eac3c6923143eb8b9139150f09074049","impliedFormat":99},{"version":"69559172a9a97bbe34a32bff8c24ef1d8c8063feb5f16a6d3407833b7ee504cf","impliedFormat":99},{"version":"86b94a2a3edcb78d9bfcdb3b382547d47cb017e71abe770c9ee8721e9c84857f","impliedFormat":99},{"version":"e3fafafda82853c45c0afc075fea1eaf0df373a06daf6e6c7f382f9f61b2deb3","impliedFormat":99},{"version":"a4ba4b31de9e9140bc49c0addddbfaf96b943a7956a46d45f894822e12bf5560","impliedFormat":99},{"version":"d8a7926fc75f2ed887f17bae732ee31a4064b8a95a406c87e430c58578ee1f67","impliedFormat":99},{"version":"9886ffbb134b0a0059fd82219eba2a75f8af341d98bc6331b6ef8a921e10ec68","impliedFormat":99},{"version":"c2ead057b70d0ae7b87a771461a6222ebdb187ba6f300c974768b0ae5966d10e","impliedFormat":99},{"version":"46687d985aed8485ab2c71085f82fafb11e69e82e8552cf5d3849c00e64a00a5","impliedFormat":99},{"version":"999ca66d4b5e2790b656e0a7ce42267737577fc7a52b891e97644ec418eff7ec","impliedFormat":99},{"version":"ec948ee7e92d0888f92d4a490fdd0afb27fbf6d7aabebe2347a3e8ac82c36db9","impliedFormat":99},{"version":"03ef2386c683707ce741a1c30cb126e8c51a908aa0acc01c3471fafb9baaacd5","impliedFormat":99},{"version":"66a372e03c41d2d5e920df5282dadcec2acae4c629cb51cab850825d2a144cea","impliedFormat":99},{"version":"ddf9b157bd4c06c2e4646c9f034f36267a0fbd028bd4738214709de7ea7c548b","impliedFormat":99},{"version":"3e795aac9be23d4ad9781c00b153e7603be580602e40e5228e2dafe8a8e3aba1","impliedFormat":99},{"version":"98c461ec5953dfb1b5d5bca5fee0833c8a932383b9e651ca6548e55f1e2c71c3","impliedFormat":99},{"version":"5c42107b46cb1d36b6f1dee268df125e930b81f9b47b5fa0b7a5f2a42d556c10","impliedFormat":99},{"version":"7e32f1251d1e986e9dd98b6ff25f62c06445301b94aeebdf1f4296dbd2b8652f","impliedFormat":99},{"version":"2f7e328dda700dcb2b72db0f58c652ae926913de27391bd11505fc5e9aae6c33","impliedFormat":99},{"version":"3de7190e4d37da0c316db53a8a60096dbcd06d1a50677ccf11d182fa26882080","impliedFormat":99},{"version":"a9d6f87e59b32b02c861aade3f4477d7277c30d43939462b93f48644fa548c58","impliedFormat":99},{"version":"2bce8fd2d16a9432110bbe0ba1e663fd02f7d8b8968cd10178ea7bc306c4a5df","impliedFormat":99},{"version":"798bedbf45a8f1e55594e6879cd46023e8767757ecce1d3feaa78d16ad728703","impliedFormat":99},{"version":"62723d5ac66f7ed6885a3931dd5cfa017797e73000d590492988a944832e8bc2","impliedFormat":99},{"version":"03db8e7df7514bf17fc729c87fff56ca99567b9aa50821f544587a666537c233","impliedFormat":99},{"version":"9b1f311ba4409968b68bf20b5d892dbd3c5b1d65c673d5841c7dbde351bc0d0b","impliedFormat":99},{"version":"2d1e8b5431502739fe335ceec0aaded030b0f918e758a5d76f61effa0965b189","impliedFormat":99},{"version":"e725839b8f884dab141b42e9d7ff5659212f6e1d7b4054caa23bc719a4629071","impliedFormat":99},{"version":"4fa38a0b8ae02507f966675d0a7d230ed67c92ab8b5736d99a16c5fbe2b42036","impliedFormat":99},{"version":"50ec1e8c23bad160ddedf8debeebc722becbddda127b8fdce06c23eacd3fe689","impliedFormat":99},{"version":"9a0aea3a113064fd607f41375ade308c035911d3c8af5ae9db89593b5ca9f1f9","impliedFormat":99},{"version":"8d643903b58a0bf739ce4e6a8b0e5fb3fbdfaacbae50581b90803934b27d5b89","impliedFormat":99},{"version":"19de2915ccebc0a1482c2337b34cb178d446def2493bf775c4018a4ea355adb8","impliedFormat":99},{"version":"9be8fc03c8b5392cd17d40fd61063d73f08d0ee3457ecf075dcb3768ae1427bd","impliedFormat":99},{"version":"a2d89a8dc5a993514ca79585039eea083a56822b1d9b9d9d85b14232e4782cbe","impliedFormat":99},{"version":"f526f20cae73f17e8f38905de4c3765287575c9c4d9ecacee41cfda8c887da5b","impliedFormat":99},{"version":"d9ec0978b7023612b9b83a71fee8972e290d02f8ff894e95cdd732cd0213b070","impliedFormat":99},{"version":"7ab10c473a058ec8ac4790b05cae6f3a86c56be9b0c0a897771d428a2a48a9f9","impliedFormat":99},{"version":"451d7a93f8249d2e1453b495b13805e58f47784ef2131061821b0e456a9fd0e1","impliedFormat":99},{"version":"21c56fe515d227ed4943f275a8b242d884046001722a4ba81f342a08dbe74ae2","impliedFormat":99},{"version":"d8311f0c39381aa1825081c921efde36e618c5cf46258c351633342a11601208","impliedFormat":99},{"version":"6b50c3bcc92dc417047740810596fcb2df2502aa3f280c9e7827e87896da168a","impliedFormat":99},{"version":"18a6b318d1e7b31e5749a52be0cf9bbce1b275f63190ef32e2c79db0579328ca","impliedFormat":99},{"version":"6a2d0af2c27b993aa85414f3759898502aa198301bc58b0d410948fe908b07b0","impliedFormat":99},{"version":"2da11b6f5c374300e5e66a6b01c3c78ec21b5d3fec0748a28cc28e00be73e006","impliedFormat":99},{"version":"0729691b39c24d222f0b854776b00530877217bfc30aac1dc7fa2f4b1795c536","impliedFormat":99},{"version":"ca45bb5c98c474d669f0e47615e4a5ae65d90a2e78531fda7862ee43e687a059","impliedFormat":99},{"version":"c1c058b91d5b9a24c95a51aea814b0ad4185f411c38ac1d5eef0bf3cebec17dc","impliedFormat":99},{"version":"3ab0ed4060b8e5b5e594138aab3e7f0262d68ad671d6678bcda51568d4fc4ccc","impliedFormat":99},{"version":"e2bf1faba4ff10a6020c41df276411f641d3fdce5c6bae1db0ec84a0bf042106","impliedFormat":99},{"version":"80b0a8fe14d47a71e23d7c3d4dcee9584d4282ef1d843b70cab1a42a4ea1588c","impliedFormat":99},{"version":"a0f02a73f6e3de48168d14abe33bf5970fdacdb52d7c574e908e75ad571e78f7","impliedFormat":99},{"version":"c728002a759d8ec6bccb10eed56184e86aeff0a762c1555b62b5d0fa9d1f7d64","impliedFormat":99},{"version":"586f94e07a295f3d02f847f9e0e47dbf14c16e04ccc172b011b3f4774a28aaea","impliedFormat":99},{"version":"cfe1a0f4ed2df36a2c65ea6bc235dbb8cf6e6c25feb6629989f1fa51210b32e7","impliedFormat":99},{"version":"8ba69c9bf6de79c177329451ffde48ddab7ec495410b86972ded226552f664df","impliedFormat":99},{"version":"15111cbe020f8802ad1d150524f974a5251f53d2fe10eb55675f9df1e82dbb62","impliedFormat":99},{"version":"782dc153c56a99c9ed07b2f6f497d8ad2747764966876dbfef32f3e27ce11421","impliedFormat":99},{"version":"cc2db30c3d8bb7feb53a9c9ff9b0b859dd5e04c83d678680930b5594b2bf99cb","impliedFormat":99},{"version":"46909b8c85a6fd52e0807d18045da0991e3bdc7373435794a6ba425bc23cc6be","impliedFormat":99},{"version":"e4e511ff63bb6bd69a2a51e472c6044298bca2c27835a34a20827bc3ef9b7d13","impliedFormat":99},{"version":"2c86f279d7db3c024de0f21cd9c8c2c972972f842357016bfbbd86955723b223","impliedFormat":99},{"version":"112c895cff9554cf754f928477c7d58a21191c8089bffbf6905c87fe2dc6054f","impliedFormat":99},{"version":"8cfc293b33082003cacbf7856b8b5e2d6dd3bde46abbd575b0c935dc83af4844","impliedFormat":99},{"version":"d2c5c53f85ce0474b3a876d76c4fc44ff7bb766b14ed1bf495f9abac181d7f5f","impliedFormat":99},{"version":"3c523f27926905fcbe20b8301a0cc2da317f3f9aea2273f8fc8d9ae88b524819","impliedFormat":99},{"version":"9ca0d706f6b039cc52552323aeccb4db72e600b67ddc7a54cebc095fc6f35539","impliedFormat":99},{"version":"a64909a9f75081342ddd061f8c6b49decf0d28051bc78e698d347bdcb9746577","impliedFormat":99},{"version":"7d8d55ae58766d0d52033eae73084c4db6a93c4630a3e17f419dd8a0b2a4dcd8","impliedFormat":99},{"version":"b8b5c8ba972d9ffff313b3c8a3321e7c14523fc58173862187e8d1cb814168ac","impliedFormat":99},{"version":"9c42c0fa76ee36cf9cc7cc34b1389fbb4bd49033ec124b93674ec635fabf7ffe","impliedFormat":99},{"version":"6184c8da9d8107e3e67c0b99dedb5d2dfe5ccf6dfea55c2a71d4037caf8ca196","impliedFormat":99},{"version":"4030ceea7bf41449c1b86478b786e3b7eadd13dfe5a4f8f5fe2eb359260e08b3","impliedFormat":99},{"version":"7bf516ec5dfc60e97a5bde32a6b73d772bd9de24a2e0ec91d83138d39ac83d04","impliedFormat":99},{"version":"e6a6fb3e6525f84edf42ba92e261240d4efead3093aca3d6eb1799d5942ba393","impliedFormat":99},{"version":"45df74648934f97d26800262e9b2af2f77ef7191d4a5c2eb1df0062f55e77891","impliedFormat":99},{"version":"3fe361e4e567f32a53af1f2c67ad62d958e3d264e974b0a8763d174102fe3b29","impliedFormat":99},{"version":"28b520acee4bc6911bfe458d1ad3ebc455fa23678463f59946ad97a327c9ab2b","impliedFormat":99},{"version":"121b39b1a9ad5d23ed1076b0db2fe326025150ef476dccb8bf87778fcc4f6dd7","impliedFormat":99},{"version":"f791f92a060b52aa043dde44eb60307938f18d4c7ac13df1b52c82a1e658953f","impliedFormat":99},{"version":"df09443e7743fd6adc7eb108e760084bacdf5914403b7aac5fbd4dc4e24e0c2c","impliedFormat":99},{"version":"eeb4ff4aa06956083eaa2aad59070361c20254b865d986bc997ee345dbd44cbb","impliedFormat":99},{"version":"ed84d5043444d51e1e5908f664addc4472c227b9da8401f13daa565f23624b6e","impliedFormat":99},{"version":"146bf888b703d8baa825f3f2fb1b7b31bda5dff803e15973d9636cdda33f4af3","impliedFormat":99},{"version":"b4ec8b7a8d23bdf7e1c31e43e5beac3209deb7571d2ccf2a9572865bf242da7c","impliedFormat":99},{"version":"3fba0d61d172091638e56fba651aa1f8a8500aac02147d29bd5a9cc0bc8f9ec2","impliedFormat":99},{"version":"a5a57deb0351b03041e0a1448d3a0cc5558c48e0ed9b79b69c99163cdca64ad8","impliedFormat":99},{"version":"9bcecf0cbc2bfc17e33199864c19549905309a0f9ecc37871146107aac6e05ae","impliedFormat":99},{"version":"d6a211db4b4a821e93c978add57e484f2a003142a6aef9dbfa1fe990c66f337b","impliedFormat":99},{"version":"bd4d10bd44ce3f630dd9ce44f102422cb2814ead5711955aa537a52c8d2cae14","impliedFormat":99},{"version":"08e4c39ab1e52eea1e528ee597170480405716bae92ebe7a7c529f490afff1e0","impliedFormat":99},{"version":"625bb2bc3867557ea7912bd4581288a9fca4f3423b8dffa1d9ed57fafc8610e3","impliedFormat":99},{"version":"d1992164ecc334257e0bef56b1fd7e3e1cea649c70c64ffc39999bb480c0ecdf","impliedFormat":99},{"version":"a53ff2c4037481eb357e33b85e0d78e8236e285b6428b93aa286ceea1db2f5dc","impliedFormat":99},{"version":"4fe608d524954b6857d78857efce623852fcb0c155f010710656f9db86e973a5","impliedFormat":99},{"version":"b53b62a9838d3f57b70cc456093662302abb9962e5555f5def046172a4fe0d4e","impliedFormat":99},{"version":"9866369eb72b6e77be2a92589c9df9be1232a1a66e96736170819e8a1297b61f","impliedFormat":99},{"version":"43abfbdf4e297868d780b8f4cfdd8b781b90ecd9f588b05e845192146a86df34","impliedFormat":99},{"version":"582419791241fb851403ae4a08d0712a63d4c94787524a7419c2bc8e0eb1b031","impliedFormat":99},{"version":"18437eeb932fe48590b15f404090db0ab3b32d58f831d5ffc157f63b04885ee5","impliedFormat":99},{"version":"0c5eaedf622d7a8150f5c2ec1f79ac3d51eea1966b0b3e61bfdea35e8ca213a7","impliedFormat":99},{"version":"fac39fc7a9367c0246de3543a6ee866a0cf2e4c3a8f64641461c9f2dac0d8aae","impliedFormat":99},{"version":"3b9f559d0200134f3c196168630997caedeadc6733523c8b6076a09615d5dec8","impliedFormat":99},{"version":"932af64286d9723da5ef7b77a0c4229829ce8e085e6bcc5f874cb0b83e8310d4","impliedFormat":99},{"version":"adeb9278f11f5561157feee565171c72fd48f5fe34ed06f71abf24e561fcaa1e","impliedFormat":99},{"version":"2269fef79b4900fc6b08c840260622ca33524771ff24fda5b9101ad98ea551f3","impliedFormat":99},{"version":"73d47498a1b73d5392d40fb42a3e7b009ae900c8423f4088c4faa663cc508886","impliedFormat":99},{"version":"7efc34cdc4da0968c3ba687bc780d5cacde561915577d8d1c1e46c7ac931d023","impliedFormat":99},{"version":"3c20a3bb0c50c819419f44aa55acc58476dad4754a16884cef06012d02b0722f","impliedFormat":99},{"version":"4569abf6bc7d51a455503670f3f1c0e9b4f8632a3b030e0794c61bfbba2d13be","impliedFormat":99},{"version":"98b2297b4dc1404078a54b61758d8643e4c1d7830af724f3ed2445d77a7a2d57","impliedFormat":99},{"version":"952ba89d75f1b589e07070fea2d8174332e3028752e76fd46e1c16cc51e6e2af","impliedFormat":99},{"version":"b6c9a2deefb6a57ff68d2a38d33c34407b9939487fc9ee9f32ba3ecf2987a88a","impliedFormat":99},{"version":"f6b371377bab3018dac2bca63e27502ecbd5d06f708ad7e312658d3b5315d948","impliedFormat":99},{"version":"31947dd8f1c8eeb7841e1f139a493a73bd520f90e59a6415375d0d8e6a031f01","impliedFormat":99},{"version":"95cd83b807e10b1af408e62caf5fea98562221e8ddca9d7ccc053d482283ddda","impliedFormat":99},{"version":"19287d6b76288c2814f1633bdd68d2b76748757ffd355e73e41151644e4773d6","impliedFormat":99},{"version":"fc4e6ec7dade5f9d422b153c5d8f6ad074bd9cc4e280415b7dc58fb5c52b5df1","impliedFormat":99},{"version":"3aea973106e1184db82d8880f0ca134388b6cbc420f7309d1c8947b842886349","impliedFormat":99},{"version":"765e278c464923da94dda7c2b281ece92f58981642421ae097862effe2bd30fa","impliedFormat":99},{"version":"de260bed7f7d25593f59e859bd7c7f8c6e6bb87e8686a0fcafa3774cb5ca02d8","impliedFormat":99},{"version":"b5c341ce978f5777fbe05bc86f65e9906a492fa6b327bda3c6aae900c22e76c6","impliedFormat":99},{"version":"686ddbfaf88f06b02c6324005042f85317187866ca0f8f4c9584dd9479653344","impliedFormat":99},{"version":"7f789c0c1db29dd3aab6e159d1ba82894a046bf8df595ac48385931ae6ad83e0","impliedFormat":99},{"version":"8eb3057d4fe9b59b2492921b73a795a2455ebe94ccb3d01027a7866612ead137","impliedFormat":99},{"version":"1e43c5d7aee1c5ec20611e28b5417f5840c75d048de9d7f1800d6808499236f8","impliedFormat":99},{"version":"d42610a5a2bee4b71769968a24878885c9910cd049569daa2d2ee94208b3a7a5","impliedFormat":99},{"version":"f6ed95506a6ed2d40ed5425747529befaa4c35fcbbc1e0d793813f6d725690fa","impliedFormat":99},{"version":"a6fcc1cd6583939506c906dff1276e7ebdc38fbe12d3e108ba38ad231bd18d97","impliedFormat":99},{"version":"ed13354f0d96fb6d5878655b1fead51722b54875e91d5e53ef16de5b71a0e278","impliedFormat":99},{"version":"1193b4872c1fb65769d8b164ca48124c7ebacc33eae03abf52087c2b29e8c46c","impliedFormat":99},{"version":"af682dfabe85688289b420d939020a10eb61f0120e393d53c127f1968b3e9f66","impliedFormat":99},{"version":"0dca04006bf13f72240c6a6a502df9c0b49c41c3cab2be75e81e9b592dcd4ea8","impliedFormat":99},{"version":"79d6ac4a2a229047259116688f9cd62fda25422dee3ad304f77d7e9af53a41ef","impliedFormat":99},{"version":"64534c17173990dc4c3d9388d16675a059aac407031cfce8f7fdffa4ee2de988","impliedFormat":99},{"version":"ba46d160a192639f3ca9e5b640b870b1263f24ac77b6895ab42960937b42dcbb","impliedFormat":99},{"version":"5e5ddd6fc5b590190dde881974ab969455e7fad61012e32423415ae3d085b037","impliedFormat":99},{"version":"1c16fd00c42b60b96fe0fa62113a953af58ddf0d93b0a49cb4919cf5644616f0","impliedFormat":99},{"version":"eb240c0e6b412c57f7d9a9f1c6cd933642a929837c807b179a818f6e8d3a4e44","impliedFormat":99},{"version":"4a7bde5a1155107fc7d9483b8830099f1a6072b6afda5b78d91eb5d6549b3956","impliedFormat":99},{"version":"3c1baaffa9a24cc7ef9eea6b64742394498e0616b127ca630aca0e11e3298006","impliedFormat":99},{"version":"87ca1c31a326c898fa3feb99ec10750d775e1c84dbb7c4b37252bcf3742c7b21","impliedFormat":99},{"version":"d7bd26af1f5457f037225602035c2d7e876b80d02663ab4ca644099ad3a55888","impliedFormat":99},{"version":"2ad0a6b93e84a56b64f92f36a07de7ebcb910822f9a72ad22df5f5d642aff6f3","impliedFormat":99},{"version":"523d1775135260f53f672264937ee0f3dc42a92a39de8bee6c48c7ea60b50b5a","impliedFormat":99},{"version":"e441b9eebbc1284e5d995d99b53ed520b76a87cab512286651c4612d86cd408e","impliedFormat":99},{"version":"76f853ee21425c339a79d28e0859d74f2e53dee2e4919edafff6883dd7b7a80f","impliedFormat":99},{"version":"00cf042cd6ba1915648c8d6d2aa00e63bbbc300ea54d28ed087185f0f662e080","impliedFormat":99},{"version":"f57e6707d035ab89a03797d34faef37deefd3dd90aa17d90de2f33dce46a2c56","impliedFormat":99},{"version":"cc8b559b2cf9380ca72922c64576a43f000275c72042b2af2415ce0fb88d7077","impliedFormat":99},{"version":"1a337ca294c428ba8f2eb01e887b28d080ee4a4307ae87e02e468b1d26af4a74","impliedFormat":99},{"version":"5a15362fc2e72765a908c0d4dd89e3ab3b763e8bc8c23f19234a709ecfd202fe","impliedFormat":99},{"version":"2dffdfe62ac8af0943853234519616db6fd8958fc7ff631149fd8364e663f361","impliedFormat":99},{"version":"5dbdb2b2229b5547d8177c34705272da5a10b8d0033c49efbc9f6efba5e617f2","impliedFormat":99},{"version":"6fc0498cd8823d139004baff830343c9a0d210c687b2402c1384fb40f0aa461c","impliedFormat":99},{"version":"8492306a4864a1dc6fc7e0cc0de0ae9279cbd37f3aae3e9dc1065afcdc83dddc","impliedFormat":99},{"version":"c011b378127497d6337a93f020a05f726db2c30d55dc56d20e6a5090f05919a6","impliedFormat":99},{"version":"f4556979e95a274687ae206bbab2bb9a71c3ad923b92df241d9ab88c184b3f40","impliedFormat":99},{"version":"50e82bb6e238db008b5beba16d733b77e8b2a933c9152d1019cf8096845171a4","impliedFormat":99},{"version":"d6011f8b8bbf5163ef1e73588e64a53e8bf1f13533c375ec53e631aad95f1375","impliedFormat":99},{"version":"693cd7936ac7acfa026d4bcb5801fce71cec49835ba45c67af1ef90dbfd30af7","impliedFormat":99},{"version":"195e2cf684ecddfc1f6420564535d7c469f9611ce7a380d6e191811f84556cd2","impliedFormat":99},{"version":"1dc6b6e7b2a7f2962f31c77f4713f3a5a132bbe14c00db75d557568fe82e4311","impliedFormat":99},{"version":"add93b1180e9aaac2dae4ef3b16f7655893e2ecbe62bd9e48366c305f0063d89","impliedFormat":99},{"version":"594bd896fe37c970aafb7a376ebeec4c0d636b62a5f611e2e27d30fb839ad8a5","impliedFormat":99},{"version":"b1c6a6faf60542ba4b4271db045d7faea56e143b326ef507d2797815250f3afc","impliedFormat":99},{"version":"8c8b165beb794260f462679329b131419e9f5f35212de11c4d53e6d4d9cbedf6","impliedFormat":99},{"version":"ee5a4cf57d49fcf977249ab73c690a59995997c4672bb73fcaaf2eed65dbd1b2","impliedFormat":99},{"version":"f9f36051f138ab1c40b76b230c2a12b3ce6e1271179f4508da06a959f8bee4c1","impliedFormat":99},{"version":"9dc2011a3573d271a45c12656326530c0930f92539accbec3531d65131a14a14","impliedFormat":99},{"version":"091521ce3ede6747f784ae6f68ad2ea86bbda76b59d2bf678bcad2f9d141f629","impliedFormat":99},{"version":"202c2be951f53bafe943fb2c8d1245e35ed0e4dfed89f48c9a948e4d186dd6d4","impliedFormat":99},{"version":"c618aead1d799dbf4f5b28df5a6b9ce13d72722000a0ec3fe90a8115b1ea9226","impliedFormat":99},{"version":"9b0bf59708549c3e77fddd36530b95b55419414f88bbe5893f7bc8b534617973","impliedFormat":99},{"version":"7e216f67c4886f1bde564fb4eebdd6b185f262fe85ad1d6128cad9b229b10354","impliedFormat":99},{"version":"cd51e60b96b4d43698df74a665aa7a16604488193de86aa60ec0c44d9f114951","impliedFormat":99},{"version":"b63341fb6c7ba6f2aeabd9fc46b43e6cc2d2b9eec06534cfd583d9709f310ec2","impliedFormat":99},{"version":"be2af50c81b15bcfe54ad60f53eb1c72dae681c72d0a9dce1967825e1b5830a3","impliedFormat":99},{"version":"be5366845dfb9726f05005331b9b9645f237f1ddc594c0def851208e8b7d297b","impliedFormat":99},{"version":"5ddd536aaeadd4bf0f020492b3788ed209a7050ce27abec4e01c7563ff65da81","impliedFormat":99},{"version":"e243b24da119c1ef0d79af2a45217e50682b139cb48e7607efd66cc01bd9dcda","impliedFormat":99},{"version":"5b1398c8257fd180d0bf62e999fe0a89751c641e87089a83b24392efda720476","impliedFormat":99},{"version":"1588b1359f8507a16dbef67cd2759965fc2e8d305e5b3eb71be5aa9506277dff","impliedFormat":99},{"version":"4c99f2524eee1ec81356e2b4f67047a4b7efaf145f1c4eb530cd358c36784423","impliedFormat":99},{"version":"b30c6b9f6f30c35d6ef84daed1c3781e367f4360171b90598c02468b0db2fc3d","impliedFormat":99},{"version":"79c0d32274ccfd45fae74ac61d17a2be27aea74c70806d22c43fc625b7e9f12a","impliedFormat":99},{"version":"1b7e3958f668063c9d24ac75279f3e610755b0f49b1c02bb3b1c232deb958f54","impliedFormat":99},{"version":"779d4022c3d0a4df070f94858a33d9ebf54af3664754536c4ce9fd37c6f4a8db","impliedFormat":99},{"version":"e662f063d46aa8c088edffdf1d96cb13d9a2cbf06bc38dc6fc62b4d125fb7b49","impliedFormat":99},{"version":"d1d612df1e41c90d9678b07740d13d4f8e6acec2f17390d4ff4be5c889a6d37d","impliedFormat":99},{"version":"c95933fe140918892d569186f17b70ef6b1162f851a0f13f6a89e8f4d599c5a1","impliedFormat":99},{"version":"1d8d30677f87c13c2786980a80750ac1e281bdb65aa013ea193766fe9f0edd74","impliedFormat":99},{"version":"4661673cbc984b8a6ee5e14875a71ed529b64e7f8e347e12c0db4cecc25ad67d","impliedFormat":99},{"version":"7f980a414274f0f23658baa9a16e21d828535f9eac538e2eab2bb965325841db","impliedFormat":99},{"version":"20fb747a339d3c1d4a032a31881d0c65695f8167575e01f222df98791a65da9b","impliedFormat":99},{"version":"dd4e7ebd3f205a11becf1157422f98db675a626243d2fbd123b8b93efe5fb505","impliedFormat":99},{"version":"43ec6b74c8d31e88bb6947bb256ad78e5c6c435cbbbad991c3ff39315b1a3dba","impliedFormat":99},{"version":"b27242dd3af2a5548d0c7231db7da63d6373636d6c4e72d9b616adaa2acef7e1","impliedFormat":99},{"version":"e0ee7ba0571b83c53a3d6ec761cf391e7128d8f8f590f8832c28661b73c21b68","impliedFormat":99},{"version":"072bfd97fc61c894ef260723f43a416d49ebd8b703696f647c8322671c598873","impliedFormat":99},{"version":"e70875232f5d5528f1650dd6f5c94a5bed344ecf04bdbb998f7f78a3c1317d02","impliedFormat":99},{"version":"8e495129cb6cd8008de6f4ff8ce34fe1302a9e0dcff8d13714bd5593be3f7898","impliedFormat":99},{"version":"380b919bfa0516118edaf25b99e45f855e7bc3fd75ce4163a1cfe4a666388804","impliedFormat":1},{"version":"0b24a72109c8dd1b41f94abfe1bb296ba01b3734b8ac632db2c48ffc5dccaf01","impliedFormat":1},{"version":"fcf79300e5257a23ed3bacaa6861d7c645139c6f7ece134d15e6669447e5e6db","impliedFormat":1},{"version":"187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","impliedFormat":1},{"version":"aa2c18a1b5a086bbcaae10a4efba409cc95ba7287d8cf8f2591b53704fea3dea","impliedFormat":1},{"version":"b88749bdb18fc1398370e33aa72bc4f88274118f4960e61ce26605f9b33c5ba2","impliedFormat":1},{"version":"0aaef8cded245bf5036a7a40b65622dd6c4da71f7a35343112edbe112b348a1e","impliedFormat":1},{"version":"00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","impliedFormat":1},{"version":"a873c50d3e47c21aa09fbe1e2023d9a44efb07cc0cb8c72f418bf301b0771fd3","impliedFormat":1},{"version":"7c14ccd2eaa82619fffc1bfa877eb68a012e9fb723d07ee98db451fadb618906","impliedFormat":1},{"version":"49c36529ee09ea9ce19525af5bb84985ea8e782cb7ee8c493d9e36d027a3d019","impliedFormat":1},{"version":"df996e25faa505f85aeb294d15ebe61b399cf1d1e49959cdfaf2cc0815c203f9","impliedFormat":1},{"version":"4f6a12044ee6f458db11964153830abbc499e73d065c51c329ec97407f4b13dd","impliedFormat":1},{"version":"0f0023f87a7eaa88ddfe3431f2012d498367c05bd783954515be175fc2794a91","signature":"fced5bcbed8bbff676c1b45d5140bd05a8c21297d83280aec4c3a285ee76c7b7"},{"version":"bac3115e9507680db50f0119d3f1a2b9e5da3319d03bc78baf8bbaf88c9ba40e","signature":"a560976220ba2908a93f019ad525eac88cf22eea1c6570ee439ff546f02f47f2"},{"version":"480caef356371d9d93ae560d6c79fe3c5e3c1aa968808bdf7359ca6a1cdfa2ff","impliedFormat":1},{"version":"9fa4a7ae22844bfc0640916f4fa15a95e830ed454580b2d7567af807eec3f539","impliedFormat":99},{"version":"ece6e8023eceec9f27b0a8739e48cbaed06caa53ac87135e4ad19b3c9853c5ef","impliedFormat":99},{"version":"5e116161924af47c8abb556d262ced217d76b456b113bdade12ee5f8bf729057","impliedFormat":99},{"version":"21fadddf8e196a6aca1a893863b34f2d5d1b76845ac7880d74db0b27966cdeb3","impliedFormat":99},{"version":"aac9c1fea1d07e2007b46d6919dd47e32d5d6cf7afb7e8843235fa709b2d4183","affectsGlobalScope":true,"impliedFormat":99},{"version":"1c174a74628fdc0ef7a2dd46f4e22855310590a64a2ed8f1ab8237006d1dd288","impliedFormat":99},{"version":"b38e27f910eaacd348480ad51333c39f03087a3d96ccc30b1b18f2db49436b99","impliedFormat":99},{"version":"980d84ab65a61d1979a22e5cd3322672e75fb148392b6903d08ccef59bbf530c","impliedFormat":1},{"version":"c1e20c728a5350a19a8ae8d09d403b4e557e0a9d1e616421952e4267c9203758","impliedFormat":99},{"version":"07302586dd599e587c2e75c9ff5980bafdf23ac96210d8fdeb873fd991e4ccbd","impliedFormat":99},{"version":"97be02f2e3b0c17486c18ac5d04feac3f5fbcff60a2e517827587396a64636e9","signature":"fe4ceb08d9067ccba5e917a320e68f5b6c3e371eeb6cfc352a1035b278585100"},{"version":"beeff8dc291a52e04420be47c9b7991e921d9df64034d3e3f1edd6f29bd5d22e","signature":"419902873b2a9b993fb33bad47d5620810d334e1ebb08cf300294f03d722f276"},{"version":"caf4af98bf464ad3e10c46cf7d340556f89197aab0f87f032c7b84eb8ddb24d9","impliedFormat":99},{"version":"71acd198e19fa38447a3cbc5c33f2f5a719d933fccf314aaff0e8b0593271324","impliedFormat":99},{"version":"3494dde244b63e8c531aaa6e5331d17b20312647114b3d3885d090541e9744ae","signature":"7711adec5eed0b4cb819cae62ea768204c4bd260fa3ee1aceb586358db5f6aa0"},{"version":"b5f1d5952ee6043ba28a68ed3f4fa6de4f2345f38bee23663588ff63acb03a82","signature":"f302b2e8d5854b21418c5b939e2a3408d6d2fc9c8f4cd86c3dda420ad1e92424"},{"version":"7469bcf89a587c78eec937aa3abcf80937096a1f1ec315448d9dee4df9e580a5","signature":"d138698076bd8f5d5aabe58af6184f369b6c5709d614f305f10052c8b777e029"},{"version":"cff399d99c68e4fafdd5835d443a980622267a39ac6f3f59b9e3d60d60c4f133","impliedFormat":99},{"version":"6ada175c0c585e89569e8feb8ff6fc9fc443d7f9ca6340b456e0f94cbef559bf","impliedFormat":99},{"version":"e56e4d95fad615c97eb0ae39c329a4cda9c0af178273a9173676cc9b14b58520","impliedFormat":99},{"version":"73e8dfd5e7d2abc18bdb5c5873e64dbdd1082408dd1921cad6ff7130d8339334","impliedFormat":99},{"version":"fc820b2f0c21501f51f79b58a21d3fa7ae5659fc1812784dbfbb72af147659ee","impliedFormat":99},{"version":"4f041ef66167b5f9c73101e5fd8468774b09429932067926f9b2960cc3e4f99d","impliedFormat":99},{"version":"31501b8fc4279e78f6a05ca35e365e73c0b0c57d06dbe8faecb10c7254ce7714","impliedFormat":99},{"version":"7bc76e7d4bbe3764abaf054aed3a622c5cdbac694e474050d71ce9d4ab93ea4b","impliedFormat":99},{"version":"ff4e9db3eb1e95d7ba4b5765e4dc7f512b90fb3b588adfd5ca9b0d9d7a56a1ae","impliedFormat":99},{"version":"f205fd03cd15ea054f7006b7ef8378ef29c315149da0726f4928d291e7dce7b9","impliedFormat":99},{"version":"d683908557d53abeb1b94747e764b3bd6b6226273514b96a942340e9ce4b7be7","impliedFormat":99},{"version":"7c6d5704e2f236fddaf8dbe9131d998a4f5132609ef795b78c3b63f46317f88a","impliedFormat":99},{"version":"d05bd4d28c12545827349b0ac3a79c50658d68147dad38d13e97e22353544496","impliedFormat":99},{"version":"b6436d90a5487d9b3c3916b939f68e43f7eaca4b0bb305d897d5124180a122b9","impliedFormat":99},{"version":"04ace6bedd6f59c30ea6df1f0f8d432c728c8bc5c5fd0c5c1c80242d3ab51977","impliedFormat":99},{"version":"57a8a7772769c35ba7b4b1ba125f0812deec5c7102a0d04d9e15b1d22880c9e8","impliedFormat":99},{"version":"badcc9d59770b91987e962f8e3ddfa1e06671b0e4c5e2738bbd002255cad3f38","impliedFormat":99},{"version":"4661f2b457284c8c7eb0c9538149f5e85ff7a7652e337d2905cbe6fb07bb2739","signature":"88c1575fad6a5fc4ac4ef5a82d79f7f10e2fb2acddb2b7748e18935ca0ee3e15"},{"version":"eb9d94e77b07f6f4c6b1268861ba9d3250e58ca6a78901e53ba5fd106ac551ce","signature":"f9c1060a55f91ee29aa0cf272ddedd4ba0dee59141a9a857008c3052ed8c654c"},{"version":"207764c6e73aad189cbe0662cfe9823d6532d31a4fb94adefdfe436850654327","impliedFormat":99},{"version":"8b77491a73d5460743bb6b1fd2219959ad8bb71bfbdd8835ab099538c3048202","signature":"0390c5317a9551b847bcdf3844cb7be1ae3c4c3976d5ce5a2344f0edfcfc5562"},{"version":"f391fe628d0832a67dc44c27f878259a5c67d0a50b219346b6d600d7dd2409ab","signature":"84676f996b355ccc032207073b56e813d1348c113a7c0340ffaa6f89f74036d5"},{"version":"a9373d52584b48809ffd61d74f5b3dfd127da846e3c4ee3c415560386df3994b","impliedFormat":99},{"version":"7ec047b73f621c526468517fea779fec2007dd05baa880989def59126c98ef79","impliedFormat":99},{"version":"8dd450de6d756cee0761f277c6dc58b0b5a66b8c274b980949318b8cad26d712","impliedFormat":99},{"version":"904d6ad970b6bd825449480488a73d9b98432357ab38cf8d31ffd651ae376ff5","impliedFormat":99},{"version":"dfcf16e716338e9fe8cf790ac7756f61c85b83b699861df970661e97bf482692","impliedFormat":99},{"version":"51ee2064d2cef706e074ecc7ee291894394d0e4bc6d0139f9fc6fb55a1ab4299","signature":"b2c7cf7f304f6ebfea4dda1e9c526a79a591fc8d3bd003af083384025da649b1"},{"version":"3ba79cb84dbd2ea04159b22df4d2394b5fe7d0abdd1a4ae82526006db55564bd","signature":"0ac76f72a94a13f3081c41c43b58679492c219ccada653f40801a89fcd5e9d04"},{"version":"85b100fdaa85652e3a59a703ae626d9356a0b649e38b66629a98a5647eaff960","signature":"e3acea55bf6e605744892005d79553637088b9a4eddc37b9dbd6dbd6aba7ecdd"},{"version":"04df232aae81d26bc0c2e781618c67cecbc4a255607f55f5a87c74b449009b87","signature":"b80c7945e78816c3f067d6e8604995964c07d7662a04f892ced0d6f09a444a45"},{"version":"bb703864a1bc9ca5ac3589ffd83785f6dc86f7f6c485c97d7ffd53438777cb9e","impliedFormat":1},{"version":"9694e54f22b55c5046cb605c5212b88f963d2a0493dd3262d169d74f1bb861ab","signature":"90ada4c3ca530172af0d36a8da6ea9a1ea74d54da3bad6448982ad8674685abc"},{"version":"77cd0ed74a04592db2c79edce59fff95b8bbaa29dfaa3feb39b9f3597adca259","signature":"9030e3592c09abded6c91ddf71cdd3d05ba043ecc15ff9d3e2ec741930812372"},{"version":"6b5f886fe41e2e767168e491fe6048398ed6439d44e006d9f51cc31265f08978","impliedFormat":99},{"version":"56a87e37f91f5625eb7d5f8394904f3f1e2a90fb08f347161dc94f1ae586bdd0","impliedFormat":99},{"version":"6b863463764ae572b9ada405bf77aac37b5e5089a3ab420d0862e4471051393b","impliedFormat":99},{"version":"2535fc1a5fe64892783ff8f61321b181c24f824e688a4a05ae738da33466605b","impliedFormat":99},{"version":"fa3051cfd0196eaf41de55bb8b385c6cb32078edad8dbf59062d551347e80457","signature":"3aefc99917b9ccda912fdfd38a07a4479a8cd0e86a9ec90588479c5b3277ca75"},{"version":"4cf10a1082c0ffb84047fab60e04e0c7e4f9a06ff81857220eb0d83badae84cf","signature":"c3aaeb08e644523e47d172510eb27651a5c20ce4e721daca6e657cab9a34c0b5"},{"version":"684fc632f0b3aeed1f804b93c83b3f84472fc93cd7cecf933de0f749a6189d02","signature":"65c10af8da7ce7459160526e49fe02e635f2144bc1e20e22c3ddbd9ac38628ec"},{"version":"979d4f8d0101f09db9d7397237663d856605221c70137411fadea6012e78894a","impliedFormat":99},{"version":"0345bc0b1067588c4ea4c48e34425d3284498c629bc6788ebc481c59949c9037","impliedFormat":99},{"version":"e30f5b5d77c891bc16bd65a2e46cd5384ea57ab3d216c377f482f535db48fc8f","impliedFormat":99},{"version":"f113afe92ee919df8fc29bca91cab6b2ffbdd12e4ac441d2bb56121eb5e7dbe3","impliedFormat":99},{"version":"49d567cc002efb337f437675717c04f207033f7067825b42bb59c9c269313d83","impliedFormat":99},{"version":"1d248f707d02dc76555298a934fba0f337f5028bb1163ce59cd7afb831c9070f","impliedFormat":99},{"version":"5d8debffc9e7b842dc0f17b111673fe0fc0cca65e67655a2b543db2150743385","impliedFormat":99},{"version":"5fccbedc3eb3b23bc6a3a1e44ceb110a1f1a70fa8e76941dce3ae25752caa7a9","impliedFormat":99},{"version":"f4031b95f3bab2b40e1616bd973880fb2f1a97c730bac5491d28d6484fac9560","impliedFormat":99},{"version":"dbe75b3c5ed547812656e7945628f023c4cd0bc1879db0db3f43a57fb8ec0e2b","impliedFormat":99},{"version":"b754718a546a1939399a6d2a99f9022d8a515f2db646bab09f7d2b5bff3cbb82","impliedFormat":99},{"version":"2eef10fb18ed0b4be450accf7a6d5bcce7b7f98e02cac4e6e793b7ad04fc0d79","impliedFormat":99},{"version":"c46f471e172c3be12c0d85d24876fedcc0c334b0dab48060cdb1f0f605f09fed","impliedFormat":99},{"version":"7d6ddeead1d208588586c58c26e4a23f0a826b7a143fb93de62ed094d0056a33","impliedFormat":99},{"version":"7c5782291ff6e7f2a3593295681b9a411c126e3736b83b37848032834832e6b9","impliedFormat":99},{"version":"3a3f09df6258a657dd909d06d4067ee360cd2dccc5f5d41533ae397944a11828","impliedFormat":99},{"version":"ea54615be964503fec7bce04336111a6fa455d3e8d93d44da37b02c863b93eb8","impliedFormat":99},{"version":"2a83694bc3541791b64b0e57766228ea23d92834df5bf0b0fcb93c5bb418069c","impliedFormat":99},{"version":"b5913641d6830e7de0c02366c08b1d26063b5758132d8464c938e78a45355979","impliedFormat":99},{"version":"46c095d39c1887979d9494a824eda7857ec13fb5c20a6d4f7d02c2975309bf45","impliedFormat":99},{"version":"f6e02ca076dc8e624aa38038e3488ebd0091e2faea419082ed764187ba8a6500","impliedFormat":99},{"version":"4d49e8a78aba1d4e0ad32289bf8727ae53bc2def9285dff56151a91e7d770c3e","impliedFormat":99},{"version":"63315cf08117cc728eab8f3eec8801a91d2cd86f91d0ae895d7fd928ab54596d","impliedFormat":99},{"version":"a14a6f3a5636bcaebfe9ec2ccfa9b07dc94deb1f6c30358e9d8ea800a1190d5e","impliedFormat":99},{"version":"21206e7e81876dabf2a7af7aa403f343af1c205bdcf7eff24d9d7f4eee6214c4","impliedFormat":99},{"version":"cd0a9f0ffec2486cad86b7ef1e4da42953ffeb0eb9f79f536e16ff933ec28698","impliedFormat":99},{"version":"f609a6ec6f1ab04dba769e14d6b55411262fd4627a099e333aa8876ea125b822","impliedFormat":99},{"version":"6d8052bb814be030c64cb22ca0e041fe036ad3fc8d66208170f4e90d0167d354","impliedFormat":99},{"version":"851f72a5d3e8a2bf7eeb84a3544da82628f74515c92bdf23c4a40af26dcc1d16","impliedFormat":99},{"version":"59692a7938aab65ea812a8339bbc63c160d64097fe5a457906ea734d6f36bcd4","impliedFormat":99},{"version":"8cb3b95e610c44a9986a7eab94d7b8f8462e5de457d5d10a0b9c6dd16bde563b","impliedFormat":99},{"version":"f571713abd9a676da6237fe1e624d2c6b88c0ca271c9f1acc1b4d8efeea60b66","impliedFormat":99},{"version":"16c5d3637d1517a3d17ed5ebcfbb0524f8a9997a7b60f6100f7c5309b3bb5ac8","impliedFormat":99},{"version":"ca1ec669726352c8e9d897f24899abf27ad15018a6b6bcf9168d5cd1242058ab","impliedFormat":99},{"version":"bffb1b39484facf6d0c5d5feefe6c0736d06b73540b9ce0cf0f12da2edfd8e1d","impliedFormat":99},{"version":"f1663c030754f6171b8bb429096c7d2743282de7733bccd6f67f84a4c588d96e","impliedFormat":99},{"version":"dd09693285e58504057413c3adc84943f52b07d2d2fd455917f50fa2a63c9d69","impliedFormat":99},{"version":"d94c94593d03d44a03810a85186ae6d61ebeb3a17a9b210a995d85f4b584f23d","impliedFormat":99},{"version":"c7c3bf625a8cb5a04b1c0a2fbe8066ecdbb1f383d574ca3ffdabe7571589a935","impliedFormat":99},{"version":"7a2f39a4467b819e873cd672c184f45f548511b18f6a408fe4e826136d0193bb","impliedFormat":99},{"version":"f8a0ae0d3d4993616196619da15da60a6ec5a7dfaf294fe877d274385eb07433","impliedFormat":99},{"version":"2cca80de38c80ef6c26deb4e403ca1ff4efbe3cf12451e26adae5e165421b58d","impliedFormat":99},{"version":"0070d3e17aa5ad697538bf865faaff94c41f064db9304b2b949eb8bcccb62d34","impliedFormat":99},{"version":"53df93f2db5b7eb8415e98242c1c60f6afcac2db44bce4a8830c8f21eee6b1dd","impliedFormat":99},{"version":"d67bf28dc9e6691d165357424c8729c5443290367344263146d99b2f02a72584","impliedFormat":99},{"version":"932557e93fbdf0c36cc29b9e35950f6875425b3ac917fa0d3c7c2a6b4f550078","impliedFormat":99},{"version":"e3dc7ec1597fb61de7959335fb7f8340c17bebf2feb1852ed8167a552d9a4a25","impliedFormat":99},{"version":"b64e15030511c5049542c2e0300f1fe096f926cf612662884f40227267f5cd9f","impliedFormat":99},{"version":"1932796f09c193783801972a05d8fb1bfef941bb46ac76fbe1abb0b3bfb674fa","impliedFormat":99},{"version":"d9575d5787311ee7d61ad503f5061ebcfaf76b531cfecce3dc12afb72bb2d105","impliedFormat":99},{"version":"5b41d96c9a4c2c2d83f1200949f795c3b6a4d2be432b357ad1ab687e0f0de07c","impliedFormat":99},{"version":"38ec829a548e869de4c5e51671245a909644c8fb8e7953259ebb028d36b4dd06","impliedFormat":99},{"version":"20c2c5e44d37dac953b516620b5dba60c9abd062235cdf2c3bfbf722d877a96b","impliedFormat":99},{"version":"875fe6f7103cf87c1b741a0895fda9240fed6353d5e7941c8c8cbfb686f072b4","impliedFormat":99},{"version":"c0ccccf8fbcf5d95f88ed151d0d8ce3015aa88cf98d4fd5e8f75e5f1534ee7ae","impliedFormat":99},{"version":"1b1f4aba21fd956269ced249b00b0e5bfdbd5ebd9e628a2877ab1a2cf493c919","impliedFormat":99},{"version":"939e3299952dff0869330e3324ba16efe42d2cf25456d7721d7f01a43c1b0b34","impliedFormat":99},{"version":"f0a9b52faec508ba22053dedfa4013a61c0425c8b96598cef3dea9e4a22637c6","impliedFormat":99},{"version":"d5b302f50db61181adc6e209af46ae1f27d7ef3d822de5ea808c9f44d7d219fd","impliedFormat":99},{"version":"19131632ba492c83e8eeadf91a481def0e0b39ffc3f155bc20a7f640e0570335","impliedFormat":99},{"version":"4581c03abea21396c3e1bb119e2fd785a4d91408756209cbeed0de7070f0ab5b","impliedFormat":99},{"version":"ebcd3b99e17329e9d542ef2ccdd64fddab7f39bc958ee99bbdb09056c02d6e64","impliedFormat":99},{"version":"4b148999deb1d95b8aedd1a810473a41d9794655af52b40e4894b51a8a4e6a6d","impliedFormat":99},{"version":"1781cc99a0f3b4f11668bb37cca7b8d71f136911e87269e032f15cf5baa339bf","impliedFormat":99},{"version":"33f1b7fa96117d690035a235b60ecd3cd979fb670f5f77b08206e4d8eb2eb521","impliedFormat":99},{"version":"01429b306b94ff0f1f5548ce5331344e4e0f5872b97a4776bd38fd2035ad4764","impliedFormat":99},{"version":"c1bc4f2136de7044943d784e7a18cb8411c558dbb7be4e4b4876d273cbd952af","impliedFormat":99},{"version":"5470f84a69b94643697f0d7ec2c8a54a4bea78838aaa9170189b9e0a6e75d2cf","impliedFormat":99},{"version":"36aaa44ee26b2508e9a6e93cd567e20ec700940b62595caf962249035e95b5e3","impliedFormat":99},{"version":"f8343562f283b7f701f86ad3732d0c7fd000c20fe5dc47fa4ed0073614202b4d","impliedFormat":99},{"version":"a53c572630a78cd99a25b529069c1e1370f8a5d8586d98e798875f9052ad7ad1","impliedFormat":99},{"version":"4ad3451d066711dde1430c544e30e123f39e23c744341b2dfd3859431c186c53","impliedFormat":99},{"version":"8069cbef9efa7445b2f09957ffbc27b5f8946fdbade4358fb68019e23df4c462","impliedFormat":99},{"version":"cd8b4e7ad04ba9d54eb5b28ac088315c07335b837ee6908765436a78d382b4c3","impliedFormat":99},{"version":"d533d8f8e5c80a30c51f0cbfe067b60b89b620f2321d3a581b5ba9ac8ffd7c3a","impliedFormat":99},{"version":"33f49f22fdda67e1ddbacdcba39e62924793937ea7f71f4948ed36e237555de3","impliedFormat":99},{"version":"710c31d7c30437e2b8795854d1aca43b540cb37cefd5900f09cfcd9e5b8540c4","impliedFormat":99},{"version":"b2c03a0e9628273bc26a1a58112c311ffbc7a0d39938f3878837ab14acf3bc41","impliedFormat":99},{"version":"a93beb0aa992c9b6408e355ea3f850c6f41e20328186a8e064173106375876c2","impliedFormat":99},{"version":"efdcba88fcd5421867898b5c0e8ea6331752492bd3547942dea96c7ebcb65194","impliedFormat":99},{"version":"a98e777e7a6c2c32336a017b011ba1419e327320c3556b9139413e48a8460b9a","impliedFormat":99},{"version":"ea44f7f8e1fe490516803c06636c1b33a6b82314366be1bd6ffa4ba89bc09f86","impliedFormat":99},{"version":"c25f22d78cc7f46226179c33bef0e4b29c54912bde47b62e5fdaf9312f22ffcb","impliedFormat":99},{"version":"d57579cfedc5a60fda79be303080e47dfe0c721185a5d95276523612228fcefc","impliedFormat":99},{"version":"a41630012afe0d4a9ff14707f96a7e26e1154266c008ddbd229e3f614e4d1cf7","impliedFormat":99},{"version":"298a858633dfa361bb8306bbd4cfd74f25ab7cc20631997dd9f57164bc2116d1","impliedFormat":99},{"version":"921782c45e09940feb232d8626a0b8edb881be2956520c42c44141d9b1ddb779","impliedFormat":99},{"version":"06117e4cc7399ce1c2b512aa070043464e0561f956bda39ef8971a2fcbcdbf2e","impliedFormat":99},{"version":"daccf332594b304566c7677c2732fed6e8d356da5faac8c5f09e38c2f607a4ab","impliedFormat":99},{"version":"4386051a0b6b072f35a2fc0695fecbe4a7a8a469a1d28c73be514548e95cd558","impliedFormat":99},{"version":"78e41de491fe25947a7fd8eeef7ebc8f1c28c1849a90705d6e33f34b1a083b90","impliedFormat":99},{"version":"3ccd198e0a693dd293ed22e527c8537c76b8fe188e1ebf20923589c7cfb2c270","impliedFormat":99},{"version":"2ebf2ee015d5c8008428493d4987e2af9815a76e4598025dd8c2f138edc1dcae","impliedFormat":99},{"version":"0dcc8f61382c9fcdafd48acc54b6ffda69ca4bb7e872f8ad12fb011672e8b20c","impliedFormat":99},{"version":"9db563287eb527ead0bcb9eb26fbec32f662f225869101af3cabcb6aee9259cf","impliedFormat":99},{"version":"068489bec523be43f12d8e4c5c337be4ff6a7efb4fe8658283673ae5aae14b85","impliedFormat":99},{"version":"838212d0dc5b97f7c5b5e29a89953de3906f72fce13c5ae3c5ade346f561d226","impliedFormat":99},{"version":"ddc78d29af824ad7587152ea523ed5d60f2bc0148d8741c5dacf9b5b44587b1b","impliedFormat":99},{"version":"019b522e3783e5519966927ceeb570eefcc64aba3f9545828a5fb4ae1fde53c6","impliedFormat":99},{"version":"b34623cc86497a5123de522afba770390009a56eebddba38d2aa5798b70b0a87","impliedFormat":99},{"version":"afb9b4c8bd38fb43d38a674de56e6f940698f91114fded0aa119de99c6cd049a","impliedFormat":99},{"version":"1d277860f19b8825d027947fca9928ee1f3bfaa0095e85a97dd7a681b0698dfc","impliedFormat":99},{"version":"6d32122bb1e7c0b38b6f126d166dff1f74c8020f8ba050248d182dcafc835d08","impliedFormat":99},{"version":"cfac5627d337b82d2fbeff5f0f638b48a370a8d72d653327529868a70c5bc0f8","impliedFormat":99},{"version":"8a826bc18afa4c5ed096ceb5d923e2791a5bae802219e588a999f535b1c80492","impliedFormat":99},{"version":"c860264bd6e0582515237f063a972018328d579ae3c0869cc2c4c9cf2f78cef0","impliedFormat":99},{"version":"d30a4b50cdf27ceaa58e72b9a4c6b57167e33a4a57a5fbd5c0b48cc541f21b07","impliedFormat":99},{"version":"73e94021c55ab908a1b8c53792e03bf7e0d195fee223bdc5567791b2ccbfcdec","impliedFormat":99},{"version":"5f73eb47b37f3a957fe2ac6fe654648d60185908cab930fc01c31832a5cb4b10","impliedFormat":99},{"version":"cb6372a2460010a342ba39e06e1dcfd722e696c9d63b4a71577f9a3c72d09e0a","impliedFormat":99},{"version":"6d6530e4c5f2a8d03d3e85c57030a3366c8f24198fbc7860beed9f5a35d0ad41","impliedFormat":99},{"version":"8220978de3ee01a62309bb4190fa664f34932549ff26249c92799dd58709a693","impliedFormat":99},{"version":"ac12a6010ff501e641f5a8334b8eaf521d0e0739a7e254451b6eea924c3035c7","impliedFormat":99},{"version":"97395d1e03af4928f3496cc3b118c0468b560765ab896ce811acb86f6b902b5c","impliedFormat":99},{"version":"7dcfbd6a9f1ce1ddf3050bd469aa680e5259973b4522694dc6291afe20a2ae28","impliedFormat":99},{"version":"433808ed82cf5ed8643559ea41427644e245934db5871e6b97ce49660790563e","impliedFormat":99},{"version":"efc225581aae9bb47d421a1b9f278db0238bc617b257ce6447943e59a2d1621e","impliedFormat":99},{"version":"14891c20f15be1d0d42ecbbd63de1c56a4d745e3ea2b4c56775a4d5d36855630","impliedFormat":99},{"version":"8833b88e26156b685bc6f3d6a014c2014a878ffbd240a01a8aee8a9091014e9c","impliedFormat":99},{"version":"7a2a42a1ac642a9c28646731bd77d9849cb1a05aa1b7a8e648f19ab7d72dd7dc","impliedFormat":99},{"version":"4d371c53067a3cc1a882ff16432b03291a016f4834875b77169a2d10bb1b023e","impliedFormat":99},{"version":"99b38f72e30976fd1946d7b4efe91aa227ecf0c9180e1dd6502c1d39f37445b4","impliedFormat":99},{"version":"df1bcf0b1c413e2945ce63a67a1c5a7b21dbbec156a97d55e9ea0eed90d2c604","impliedFormat":99},{"version":"6ea03bed678f170906ddf586aa742b3c122d550a8d48431796ab9081ae3b5c53","impliedFormat":99},{"version":"b4bfa90fac90c6e0d0185d2fe22f059fec67587cc34281f62294f9c4615a8082","impliedFormat":99},{"version":"b2d8bb61a776b0a150d987a01dd8411778c5ba701bb9962a0c6c3d356f590ee3","impliedFormat":99},{"version":"5ae6642588e4a72e5a62f6111cb750820034a7fbe56b5d8ec2bcb29df806ce52","impliedFormat":99},{"version":"6fca09e1abc83168caf36b751dec4ddda308b5714ec841c3ff0f3dc07b93c1b8","impliedFormat":99},{"version":"9a07957f75128ed0be5fc8a692a14da900878d5d5c21880f7c08f89688354aa4","impliedFormat":99},{"version":"8b6f3ae84eab35c50cf0f1b608c143fe95f1f765df6f753cd5855ae61b3efbe2","impliedFormat":99},{"version":"2f7268e6ac610c7122b6b416e34415ce42b51c56d080bef41786d2365f06772d","impliedFormat":99},{"version":"992491d83ff2d1e7f64a8b9117daee73724af13161f1b03171f0fa3ffe9b4e3e","impliedFormat":99},{"version":"7ca2d1a25dc4d0f1e0f1b640c0d6642087bef42c574b3fb08b172a1473776573","impliedFormat":99},{"version":"fc2266585e8f1f37e8c63d770c8e97312603006cada6c35967895500d86f8946","impliedFormat":99},{"version":"9409ac347c5779f339112000d7627f17ede6e39b0b6900679ce5454d3ad2e3c9","impliedFormat":99},{"version":"e55a1f6b198a39e38a3cea3ffe916aab6fde7965c827db3b8a1cacf144a67cd9","impliedFormat":99},{"version":"684a5c26ce2bb7956ef6b21e7f2d1c584172cd120709e5764bc8b89bac1a10eb","impliedFormat":99},{"version":"1bb71468bf39937ba312a4c028281d0c21cab9fcce9bb878bef3255cd4b7139a","impliedFormat":99},{"version":"ec9f43bbad5eca0a0397047c240e583bad29d538482824b31859baf652525869","impliedFormat":99},{"version":"9e9306805809074798cb780757190b896c347c733c101c1ef315111389dd37a0","impliedFormat":99},{"version":"66e486a9c9a86154dc9780f04325e61741f677713b7e78e515938bf54364fee2","impliedFormat":99},{"version":"33f3bdf398cc10f1c71ae14f574ad3f6d7517fe125e29608a092146b55cf1928","impliedFormat":99},{"version":"79741c2b730c696e7ae3a827081bf11da74dd079af2dbd8f7aa5af1ae80f0edd","impliedFormat":99},{"version":"2f372a4a84d0bc0709edca56f3c446697d60eadb601069b70625857a955b7a28","impliedFormat":99},{"version":"80b9fc3ad8d908bf1f97906538a90f6c55bd661c078423dfee2a46484baf252f","impliedFormat":99},{"version":"17ac6db33d189dce6d9bdb531bbdb74ad15a04991c5ecad23a642cb310055ebb","impliedFormat":99},{"version":"684bb74763606c640fe3dee0e7b9c34297b5af6aa6ceb3b265f360d39051df94","impliedFormat":99},{"version":"20c66936bdbdf6938b49053377bceea1009f491d89c2dff81efa36812a85f298","impliedFormat":99},{"version":"0c06897f7ab3830cef0701e0e083b2c684ed783ae820b306aedd501f32e9562d","impliedFormat":99},{"version":"d2a8cbeb0c0caaf531342062b4b5c227118862879f6a25033e31fad00797b7eb","impliedFormat":99},{"version":"ff786f7adefa284524a03652f2e9c2ba92e247ba6ac2f9ca81dd12f0dd4350a3","impliedFormat":99},{"version":"d128bdf00f8418209ebf75ee36d586bd7d66eb0075a8ac0f0ddf64ceb9d40a70","impliedFormat":99},{"version":"da572a1162f092f64641b8676fcfd735e4b6ca301572ec41361402842a416298","impliedFormat":99},{"version":"0d558d19c9cc65c1acfd2e209732a145aaef859082c0289ccd8a61d0cce6be46","impliedFormat":99},{"version":"c711ce68b0eabf9cfce8d871379d7c19460aa55b9d04c5e76a48623e01637697","impliedFormat":99},{"version":"56cc6eae48fd08fa709cf9163d01649f8d24d3fea5806f488d2b1b53d25e1d6c","impliedFormat":99},{"version":"57a925b13947b38c34277d93fb1e85d6f03f47be18ca5293b14082a1bd4a48f5","impliedFormat":99},{"version":"9d9d64c1fa76211dd529b6a24061b8d724e2110ee55d3829131bca47f3fe4838","impliedFormat":99},{"version":"c13042e244bb8cf65586e4131ef7aed9ca33bf1e029a43ed0ebab338b4465553","impliedFormat":99},{"version":"54be9b9c71a17cb2519b841fad294fa9dc6e0796ed86c8ac8dd9d8c0d1c3a631","impliedFormat":99},{"version":"10881be85efd595bef1d74dfa7b9a76a5ab1bfed9fb4a4ca7f73396b72d25b90","impliedFormat":99},{"version":"925e71eaa87021d9a1215b5cf5c5933f85fe2371ddc81c32d1191d7842565302","impliedFormat":99},{"version":"faed0b3f8979bfbfb54babcff9d91bd51fda90931c7716effa686b4f30a09575","impliedFormat":99},{"version":"53c72d68328780f711dbd39de7af674287d57e387ddc5a7d94f0ffd53d8d3564","impliedFormat":99},{"version":"51129924d359cdebdccbf20dbabc98c381b58bfebe2457a7defed57002a61316","impliedFormat":99},{"version":"7270a757071e3bc7b5e7a6175f1ac9a4ddf4de09f3664d80cb8805138f7d365b","impliedFormat":99},{"version":"57ae71d27ee71b7d1f2c6d867ddafbbfbaa629ad75565e63a508dbaa3ef9f859","impliedFormat":99},{"version":"954fa6635a9afb6d288cf722e25f9deeaaf04ad9ddb448882f08aaef92504174","impliedFormat":99},{"version":"82332b8c02e24a11c88edc93c414e31fd905d7ae45af7e1e8310748ba2881b17","impliedFormat":99},{"version":"c42d5cbf94816659c01f7c2298d0370247f1a981f8ca6370301b7a03b3ced950","impliedFormat":99},{"version":"18c18ab0341fd5fdfefb5d992c365be1696bfe000c7081c964582b315e33f8f2","impliedFormat":99},{"version":"dafbd4199902d904e3d4a233b5faf5dc4c98847fcd8c0ddd7617b2aed50e90d8","impliedFormat":99},{"version":"73e7e7ebaba033350965989e4201367c849d21f9591b11ab8b3da4891c9350c0","impliedFormat":99},{"version":"aa2bbf1de7e44753a03266534f185fdf880bd2a17b63b88972c5d14885d90944","impliedFormat":99},{"version":"4a0892445dc0cffabc6b7eb938cd7f9aae95196679836e8dd445c36f726d9c99","signature":"aa4187e274e4489476bb1bc46f161534f4f2da53313285c50dd47fa546f67799"},{"version":"c93af414439ccf7e3722afaf756e0bae6b694293a67383a0b632e1d329f9bfbc","signature":"9aa1da3dde7136aaa5dac881878ecdee6ac6c41f4e93ddab5f8c7412a4ea7626"},{"version":"3de97e79e825b1657db4ba74eb3342a8f32c31e7f403ae96501f59ee62a42245","signature":"d928735613b4ebd46e542f5bceae610955b61d7fc8259bfef2f06ed5a8d2ad0d"},{"version":"6d74ef62423add075d45b9e9e082729eb71e1566c7a0c797fab4ab3808330171","signature":"fb96dbf9fc167804648a04c7b5879b57aee2cc9d741ec5a660a835ead2c57bf8"},{"version":"5ca7778e9eb9d6427ff5af8d1487c5e8ca430e14b9f05456ff54c729c3a5341a","signature":"4243305a408a9e024c8374a21903090b7c0ee637e02d411d1de2b1e97b4d9361"},{"version":"ece819598d95360af8aedf36d90be41a93af49797240a6d6a69181180b095a76","signature":"638e231c7398bc8eae56d65bed1484e1d4b0126fdfa21930a51e3c18dace3712"},{"version":"1179ef8174e0e4a09d35576199df04803b1db17c0fb35b9326442884bc0b0cce","impliedFormat":99},{"version":"8c3930799bbd080d6e2ebf8bcb3b26e48ef5602a46142e630eae53a54a6dd8c6","signature":"ecf00309316e77304248c7c9777a2e3f5ea561181d893ce9f9e1ffacfe6561e2"},{"version":"98b1a7db3b952e3075af6c3798af3f3c703ec9f5d5591e39875965b25b48f587","signature":"baadfa3746e6e65f5551e45a60f0c764661dc424dc6faad903bc77baf6d6b83a"},{"version":"ed7695ae01698383707cf4344228ed801773b6e6c6e074a60383755cd9a3d6a0","signature":"ec566411c8cce49eaa57e6c30f22dcb0cc6c1b3d9415c118b054efb78cfb72cc"},{"version":"abadcfe5f1c209fec3c5c9f8df8e50790c842e5f4aca11151512989768e91cc0","signature":"96a8e9e10130c2434db4001c102a6472ad9a0610aa8d65a69a09fe9dc5b20b47"},{"version":"e9885046946474f3b51dd3ef8723ec123ada550f550501e38bbbfe92ce4605f3","signature":"b0d4a2fc0d47853488fdbab8eb1b630614e0aa92ad4d84b321a0260360656f74"},{"version":"191717d638dc86313925baf3e9352a87fa7034707e1b44e578c7a85b212681e4","signature":"e57b2ba63587504ee95cb29f5c1e834727bb3d77d1994bf5bd2c6c69a891ed0f"},{"version":"87e148419a1c1b678ef52f12c0955aad1bdd1596df0533f83d2cd5ec79dba429","signature":"61e0696065b325ed71e05401bd01a88916690d1664db0fbbc576e6a6528d8822"},{"version":"badaf2aa0f23b763c0869b87c3b5659267bce2a42246c6a0a3e7b77eb61b4c3c","signature":"122294695f84f88def1f4a13032a1ff1ca64fd2536d7ed3948ec04bde99de0f6"},{"version":"fe93c474ab38ac02e30e3af073412b4f92b740152cf3a751fdaee8cbea982341","impliedFormat":1},{"version":"c60093e32612d44af7042c3eb457c616aec3deee748a5a1eb1a6188e3d837f5c","impliedFormat":1},{"version":"1e00b8bf9e3766c958218cd6144ffe08418286f89ff44ba5a2cc830c03dd22c7","impliedFormat":1},{"version":"d4eda49514708a11ce9c58dc59729374e59c457c6c89a8c30b38fb600c3cf51a","impliedFormat":99},{"version":"91e8f0c2a953757e6fcc192281cefeafb3f7771b4c17968948b800f22e7a1e47","signature":"249377cdb0baff65adf1d328df4c7d1d5e980b54718f32952e3ef2f14cbd683c"},{"version":"7da4465898a4d1fc7c4c2d1a2be7f9a61ec754b4de5a5c8558dba5c83913eb6c","signature":"b41568086cbc802ee04927ceeb92f5d5567d49322e016891f11df778f4bdf603"},{"version":"7f780bb4f19956c9fb9235f2c0a6bf2bd004989ec5f09000113c495d50f83057","signature":"2ebc90be29c541cbe65fc76ab9642c7348e8f76f04a670930d705b67cc0df910"},{"version":"eded1386e319db1cf081954fae5d531d23567221752345a4a1049d44ca8fb612","impliedFormat":1},{"version":"19feb8551285d9041090b2aac242de4089aa0abe3777a89ff9a804225e561832","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bf3b5a1771b2c2af6aef2cd05212d8d01c4326c03ea0426c9534ce9e07ff286","affectsGlobalScope":true,"impliedFormat":1},{"version":"48556d23eaf9153e934de9999bf0e70b66251e3297d69248e44a383a14b68fa0","impliedFormat":1},{"version":"c2ee65dcf08027f2a3ab3ae69b6c20165074bb0579b9f8c0637a669ae12e2e7f","impliedFormat":99},{"version":"46ad8032500b9412f066593d9fddb72ef042096899532b9ee655daaaf3d7e84e","impliedFormat":99},{"version":"6745ddfe473285729c6b3ed43e2db71d6b5d5e91add5fd27e2c8960c94e3252d","impliedFormat":99},{"version":"9e019d5277f97f6d4dc5c185b0390705eacd472ab0e6d0935e9c390c52a54d95","impliedFormat":99},{"version":"e8aec07822891f8ac99950f626a9a70f9162b32465f9678458891351d94eaa16","impliedFormat":99},{"version":"66bfd5457433fffa899858291081d4a5e958bb7d0fb33f128ef7e370c8385e61","impliedFormat":99},{"version":"5971bafc1bfc0280454b95320c85d0b3ffe16ff0bc214d57bff8d312065bb39b","impliedFormat":99},{"version":"8e4ccad5024d5fb41bafe995312ae4997eb66c069b44364b69b012e7fb63b917","impliedFormat":99},{"version":"b6c414ac934d50dcfb0058a9e217d12b244985b866b38c707fe061b37350bae9","impliedFormat":99},{"version":"0020704c95e93a60cc39f2b7f8df45da5e91f55a71948d9c920ad192c649bf54","impliedFormat":99},{"version":"76d9b9995b58a65fa9591c45a8b59b08ab6b162fbbd150e2b0bc8d6d344cf1db","impliedFormat":99},{"version":"7210fa3a9d837f289b6262f7225f84971e83589124865f58e7b5b956f0a22c5a","impliedFormat":99},{"version":"233267a4a036c64aee95f66a0d31e3e0ef048cccc57dd66f9cf87582b38691e4","impliedFormat":99},{"version":"c101a90c5216db08141252c171dafc81e2f858a6d89e83ecc93832e0407b2325","signature":"a1e2bb9a93b57b910afd329b213900591aad5fb62a1f9372185bc7dc39d0a89e"},{"version":"430374cddc7cc9f49d8d012015789dc97d228d73cadcd172e1fc84597f72aa67","signature":"f9f0079f4525e7dda94b2e49e5c00ee8ab4b9bced0ed271c7869051b8028e35b"},{"version":"69e2860c57587d70c6d7e7f05eaa9992e27a23660a04cde3830a0147d5b4b9df","signature":"ec05ebb474aa3c7e19130a31d3c039c79082b021b912704c583a66b8d6e6b245"},{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"5c5d901a999dfe64746ef4244618ae0628ac8afdb07975e3d5ed66e33c767ed0","impliedFormat":99},{"version":"85d08536e6cd9787f82261674e7d566421a84d286679db1503432a6ccf9e9625","impliedFormat":99},{"version":"5702b3c2f5d248290ed99419d77ca1cc3e6c29db5847172377659c50e6303768","impliedFormat":99},{"version":"9764b2eb5b4fc0b8951468fb3dbd6cd922d7752343ef5fbf1a7cd3dfcd54a75e","impliedFormat":99},{"version":"1fc2d3fe8f31c52c802c4dee6c0157c5a1d1f6be44ece83c49174e316cf931ad","impliedFormat":99},{"version":"dc4aae103a0c812121d9db1f7a5ea98231801ed405bf577d1c9c46a893177e36","impliedFormat":99},{"version":"106d3f40907ba68d2ad8ce143a68358bad476e1cc4a5c710c11c7dbaac878308","impliedFormat":99},{"version":"42ad582d92b058b88570d5be95393cf0a6c09a29ba9aa44609465b41d39d2534","impliedFormat":99},{"version":"36e051a1e0d2f2a808dbb164d846be09b5d98e8b782b37922a3b75f57ee66698","impliedFormat":99},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"a510938c29a2e04183c801a340f0bbb5a0ae091651bd659214a8587d710ddfbb","impliedFormat":99},{"version":"07bcf85b52f652572fc2a7ec58e6de5dd4fcaf9bbc6f4706b124378cedcbb95c","impliedFormat":99},{"version":"4368a800522ca3dd131d3bbc05f2c46a8b7d612eefca41d5c2e5ac0428a45582","impliedFormat":99},{"version":"720e56f06175c21512bcaeed59a4d4173cd635ea7b4df3739901791b83f835b9","impliedFormat":99},{"version":"349949a8894257122f278f418f4ee2d39752c67b1f06162bb59747d8d06bbc51","impliedFormat":99},{"version":"364832fbef8fb60e1fee868343c0b64647ab8a4e6b0421ca6dafb10dff9979ba","impliedFormat":99},{"version":"dfe4d1087854351e45109f87e322a4fb9d3d28d8bd92aa0460f3578320f024e9","impliedFormat":99},{"version":"886051ae2ccc4c5545bedb4f9af372d69c7c3844ae68833ed1fba8cae8d90ef8","impliedFormat":99},{"version":"3f4e5997cb760b0ef04a7110b4dd18407718e7502e4bf6cd8dd8aa97af8456ff","impliedFormat":99},{"version":"381b5f28b29f104bbdd130704f0a0df347f2fc6cb7bab89cfdc2ec637e613f78","impliedFormat":99},{"version":"a52baccd4bf285e633816caffe74e7928870ce064ebc2a702e54d5e908228777","impliedFormat":99},{"version":"c6120582914acd667ce268849283702a625fee9893e9cad5cd27baada5f89f50","impliedFormat":99},{"version":"da1c22fbbf43de3065d227f8acbc10b132dfa2f3c725db415adbe392f6d1359f","impliedFormat":99},{"version":"858880acbe7e15f7e4f06ac82fd8f394dfe2362687271d5860900d584856c205","impliedFormat":99},{"version":"8dfb1bf0a03e4db2371bafe9ac3c5fb2a4481c77e904d2a210f3fed7d2ad243a","impliedFormat":99},{"version":"bc840f0c5e7274e66f61212bb517fb4348d3e25ed57a27e7783fed58301591e0","impliedFormat":99},{"version":"26438d4d1fc8c9923aea60424369c6e9e13f7ce2672e31137aa3d89b7e1ba9af","impliedFormat":99},{"version":"1ace7207aa2566178c72693b145a566f1209677a2d5e9fb948c8be56a1a61ca9","impliedFormat":99},{"version":"a776df294180c0fdb62ba1c56a959b0bb1d2967d25b372abefdb13d6eba14caf","impliedFormat":99},{"version":"6c88ea4c3b86430dd03de268fd178803d22dc6aa85f954f41b1a27c6bb6227f2","impliedFormat":99},{"version":"11e17a3addf249ae2d884b35543d2b40fabf55ddcbc04f8ee3dcdae8a0ce61eb","impliedFormat":99},{"version":"4fd8aac8f684ee9b1a61807c65ee48f217bf12c77eb169a84a3ba8ddf7335a86","impliedFormat":99},{"version":"1d0736a4bfcb9f32de29d6b15ac2fa0049fd447980cf1159d219543aa5266426","impliedFormat":99},{"version":"11083c0a8f45d2ec174df1cb565c7ba9770878d6820bf01d76d4fedb86052a77","impliedFormat":99},{"version":"d8e37104ef452b01cefe43990821adc3c6987423a73a1252aa55fb1d9ebc7e6d","impliedFormat":99},{"version":"f5622423ee5642dcf2b92d71b37967b458e8df3cf90b468675ff9fddaa532a0f","impliedFormat":99},{"version":"21a942886d6b3e372db0504c5ee277285cbe4f517a27fc4763cf8c48bd0f4310","impliedFormat":99},{"version":"41a4b2454b2d3a13b4fc4ec57d6a0a639127369f87da8f28037943019705d619","impliedFormat":99},{"version":"e9b82ac7186490d18dffaafda695f5d975dfee549096c0bf883387a8b6c3ab5a","impliedFormat":99},{"version":"eed9b5f5a6998abe0b408db4b8847a46eb401c9924ddc5b24b1cede3ebf4ee8c","impliedFormat":99},{"version":"af85fde8986fdad68e96e871ae2d5278adaf2922d9879043b9313b18fae920b1","impliedFormat":99},{"version":"8a1f5d2f7cf4bf851cc9baae82056c3316d3c6d29561df28aff525556095554b","impliedFormat":99},{"version":"a5dbd4c9941b614526619bad31047ddd5f504ec4cdad88d6117b549faef34dd3","impliedFormat":99},{"version":"e87873f06fa094e76ac439c7756b264f3c76a41deb8bc7d39c1d30e0f03ef547","impliedFormat":99},{"version":"488861dc4f870c77c2f2f72c1f27a63fa2e81106f308e3fc345581938928f925","impliedFormat":99},{"version":"eff73acfacda1d3e62bb3cb5bc7200bb0257ea0c8857ce45b3fee5bfec38ad12","impliedFormat":99},{"version":"aff4ac6e11917a051b91edbb9a18735fe56bcfd8b1802ea9dbfb394ad8f6ce8e","impliedFormat":99},{"version":"1f68aed2648740ac69c6634c112fcaae4252fbae11379d6eabee09c0fbf00286","impliedFormat":99},{"version":"5e7c2eff249b4a86fb31e6b15e4353c3ddd5c8aefc253f4c3e4d9caeb4a739d4","impliedFormat":99},{"version":"14c8d1819e24a0ccb0aa64f85c61a6436c403eaf44c0e733cdaf1780fed5ec9f","impliedFormat":99},{"version":"011423c04bfafb915ceb4faec12ea882d60acbe482780a667fa5095796c320f8","impliedFormat":99},{"version":"f8eb2909590ec619643841ead2fc4b4b183fbd859848ef051295d35fef9d8469","impliedFormat":99},{"version":"fe784567dd721417e2c4c7c1d7306f4b8611a4f232f5b7ce734382cf34b417d2","impliedFormat":99},{"version":"45d1e8fb4fd3e265b15f5a77866a8e21870eae4c69c473c33289a4b971e93704","impliedFormat":99},{"version":"cd40919f70c875ca07ecc5431cc740e366c008bcbe08ba14b8c78353fb4680df","impliedFormat":99},{"version":"ddfd9196f1f83997873bbe958ce99123f11b062f8309fc09d9c9667b2c284391","impliedFormat":99},{"version":"2999ba314a310f6a333199848166d008d088c6e36d090cbdcc69db67d8ae3154","impliedFormat":99},{"version":"62c1e573cd595d3204dfc02b96eba623020b181d2aa3ce6a33e030bc83bebb41","impliedFormat":99},{"version":"ca1616999d6ded0160fea978088a57df492b6c3f8c457a5879837a7e68d69033","impliedFormat":99},{"version":"835e3d95251bbc48918bb874768c13b8986b87ea60471ad8eceb6e38ddd8845e","impliedFormat":99},{"version":"de54e18f04dbcc892a4b4241b9e4c233cfce9be02ac5f43a631bbc25f479cd84","impliedFormat":99},{"version":"453fb9934e71eb8b52347e581b36c01d7751121a75a5cd1a96e3237e3fd9fc7e","impliedFormat":99},{"version":"bc1a1d0eba489e3eb5c2a4aa8cd986c700692b07a76a60b73a3c31e52c7ef983","impliedFormat":99},{"version":"4098e612efd242b5e203c5c0b9afbf7473209905ab2830598be5c7b3942643d0","impliedFormat":99},{"version":"28410cfb9a798bd7d0327fbf0afd4c4038799b1d6a3f86116dc972e31156b6d2","impliedFormat":99},{"version":"514ae9be6724e2164eb38f2a903ef56cf1d0e6ddb62d0d40f155f32d1317c116","impliedFormat":99},{"version":"970e5e94a9071fd5b5c41e2710c0ef7d73e7f7732911681592669e3f7bd06308","impliedFormat":99},{"version":"491fb8b0e0aef777cec1339cb8f5a1a599ed4973ee22a2f02812dd0f48bd78c1","impliedFormat":99},{"version":"6acf0b3018881977d2cfe4382ac3e3db7e103904c4b634be908f1ade06eb302d","impliedFormat":99},{"version":"2dbb2e03b4b7f6524ad5683e7b5aa2e6aef9c83cab1678afd8467fde6d5a3a92","impliedFormat":99},{"version":"135b12824cd5e495ea0a8f7e29aba52e1adb4581bb1e279fb179304ba60c0a44","impliedFormat":99},{"version":"e4c784392051f4bbb80304d3a909da18c98bc58b093456a09b3e3a1b7b10937f","impliedFormat":99},{"version":"2e87c3480512f057f2e7f44f6498b7e3677196e84e0884618fc9e8b6d6228bed","impliedFormat":99},{"version":"66984309d771b6b085e3369227077da237b40e798570f0a2ddbfea383db39812","impliedFormat":99},{"version":"e41be8943835ad083a4f8a558bd2a89b7fe39619ed99f1880187c75e231d033e","impliedFormat":99},{"version":"260558fff7344e4985cfc78472ae58cbc2487e406d23c1ddaf4d484618ce4cfd","impliedFormat":99},{"version":"413d50bc66826f899c842524e5f50f42d45c8cb3b26fd478a62f26ac8da3d90e","impliedFormat":99},{"version":"d9083e10a491b6f8291c7265555ba0e9d599d1f76282812c399ab7639019f365","impliedFormat":99},{"version":"09de774ebab62974edad71cb3c7c6fa786a3fda2644e6473392bd4b600a9c79c","impliedFormat":99},{"version":"e8bcc823792be321f581fcdd8d0f2639d417894e67604d884c38b699284a1a2a","impliedFormat":99},{"version":"7c99839c518dcf5ab8a741a97c190f0703c0a71e30c6d44f0b7921b0deec9f67","impliedFormat":99},{"version":"44c14e4da99cd71f9fe4e415756585cec74b9e7dc47478a837d5bedfb7db1e04","impliedFormat":99},{"version":"1f46ee2b76d9ae1159deb43d14279d04bcebcb9b75de4012b14b1f7486e36f82","impliedFormat":99},{"version":"2838028b54b421306639f4419606306b940a5c5fcc5bc485954cbb0ab84d90f4","impliedFormat":99},{"version":"7116e0399952e03afe9749a77ceaca29b0e1950989375066a9ddc9cb0b7dd252","impliedFormat":99},{"version":"5bb37c8ed3d343ae525902e64be52edbc1ce0a5ad86ca2201118c0d8168078e5","impliedFormat":1},{"version":"61838b01af740887b4fe07d0602c2d62a66cd84cf309e4f7a5c21ec15d656510","impliedFormat":99},{"version":"15ec7a0b94628e74974c04379e20de119398638b3c70f0fa0c76ab92956be77c","impliedFormat":99},{"version":"347511f401eb79a6030b80f6a67d126ab41da1f663f0374c1d0a93312ae08e00","impliedFormat":99},{"version":"830c61b95e880bcd42f96d8a4181b0d84dec566ba5dd131b386dcb9608043832","impliedFormat":99},{"version":"f0eb42a134d7bb15f24aed89d8f3b5ffe6e326c74abdad75fff520c281239375","impliedFormat":99},{"version":"4e3ab6678655e507463a9bfa1aa39a4a5497fac4c75e5f7f7a16c0b7d001c34a","impliedFormat":99},{"version":"3cef134032da5e1bfabba59a03a58d91ed59f302235034279bb25a5a5b65ca62","affectsGlobalScope":true,"impliedFormat":1},{"version":"16494400e0b13ddfa20bc0518a9c460da457c050af55b0678ee07f6a9a24616e","signature":"f30adcbc95011241765dc48232da3f6db6636057c2d86b4538451dcace5f699c"},{"version":"7ec88e684a809815049a9f348565deaa8b5c8e5de81c4c425612345a2ef93834","signature":"09272638ee563ab9bda2c94cf8499266a8bb90a45b7348b14cc88b6902a16470"},{"version":"8eed0b740f776a7ec77d8f52f00eed82e8ad9b7ea12907b779978975cc5dbb46","signature":"bb714ae82427bf626c25986819dfa8867544095682d56d6727e1865ecbb481d4"},{"version":"7951a8641067c14e7f5a7f353cb9ca0e576476b9dde088cb29f36405bc3507e3","impliedFormat":99},{"version":"ad89046771974c89b491f9386ff6a0bb5887ed36bed38afbc0a0e37b8c889820","signature":"183026be39f73d1f3634a70e41dacb640b124150f8448c5c6b49226af808dbb6"},{"version":"8b16f17d15391a2c62d63daa0eecf5bb1ee60fd756368a3a0b35d6248a65e74c","signature":"461577fd4b3539cf62eaf77e7ba9a24c6b2235f00bea0dd9416b12556eea4988"},{"version":"4aa05669c65a0d8c33cf761e9a21f0ac632600e2632ff3811f2d03cc9ec6c8b9","signature":"5006aa81f0fa63e3d8080fb11a936a94bf1905a1bc8561756e7db40e80f37da4"},{"version":"be2835c98d6e2ce8cf0c04cde9bf86e275f981c04c7068840a486f1741a5478a","signature":"439593d167651f2e1c0c439482dc3d5d5eb248ea221ecd8feb5c62cd0d60cd86"},{"version":"9c580c6eae94f8c9a38373566e59d5c3282dc194aa266b23a50686fe10560159","impliedFormat":99},{"version":"06fe3a2804f541594e7bf5ce2fba54eb8237f53b8516c9d383fb927c2d78b1ec","signature":"d29b6c40c2dc99aa02230462eba3bae602117e46a041cd51c41d97cee65612fa"},{"version":"df1c322851066d4adb4f04ef60777b543e89b667a792147007c51ad81f630ba6","signature":"31da19f4722f5e78bd6b8c644b587a7b24fd90bffd8a2a1daa8dd39f27004d7c"},{"version":"67302c2bcb46d9ffd10090cbbae31bba6148da374f47c8f770960b0e5531a435","impliedFormat":99},{"version":"abe172598f74be0672b7aa990e2c617a81eb4c4467fd4ed786c1d9384e199c19","signature":"01e264b1c35c9acf0237be50f96bb1c2a02a9b25e80b816192ce6c5fd083df9b"},{"version":"f50d5d46307bb4552b1ae9d438ed7833bcabc0fd52937485c3ece256d348349e","signature":"31ccc337f8e861d8cc2f7d6d939c55b4f6baef9ea8b430a3b1e0a66ebb10602b"},{"version":"bcca7abf2c2ba1665ee2b971525c7f59bffbb92a676cc6de8805cb357707e057","signature":"4a5a07aa9b196e31f2d9830bbd92c2ed3d8f2e9a9a3b970f9579230a78a4a68b"},{"version":"be7650364f1421403a0ae0dbb2f804a8e4c8609040de5a75a46cbde8e99db2a0","signature":"87522697c003eb1217d1a6251b261a45da502815d6480c36752bf74a6c86c520"},{"version":"2084c2290eaf346c03d909c763b944d4459193d8796e6a7a4601afc96f70230e","signature":"61990fd4677ae214c283754348901d4bb24080892c3ff4ba1073b83c4808945d"},{"version":"7bf14220d51b639b3e11bb95bb6dc0afbe5d7540e46369a9e19350bf731f9a2b","signature":"bf07668ed6fbecb513f405be73a6061e428a8261bc71480a5abcd1d9e8556b9e"},{"version":"abdb198da85ad8a68c8ab71c050d3faccdfef9e90cba27b63960788a6a7f045b","signature":"688a7461a5c4ac13440796a5e3874d16edf3932ef7d3622df43755e636ae9123"},{"version":"f4baae28d79727ebf8e0527ff5ef6ee7c9891b905fe79c9ddc0d71102003f3b9","signature":"0cfafae10d5951f71daa538a5d3a67b924d55f45618acbf0e0f1269c844c14cc"},{"version":"6d6daefe6d5d8aea6345266e4019bc3fae43842b9bde50cb142ac215f4b01c82","signature":"4e616ba693071ebf3ddb2b642af57514b4070633f1216431f85d02dad847aeb0"},{"version":"65891a4ae521b5c5c09a6d45cbeb30d519f54a9c45415cfa6ee2fb43ae352d4e","impliedFormat":99},{"version":"1e7222556efba662a52edc81642a51f1925d3c2cc8caa465eebb3fdffcbe2bd8","impliedFormat":99},{"version":"a8ea73651858588a66956c62bb992e855dd7ec9d4e37d22612c91d170d129360","impliedFormat":99},{"version":"c3036b361d9a1a19ecff28a461e1f2eb2bc5cc89fb95dbb552d18f64170811d6","signature":"fa94c82b3f10e2e7956af6fff9b7683a3c2a4216d334e849d2c8d21663ea4791"},{"version":"be6a732a3daa1fb2cb9ca35d3606783ae6cc67048a9e3e424585f8e916a5df80","signature":"1f311c8fcd75afb3f5219aafda907612e3c83a9d44ec554f0912a33321cd098c"},{"version":"4a5aa16151dbec524bb043a5cbce2c3fec75957d175475c115a953aca53999a9","impliedFormat":99},{"version":"f7654a7edb2b377e54cab191bfa732e92ffcc4165376317df05baec0ca81f064","signature":"1913d3e9a871099126700f506a2c3b8fe9d47857253124e5787055b463b98b4c"},{"version":"035e088f0518e03f452b0e017b526092a7a58a7bfd35c2db81638ce68c215d0e","signature":"307ad019fa8153fa55e2ff6bdf739397e7f9e21c80c0d945743a8a2dc3c44b06"},{"version":"ec6e5e4a7cdc84753b8128e21abb1e50d16e66e6ec20cc201742af4ebd63a490","signature":"54209a63989acb1e26e44cba94dad358ac586706b54b147c899f050e85c70c91"},{"version":"671574ae34d4a84feca7363424dc0f19128242808bd1e2b0d936bf80e59b091a","signature":"df21e1de8ed8fbdc8cedbee27953ceed89fb74d2f3dee8e7ab20a09efb8709e8"},{"version":"4492d4a3fac0eb26112c368f107df7cd78e4848c735acd87f33ba16afae086b1","signature":"9838e2b00135c7a310ebec82442ebd8f3fd4f51213b6b0dfa27e154f3f76414a"},{"version":"6c05d0fcee91437571513c404e62396ee798ff37a2d8bef2104accdc79deb9c0","impliedFormat":1},{"version":"7eabcef9d50a1b6776d583e3fc4d0efd2309c57776f0e58ffba56404b61fc44f","signature":"8969487db9f4484b672e2d890ae89ce4404886cd9cd56f3b3ca11eca2389ec0a"},{"version":"82e2aa26c1875ebc33b9af2a8dc9b0d2263abab8af41966e9b22f6c28ca15a9a","signature":"fa2769aee7a1d7d86b5ad5fceb4c4dfb94d45c373d87caad8cfdaefdc2868b2b"},{"version":"949ac9ce002b05c3c54da81bc59a5a490df978bc6f79aff79c7588c218da8d58","signature":"bbd79e0fd33892bdc58f1202a3efa06fa5661a49893ade5479e7624b6b79366a"},{"version":"66bf1b1fd73bf6278b3977532ca2110645b62fcffd0e80bc97b5801f4dad53bd","signature":"90176bcd57d22e9d923bfa2beb7ef83a259359af9c005ea0d590171f7c6886ce"},{"version":"e1a0e25972525310bd183059fd4715c3ddc31cbc4f9f3cf648c36eed305daf4c","signature":"8916ec39536d692fb53161458105baa2cba08157d22777937e4d3a5de2efcad7"},{"version":"c6b64d7376591a9d9b68cf068b0d12fad83cb72a747ecdc179cebb0252a48926","signature":"a2fe76b1299b38af1b803860cf54324e1881f30cd97efefc3a25457bd6dcf29d"},{"version":"8085954ba165e611c6230596078063627f3656fed3fb68ad1e36a414c4d7599a","impliedFormat":99},{"version":"bc5ba4cf9d38e27f3a64e43b4284d4ae9aa4c6e1f47b3b8461534180fd8a2c5c","signature":"81f5e6511bca40c26da0d6f8a693b9742ba0050387c234a2a65aa1a671adeda7"},{"version":"9b2186574515363d406a66e390eaee47d5473b23bb82fc7f74d4267ec91c845f","signature":"592a36923cef9949c343c6b499529187ea637da6466b9d69827658a6f4c80e24"},{"version":"fa3051cfd0196eaf41de55bb8b385c6cb32078edad8dbf59062d551347e80457","signature":"3aefc99917b9ccda912fdfd38a07a4479a8cd0e86a9ec90588479c5b3277ca75"},{"version":"76e1c5ebce740727cbfcb9e04dacb1297f44de6483058a0a82659cd8fdac34d1","signature":"ad3eaace5da6082432e72c43e9ab1d2b1ece29214c26659e2a32012ded0cb2f0"},"c3085aa7c267e4a12c37d1330a7a4a29c38f8626db50456302ec5a79c215f656",{"version":"14941cc82722e3badd1afbf31fc785681d67074ce07887f9f99ec821cf4637fb","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"b0bc6c06830c43643a30d552876fe94d4aac2e31f25b2350d475b90851c74584","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"429e29fb659182657eeec75530106f0b8b31130ffd406776c251a9e7ee4895e0","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"2d1f9f87b6eb45b0dc53ab3b57513627227fa92d9a6d086c3717a9590e847139","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"ac7733cd9997ca862049a37647c194871a43371a10958ad755f0aa80cc0fd79d","signature":"89b0f68f8f0b901f9dfff2b9e7255520283a783d6af7f2bc2953d771232317a2"},{"version":"e0c868a08451c879984ccf4d4e3c1240b3be15af8988d230214977a3a3dad4ce","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"bb220eaac1677e2ad82ac4e7fd3e609a0c7b6f2d6d9c673a35068c97f9fcd5cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"3eb11dbf3489064a47a2e1cf9d261b1f100ef0b3b50ffca6c44dd99d6dd81ac1","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"5d08a179b846f5ee674624b349ebebe2121c455e3a265dc93da4e8d9e89722b4","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"8cbbb12bfb321de8bd58ba74329f683d82e4e0abb56d998c7f1eef2e764a74c8","impliedFormat":1},{"version":"e85d04f57b46201ddc8ba238a84322432a4803a5d65e0bbd8b3b4f05345edd51","impliedFormat":1},{"version":"199f9ead0daf25ae4c5632e3d1f42570af59685294a38123eef457407e13f365","impliedFormat":1},{"version":"f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"1748c03e7a7d118f7f6648c709507971eb0d416f489958492c5ae625de445184","impliedFormat":1},{"version":"3937b50a4de68f6d21614461e9d47af0d8421ca80fc2a72b667ca2151f492120","impliedFormat":1},{"version":"d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","impliedFormat":1},{"version":"b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","impliedFormat":1},{"version":"936eb43a381712a8ec1249f2afc819f6fc7ca68f10dfec71762b428dfdc53bf1","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"86ea91bfa7fef1eeb958056f30f1db4e0680bc9b5132e5e9d6e9cfd773c0c4fd","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"0e13570a7e86c6d83dd92e81758a930f63747483e2cd34ef36fcdb47d1f9726a","impliedFormat":1},{"version":"5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04","impliedFormat":1},{"version":"271cde49dfd9b398ccc91bb3aaa43854cf76f4d14e10fed91cbac649aa6cbc63","affectsGlobalScope":true,"impliedFormat":1},{"version":"2bcecd31f1b4281710c666843fc55133a0ee25b143e59f35f49c62e168123f4b","impliedFormat":1},{"version":"a6273756fa05f794b64fe1aff45f4371d444f51ed0257f9364a8b25f3501915d","impliedFormat":1},{"version":"9c4e644fe9bf08d93c93bd892705842189fe345163f8896849d5964d21b56b78","impliedFormat":1},{"version":"25d91fb9ed77a828cc6c7a863236fb712dafcd52f816eec481bd0c1f589f4404","impliedFormat":1},{"version":"4cd14cea22eed1bfb0dc76183e56989f897ac5b14c0e2a819e5162eafdcfe243","impliedFormat":1},{"version":"8d32432f68ca4ce93ad717823976f2db2add94c70c19602bf87ee67fe51df48b","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"da172a28c35d5f298bf5f0361725cc80f45e89e803a353c56e1aa347e10f572d","impliedFormat":1},{"version":"1d4bc73751d6ec6285331d1ca378904f55d9e5e8aeaa69bc45b675c3df83e778","impliedFormat":1},{"version":"b276e8fb253f99e0aa25e4a67d47062736ec7a6aad97aed9132b86a5ac8cc572","impliedFormat":99},{"version":"a734b64b67b6818e44279ae0de04b68980f615392c07471a804e85cb6c4c5753","affectsGlobalScope":true,"impliedFormat":99},{"version":"5a7ebcf5fe8ac590dd03af1bbe426dfed639a3490fb1e5d6b934e45643b8ea1b","impliedFormat":1},{"version":"e7106410a8eb7a872a3d8d222e76328f505f70a4f7050b9ac58b8fbcda8a3ce7","impliedFormat":99},{"version":"3e8f365ddb449cf39013c3c3f9ca8126b38b457d6824aa05d333a7a60e9ec0f9","impliedFormat":99},{"version":"8017277c3843df85296d8730f9edf097d68d7d5f9bc9d8124fcacf17ecfd487e","impliedFormat":1}],"root":[473,475,476,[482,488],499,765,1037,1038,1050,1051,[1054,1056],1074,1075,1077,1078,[1084,1087],1089,1090,[1095,1097],[1272,1277],[1279,1286],[1291,1293],[1311,1313],[1409,1411],[1413,1416],1418,1419,[1421,1429],1433,1434,[1436,1440],[1442,1447],[1449,1458]],"options":{"allowJs":true,"esModuleInterop":true,"jsx":1,"module":99,"skipLibCheck":true,"strict":true,"target":4},"referencedMap":[[1456,1],[1454,2],[1457,3],[1455,4],[1458,5],[1453,6],[473,7],[671,8],[673,9],[674,8],[679,10],[675,8],[672,8],[676,8],[677,9],[678,9],[1264,8],[1265,11],[1266,12],[1270,13],[1267,12],[1268,8],[1269,8],[686,14],[722,15],[597,8],[627,16],[600,17],[609,18],[690,19],[599,8],[621,20],[705,21],[681,22],[756,23],[500,8],[501,24],[576,25],[573,26],[577,27],[574,8],[578,27],[579,28],[684,29],[682,27],[580,28],[575,28],[683,30],[581,31],[1298,32],[1300,33],[1308,34],[1306,35],[1301,36],[1302,36],[1303,37],[1299,38],[1307,39],[598,27],[628,40],[620,41],[689,42],[630,43],[619,44],[691,45],[692,46],[687,47],[688,48],[611,49],[696,50],[695,51],[694,52],[607,53],[617,54],[618,55],[608,56],[610,8],[629,8],[615,57],[613,58],[614,59],[612,8],[626,60],[624,8],[625,8],[1305,8],[1304,61],[680,62],[616,63],[572,64],[571,65],[706,66],[758,67],[757,68],[685,69],[1412,52],[1309,70],[693,71],[721,72],[697,73],[727,74],[726,75],[702,76],[711,77],[713,78],[712,79],[704,8],[714,80],[703,81],[699,8],[701,8],[707,82],[708,83],[710,84],[709,83],[700,8],[715,85],[495,86],[497,87],[1044,88],[1045,89],[1043,8],[1041,90],[1040,91],[490,92],[496,8],[493,93],[491,8],[492,94],[494,8],[498,95],[1046,96],[1042,97],[741,98],[716,99],[717,98],[742,98],[746,100],[745,101],[718,98],[743,98],[744,98],[728,99],[740,102],[751,103],[750,104],[720,105],[735,106],[739,107],[738,108],[752,109],[737,110],[736,111],[719,112],[749,113],[747,114],[748,115],[754,116],[762,117],[755,118],[763,119],[761,8],[760,120],[698,121],[759,122],[733,123],[734,124],[725,125],[730,126],[732,127],[731,128],[724,126],[729,129],[723,130],[753,131],[764,132],[1420,133],[417,8],[1091,134],[1448,135],[1079,136],[1083,137],[1080,134],[1081,134],[1053,134],[1094,138],[1093,139],[1082,134],[1052,136],[1278,138],[1417,134],[477,136],[1435,135],[1310,140],[1092,8],[1459,8],[1460,8],[1461,8],[1462,141],[1463,8],[1465,142],[1466,143],[1464,8],[1467,8],[1469,144],[1471,145],[1470,8],[1315,146],[489,8],[1472,8],[1473,8],[1025,147],[1026,148],[1024,149],[1027,150],[1028,151],[1029,152],[1030,153],[1031,154],[1032,155],[1033,156],[1034,157],[1035,158],[1036,159],[1325,146],[1468,8],[134,160],[135,160],[136,161],[95,162],[137,163],[138,164],[139,165],[90,8],[93,166],[91,8],[92,8],[140,167],[141,168],[142,169],[143,170],[144,171],[145,172],[146,172],[148,8],[147,173],[149,174],[150,175],[151,176],[133,177],[94,8],[152,178],[153,179],[154,180],[187,181],[155,182],[156,183],[157,184],[158,185],[159,186],[160,187],[161,188],[162,189],[163,190],[164,191],[165,191],[166,192],[167,8],[168,8],[169,193],[171,194],[170,195],[172,196],[173,197],[174,198],[175,199],[176,200],[177,201],[178,202],[179,203],[180,204],[181,205],[182,206],[183,207],[184,208],[185,209],[186,210],[1474,8],[191,211],[192,212],[190,136],[1408,213],[188,214],[189,215],[79,8],[81,216],[264,136],[1475,8],[1314,8],[1476,8],[480,217],[479,218],[478,8],[1088,219],[80,8],[854,220],[833,221],[930,8],[834,222],[770,220],[771,220],[772,220],[773,220],[774,220],[775,220],[776,220],[777,220],[778,220],[779,220],[780,220],[781,220],[782,220],[783,220],[784,220],[785,220],[786,220],[787,220],[766,8],[788,220],[789,220],[790,8],[791,220],[792,220],[794,220],[793,220],[795,220],[796,220],[797,220],[798,220],[799,220],[800,220],[801,220],[802,220],[803,220],[804,220],[805,220],[806,220],[807,220],[808,220],[809,220],[810,220],[811,220],[812,220],[813,220],[815,220],[816,220],[817,220],[814,220],[818,220],[819,220],[820,220],[821,220],[822,220],[823,220],[824,220],[825,220],[826,220],[827,220],[828,220],[829,220],[830,220],[831,220],[832,220],[835,223],[836,220],[837,220],[838,224],[839,225],[840,220],[841,220],[842,220],[843,220],[846,220],[844,220],[845,220],[768,8],[847,220],[848,220],[849,220],[850,220],[851,220],[852,220],[853,220],[855,226],[856,220],[857,220],[858,220],[860,220],[859,220],[861,220],[862,220],[863,220],[864,220],[865,220],[866,220],[867,220],[868,220],[869,220],[870,220],[872,220],[871,220],[873,220],[874,8],[875,8],[876,8],[1023,227],[877,220],[878,220],[879,220],[880,220],[881,220],[882,220],[883,8],[884,220],[885,8],[886,220],[887,220],[888,220],[889,220],[890,220],[891,220],[892,220],[893,220],[894,220],[895,220],[896,220],[897,220],[898,220],[899,220],[900,220],[901,220],[902,220],[903,220],[904,220],[905,220],[906,220],[907,220],[908,220],[909,220],[910,220],[911,220],[912,220],[913,220],[914,220],[915,220],[916,220],[917,220],[918,8],[919,220],[920,220],[921,220],[922,220],[923,220],[924,220],[925,220],[926,220],[927,220],[928,220],[929,220],[931,228],[1194,229],[1099,222],[1101,222],[1102,222],[1103,222],[1104,222],[1105,222],[1100,222],[1106,222],[1108,222],[1107,222],[1109,222],[1110,222],[1111,222],[1112,222],[1113,222],[1114,222],[1115,222],[1116,222],[1118,222],[1117,222],[1119,222],[1120,222],[1121,222],[1122,222],[1123,222],[1124,222],[1125,222],[1126,222],[1127,222],[1128,222],[1129,222],[1130,222],[1131,222],[1132,222],[1133,222],[1135,222],[1136,222],[1134,222],[1137,222],[1138,222],[1139,222],[1140,222],[1141,222],[1142,222],[1143,222],[1144,222],[1145,222],[1146,222],[1147,222],[1148,222],[1150,222],[1149,222],[1152,222],[1151,222],[1153,222],[1154,222],[1155,222],[1156,222],[1157,222],[1158,222],[1159,222],[1160,222],[1161,222],[1162,222],[1163,222],[1164,222],[1165,222],[1167,222],[1166,222],[1168,222],[1169,222],[1170,222],[1172,222],[1171,222],[1173,222],[1174,222],[1175,222],[1176,222],[1177,222],[1178,222],[1180,222],[1179,222],[1181,222],[1182,222],[1183,222],[1184,222],[1185,222],[767,220],[1186,222],[1187,222],[1189,222],[1188,222],[1190,222],[1191,222],[1192,222],[1193,222],[932,220],[933,220],[934,8],[935,8],[936,8],[937,220],[938,8],[939,8],[940,8],[941,8],[942,8],[943,220],[944,220],[945,220],[946,220],[947,220],[948,220],[949,220],[950,220],[955,230],[953,231],[954,232],[952,233],[951,220],[956,220],[957,220],[958,220],[959,220],[960,220],[961,220],[962,220],[963,220],[964,220],[965,220],[966,8],[967,8],[968,220],[969,220],[970,8],[971,8],[972,8],[973,220],[974,220],[975,220],[976,220],[977,226],[978,220],[979,220],[980,220],[981,220],[982,220],[983,220],[984,220],[985,220],[986,220],[987,220],[988,220],[989,220],[990,220],[991,220],[992,220],[993,220],[994,220],[995,220],[996,220],[997,220],[998,220],[999,220],[1000,220],[1001,220],[1002,220],[1003,220],[1004,220],[1005,220],[1006,220],[1007,220],[1008,220],[1009,220],[1010,220],[1011,220],[1012,220],[1013,220],[1014,220],[1015,220],[1016,220],[1017,220],[1018,220],[769,234],[1019,8],[1020,8],[1021,8],[1022,8],[583,8],[1296,235],[1297,236],[622,8],[623,237],[1401,8],[474,238],[591,239],[590,240],[582,8],[603,241],[592,242],[589,8],[593,8],[601,8],[595,243],[594,244],[588,245],[602,8],[604,246],[605,247],[606,248],[596,249],[1039,136],[1394,8],[1368,250],[1367,251],[1366,252],[1393,253],[1392,254],[1396,255],[1395,256],[1398,257],[1397,258],[1405,259],[1404,260],[1353,261],[1327,262],[1328,263],[1329,263],[1330,263],[1331,263],[1332,263],[1333,263],[1334,263],[1335,263],[1336,263],[1337,263],[1351,264],[1338,263],[1339,263],[1340,263],[1341,263],[1342,263],[1343,263],[1344,263],[1345,263],[1347,263],[1348,263],[1346,263],[1349,263],[1350,263],[1352,263],[1326,265],[1391,266],[1371,267],[1372,267],[1373,267],[1374,267],[1375,267],[1376,267],[1377,268],[1379,267],[1378,267],[1390,269],[1380,267],[1382,267],[1381,267],[1384,267],[1383,267],[1385,267],[1386,267],[1387,267],[1388,267],[1389,267],[1370,267],[1369,270],[1361,271],[1359,272],[1360,272],[1364,273],[1362,272],[1363,272],[1365,272],[1358,8],[1047,8],[1295,274],[1294,8],[1441,136],[88,275],[420,276],[425,6],[427,277],[213,278],[368,279],[395,280],[224,8],[205,8],[211,8],[357,281],[292,282],[212,8],[358,283],[397,284],[398,285],[345,286],[354,287],[262,288],[362,289],[363,290],[361,291],[360,8],[359,292],[396,293],[214,294],[299,8],[300,295],[209,8],[225,296],[215,297],[237,296],[268,296],[198,296],[367,298],[377,8],[204,8],[323,299],[324,300],[318,301],[448,8],[326,8],[327,301],[319,302],[339,136],[453,303],[452,304],[447,8],[265,305],[400,8],[353,306],[352,8],[446,307],[320,136],[240,308],[238,309],[449,8],[451,310],[450,8],[239,311],[441,312],[444,313],[249,314],[248,315],[247,316],[456,136],[246,317],[287,8],[459,8],[1288,318],[1287,8],[462,8],[461,136],[463,319],[194,8],[364,320],[365,321],[366,322],[389,8],[203,323],[193,8],[196,324],[338,325],[337,326],[328,8],[329,8],[336,8],[331,8],[334,327],[330,8],[332,328],[335,329],[333,328],[210,8],[201,8],[202,296],[419,330],[428,331],[432,332],[371,333],[370,8],[283,8],[464,334],[380,335],[321,336],[322,337],[315,338],[305,8],[313,8],[314,339],[343,340],[306,341],[344,342],[341,343],[340,8],[342,8],[296,344],[372,345],[373,346],[307,347],[311,348],[303,349],[349,350],[379,351],[382,352],[285,353],[199,354],[378,355],[195,280],[401,8],[402,356],[413,357],[399,8],[412,358],[89,8],[387,359],[271,8],[301,360],[383,8],[200,8],[232,8],[411,361],[208,8],[274,362],[310,363],[369,364],[309,8],[410,8],[404,365],[405,366],[206,8],[407,367],[408,368],[390,8],[409,354],[230,369],[388,370],[414,371],[217,8],[220,8],[218,8],[222,8],[219,8],[221,8],[223,372],[216,8],[277,373],[276,8],[282,374],[278,375],[281,376],[280,376],[284,374],[279,375],[236,377],[266,378],[376,379],[466,8],[436,380],[438,381],[308,8],[437,382],[374,345],[465,383],[325,345],[207,8],[267,384],[233,385],[234,386],[235,387],[231,388],[348,388],[243,388],[269,389],[244,389],[227,390],[226,8],[275,391],[273,392],[272,393],[270,394],[375,395],[347,396],[346,397],[317,398],[356,399],[355,400],[351,401],[261,402],[263,403],[260,404],[228,405],[295,8],[424,8],[294,406],[350,8],[286,407],[304,320],[302,408],[288,409],[290,410],[460,8],[289,411],[291,411],[422,8],[421,8],[423,8],[458,8],[293,412],[258,136],[87,8],[241,413],[250,8],[298,414],[229,8],[430,136],[440,415],[257,136],[434,301],[256,416],[416,417],[255,415],[197,8],[442,418],[253,136],[254,136],[245,8],[297,8],[252,419],[251,420],[242,421],[312,190],[381,190],[406,8],[385,422],[384,8],[426,8],[259,136],[316,136],[418,423],[82,136],[85,424],[86,425],[83,136],[84,8],[403,426],[394,427],[393,8],[392,428],[391,8],[415,429],[429,430],[431,431],[433,432],[1289,433],[435,434],[439,435],[472,436],[443,436],[471,437],[445,438],[454,439],[455,440],[457,441],[467,442],[470,323],[469,8],[468,443],[1048,444],[1290,445],[1049,445],[587,446],[585,447],[586,448],[584,8],[1245,449],[1204,450],[1203,451],[1244,452],[1246,453],[1195,136],[1196,136],[1197,136],[1222,454],[1198,455],[1199,455],[1200,456],[1201,136],[1202,136],[1205,457],[1247,458],[1206,136],[1207,136],[1208,459],[1209,136],[1210,136],[1211,136],[1212,136],[1213,136],[1214,136],[1215,458],[1216,136],[1217,136],[1218,458],[1219,136],[1220,136],[1221,459],[1253,456],[1223,449],[1224,449],[1225,449],[1228,449],[1226,449],[1227,8],[1229,449],[1230,460],[1254,461],[1255,462],[1271,463],[1242,464],[1233,465],[1231,449],[1232,465],[1235,449],[1234,8],[1236,8],[1237,8],[1238,449],[1239,449],[1240,449],[1241,449],[1251,466],[1252,467],[1248,468],[1249,469],[1243,470],[1098,136],[1250,471],[1256,465],[1257,465],[1263,472],[1258,449],[1259,465],[1260,465],[1261,449],[1262,465],[1357,473],[1356,474],[1403,475],[1402,476],[1400,477],[1399,478],[1407,479],[1406,480],[1355,481],[1354,482],[386,483],[1076,136],[481,8],[1322,484],[1321,8],[77,8],[78,8],[13,8],[14,8],[16,8],[15,8],[2,8],[17,8],[18,8],[19,8],[20,8],[21,8],[22,8],[23,8],[24,8],[3,8],[25,8],[26,8],[4,8],[27,8],[31,8],[28,8],[29,8],[30,8],[32,8],[33,8],[34,8],[5,8],[35,8],[36,8],[37,8],[38,8],[6,8],[42,8],[39,8],[40,8],[41,8],[43,8],[7,8],[44,8],[49,8],[50,8],[45,8],[46,8],[47,8],[48,8],[8,8],[54,8],[51,8],[52,8],[53,8],[55,8],[9,8],[56,8],[57,8],[58,8],[60,8],[59,8],[61,8],[62,8],[10,8],[63,8],[64,8],[65,8],[11,8],[66,8],[67,8],[68,8],[69,8],[70,8],[1,8],[71,8],[72,8],[12,8],[75,8],[74,8],[73,8],[76,8],[111,485],[121,486],[110,485],[131,487],[102,488],[101,489],[130,443],[124,490],[129,491],[104,492],[118,493],[103,494],[127,495],[99,496],[98,443],[128,497],[100,498],[105,499],[106,8],[109,499],[96,8],[132,500],[122,501],[113,502],[114,503],[116,504],[112,505],[115,506],[125,443],[107,507],[108,508],[117,509],[97,510],[120,501],[119,499],[123,8],[126,511],[1324,512],[1320,8],[1323,513],[1432,514],[1431,515],[1430,8],[1073,516],[1058,8],[1059,8],[1060,8],[1061,8],[1057,8],[1062,517],[1063,8],[1065,518],[1064,517],[1066,517],[1067,518],[1068,517],[1069,8],[1070,517],[1071,8],[1072,8],[1317,519],[1316,146],[1319,520],[1318,521],[633,522],[658,8],[670,523],[657,524],[659,524],[632,525],[634,526],[635,527],[636,8],[660,524],[661,524],[638,528],[662,524],[663,524],[639,529],[640,524],[641,530],[644,531],[645,529],[646,532],[647,525],[648,533],[637,527],[649,524],[664,524],[665,534],[666,524],[667,524],[643,535],[650,526],[642,527],[651,524],[652,532],[653,524],[654,532],[655,536],[656,537],[668,524],[669,537],[631,538],[506,539],[513,540],[508,8],[509,8],[507,541],[510,542],[502,8],[503,8],[514,538],[505,543],[511,8],[512,544],[504,545],[567,546],[519,547],[521,548],[565,8],[520,549],[566,550],[570,551],[568,8],[522,547],[523,8],[564,552],[518,553],[515,8],[569,554],[516,555],[517,8],[524,556],[525,556],[526,556],[527,556],[528,556],[529,556],[530,556],[531,556],[532,556],[533,556],[534,556],[536,556],[535,556],[537,556],[538,556],[539,556],[563,557],[540,556],[541,556],[542,556],[543,556],[544,556],[545,556],[546,556],[547,556],[548,556],[550,556],[549,556],[551,556],[552,556],[553,556],[554,556],[555,556],[556,556],[557,556],[558,556],[559,556],[560,556],[561,556],[562,556],[475,558],[476,238],[1285,136],[1286,136],[1291,559],[1292,8],[1444,560],[1293,561],[1443,562],[1445,563],[488,564],[485,565],[487,565],[486,566],[1097,567],[1446,568],[1038,569],[1447,570],[1276,571],[1277,572],[1095,573],[1279,574],[1424,136],[1437,8],[1051,8],[1419,575],[1414,576],[1422,577],[1415,578],[1413,579],[1421,580],[1423,581],[765,582],[1037,583],[1426,211],[1439,584],[1434,585],[1440,586],[1410,587],[1427,588],[1425,589],[1429,590],[1313,591],[1411,592],[1428,593],[1409,213],[1312,594],[499,595],[1449,596],[483,569],[1272,597],[1450,571],[1090,598],[1089,599],[1050,571],[1054,600],[1055,601],[1451,573],[1418,602],[1084,599],[1085,603],[1442,604],[1436,605],[1416,571],[1311,606],[1086,607],[1087,571],[1281,608],[1274,609],[1452,610],[1280,611],[1273,612],[1078,613],[1275,614],[1438,615],[1433,136],[1282,616],[1056,8],[1283,617],[1284,618],[482,619],[1074,595],[1077,620],[1075,621],[1096,8],[484,8],[1478,622],[1477,623],[1479,8],[1480,623],[1485,624],[1488,625],[1490,626],[1491,626],[1492,626],[1489,8],[1495,627],[1493,628],[1494,628],[1486,8],[1481,8],[1483,8],[1484,8],[1505,629],[1499,630],[1496,8],[1498,631],[1482,632],[1487,633],[1502,8],[1497,8],[1501,634],[1503,8],[1504,635],[1500,636]],"affectedFilesPendingEmit":[1456,1454,1457,1455,1458,475,476,1285,1286,1291,1292,1444,1293,1443,1445,488,485,487,486,1097,1446,1038,1447,1276,1277,1095,1279,1424,1437,1051,1419,1414,1422,1415,1413,1421,1423,765,1037,1426,1439,1434,1440,1410,1427,1425,1429,1313,1411,1428,1409,1312,499,1449,483,1272,1450,1090,1089,1050,1054,1055,1451,1418,1084,1085,1442,1436,1416,1311,1086,1087,1281,1274,1452,1280,1273,1078,1275,1438,1433,1282,1056,1283,1284,482,1074,1077,1075,1096,484],"version":"5.7.3"}
\ No newline at end of file